Ansible任务控制与Ansible-Playbook

YAML特点

YAML 文件以 # 为注释符

YAML 文件以 .yml或者.yaml 结尾

YAML 文件以 --- 开始 ... 结束,但开始和结束标志都是可选的

基本语法

大小写敏感

使用缩进表示层级关系

缩进时是使用Tab键还是使用空格- -定要达到统- ,建议使用空格。

相同层级的元素必须左侧对齐即可

YAML 支持的数据结构有三种

字符串:

Ansible任务控制与Ansible-Playbook_第1张图片

列表:

Ansible任务控制与Ansible-Playbook_第2张图片

字典:

Ansible任务控制与Ansible-Playbook_第3张图片

混合结构

Ansible任务控制与Ansible-Playbook_第4张图片

验证YAML语法

Ansible任务控制与Ansible-Playbook_第5张图片

Play 常用属性

Ansible任务控制与Ansible-Playbook_第6张图片

一个完整的剧本

Ansible任务控制与Ansible-Playbook_第7张图片

执行和校验Playbook

如何对Playbook进行语法校验?

下面校验的方法,只能校验PlayBook是否正确,而不能校验YAMl文件是否语法正确。

ansible-playbook -i hosts myPlaybook.yml --syntax-check

也可以使用python来检查

python -c 'import yaml,sys;print yaml.safe_load(sys.stdin)' < myPlaybook.ym

执行Playbook

ansible-playbook -i hosts myPlaybook.yml

Ansible任务控制与Ansible-Playbook_第8张图片

如何单步跟从调试PlayBook

//执行Task中的任务,需要手动确认是否往下执行

ansible-playbook -i hosts myPlaybook.yml --step

Ansible任务控制与Ansible-Playbook_第9张图片

测试运行PlayBook

//会执行完整个PLayBook,但是所有Task中的行为都不会在远程服务器上执行,所有执行都是模拟行为。

ansible-playbook myplaybook.yml -C

//-C为大写字母C

Ansible任务控制与Ansible-Playbook_第10张图片

Ansible任务控制

Ansible条件判断

场景nginx启动逻辑欠缺考虑

Nginx语法校验

- name: check nginx syntax

  shell: /usr/sbin/nginx -t

可以使用Ansible中的注册变量。

获取Task任务结果

- name: check nginx syntax

  shell: /usr/sbin/nginx -t

  register: nginxsyntax

通过debug模块,打印出来的返回结果。

when条件判断

语法:

Ansible任务控制与Ansible-Playbook_第11张图片

Ansible任务控制与Ansible-Playbook_第12张图片

with_items循环

PlayBook中使用with items 去实现循环控制,且循环时的中间变量(上面shell循环中的$i变量)只能是关键字item,而不能随意自定义

Jinja2 模板

Jinja2是基于python书写的模板引擎。

jinja2 必知必会

1、jinja2文件以.j2为后缀,也可以不写后缀。

2、jinja2中存在 三种定界符

    注释:{{# #}}

    变量引用:{{ var }}

    逻辑表达:{% %}

3、jinja2 逻辑控制

条件表达

{% if %}

...

...

{% endif %}

案例:

Ansible任务控制与Ansible-Playbook_第13张图片

循环控制:

Ansible任务控制与Ansible-Playbook_第14张图片

案例:

Ansible任务控制与Ansible-Playbook_第15张图片

注意:

Ansible任务控制与Ansible-Playbook_第16张图片

你可能感兴趣的:(Linux运维,ansible,运维,批处理)