Ansible之Playbooks的when语句

在使用ansible做自动化运维的时候,大多数情况下都执行某些任务的时候都需要依赖某个变量的值或者是上一个任务的执行结果。如,根据facts信息中的系统版本相关的信息来确定使用哪种包管理器安装软件。Ansible提供when语句,可以控制任务的执行流程。

一个很简单的when语句的例子:

1

2

3

4

    tasks:

      - name: "shutdown Debian flavored systems"

        command: /sbin/shutdown -t now

        when: ansible_os_family == "Debian

表示当节点主机系统为Debian的时候,执行关机操作。

在符合语句中也可以使用小括号:

1

2

3

4

5

    tasks:

      - name: "shutdown CentOS 6 and 7 systems"

        command: /sbin/shutdown -t now

        when: ansible_distribution == "CentOS" and

              (ansible_distribution_major_version == "6" or ansible_distribution_major_version == "7")

 在`when`语句中也可以使用过滤器。如,我们想跳过一个语句执行中的错误,但是后续的任务的执行需要由该任务是否成功执行决定:

1

2

3

4

5

6

7

8

9

10

    tasks:

      - command: /bin/false

        register: result

        ignore_errors: True

      - command: /bin/something

        when: result|failed

      - command: /bin/something_else

        when: result|success

      - command: /bin/still/something_else

        when: result|skipped

有时候需要将一个字符串的变量转换为整数来进行数字比较:

1

2

3

    tasks:

      - shell: echo "only on Red Hat 6, derivatives, and later"

        when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int >= 6

在playbooks和inventory中定义的变量都可以使用,如,需要根据一个变量的bool值决定是否执行该任务:

1

2

    vars:

      epic: true

 条件语句:
 

1

2

3

    tasks:

        - shell: echo "This certainly is epic!"

          when: epic



或:
 

1

2

3

    tasks:

        - shell: echo "This certainly isn't epic!"

          when: not epic

 如果引用的变量没有被定义,使用Jinja2的`defined`测试,可以跳过或者是抛出错误:

1

2

3

4

5

6

    tasks:

        - shell: echo "I've got '{ { foo }}' and am not afraid to use it!"

          when: foo is defined

     

        - fail: msg="Bailing out. this play requires 'bar'"

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
作为一个AI助手,我没有实际使用Ansible编写playbooks的经验。但是,我可以提供一些常见的用例和示例内容,您可以在Ansible playbooks中实现它们: 1. 软件包安装和配置:使用Ansible可以轻松地在多台服务器上安装和配置软件包。例如,安装和配置Nginx、MySQL、Redis等。 2. 配置文件管理:使用Ansible可以修改配置文件的内容。您可以使用模板文件和变量来生成和修改目标服务器上的配置文件。 3. 服务启动和停止:通过Ansible playbooks,您可以启动、停止或重新启动服务。例如,启动一个Web服务器或重启一个数据库服务。 4. 用户和组管理:使用Ansible可以管理用户和组。您可以创建、删除或修改用户和组,并为他们分配权限和SSH密钥。 5. 部署应用程序:使用Ansible可以自动化应用程序的部署过程。您可以将应用程序代码从源代码库拉取到目标服务器,并配置必要的环境和依赖项。 6. 文件传输和同步:通过Ansible,您可以在多个服务器之间传输文件,并确保文件的一致性和同步。 7. 系统监控和日志收集:使用Ansible,您可以安装和配置监控代理和日志收集器,以收集服务器的性能指标和日志数据。 这只是一些常见的用例,Ansible的功能非常强大,可以应对许多不同的自动化任务和场景。您可以根据您的需求和具体环境来编写Ansible playbooks,以实现所需的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rqaz123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值