1.ansible简介
- ansible是一种自动化运维工具,基于python2-paramiko模块开发。具有批量系统配置、批量部署以及批量执行命令等功能。
- ansible是基于模块工作的,本身不具有批量部署的能力。真正有能力批量部署的是ansible所运行的模块,ansible只是提供一种框架
ansible这个框架主要包含下面的功能:
- 连接插件(负责和被监控端事先通信)
- 操作主机清单
- 核心模块、command模块、自定义模块
- playbook
- 借助与插件完成记录日志邮件等功能
2.ansible的特点
- 基于模块工作,可以使用任意语音开发模块
- 基于SSH工作
- playbook剧本是通过yaml语言编写的
- 不需要再被管理的主机上安装任何客户端软件
- 没有服务端的概念,使用的时候直接执行相关命令
3.ansible需要知道三点:
对谁做:主机清单文件决定的(主机清单文件叫什么,放在哪里都是由当前生效的ansible配置文件中的"inventory=" 参数决定的)
做什么:由playbook决定的
怎么做:ansible
4.通过yum方式安装完ansible后:
(centos中,ansible在epel源可以获得)
yum install ansible -y
- 安装完ansible之后,主配置文件存放位置:/etc/ansible/ansible.cfg 主机清单文件:/etc/ansible/hosts
上面这些是全局配置文件。 - 默认的这个主配置文件,对所有使用ansible的用户生效。
- 如果要使用普通用户进行执行特定的playbook时,在用该用户登陆ansible主机后,在任何文件夹下该配置文件都将覆盖默认配置文件中的内容。
- 也就是说当两个文件都有的时候 ,用户设置的配置文件优先级会高于默认的配置文件
5.对主机清单的理解:
- “#”开始表示注释,空格行被忽略
- 一个主机名或者IP地址可以出现在多个分组中
- 主机列表可以使用主机名或者IP地址
- 使用[start:end]表示连续的主机,只支持升序排列
- 使用[]设置远程主机分组。[]内写的是组名
- 分组支持嵌套,一个组可以包含其他组,新组名中以“:children“后缀
主机清单例子:
cat /etc/ansible/hosts
# Ex 1: Ungrouped hosts, specify before any group headers.
## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10
# Ex 2: A collection of hosts belonging to the 'webservers' group
## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110
# If you have multiple hosts following a pattern you can specify
# them like this:
## www[001:006].example.com
# Ex 3: A collection of database servers in the 'dbservers' group
## [dbservers]
##
## db01.intranet.mydomain.net
## db02.intranet.mydomain.net
## 10.25.1.56
## 10.25.1.57
# Here's another example of host ranges, this time there are no 连续大量主机清单[start:end]
# leading 0s:
## db-[99:101]-node.example.com
实例:
#1.标准主机
green.example.com
#2.分组的
[webservers]
alpha.example.org
beta.example.org
#3.连续大量的清单
[web]
db-[99:101]-node.example.com
192.168.[1:5].[0:255] //192.168.1.0-192.168.5.255下的所有主机
#4.非标准端口下的主机清单这样写
blue.example.com:4399
#5.组内还包含其他组:
[a]
1.example.com
[b]
2.example.com
[c:children]
a
b
#6.设置连接参数
[member]
localhost ansible_connection=local ansible_user=user
主机清单中常用的连接参数:
- ansible_connection: ssh连接方式,可以指定ssh local paramiko
- ansible_host: ansible连接的主机地址。如果在主机清单中起了一个不同的别名,那么需要用这个参数指定主机的IP或者主机名
- ansible_port:ssh端口号 默认是22
- ansible_user:ssh连接时候使用的默认用户名
- ansible_ssh_pass: ssh连接时候使用的密码。不过不建议用这个参数因为是明文的
更多参数连接可以参考官网:https://docs.ansible.com/ansible/latest
6.查看ansible版本
ansible --version