我想将Ansible游戏限制为特定主机 这是我想要的缩减版本:
- hosts some_host_group
tasks:
- name: Remove existing server files
hosts: 127.0.0.1
file:
dest: /tmp/test_file
state: present
- name: DO some other stuff
file:
...
我想(作为早期任务)删除本地目录(我已经在示例中创建了一个文件,因为它是一个更容易观察到的测试)。我的印象是我可以通过" hosts"将游戏限制为一组主机。任务的参数 - 但是我得到了这个错误:
ERROR! 'hosts' is not a valid attribute for a Task
$ansible --version
ansible 2.3.1.0
感谢。
PS我可以将ansible包装在一个shell片段中,但这很难看。
答案 0 :(得分:2)
您应该使用delegate_to
or local_action
并告诉Ansible run the task only once(否则它将尝试删除目录中的目标主机次数,尽管这不会有问题。)< / p>
如果你想删除目录,你也应该使用absent
而不是present
。
- name: Remove existing server files
delegate_to: 127.0.0.1
run_once: true
file:
dest: /tmp/test_file
state: absent
答案 1 :(得分:0)
您的剧本中存在语法错误,请查看Ansible Intro,Local Playbooks和Delegation。
- hosts: some_host_group
tasks:
- name: Remove existing server files
- hosts: localhost
tasks:
- file:
dest: /tmp/test_file
state: present
- name: DO some other stuff
file: