ansible改进版(1)--Python虚拟环境下安装ansible

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_36199640/article/details/102759988

什么ansible?

  • ansible是一个开源部署工具
  • 开发语言:Python
  • 特点:SSH协议通讯,全平台,无需编译,模块化部署管理
  • 作用:推送playbook进行远程节点快速部署

ansible与chef、saltstack的不同

  • chef

    • ruby语言编写,C/S架构,配置需要git依赖,recipe脚本编写规范,需要编程经验
  • saltstack

    • Python语言编写,c/s架构(需要安装客户端以便和服务端进行通信),模块化配置管理,yaml脚本编写规范,适合大规模集群部署
    • 优点,内部含有异步文件服务器,可以为客户端加快文件速度,模块化配置适合大群集
  • ansible

    • Python语言编写,无client,模块化配置管理,playbook脚本编写规范,易于上手,适合中小规模快速部署(符合敏捷快发概念,推荐)

ansible的优势和应用场景

  • 轻量级无客户端(agentless),降低了运维成本,和潜在的系统安全问题以及系统资源损耗,ansible不使用客户端而调用ssh连接工具去实现通信的原因在于,成功的给部署工作做了一道减法

  • 开源免费,学习成本低,快速上手,语法结构简单

  • 使用playbook作为核心配置架构,统一的脚本格式批量化部署*

  • 完善的模块化扩展,支持目前主流的开发场景(不管使用的Linux、Windows、不管开发使用java或者Python,不管业务逻辑复杂或者简单,ansible都有相应的模块扩展去匹配部署需要)

  • 强大的稳定性和兼容性(依托于Python,ssh,不需安装其他工具)

  • 活跃的官方社区问题讨论,方便Trubleshooting与DEBUG问题

ansible配合virtualenv安装配置

  • ansible做一个用Python编写的工具,就必须安装稳定的Python语言作为ansible依赖,并在Python包管理工具下安装项目需要定制的Python模块,假设系统中其他工具也会使用到Python,这里就会出现一个问题,我们如何保证Python安装的模块只会应用于ansible而不会应用给其他工具,如何将ansible和其他工具隔离开,保证安装的Python对应相应的工具,而避免造成模块冲突或其他系统问题
  • 推荐使用Python下内置的virtualenv去隔离Python3.6语言环境,单独划分出一个环境给ansible2.5使用,确保ansible在一个独立的环境下正常稳定运转
  • ansible的两种安装模式(centos7)
    • yum包管理安装
yum -y install ansible #ansible继承了系统全局下的工具,系统下任意用户都可以使用它
#缺点:系统安装了其他工具的其他Python模块,就会与ansible造成潜在的冲突与安全问题
#原因:在全局状态下,Python模块都会保存在同一个Python扩展目录下,当ansible用到的模块与其他工具用到的模块一致时,但版本不同这样势必会造成Python管理混乱,最终影响产品部署交付
git 源码安装(推荐)
git clone https://github.com/ansible/ansible.git #克隆源代码
# 配合virtualenv去实现ansible特定版本的独立环境的创建,保证ansible在一个独立的环境下运转
  • ansible2.5+Python3.6安装步骤(centos7)
  1. 预先安装Python3.6版本
wget  https://www.python.org/ftp/python/3.6.5/Python-3.6.5rc1.tgz #下载包
tar zxf Python-3.6.5rc1.tgz #解压包
cd Python-3.6.5/
./configure --prefix=/usr/local --with-ensurepip=install --enable-shared LDFLAGS="-wl,-rpath /usr/local/lib" #编译源码
make && make install
which pip3.6 #查看包管理工具
ln -s /usr/local/bin/pip3.6 /usr/local/bin/pip #做个软连接
  1. 安装virtualenv 虚拟环境
pip install virtualenv #创建环境
  1. 创建ansible账户并安装Python3.6版本virtualenv实例
useradd deploy && su - deploy #创建ansible账户并切换到改账户
virtualenv -p /usr/local/bin/python3.py3-a2.5-env #创建Python3.6版本的virtualenv实例 -p指定当前使用的virtualenv使用的3.6版本,创建python3.py3-a2.5-env该名称实例,用来集成ansible2.5版本
  1. git源码安装ansible2.5
cd /home/deploy/.py3-a2.5-env
git clone https://github.com/ansible/ansible.git #克隆源代码到本地

如果没有git工具
which git
su - root
yum -y install git nss curl
su - deploy
  1. 加载Python3.6 virtualenv环境
source /home/deploy/.py3-a2.5-env/bin/activate
  1. 安装ansible依赖包
pip install paramiko PyYAML jinja2 #保证ansible能正常加载使用
  1. Python3.6虚拟环境下加载ansible2.5
mv ansible .py3-a2.5-env/ #将ansible源代码移动到Python3.6虚拟环境下
cd .py3-a2.5-env/ansible/&& git checkout stable-2.5 #切换到ansible安装版本为2.5
source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q #在虚拟环境下加载ansible2.5版本
  1. 验证ansible 2.5
ansibel --version #验证ansible是否安装成功

猜你喜欢

转载自blog.csdn.net/qq_36199640/article/details/102759988
今日推荐