将包含的 ansible 任务作为独立任务运行

Pyz*_*yzo 8 ansible

我有许多 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') }}"
Run Code Online (Sandbox Code Playgroud)

有没有办法传入主机名并从命令行将其作为独立任务运行,或者我是否需要创建另一个剧本来自己运行这两个任务?

小智 6

要实现这一点,有两个要求:-

  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
    
    Run Code Online (Sandbox Code Playgroud)

然后你可以:-

ansible-playbook foo.yml -i hosts -t this_role --limit host.example.com
Run Code Online (Sandbox Code Playgroud)

并不是说这仍在运行包含完整剧本的剧本,而是将运行的任务限制为仅与标签匹配的任务。其余任务将被跳过。