本文说明本系列使用 ansible 2.9.27 版本来说明和汇总相关信息 。
# cat /etc/system-releaseRed Hat Enterprise Linux Server release 7.8 (Maipo)## uname -aLinux test01 3.10.0-1160.36.2.el7.x86_64 #1 SMP Wed Jul 21 11:57:15 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux## ansible --version# ansible版本ansible 2.9.27config file = /etc/ansible/ansible.cfgconfigured module search path = [u'/home/vipxf/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python2.7/site-packages/ansibleexecutable location = /bin/ansiblepython version = 2.7.5 (default, Nov 16 2020, 22:23:17) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]## yum info ansible# 包信息Loaded plugins: fastestmirror, product-id, search-disabled-repos, subscription-managerRepodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fastLoading mirror speeds from cached hostfileInstalled PackagesName: ansibleArch: noarchVersion: 2.9.27Release: 1.el7Size: 103 MRepo: installedSummary: SSH-based configuration management, deployment, and task execution systemURL: http://ansible.comLicense: GPLv3+Description : Ansible is a radically simple model-driven configuration management,: multi-node deployment, and remote task execution system. Ansible works: over SSH and does not require any software or daemons to be installed: on remote nodes. Extension modules can be written in any language and: are transferred to managed machines automatically.#
Ansible 概念介绍Ansible是自由开源的配置和自动化工具 。
- 官方网站https://www.ansible.com/
- 官方文档https://docs.ansible.com/ansible/latest/
- 安装包https://releases.ansible.com/
- 无客户端模式(agentless),无侵入性,只需在主控端部署Ansible环境 , 被控端无需做任何操作- 丰富的内置模块满足绝大部分场景需求,调用特定模块可以完成特定任务- 基于Python研发 , 支持API及自定义模块 , 二次开发相对容易- 默认使用SSH协议和节点进行通信- 强大的playbook机制,配置语法使用yaml和Jinja模板语言,便于配置管理和实现复杂功能- 具有幂等性,自动跳过没有变化的部分,也就是一个操作执行一次和多次的结果相同- 对云计算平台和大数据提供了支持
Ansible 使用模式- 结合CMDB:通过CMDB下发指令调用Ansible完成相关操作- API调用:远程调用Ansible提供丰富的API接口- Ad-Hoc命令:直接通过Ad-Hoc命令集执行相关操作,多用于非固化需求、临时性操作和二次开发接口调用的场景- playbook执行:运行Playbook按序执行任务集
文章插图
Ansible由控制主机对被管节点的操作方式为 Ad-Hoc 和 Playbook 。
- Ad-Hoc模式使用单个模块,支持批量执行单条命令 。
- Playbook模式是Ansible主要管理方式,Playbook通过多个Task集合完成一类功能,可以简单地把 Playbook理解为通过组合多条Ad-Hoc操作的配置文件 。
文章插图
# Ansible 主要由五部分组成- AnsibleAnsible核心- Modules包括核心模块和自定义模块- Plugins插件,对模块功能的补充,包含连接插件、邮件插件等- Playbooks剧本 , 定义任务的配置文件- Inventory定义管理主机的清单# ansible 命令执行过程1. Ansible加载配置文件,默认为/etc/ansible/ansible.cfg2. Ansible读取Inventory文件(默认为/etc/ansible/hosts) , 获取管理主机列表及相关变量信息3. 根据参数调用对应配置和模块,产生临时py文件4. 通过SSH方式传输到目标主机(默认为~/.ansible/tmp目录)5. 设置临时py文件的执行权限,执行操作并返回结果6. 删除临时py文件并退出
Ansible 基础信息Ansible 主要目录# 配置文件目录/etc/ansible/- ansible.cfg# Ansible 主配置文件- hosts# Inventory,定义目标主机清单的文件- roles# 角色目录 , 用于定义角色# 执行文件目录/usr/bin/# Lib库依赖目录/usr/lib/python2.7/site-packages/ansible# Help文档目录/usr/share/doc/ansible-2.9.27/# Ansible模块目录/usr/share/ansible/- collections# 目录- plugins# 插件模块目录- roles# 角色模块目录
Ansible 配置文件默认Ansible配置文件存放在 /etc/ansible/ansible.cfg
# 常见参数inventory = /etc/ansible/hosts# 主机清单inventory文件的位置library = /usr/share/ansible# 存放Ansible模块的目录,支持用“:”隔开多个目录forks = 5# 并发连接数 , 默认为5remote_port = 22# 连接主机节点的端口,默认为22端口,建议修改host_key_checking = False# 是否检查SSH主机的密钥 , 值为True/Falsetimeout = 60# SSH连接的超时时间,单位为秒log_path = /var/log/ansible.log# 存储ansible日志的文件(默认不开启)
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Web自动化---解决登录页面随机验证码问题
- 小样本利器4. 正则化+数据增强 Mixup Family代码实现
- 从0搭建vue3组件库:自动化发布、管理版本号、生成 changelog、tag
- ansible使用临时命令通过模块来执行任务
- Ansible 批处理实战
- ansible应用之安装elk框架
- app自动化测试环境安装
- reportportal 集成 robotframework 自动化执行及结果可视化
- Android自动化测试工具调研
- 五 微软出品自动化神器【Playwright+Java】系列 之常见点击事件操作