一, ansible 的工作机制
从图中可以看出ansible分为以下几个部份:
1> Control Node:控制机器
2> Inventory:主机清单,配置管理主机列表
3> Playbooks:剧本、任务编排。根据规则定义多个任务,模块组织结构清晰,由ansible自动执行。
4> Modules(Core | Custom):模块,用于执行某个具体的任务
5> connection plugin(连接插件):Ansible通过不同的协议连接到远程主机上,执行指定的命令。默认采用ssh协议连接远程主机。
二、Ansible执行流程
简单理解就是Ansible在运行时,首先读取ansible.cfg中的配置,根据规则获取Inventory中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待执行返回的结果
三,ansible 安装
一台控住主机:192.168.26.145
二台管理主机:
- 192.168.26.144
- 192.168.26.143
本次安装基于CentOS7系统环境、Python2.7.5、root用户
3.1,yum 安装
1,yum -y install ansible
2,yum -y install epel-release.noarch
3.2查看ansible 安装版本
1,ansible --version
ERROR! Unexpected Exception, this is probably a bug: (cryptography 0.8.2 (/usr/lib64/python2.7/site-packages), Requirement.parse(‘cryptography>=1.1‘))
最后一句Requirement.parse(‘cryptography>=1.1‘)),得知cryptography的版本过低,需要升级,安装cryptography需要通过pip安装,所以需要先安装pip
3.3 pip 安装
下载:wget https://files.pythonhosted.org/packages/69/81/52b68d0a4de760a2f1979b0931ba7889202f302072cc7a0d614211bc7579/pip-18.0.tar.gz 解压:tar -zxvf pip-18.0.tar.gz 进入目录:cd pip-18.0 安装:python setup.py install
3.4 wheel 安装
下载:wget https://files.pythonhosted.org/packages/2a/fb/aefe5d5dbc3f4fe1e815bcdb05cbaab19744d201bbc9b59cfa06ec7fc789/wheel-0.31.1.tar.gz 解压:tar -zxvf wheel-0.31.1.tar.gz 进入目录:cd wheel-0.31.1/ 安装:python setup.py install
3.5 安装cryptoggraphy
下载:wget https://files.pythonhosted.org/packages/87/e6/915a482dbfef98bbdce6be1e31825f591fc67038d4ee09864c1d2c3db371/cryptography-2.3.1-cp27-cp27mu-manylinux1_x86_64.whl 安装:pip install cryptography-2.3.1-cp27-cp27mu-manylinux1_x86_64.whl
3.6 测试是否还有问题
四,配置管理主机
1,vim /etc/ansible/hosts
在hosts文件中添加管理主机的IP
五,配置控制主机的ssh秘钥 在控制主机中生成秘钥对
1,ssh-keygen -t rsa
注,如果在生成秘钥对的时候设置了密码,ansible每次执行命令的时候,都会提示输入密码,我们可以通过下面的命令记住密码
ssh-agent bsh
ssh-add ~./.ssh/id_rsa
六,将公钥拷贝到管理主机中.ssh/authorized_keys文件中,实现免密码登录远程管理主机
1,[root@elk-node2 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.26.144
2,[root@elk-node2 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.26.143
注:ssh-copy-id 命令会自动id_rsa.pub文件的内容追加到远程主机root用户下.ssh/authorized_keys文件中
6.1,ansible 配置
1,vim /etc/ansible/ansible.cfg
禁用每次执行ansbile命令检查ssh key host
host_key_checking = False
开启日志记录
log_path = /var/log/ansible.log
ansible连接加速配置
[accelerate]
#accelerate_port = 5099
accelerate_port = 10000
#accelerate_timeout = 30
#accelerate_connect_timeout = 5.0# If set to yes, accelerate_multi_key will allow multiple
# private keys to be uploaded to it, though each user must
# have access to the system via SSH to add a new key. The default
# is "no".
accelerate_multi_key = yes 不需要设置。。 此功能将在2.5版中删除。deprecation_warnings = False来禁用弃用警告。
6.2,测试