我有许多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另一个手册来自己运行这两个任务?
有两个要求来实现这一点:
您需要为要运行的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') }}\""
请注意主机名后的逗号。