什么是ansible
ansible是自动化的运维工具,可以实现自动化的批量部署。
自动化运维工具对比
- Puppet:Ruby语言开发,采用C/S架构。
- SaltStack:python开发,采用C/S架构,比puppet更轻量级。
- ansible:基于python开发,分布式,无需客户端,轻量级。
ansible工作原理
- 读取ansible.cfg文件。
- 通过inventory读取相应位置的主机列表
- 加载task对应的模块。
- ansible core将模块或命令打包成python脚本文件
- 将临时脚本传输到被控制节点。
- 被控制节点执行临时脚本。
- 给文件加执行权限。
- 执行脚本文件,并返回结果
- 删除临时脚本文件并退出。
部署ansible
案例信息:
控制节点:master:192.168.178.144
被控制节点:slave:192.168.178.128
- 所有节点编辑好解析/etc/hosts文件
- 控制节点安装ansible
- 设置控制节点的免密登陆,将master上的公钥发送给slave。
[yiki@ ~] yum -y install ansible
[yiki@ ~] ansible --version #检查版本信息,这里是ansible 2.9.1
-
主配置文件:/etc/ansible/ansible.cfg
1.forks:最大并发连接数。在这里插入代码片
2.inventory:存放资源清单的路径。
3.sudo_user:默认执行命令的用户。
4.remote_port:指定连接控制节点的端口。
5.log_path:日志存放路径。
6.host_key_checking:是否检查主机密钥。 -
将被控制主机加入主机清单(/etc/ansible/hosts)
[yiki@ ~] vim /etc/ansible/hosts
*在结尾添加被控制的主机
*方式一:添加没有猪祭祖的单个主机们
slave(或ip)
*方式二:添加主机组
[test]
slave(或ip地址)
- 初步测试(连通性)
[yiki@ ~] ansible test -m ping
或
[yiki@ ~] ansible slave -m ping
结果为绿色则没有问题哦
*一次指定多台主机
[yiki@ ~] ansible slave1,slave2,slave3 -m ping
[yiki@ ~] ansible slave* -m ping
*一次指定多个主机组
[yiki@ ~] ansible test1:test2:test3 -m ping
ansible语法
[yiki@ ~] ansible 【被控制端】 -m 【模块名】 -a 【传递给模块的参数】
*参数信息
1.默认模块的commond
例:
[yiki@ ~] ansible test -a date
slave | CHANGED | rc=0 >>
2019年 11月 22日 星期五 21:37:08 CST
[yiki@ ~] ansible test