我可以在 Ansilbe playbook 的定义(Playbook 的开头)部分使用“when”条件吗?

我可以在 Ansilbe playbook 的定义(Playbook 的开头)部分使用“when”条件吗?

我正在写一本剧本,这就是我想要实现的目标:

公司有一个银行应用程序,其组件分布在多个服务器上。该服务可以通过单个脚本停止,也可以逐个组件停止。在应用安全补丁 (RHEL) 之前,我必须停止该应用程序。

它应该从用户那里读取用户是否想要从 AIO 脚本停止应用程序或者应该逐个组件地停止应用程序。

对于我写的包:

vars_prompt:                              
  - name: deploypackages                  
    prompt: Do you want to deploy Packages
    private: no

现在有一种方法可以为应用程序实现此目的,并且它应该仅在以下情况下运行:部署包等于y

我们可以when在任务之前使用主机部分中的子句吗?我尝试过,但它没有做任何事情 - 甚至没有抛出错误,所以我在互联网上搜索,但找不到任何答案。

答案1

问:仅当“deploypackages”等于“y”时运行。

A:比如创建一个库存

shell> cat hosts
dummy

[multiple_servers]
host1
host2
host3

和剧本

shell> cat pb.yml
- hosts: "{{ (deploypackages == 'y')|
             ternary('multiple_servers', 'dummy') }}"
  gather_facts: false
  vars_prompt:
    - name: deploypackages
      prompt: Do you want to deploy Packages
      private: no
  tasks:
    - meta: end_play
      when: inventory_hostname == 'dummy'
    - debug:
        msg: Applying security Patches ...
  • 如果你不要回答“y”戏将结束
shell> ansible-playbook -i hosts pb.yml
Do you want to deploy Packages: no

PLAY [dummy] *********************************************************************************

TASK [meta] **********************************************************************************

PLAY RECAP ***********************************************************************************
  • 如果你回答“是”戏还将继续
shell> ansible-playbook -i hosts pb.yml
Do you want to deploy Packages: y

PLAY [multiple_servers] **********************************************************************

TASK [meta] **********************************************************************************
skipping: [host1]

TASK [debug] *********************************************************************************
ok: [host1] => 
  msg: Applying security Patches ...
ok: [host2] => 
  msg: Applying security Patches ...
ok: [host3] => 
  msg: Applying security Patches ...

PLAY RECAP ***********************************************************************************
host1                      : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
host2                      : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
host3                      : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

相关内容