ansible--其他语法

本文介绍了Ansible中的关键语法特性,包括如何使用`ignore_errors`忽略错误继续执行任务,利用`handlers`解决任务间的依赖,通过`when`条件判断控制任务执行,运用`block`组织多个任务并处理异常,以及使用`loop`实现循环操作。这些技巧对于优化Ansible剧本的执行流程至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.ignore_errors-----忽略错误,继续执行后续任务

一个剧本里边可能存在多个任务,一旦有一个任务中间出错都会导致后续任务的终止,所以ansible有相应的错误处理机制,ignore_errors参数就是针对某一个任务忽略错误的。

例子1:
---
- hosts: test1
  ignore_errors: true                 #针对playbook全局忽略错误
  tasks:
    - name: 开启一个服务
      service: 
        name: hello
        stat: started


例子2:
---
- hosts: test1
  tasks:
    - name: 开启一个服务
      service: 
        name: hello
        stat: started
      ignore_errors: true                 #针对某一任务忽略错误
    - name: 复制文件
      copy:
        src: /tmp/service.txt
        dest: /etc/service.txt

2.handlers----解决依赖性的任务

剧本中的某个任务执行可能需要依赖于其他任务先执行,他是一个依赖关系,自己不单独执行,这种情况下就需要用到notify触发执行handlers任务。

注意:1.仅当任务执行状态为changed时handlers任务才执行。

2.如果有多个notify触发执行handlers任务,也仅执行一次。

3.handlers任务在所有其他任务都执行后才执行。

第一次执行:

第二次执行:

3.when----条件判断

定义判断条件,条件为真时才执行某个任务。

1.常见的操作符如下: ==、!= 、>、>=、<=

2.多个条件可以用and或or分割

3.when表达式中调用变量不要使用{{}}

4.>支持多行输入,不保留换行符

例子如下:

4.block任务块---可以将多个任务合并成一个组

1.结合when判断语句使用

剧本如图:

 执行后的结果如下:

2.rescue 定义block任务执行失败时要执行其他任务

   always定义无论block任务是否成功,都要执行的任务

剧本如图:

 执行结果如下:

 5.loop循环-----类似于shell脚本中的for循环

# loop实例

---
- hosts: test1
  tasks:
    - name: 创建用户
      user:
        name: "{{item.iname}}"                #item是关键字,不可以改变名称
        password: "{{item.ipass| password_hash('sha512')}}"
      loop:
        - {iname: 'term', ipass: '123456'}
        - {iname: 'amy', ipass: '654321'}
~                                            

运行结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值