Ansible:将剧本中的任务限制为localhost

时间:2018-03-28 08:38:26

标签: ansible ansible-2.x

我想将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片段中,但这很难看。

2 个答案:

答案 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 IntroLocal PlaybooksDelegation

- 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: