1、ansible安装
[root@VM-4-10-centos ~]
[root@VM-4-10-centos ~]
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
2、、ansible主配置文件
[defaults] --->通用默认配置
#inventory = /etc/ansible/hosts 这个是默认库文件位置,脚本,或者存放可通信主机的目录
#library = /usr/share/my_modules/ Ansible默认搜寻模块的位置
#remote_tmp = $HOME/.ansible/tmp Ansible 通过远程传输模块到远程主机,然后远程执行,执行后在清理现场.在有些场景下,你也许想使用默认路径希望像更换补丁一样使用
#pattern = * 如果没有提供“hosts”节点,这是playbook要通信的默认主机组.默认值是对所有主机通信
#forks = 5 在与主机通信时的默认并行进程数 ,默认是5d
#poll_interval = 15 当具体的poll interval 没有定义时,多少时间回查一下这些任务的状态, 默认值是5秒
#sudo_user = root sudo使用的默认用户 ,默认是root
#ask_sudo_pass = True 用来控制Ansible playbook 在执行sudo之前是否询问sudo密码.默认为no
#ask_pass = True 控制Ansible playbook 是否会自动默认弹出密码
#transport = smart 通信机制.默认 值为’smart’。如果本地系统支持 ControlPersist技术的话,将会使用(基于OpenSSH)‘ssh’,如果不支持讲使用‘paramiko’.其他传输选项包括‘local’, ‘chroot’,’jail’等等
#remote_port = 22 远程SSH端口。 默认是22
#module_lang = C 模块和系统之间通信的计算机语言,默认是C语言
#log_path = /var/log/ansible.log 日志文件存放路径
#record_host_keys=False 被管理机校验
3、主机清单
Ansible主机清单文件:Ansible可同时操作属于一个组的多台主机,组和主机之间的关系通过inventory文件配置. 默认的文件路径为/etc/ansible/hosts,将需要被管理的主机按照以下示例格式添加到文件中
[web_clust]
192.168.81.220 ansible_ssh_pass='redhat'
192.168.81.230 ansible_ssh_pass='redhat'
192.168.81.240 ansible_ssh_pass='redhat'
[web_server]
192.168.81.2[2:4]0
4、ansible相关工具
/usr/bin/ansible 主程序,临时命令执行工具 /usr/bin/ansible-doc 查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具
/usr/bin/ansible-pull 远程执行命令的工具
/usr/bin/ansible-vault 文件加密工具
/usr/bin/ansible-console基于Console界面与用户交互的执行工具
5、ansible命令
使用ssh-key将公钥分发到多个主机
[root@VM-4-10-centos ~]# ssh-keygen
[root@VM-4-10-centos ~]# ssh-copy-id 1.116.157.230 分发到其中一台主机
1、测试主机清单中的被管理主机是否正常连接
[root@VM-4-10-centos ~]# ansible all -m ping
[root@VM-4-10-centos ~]# ansible all --list-hosts 查看所有被管理机器
6、ansible命令执行过程
加载自己的配置文件,默认/etc/ansible/ansible.cfg;
查找对应的主机配置文件,找到要执行的主机或者组;
加载自己对应的模块文件,如 command;
通过ansible将模块或命令生成对应的临时py文件(python脚本), 并将该文件传输至远程服务器;
对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件;
给文件 +x 执行权限;
执行并返回结果;
删除临时py文件,sleep 0退出