Ansible库存-循环使用组中的主机条目

时间:2018-10-09 15:04:13

标签: ansible ansible-inventory

背景:我有一个动态的ansible库存,它是由先前运行的流程构建的,直到完成此任务后我才知道IP。我分为两组:清单文件中定义的数据库服务器和Web服务器。我要完成的特定任务是创建some_user @'dynamic_ip_of_webserver_group'。

我想我很亲密,但是有些不对劲。在我的dbserver角色中,主要任务是:

- name: Create DB User
      mysql_user:
        name: dbuser
        host: "{{ item }}"
        password: "{{ mysql_wordpress_password }}"
        priv: "someDB.*:ALL"
      with_items:
        - "{{ ansible_hostname }}"
        - 127.0.0.1
        - ::1
        - localhost
        - "{{ hostvars[groups['webservers']] }}"

出现此错误的原因是:

TASK [dbservers : Create DB User] *******************************************************************************************************************************************************************
fatal: [10.10.10.13]: FAILED! => {"msg": "ansible.vars.hostvars.HostVars object has no element [u'10.10.10.30', u'10.10.10.240']"}

它显示的是正确的IP,只有2个,所以两个都是正确的。我认为它正在尝试将库存项目作为对象而不是实际输入进行访问?

库存文件:

[webservers]
10.10.10.30
10.10.10.240

1 个答案:

答案 0 :(得分:1)

简单地:

- "{{ groups['webservers'] }}"

,这是有效的,因为with_items将列表的第一个嵌套层展平。