【问题标题】:Ansible Inventory - Use host entries in a group in a loopAnsible Inventory - 在循环中使用组中的主机条目
【发布时间】:2018-10-09 23:30:39
【问题描述】:

背景:我有一个由先前运行的进程构建的动态 ansible 清单,直到此任务完成后我才知道 IP。我有 2 个组:库存文件中定义的数据库服务器和 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

【问题讨论】:

    标签: ansible ansible-inventory


    【解决方案1】:

    简单地说:

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

    这行得通,因为with_items 将列表的第一个嵌套级别展平。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多