Ansible有哪一些功能

  • 系统环境配置
  • 安装软件
  • 持续集成
  • 热回滚

Ansible优点

  • 无客户端
  • 推送式
  • 丰富的module
  • 基于YAML的playbook    #执行集成的脚本
  • 商业化支持

Ansible缺点

  • 效率低、易挂起
  • 并发性能差
#基于SSH做的,所以并发效率低(ssh只能建立一个隧道为串行)
 

Ansible安装部署、运行

  • Ansible安装

python

yum install zlib zlib-devel gcc openssl  openssl-devel -y
1  首先确认Linux操作系统中自带的python 版本时候与自己所需要的版本一致
所有的python版本都在https://www.python.org/ftp/python/ 选择下载
进行下载
wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz
解压
tar -zxvf Python-2.7.11.tgz
进入Python-2.7.11目录
./configure --enable-shared --enable-loadable-sqlite-extensions --with-zlib
vim ./Modules/Setup
5   找到 #zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz 去掉注释并保存
 然后进行编译和安装
make && make install
 创建软连接
mv /usr/bin/python /usr/bin/python_bak
ln -s /usr/local/bin/python2.7 /usr/bin/python
8   测试 & 报错
[root@VM_131_252_centos Python-2.7.11]# python
python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
#编辑配置文件,添加新的一行内容
[root@VM_131_252_centos Python-2.7.11]# vim /etc/ld.so.conf
/usr/local/lib       #保存退出
#查看添加后的结果,在第一行
[root@VM_131_252_centos Python-2.7.11]# cat /etc/ld.so.conf
/usr/local/lib
include ld.so.conf.d/*.conf
#执行ldconfig加载配置
[root@VM_131_252_centos Python-2.7.11]# ldconfig
#再次执行查看版本命令,正确显示
[root@VM_131_252_centos Python-2.7.11]# python -V
Python 2.7.11

PIP

在Linux下执行
curl https://bootstrap.pypa.io/get-pip.py | python   #进行下载安装
报错:
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting pip
  Could not fetch URL https://pypi.python.org/simple/pip/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping
  Could not find a version that satisfies the requirement pip (from versions: )
No matching distribution found for pip
解决方法:
yum install openssl openssl-devel -y

安装Ansible

pip install ansible      #pip安装ansible
pip uninstall ansible    #pip卸载ansible
 centos & redhat
yum install ansible     #yum源安装
UBuntu安装
apt-get install software-properties-common    
apt-add-repository ppa:ansible/ansible
apt-get update
apt-get install ansible

运行Ansible

  • Ansible配置文件路径

               export ANSIBLE_CONFIG
                               |
               ./ansible.cfg
                               |
               ~/.ansible.cfg
                               |
               /etc/ansible/ansible.cfg
  • Ansible配置文件获取

1.  /etc/ansible 目录下
2. https://github.com/ansible/ansible/blob/devel/examples/ansible.cfg
  • Ansible配置详解

  1. defaults 默认配置项
  2. privilege_escalation 执行命令的用户权限设置
  3. paraiko_connextion paramike插件设置
  4. ssh_connection ssh连接设置
  5. accelerate
  6. selinux & colors
  • Ansible配置项

defaults:
     ask_pass & ask_sudo_pass
     ask_pass      #可以控制Ansible 剧本playbook 是否会自动默认弹出密码
     ask_sudo_pass      #用户使用的系统普通开启了sudo密码的话,就开这个项目(推荐使用root运行)
     gather_subset      #设置收集的内容;包括all、network、hardware、virtual、facter、ohai
     remote_port & remote_tmp & remote_user
     #客户机的设置,分别对登录用户和端口,以及临时目录   #这里用户可以使用root,不使用root就需要配置上面的sudo
     sudo_exe & sudo_flags & sudo_user
     #sudo命令相关设置,分别是sudo命令路径、sudo参数、能使用sudo的user
     action_plugins & callback_plugins & connextion_plugins & filter_plugins & lookup_pluins & vars_plugins
     #开发者中心的插件相关功能,开发者可以开发相应的插件来完成自己的功能。分别对应的功能未为:激活事件、回调、链接、过滤器、加载路劲、任何地方加载
     forks
     #最大开辟的进程数,这个数不易过大,过大性能消耗高,不易过小,过小的话,并发性能低。一般的设置的方法是CPI核心数*2
     module_name #这个是/usr/bin/ansible的默认模块名(-m)。默认是“command”模块。command模块不支持shell变量,管道,配额。所以也许你希望把这个参数改为“shell” vault_password_file #这个文件也可以称为一个脚本的形式。如果你使用脚本而不是单纯文件的话,请确保它可以执行并且密码可以在标准输出打印出来。如果你的脚本需要提示请求数据,请求将会发到标准错误输出中。(程序自动填写密码) pattern #如果没有提供“host”节点,这是playbook要通信的默认主机组。默认值是对所要的主机通信,最好进行个例设置,以防止打错而对大批量主机进行错误修改。 inventory & library #和库有关,分别是存放可通信主机的目录和Ansblie默认搜寻模块路径 ,inventory默认是在/root/etc