ansible剧本模式特殊模块使用

Nginx安装剧本

ansible剧本模式特殊模块使用_第1张图片

ansible剧本模式特殊模块使用_第2张图片

 

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

你可能感兴趣的:(ansible,java,数学建模)