簡體   English   中英

如何有條件地運行 Ansible 劇本?

[英]How to run Ansible playbook conditionally?

我如何根據條件運行一些劇本。 我將解釋我目前的情況 - 我有一個主要的 yml - main.yml正在導入 4 個劇本,條件如下 -

---
- import_playbook: current-deployment-status.yml

- import_playbook: current-config-status.yml

- import_playbook: full-deployment.yml
  when: target_release_version != current_release

- import_playbook: only-config-change.yml
  #when: config_var.changed  == true and target_release_version == current_release

第一個劇本current-deployment-status.yml獲取部署的當前發布版本並注冊一個變量current_release 同樣,第二個劇本做一些配置檢查並注冊到變量config_var中。

現在基於這兩個變量,我必須執行我進一步的劇本。 如果target_release_version == current_release那么我不想進行部署,所以只有在滿足上述條件時才執行full-deployment.yml

同樣,如果只需要更改配置而無需部署: config_var.changed == true and target_release_version == current_release ,則執行only-config-change.yml

有沒有辦法僅在條件滿足時才執行劇本,否則跳過它並繼續進行。

請讓我知道是否有人可以指導我正確的方向

是的,您可以使用 set_facts ansible 模塊來實現它。

主.yml

---
- import_playbook: current-deployment-status.yml

- import_playbook: current-config-status.yml

- import_playbook: full-deployment.yml
  when: target_release_version != current_release

- import_playbook: only-config-change.yml
  when: config_var.changed  == true and target_release_version == current_release

當前部署狀態.yml

- name : Playbook current-deployment-status
  hosts: all 
  user: ubuntu 
  gather_facts: True

  tasks:
    - name: echo playbook name 
      shell: echo "current-deployment-status.yml"

    - set_fact:
        current_release: "2"

當前配置狀態.yml

- name : Playbook current-config-status.yml
  hosts: all 
  user: ubuntu 
  gather_facts: True

  tasks:
    - name: echo playbook name 
      shell: echo "current-config-status.yml"

    - name: task2
      shell: echo "another task"
      register: config_var

    - debug: msg="{{config_var.changed}}"

完全部署.yml

- name : Playbook
  hosts: all 
  user: ubuntu 
  gather_facts: True

  tasks:
    - name: echo playbook name 
      shell: echo "full_deployment.yml"

僅配置更改.yml

- name : Playbook only-config-change.yml
  hosts: all 
  user: ubuntu 
  gather_facts: True

  tasks:
    - name: echo playbook name 
      shell: echo "only-config-change.yml"

ansible-playbook -i 172.31.6.248, main.yml -v --extra-vars "target_release_version=2"

ubuntu@ip-172-31-38-43:~/ansible_test$ ansible-playbook -i 172.31.6.248, main.yml -v --extra-vars "target_release_version=2"
PLAY [Playbook current-deployment-status] ***********************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************
ok: [172.31.6.248]

TASK [echo playbook name] ***************************************************************************************************************
changed: [172.31.6.248] => {"changed": true, "cmd": "echo \"current-deployment-status.yml\"", "delta": "0:00:00.002429", "end": "2020-05-31 16:46:29.900240", "rc": 0, "start": "2020-05-31 16:46:29.897811", "stderr": "", "stderr_lines": [], "stdout": "current-deployment-status.yml", "stdout_lines": ["current-deployment-status.yml"]}

TASK [set_fact] *************************************************************************************************************************
ok: [172.31.6.248] => {"ansible_facts": {"current_release": "2"}, "changed": false}

PLAY [Playbook current-config-status.yml] ***********************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************
ok: [172.31.6.248]

TASK [echo playbook name] ***************************************************************************************************************
changed: [172.31.6.248] => {"changed": true, "cmd": "echo \"current-config-status.yml\"", "delta": "0:00:00.002484", "end": "2020-05-31 16:46:30.776486", "rc": 0, "start": "2020-05-31 16:46:30.774002", "stderr": "", "stderr_lines": [], "stdout": "current-config-status.yml", "stdout_lines": ["current-config-status.yml"]}

TASK [task2] ****************************************************************************************************************************
changed: [172.31.6.248] => {"changed": true, "cmd": "echo \"another task\"", "delta": "0:00:00.002473", "end": "2020-05-31 16:46:31.048677", "rc": 0, "start": "2020-05-31 16:46:31.046204", "stderr": "", "stderr_lines": [], "stdout": "another task", "stdout_lines": ["another task"]}

TASK [debug] ****************************************************************************************************************************
ok: [172.31.6.248] => {
    "msg": true
}

PLAY [Playbook full_deployment.yml] *****************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************
skipping: [172.31.6.248] => {"changed": false, "skip_reason": "Conditional result was False"}

TASK [echo playbook name] ***************************************************************************************************************
skipping: [172.31.6.248] => {"changed": false, "skip_reason": "Conditional result was False"}

PLAY [Playbook only-config-change.yml] **************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************
ok: [172.31.6.248]

TASK [echo playbook name] ***************************************************************************************************************
changed: [172.31.6.248] => {"changed": true, "cmd": "echo \"only-config-change.yml\"", "delta": "0:00:00.002585", "end": "2020-05-31 16:46:32.017156", "rc": 0, "start": "2020-05-31 16:46:32.014571", "stderr": "", "stderr_lines": [], "stdout": "only-config-change.yml", "stdout_lines": ["only-config-change.yml"]}

PLAY RECAP ******************************************************************************************************************************
172.31.6.248               : ok=9    changed=4    unreachable=0    failed=0

ansible-playbook -i 172.31.6.248, main.yml -v --extra-vars "target_release_version=3"

PLAY [Playbook current-deployment-status] ***********************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************
ok: [172.31.6.248]

TASK [echo playbook name] ***************************************************************************************************************
changed: [172.31.6.248] => {"changed": true, "cmd": "echo \"current-deployment-status.yml\"", "delta": "0:00:00.002490", "end": "2020-05-31 16:48:28.611482", "rc": 0, "start": "2020-05-31 16:48:28.608992", "stderr": "", "stderr_lines": [], "stdout": "current-deployment-status.yml", "stdout_lines": ["current-deployment-status.yml"]}

TASK [set_fact] *************************************************************************************************************************
ok: [172.31.6.248] => {"ansible_facts": {"current_release": "2"}, "changed": false}

PLAY [Playbook current-config-status.yml] ***********************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************
ok: [172.31.6.248]

TASK [echo playbook name] ***************************************************************************************************************
changed: [172.31.6.248] => {"changed": true, "cmd": "echo \"current-config-status.yml\"", "delta": "0:00:00.002565", "end": "2020-05-31 16:48:29.440319", "rc": 0, "start": "2020-05-31 16:48:29.437754", "stderr": "", "stderr_lines": [], "stdout": "current-config-status.yml", "stdout_lines": ["current-config-status.yml"]}

TASK [task2] ****************************************************************************************************************************
changed: [172.31.6.248] => {"changed": true, "cmd": "echo \"another task\"", "delta": "0:00:00.002459", "end": "2020-05-31 16:48:29.703006", "rc": 0, "start": "2020-05-31 16:48:29.700547", "stderr": "", "stderr_lines": [], "stdout": "another task", "stdout_lines": ["another task"]}

TASK [debug] ****************************************************************************************************************************
ok: [172.31.6.248] => {
    "msg": true
}

PLAY [Playbook full_deployment.yml] *****************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************
ok: [172.31.6.248]

TASK [echo playbook name] ***************************************************************************************************************
changed: [172.31.6.248] => {"changed": true, "cmd": "echo \"full_deployment.yml\"", "delta": "0:00:00.002509", "end": "2020-05-31 16:48:30.610648", "rc": 0, "start": "2020-05-31 16:48:30.608139", "stderr": "", "stderr_lines": [], "stdout": "full_deployment.yml", "stdout_lines": ["full_deployment.yml"]}

PLAY [Playbook only-config-change.yml] **************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************
skipping: [172.31.6.248] => {"changed": false, "skip_reason": "Conditional result was False"}

TASK [echo playbook name] ***************************************************************************************************************
skipping: [172.31.6.248] => {"changed": false, "skip_reason": "Conditional result was False"}

PLAY RECAP ******************************************************************************************************************************
172.31.6.248               : ok=9    changed=4    unreachable=0    failed=0   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM