运行包含了一个独立的任务

我有许多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') }}" 

有没有办法通过一个主机名,并从命令行作为一个独立的任务来运行,还是我需要创build另一个手册来自己运行这两个任务?

有两个要求来实现这一点:

  1. 您尝试定位的主机必须位于库存文件中
  2. 您需要为要运行的angular色标记任务

     - 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 

这并不是说它仍然在运行包含完整游戏的剧本,但是它限制了那些与标签匹配的任务。 剩下的任务将被跳过。

当然,你应该能够做到这样的事情:

 $ ansible-playbook foo.yml -i hosts -u user --limit host.example.com 

用户和authorized_key都是模块。 所以你可以从任何脚本中用ansible -m来调用它们

 ansible all -i host.example.com, -m user -a 'name=me comment="Me" uid=9999 groups=somegroup' ansible all -i host.example.com, -m authorized_key -a "user=me key=\"{{ lookup('file', 'id_rsa.pub') }}\"" 

请注意主机名后的逗号。