参考:https://www.cnblogs.com/keerya/p/7987886.html

组件原理图

image.png

Ansible:Ansible核心程序。
HostInventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。
Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。
CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
ConnectionPlugins:连接插件,Ansible和Host通信使用

工作流程图

image.png
简单理解就是Ansible在运行时, 首先读取ansible.cfg中的配置, 根据规则获取Inventory中的管理主机列表, 并行的在这些主机中执行配置的任务, 最后等待执行返回的结果。

安装

安装 epel-release yum源

  1. yum -y install epel-release

安装ansible

  1. yum -y install ansible

查看ansible版本

  1. ansible --version
  2. 或者
  3. rpm -qa | grep ansible

检查指定主机的网络连通性

  1. $ ansible all -i xxx.xxx.xxx.xxx, xxx.xxx.xxx.xxx -m ping

配置文件

  1. [defaults]
  2. # Ansible需要连接管理的主机列表hosts文件路径,默认/etc/ansible/hosts
  3. inventory = /etc/ansible/hosts
  4. # ansible role存放路径,默认/etc/ansible/roles
  5. roles_path = /etc/ansible/roles
  6. # Ansible日志路径,默认/var/log/ansible.log
  7. log_path = /var/log/ansible.log
  8. # SSH连接超时时间,默认10s
  9. timeout = 60
  10. # ansible第一次连接客户端是是否要检查ssh密钥
  11. host_key_checking = False
  12. # ansible执行并发数,默认5
  13. forks = 100
  14. # 异步执行任务时查询间隔,默认15s
  15. poll_interval = 15
  16. # 执行ansible命令时使用的用户,默认root
  17. sudo_user = root
  18. # 远程主机SSH端口,默认22
  19. remote_port = 22
  20. # ansible执行playbook时远程认证用户,默认root
  21. remote_user = root
  22. # Ansible搜寻模块的位置,默认/usr/share/my_modules/
  23. # library = /usr/share/my_modules/
  24. # module_utils = /usr/share/my_module_utils/
  25. # ansible模块运行语言环境,默认C
  26. module_lang = C
  27. module_set_locale = False
  28. # ansible使用模块,默认command
  29. module_name=command

主机清单

  1. # 使用主机IP
  2. 192.168.1.50
  3. # 使用主机名
  4. web1
  5. # 分组
  6. [webgroup]
  7. 192.168.1.70

MacOS安装ansible

  1. brew install ansible
  2. ansible --version
  3. ansible [core 2.11.4]
  4. config file = None
  5. configured module search path = ['/Users/xl/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  6. ansible python module location = /usr/local/Cellar/ansible/4.5.0/libexec/lib/python3.9/site-packages/ansible
  7. ansible collection location = /Users/xl/.ansible/collections:/usr/share/ansible/collections
  8. executable location = /usr/local/bin/ansible
  9. python version = 3.9.7 (default, Sep 3 2021, 12:45:31) [Clang 12.0.0 (clang-1200.0.32.29)]
  10. jinja version = 3.0.1
  11. libyaml = True