Ansible¶
1 Ansible 配置查找顺序¶
- ansible配置设置-含环境变量,配置参数说明
ANSIBLE_CONFIG
(environment variable if set)ansible.cfg
(in the current directory)~/.ansible.cfg
(in the home directory)/etc/ansible/ansible.cfg
Ansible 将处理上面的列表并使用找到的 第一个文件,其他所有文件都被忽略。
2 Ansible host 文件¶
在 ansible. cfg 文件中会定义 inventory
参数,指定 host 文件位置,默认时 /etc/ansible/hosts
[shuhw@web138 ~]$ cat /etc/ansible/ansible.cfg |grep inventory|head -1
#inventory = /etc/ansible/hosts
在执行 ansible 命令时也可以通过 -i host文件
指定配置文件位置,如 ansible 10.20.29.136 -i ansible.host -m ping
- 示例
[shuhw@web138 ~]$ cat ansible.host
[web]
10.20.29.136
10.20.29.137
10.20.29.138
[shuhw@web138 ~]$ ansible web -i ansible.host -m ping
10.20.29.136 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
10.20.29.137 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
10.20.29.138 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
3 ansible 命令参数¶
- 功能:针对一组主机定义并运行单个任务或 'playbook'。
- 语法:
ansible [pattern] -m [module] -a "[module options]" [other options]
[pattern]
:匹配操作的机器,可以是 ip、域名、分组名,其中 ip、域名可以使用正则匹配,关键字all
表示所有主机。-i [inventory]
:指定清单主机路径或逗号分隔的主机列表。(可以是文件路径,也可以是主机列表)-m [module]
:指定使用的模块,默认是 command 模块,如:ping 模块。-a "[module options]"
:指定执行模块的额外参数,对于 command 模块,就完整的命令,如-a "ls -l"
-u 'REMOTE_USER'
:指定连接的机器上使用哪个用户执行命令。-k
:使用密码认证,而不采用 ssh 免密登录。-K
:如果需要特权(root 权限),提示输入密码。-o
or--one-line
:用一行输出结果,多行使用\n
连接-f 'FORKS'
:使用几个并行进程去执行-C
: don't make any changes; instead, try to predict some of the changes that may occur--list
or--list-hosts
- 示例 1:-o、-u
$ ansible -i ansible.host -a "ls ~" -u shuhw -o 10.20.29.136
10.20.29.136 | CHANGED | rc=0 | (stdout) DMDB_PACKAGE_8.3.0.0_20230203.tar.gz\nenv\nfs\nncdss-v3\nzookeeper.out
- 示例 2:-i
[shuhw@web138 ~]$ ansible -i ansible.host -a "ls ~" -u shuhw -o 10.20.29.136
10.20.29.136 | CHANGED | rc=0 | (stdout) DMDB_PACKAGE_8.3.0.0_20230203.tar.gz\nenv\nfs\nncdss-v3\nzookeeper.out
[shuhw@web138 ~]$ ansible -i 10.20.29.136,10.20.29.137 -a "ls ~" -u shuhw -o 10.20.29.136
10.20.29.136 | CHANGED | rc=0 | (stdout) DMDB_PACKAGE_8.3.0.0_20230203.tar.gz\nenv\nfs\nncdss-v3\nzookeeper.out
- 示例 3:-k
shuhw@web138 ~]$ ansible 10.20.29.136 -i ansible.host -a "ls ~" -u shuhw2 -k
SSH password:
10.20.29.136 | CHANGED | rc=0 >>
- 示例 4:-f
[shuhw@web138 ~]$ ansible -i ansible.host -a "ls ~" -o web -f 3
10.20.29.137 | CHANGED | rc=0 | (stdout) DMDB_PACKAGE_8.3.0.0_20230203.tar.gz\nenv\nfs\nncdss-v3\nzookeeper.out
10.20.29.136 | CHANGED | rc=0 | (stdout) DMDB_PACKAGE_8.3.0.0_20230203.tar.gz\nenv\nfs\nncdss-v3\nzookeeper.out
10.20.29.138 | CHANGED | rc=0 | (stdout) ansible.host\ncode\nDMDB\nDMDB_PACKAGE_8.3.0.0_20230203.tar.gz\nenv\nfs\nncdss-v3\nproject-ncdss\nrpmbuild\ntestdir\nzookeeper.out
- 示例 5:-C
[shuhw@web138 ~]$ ansible -i ansible.host -a "ls ~" -C web
10.20.29.137 | SKIPPED
10.20.29.136 | SKIPPED
10.20.29.138 | SKIPPED
- 示例 6:--list
[shuhw@web138 ~]$ cat ansible.host
[web]
10.20.29.136
10.20.29.137
10.20.29.138
[shuhw@web138 ~]$ ansible -i 10.20.29.136,10.20.29.137 all --list
hosts (2):
10.20.29.136
10.20.29.137
[shuhw@web138 ~]$ ansible -i ansible.host all --list
hosts (3):
10.20.29.136
10.20.29.137
10.20.29.138
[shuhw@web138 ~]$ ansible -i ansible.host web --list
hosts (3):
10.20.29.136
10.20.29.137
10.20.29.138
3.1 pattern 参数规则¶
- pattern-官方文档
- ip(正则扩展):如:
10.20.29.*
将匹配清单列表中的10.20.29.
任意主机 - 域名(正则扩展)
- 主机分组:如前文示例中 ansible. host 文件中列出的 web 分组
all
:all 是一个关键字,表示清单里面的所有主机- 示例
[shuhw@web138 ~]$ ansible -i 10.20.29.136,10.20.29.137 -o -a "ls ~" 10.20.*
10.20.29.136 | CHANGED | rc=0 | (stdout) DMDB_PACKAGE_8.3.0.0_20230203.tar.gz\nenv\nfs\nncdss-v3\nzookeeper.out
10.20.29.137 | CHANGED | rc=0 | (stdout) DMDB_PACKAGE_8.3.0.0_20230203.tar.gz\nenv\nfs\nncdss-v3\nzookeeper.out
[shuhw@web138 ~]$ ansible -i 10.20.29.136,10.20.29.137 -o -a "ls ~" all
10.20.29.136 | CHANGED | rc=0 | (stdout) DMDB_PACKAGE_8.3.0.0_20230203.tar.gz\nenv\nfs\nncdss-v3\nzookeeper.out
10.20.29.137 | CHANGED | rc=0 | (stdout) DMDB_PACKAGE_8.3.0.0_20230203.tar.gz\nenv\nfs\nncdss-v3\nzookeeper.out