ansible安装和基本使用

117 阅读3分钟

1、ansible安装

[root@VM-4-10-centos ~]# yunm install ansible
[root@VM-4-10-centos ~]# ansible --version
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退出