Nginx安装剧本
ansible-playbook test1.yaml
//补充参数
-k(-ask-pass):用来交互输入ssh密码
-K(-ask-become-pass):用来交互输入sudo密码
-u:指定用户
-e:命令行指定变量
--syntax-check 粗略检查语法
--list-task #列出任务
--start-at-tast=‘install httpd by yum’#指定执行的位置
获取子字段的值(address)加点指定即可
copy:count“ansible_default_ipv4.address”
when //条件判断,常见实现跳过某个主机不执行
//迭代ansible提供了很多种循环结构,命名为with_items作用等同于loop循环
tasks任务 模块的格式
横向格式
user:name=zhagnsan groups=kgc
纵向格式
user:
name: zhagnsan
groups: "{{item}}"
with_items 的编写格式
横向格式
值为纯量时
with_items: ["a","b","c"]
值为对象时
with_items:{key1: value1,key2: value2}
with_items:
- {key1: value1,key2: value2}
纵向格式
值为纯量是(单纯的一个值)
with_items:
- a
- b
- c
值为对象时
with_items:
- key1: value1
- key2: value2
ansible循环结构体
with_items with_flattened with_list loop
-a
-b
-c
在处理单层列表(每个列表只有一个元素)时,上面几个循环机构体是没有区别的,都会把每个列表的值遍历一遍
with_items with_flattened with_list loop
- [a,b,c]
- [1,2,3]
- [A,B,C]
在处理嵌套的多层列表(一个列表有多个元素)时,with_items和with_flattened会将嵌套列表拉平扩展,将循环处理所有的元素
with_list和loop不会嵌套列表拉平扩展,指挥按照最外层的列表进行循环处理
with_together 将几个列表的元素对其合并后输出,比如第一个列表的第一个元素和第二个列表的第一个元素合并输出,第一个列表第二个元素和第二个列表第二个元素合并输出
with_nested with_cartesian 将每个列表的元素按照分别组合循环输出比如a1A a1B a1C a2A a2B a2C . . . .
运行playbook
ansible-playbook XXX.yaml --ayntax-check #检查语
法 --list-task 列出所有任务 --lisst-hosts 列出剧本在那个主机执行 --start-at-task='任务名称' 指定从哪个任务开始执行
使用普通用户执行playbook
-remote_user:普通用户 #远程主机需要事先sudo授权
become:yes
become_user: root
ansible-playbook XXX.yaml -k -K
定义和引用变量
- name:
. . .
vars:
- 变量1: 值1
- 变量2: 值2
- 变量3:
- key1: value1 - {key1: value1, key2: value2}
key2:value2 - {key1: value3,key2:value4}
- 变量4:
- 值1
- 值2
-值3
- 变量5:【值1,值2,值3】
tasks:
-name: XXX
模块:参数选项1={{item}}
with_items: “{变量4}”
在tasks里引用变量是,可以从vars自定义的变量中引用,还可以直接引用facts字段的值,还鞥你ansible-playbook -e "变量名=值",此方式优先级大于playbook中vars定义的变量的值
when条件判断
- name:
. . .
tasks:
- name: XXX
模块:. . .
when: 变量名 条件运算符(== != >= <= )"值" when判断结果为true才会执行当前任务,false不执行任务
template模板模块
1)先要准备一个xxx.j2 模板文件,在文件中使用{{变量名}} 引用主机变量或者vars自定义的变量及facts字段的值
2)在playbook中的tasks中定义templae模板配置 template:src=XXX.j2 dest=XXX
tags模块
可以在一个playbook中为某个或某些任务定义“标签”,在执行此playbook时通过标签执行
tags模块
- name:
. . .
tasks:
tags:
- 标签1
- 标签2
- name:XXX
模块:
tags:
-aways
ansible-playbook --tags="标签" XXX.yaml