简介
Ansible是一个基于Python开发的自动化运维工具,实现批量系统配置、批量程序部署、批量运行命令,本身没有批量部署的能力,真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。使用Python里的paramiko和sshpassansible库,基于ssh来和远程主机通讯,不需要在远程主机上安装client/agents。

模块
- Ansible:Ansible核心程序。
- HostInventory(主机清单):记录由Ansible管理的主机信息,包括端口、密码、ip等,可以去操作那些主机。
- Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能,也就是告诉主机清单里的电脑做什么事情(精华)。
- ConnectionPlugins:连接插件,使Ansible和Host通信。
- CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。
- CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
Ansible命令执行过程
- 加载本身的配置文件默认/etc/ansible/ansible.cfg
- 加载本身对应的模块文件,如command;
- 经过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
- 给文件+x执行;
- 执行并返回结果;
- 删除临时py文件,退出
安装
环境:ansible主机(centos7.9),远程主机(centos7.9 IP:121.36.40.218)
建立免密通道
ssh-keygen
#ssh-keygen直接回车命令默认在 ~/.ssh⽬录中⽣成SSH RSA公钥和私钥⽂件
cd /root/.ssh
ssh-copy-id -p22 -i id_rsa.pub [email protected]
#yes输入密码
#把本地的ssh公钥文件安装到远程主机的/root/.ssh下
ssh [email protected] #免密登录成功
exit #退出
yum install epel-release -y
yum install ansible -y
cd /etc/ansible/
vim hosts
#修改配置文件,添加主机清单
[webservers] 121.36.40.218
如果没有开启免密登录也可以使用
[webservers]
121.36.40.218 ansible_ssh_user='' ansible_ssh_pass=''
#输入自己的用户名密码

测试效果
调用copy模块传输一个文件
ansible all -m copy -a 'src=/root/test/scan.sh dest=/root'
效果同
scp /root/test/scan.sh [email protected]:~/
因为已经scp传输了该文件,所以是绿色字体可以理解为覆盖,黄色字体是改变,红色字体说明错误。

ansible all -m script -a '~/weixin.sh wangyutao'
#在我的ansible主机目录下刚好有一个脚本,用assible让所有远程主机运行一下。
