简介
ansible是新出现的自动化运维工具,基于python开发,集合了众多运维工具的有点,实现了批量系统部署、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括
(1)、链接插件connection plugins:负责和被监控端实现通信
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机
(3)、各种模块核心模块、command模块、自定义模块
(4)、借助于插件完成记录日志邮件等功能
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务
安装Ansible
方法1(推荐):配置EPEL YUM源后直接安装
1 |
yum install ansible -y #yum安装最新版 |
2 |
ansible --version #安装后查看版本以及模块路径等信息 |
方法2:通过python pip工具安装,不过需要先编译安装好python3,并且Ansible的命令也都会放在Python的目录中,需要做软连接
1 |
/usr/local/python3/bin/pip3 install ansible==2.7 #使用pip安装指定版本Ansible |
2 |
ln -s /usr/local/python3/bin/ansible /usr/local/bin |
Ansible的配置文件
1、/etc/ansible/hosts:主机列表清单,也叫Inventory。所有被管理的主机都需要定义在该文件中。如果不想使用默认清单的话可以用-i选项指定自定义的清单文件,防止多人混合使用一个主机清单。如果没有定义在主机列表文件中,执行命令会提示“No hosts matched”
2、/etc/ansible/ansible.cfg:Ansible服务主配置文件,比如并发数控制等在此文件定义
Inventory定义方法
方法1:将主机IP、端口、用户名、密码写在配置文件的不同组中,多种写法格式如下
01 |
vim /etc/ansible/hosts |
02 |
[webserver] #组名为webserver |
03 |
192.168.1.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456" |
04 |
192.168.1.32 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456" |
05 |
192.168.1.33 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456" |
06 |
192.168.1.36 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456" |
08 |
[dbserver] #组名为dbserver |
09 |
192.168.1.4[1:3] ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456" #连续IP的简写 |
13 |
[redisserver:vars] #将信息定义为变量 |
14 |
ansible_ssh_pass="123456" |
17 |
nginx_1 ansible_ssh_host=192.168.1.61 ansible_ssh_port=22ansible_ssh_user=root ansible_ssh_pass="123456" |
18 |
nginx_2 ansible_ssh_host=192.168.1.62 ansible_ssh_port=22ansible_ssh_user=root ansible_ssh_pass="123456" |
方法二:基于秘钥管理
基于秘钥管理客户端的话需要在管理端创建公钥和私钥,然后发送给被管理端的机器
03 |
ssh-copy-id -i $被管理端IP |
06 |
vim /etc/ansible/hosts |
07 |
[webserver] #做好秘钥的机器只用写IP即可 |
13 |
[dbserver] #也可以通过别名方式进行配置 |
14 |
node1 ansible_ssh_host=192.168.1.31 ansible_ssh_port=22 |
15 |
node2 ansible_ssh_host=192.168.1.32 ansible_ssh_port=22 |
16 |
node3 ansible_ssh_host=192.168.1.33 ansible_ssh_port=22 |
方法三:自定义Inventory清单文件
2 |
vim /etc/ansible/dockers |
4 |
192.168.1.31 ansible_ssh_pass='123456' |
8 |
ansible dockers -m ping -i /etc/dockers |
Inventory内置参数