Ansible 架构
- Inventory:Ansible管理的主机信息,包括IP地址、SSH端口、账号、密码等
- Modules: 任务均有模块完成,也可以自定义模块,例如经常用的脚本。
- Plugins: 使用插件增加Ansible核心功能,自身提供了很多插件,也可以自定义插件。例如connection插件,用于连接目标主机。
- Playbooks:“剧本”,模块化定义一系列任务,供外部统一调用。Ansible核心功能。
Ansible 安装与配置
Ansible 使用要求
1 | 服务端要求 |
安装 Ansible
1 | # 推荐 yum 安装 |
配置文件
1 | [root@master ~]# vim /etc/ansible/ansible.cfg |
主机资源清单
1 | # 示例1:未分组的主机 |
1 | # 加入被管理服务器资源 |
指定主机组执行命令
1 | [root@master ~]# ansible --help |
all 所有主机执行
1 | # 1. 未分组的主机统一的组名叫做 all |
通过IP或者主机名 指定执行
1 | [root@master ~]# ansible 10.0.0.202 -a "df -h" |
主机和主机组变量
1 | 官方手册 https://docs.ansible.com/ |
1 | # 在资源清单里设置 主机定义 |
1 | # 主机组定义 |
1 | # 组变量分解到单个文件 |
1 | # 优先级总结: |
Ansible ad-hoc 命令
1 | 1. ad-hoc 简单的批量管理 |
命令行工具常用选项
1 | 1. 格式:ansible <host-pattern> [ options ] |
shell 模块
1 | # 默认command模块不支持 | 管道符 、&& 和 > 重定向 |
1 | [root@master ~]# ansible web -m shell -a "echo 123 > /tmp/a.log" |
SSH 密码认证
1 | [root@master ~]# vim /etc/ansible/hosts |
SSH 密钥对认证
1 | # 推荐使用免交互方式 |
1 | # 无需在配置用户密码 |
Ansible 常用模块
1 | # 官方文档 |
执行shell命令(command和shell)
1 | # -u 指定用户操作 |
1 | # 执行多条命令 |
sudo 的使用
1 | [work@node2 ~]$ sudo ls -l /root |
1 | # 配置 sudo 两种模式 |
文件管理(copy和file)
1 | # copy 将本地文件copy到目标主机 |
1 | # copy 目录 |
1 | # file 创建文件或目录 |
管理软件包(yum)
1 | # present 安装软件 |
1 | # 使用远程rpm安装 |
用户和组(user)
1 | # 创建用户 |
从源代码管理系统部署(git)
1 | # 要想使用git模块,目标主机必须有git命令 |
管理服务(service|systemctl)
1 | # 安装 |
1 | # centos7 使用 systemd模块 |
unarchive 解压
1 | - name: 解压 |
debug 调试
1 | # 执行过程中打印语句。 |
1 | # 打印主机组变量 |
收集目标主机信息(setup)
1 | # 常用信息 |
1 | # 过滤 |