遍历委托_to语句中包含Ansible主机组的变量

时间:2019-04-25 17:56:24

标签: ansible

我的Ansible计划中有一个这样设置的变量-

NavGuard

在我的主机文件中,我有一个像这样的条目-

 pre_tasks:

  - name: Hosts
    debug:
      msg: "dev_web"
    register: web_server_group

在我的Ansible计划中,我有一个[dev_web] 1.1.1.6 命令,该命令试图通过使用为组名定义的delegate_to变量在该dev_web组内的主机上运行。 / p>

web_server_group

这给了我这个错误-

- name: Folder creation
  file:
    path: /tmp/dummy
    owner: apache
    group: apache
    mode: 0770
    state: directory
  delegate_to: "{{ web_server_group }}"

是否可以通过将我设置为预任务的web_server_group变量中的主机填充下来,来使用proxy_to命令?

我尝试以此替换UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname web_server_group: Name or service not known", "unreachable": true} 命令-

delegate_to

但我收到此错误-

  delegate_to: '{{ item }}'
  with_items: "{{ groups['web_server_group'] }}"

还有另一种方法可以完成此任务或与此类似的事情吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

我不确定您要做什么。具体来说,我不知道您要如何完成此任务:

- name: Hosts
  debug:
    msg: "dev_web"
  register: web_server_group

这将创建一个名为web_server_group的变量,其内容如下:

{
    "changed": false, 
    "failed": false, 
    "msg": "dev_web"
}

已经已经有一个名为dev_web的组,该组似乎完全包含您要定位的主机。

如果要在特定主机组上运行任务,只需创建针对该主机组的播放即可。例如:

- hosts: dev_web
  tasks:
    - name: Folder creation
      file:
        path: /tmp/dummy
        owner: apache
        group: apache
        mode: 0770
        state: directory

这将在/tmp/dummy组中的所有主机上创建dev_web目录。真的没有任何理由在这里使用委派。

相关问题