Ansible 基础
Ansible 的依赖包说明
1 | ansible-2.8.5-2.el8.noarch.rpm |
注:如果你是用 yum 去安装的则不需要管包的版本依赖。
Ansible 的配置文件的查找
1. 主配置文件 ansible.cfg
参考/etc/ansible/ansible.cfg
2. Ansible 配置文件查找顺序
首先检测 ANSIBLE CONFIG 变量定义的配置文件
其次检查当前目录下的 ./ansible.cfg 文件
再次检查当前用户家目录下 ~/ansible.cfg 文件
最后检查 /etc/ansible/ansible.cfg 文件
3. ansible.cfg 配置文件(基础的列出)
1 | [defaults] |
hosts 配置主机清单(配置方式)
1 | # 账号密码的方式配置 |
Ansible ad-hoc 是一种通过命令行批量管理的方式
1 | 格式: ansible 主机集合 -m 模块名 -a "参数" |
注: 模块是 ansible 已经安装过的模块
Ansible 查看已存在的模块
1 | # 查看已安装的模块 |
Ansible 使用(command、shell)模块远程命令主机
1 | # command 是 ansible 的默认模块 |
command 和 shell 模块的区别
注:尽量用 shell 解释器,command 模块功能比较弱
command 的说明
1 | command 模块的命令不启动 shell,直接通过 ssh 执行命令 |
shell 的说明
1 | shell 模块会启动 shell 执行命令 |
shell 模块常用的一些参数
1 | chdir: 切换工目录 |
1 | # 切换工作目录 |
script 模块(复杂命令的执行)
script 允许在本地写脚本,拷贝到被管理端并执行脚本
脚本不只是 shell 脚本 (如 python、perl 脚本等) 可以没有 -x(可执行权限)
执行案例
编写脚本
1 | vim test.sh |
1 | #!/bin/bash |
执行命令
1 | ansible nodel,node2 -m script -a "./test.sh" |
关于普通用户 sudo 提权的问题
sudo 的基本概念
1 | sudo |
sudo 的配置
1 | 修改 /etc/sudoers 的方法 |
1 | cat /etc/sudoers |
1 | ... |
ansible.cfg 配置文件对于 sudo 提权的处理
1 | [defaults] |
ssh 公钥访问补充
1 | # 生成 ssh 密钥 |
Playbook
概述
1 | Ansible ad-hoc 可以通过命令行形式远程管理其他主机 |
yml 格式规范
1 | "#" 代表注释,一般第一行为三个横杠 |
Playbook 语法格式
1 | playbook 采用 YAML 格式编写 |
简单案例
test.yml 剧本文件案例
1 | --- |
执行剧本
1 | # 正常执行 |