Ansible

將包含的 ansible 任務作為獨立任務執行

  • March 27, 2022

我有許多 Ansible 劇本,它們將被包含在更大的劇本中。例如:

---
- name: Add user me
 user: name=me comment="Me" uid=9999 groups=somegroup
- name: Add my ssh public key
 authorized_key: user=me key="{{ lookup('file', 'id_rsa.pub') }}"

有沒有辦法傳入主機名並從命令行將其作為獨立任務執行,還是我需要創建另一個劇本來自己執行這兩個任務?

實現這一目標有兩個要求:-

  1. 您嘗試定位的主機必須在清單文件中
  2. 您需要在要執行的角色中標記任務
- name: Add user me
 user: name=me comment="Me" uid=9999 groups=somegroup
 tags: this_role
- name: Add my ssh public key
 authorized_key: user=me key="{{ lookup('file', 'id_rsa.pub') }}"
 tags: this_role

那麼你就可以:-

ansible-playbook foo.yml -i hosts -t this_role --limit host.example.com

並不是說它仍在執行包含完整劇本的劇本,而是將執行的任務限制為僅與標籤匹配的任務。剩餘的任務將被跳過。

引用自:https://serverfault.com/questions/573502