ansible-playbook命令行(more)

1
usage: ansible-playbook [-h] [--version] [-v] [-k]

常用命令行关键字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
--ask-vault-password, --ask-vault-pass
要求提供保管库密码

--become-method <BECOME_METHOD>
要使用的特权升级方法(默认= sudo),请使用ansible-doc -t成为-l列出有效的选择。

--become-user <BECOME_USER>
以该用户身份运行操作(默认= root)

--flush-cache
清除清单中每个主机的事实缓存

--force-handlers
即使任务失败也运行处理程序

--list-hosts
输出匹配主机列表;不执行其他任何操作

--list-tags
列出所有可用标签

--list-tasks
列出将要执行的所有任务

--private-key <PRIVATE_KEY_FILE>, --key-file <PRIVATE_KEY_FILE>
使用此文件来验证连接

--scp-extra-args <SCP_EXTRA_ARGS>
指定额外的参数以仅传递给scp(例如-l)

--sftp-extra-args <SFTP_EXTRA_ARGS>
指定额外的参数以仅传递给sftp(例如-f,-l)

--skip-tags
仅运行标签与这些值不匹配的剧本和任务

--ssh-common-args <SSH_COMMON_ARGS>
指定要传递给sftp / scp / ssh的通用参数(例如ProxyCommand)

--ssh-extra-args <SSH_EXTRA_ARGS>
指定额外的参数以仅传递给ssh(例如-R)

--start-at-task <START_AT_TASK>
在与此名称匹配的任务处启动剧本

--step
一步一步:在运行之前确认每个任务

--syntax-check
在剧本上执行语法检查,但不执行

--vault-id
要使用的库身份

--vault-password-file, --vault-pass-file
保险库密码文件

--version
显示程序的版本号,配置文件位置,配置的模块搜索路径,模块位置,可执行文件位置和退出

-C, --check
不要做任何改变;相反,尝试预测可能发生的某些变化

-D, --diff
更改(小的)文件和模板时,请显示这些文件中的差异;与–check一起使用效果很好

-K, --ask-become-pass
要求特权升级密码

-M, --module-path
将冒号分隔的路径添加到模块库(默认=〜/ .ansible / plugins / modules:/ usr / share / ansible / plugins / modules)

-T <TIMEOUT>, --timeout <TIMEOUT>
覆盖连接超时(以秒为单位)(默认为10)

-b, --become
使用变为运行操作(不表示提示输入密码)

-c <CONNECTION>, --connection <CONNECTION>
要使用的连接类型(默认=智能)

-e, --extra-vars
如果文件名以@开头,则将其他变量设置为key = value或YAML / JSON

-f <FORKS>, --forks <FORKS>
指定要使用的并行进程数(默认= 5)

-h, --help
显示此帮助消息并退出

-i, --inventory, --inventory-file
指定清单主机路径或逗号分隔的主机列表。–不推荐使用库存文件

-k, --ask-pass
询问连接密码

-l <SUBSET>, --limit <SUBSET>
将所选主机进一步限制为其他模式

-t, --tags
只运行带有这些值标记的剧本和任务

-u <REMOTE_USER>, --user <REMOTE_USER>
以该用户身份连接(默认=无)

-v, --verbose
详细模式(-vvv用于更多,-vvvv用于启用连接调试)

执行Playbook的语法

$ ansible-playbook deploy.yml
查看输出的细节
ansible-playbook playbook.yml --verbose
查看该脚本影响哪些hosts
ansible-playbook playbook.yml --list-hosts
并行执行脚本
ansible-playbook playbook.yml -f 10

完整的playbook脚本示例

最基本的playbook脚本分为三个部分:

  1. 在什么机器上以什么身份执行
  • hosts
  • users
  1. 执行的任务是都有什么
  • tasks
  1. 善后的任务都有什么
  • handlers

deploy.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
---
- hosts: webservers
vars:
http_port: 80
max_clients: 200
user: root
tasks:
- name: ensure apache is at the latest version
yum: pkg=httpd state=latest
- name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running
service: name=httpd state=started
handlers:
- name: restart apache
service: name=httpd state=restarted

playbook语法特性

1
2
3
4
5
1. 以 --- (三个减号)开始,必须顶行写;
2. 次行开始写Playbook的内容,但是一般要求写明该playbook的功能;
3. 严格缩进,并且不能用Tab键缩进;
4. 缩进级别必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别是通过缩进结合换行来实现的;
5. K/V的值可同行写,也可换行写。同行使用 :分隔,换行写需要以 - 分隔;