一千萬個為什麽

搜索

在一本完美的劇本中運行一本完美的劇本的最佳策略是什麽?



我有一年的黑客攻擊手冊,它運行良好,但我知道這不是很好,它的一部分在目標機器上通過“命令”任務運行。正因為如此,我沒有看到這個任務的輸出在我的劇本中。

我需要在劇本中間運行這個劇本,因為它依賴於之前的任務,而後續任務依賴於它(否則我會以不同的方式分解它)

我希望能夠看到我所有劇本的輸出,是否有更好的方式在劇本中間分流戲劇。

例如:在TASK 3上給HOOK_A和HOST_B運行一個劇本,暫停運行播放,接下來在HOST_C和HOST_D上運行,然後運行HOST_E和HOST_F?

- name: update other machines
  command: "/usr/bin/ansible-playbook /etc/ansible/playbooks/other-machines.yml -e 'ansible_user={{ item.ansible_user }}' -l {{ item.ansible_hostname }}"
  with_items: "{{ other_machine_connections }}"

轉載註明原文: 在一本完美的劇本中運行一本完美的劇本的最佳策略是什麽?

一共有 2 個回答:

如果我已經正確理解你的問題:

  • the ansible shell command in the middle could be converted to a simple playbook using the command task - let's call this middle.yml
  • your existing playbook could then directly import this middle.yml play (or even a more complex playbook). In Ansible 2.4+, you would use import_playbook, specifically import_playbook: middle.yml, or in earlier versions, just include: middle.yml.

這會處理整個 middle.yml playbook,就好像它是主要劇本的一部分一樣 - 您具有Ansible plays的所有功能( hosts 等),並且輸出顯示為部分的主要劇本。

此答案可能需要更新,具體取決於您對我上面評論的回復。

查看授權 - 您可以將任務的執行委托給劇本中的不同主機:

  - name: enable the server in haproxy
    haproxy: 'state=enabled backend=myapplb host={{ inventory_hostname }} socket=/var/lib/haproxy/stats'
    delegate_to: "{{ item }}"
    with_items: groups.lbservers