Loops 循环Ansible中的列表和变量

Loops 循环Ansible中的列表和变量,loops,ansible,Loops,Ansible,我将使用Ansible将两个MySQL数据库上的权限授予来自不同IP的用户。我现在得到的是: 变量: 任务: 直接调用数组元素看起来不太好。考虑到数据库不是一个数组,我只想在带有\u item指令的数组中循环使用韵律\u hosts数组 我们的目标是得到这样的东西: ... with_items - { host: "{{ prosody_hosts }}", database: "{{ oauth_db }}" } - { host: "{{ prosody_hosts }}", dat

我将使用Ansible将两个MySQL数据库上的权限授予来自不同IP的用户。我现在得到的是: 变量:

任务:

直接调用数组元素看起来不太好。考虑到数据库不是一个数组,我只想在带有\u item指令的数组中循环使用韵律\u hosts数组

我们的目标是得到这样的东西:

... 
with_items
- { host: "{{ prosody_hosts }}", database: "{{ oauth_db }}" }  
- { host: "{{ prosody_hosts }}", database: "{{ prosody_db }}" }

提前谢谢

您需要的是嵌套循环。 看这个

基本上你会得到类似的结果。将数据库放入名为“数据库”的列表中,就像对待主机一样。这将为每个主机和每个数据库执行任务。
我还没有测试过这个,但它应该非常接近

- name: add or update mysql user prosody
  mysql_user:
   name: "{{ prosody_user }}"
   host: "{{ item[0] }}"
   password: "{{ prosody_password }}"
   login_user: "{{ root_user }}"
   login_password: "{{ root_password }}"
   check_implicit_admin: yes
   append_privs: yes
   priv: "{{ item[1] }}.*:ALL,GRANT"
  with_nested:
    - "{{ prosody_hosts }}"
    - "{{ databases }}"

您需要的是嵌套循环。 看这个

基本上你会得到类似的结果。将数据库放入名为“数据库”的列表中,就像对待主机一样。这将为每个主机和每个数据库执行任务。
我还没有测试过这个,但它应该非常接近

- name: add or update mysql user prosody
  mysql_user:
   name: "{{ prosody_user }}"
   host: "{{ item[0] }}"
   password: "{{ prosody_password }}"
   login_user: "{{ root_user }}"
   login_password: "{{ root_password }}"
   check_implicit_admin: yes
   append_privs: yes
   priv: "{{ item[1] }}.*:ALL,GRANT"
  with_nested:
    - "{{ prosody_hosts }}"
    - "{{ databases }}"
- name: add or update mysql user prosody
  mysql_user:
   name: "{{ prosody_user }}"
   host: "{{ item[0] }}"
   password: "{{ prosody_password }}"
   login_user: "{{ root_user }}"
   login_password: "{{ root_password }}"
   check_implicit_admin: yes
   append_privs: yes
   priv: "{{ item[1] }}.*:ALL,GRANT"
  with_nested:
    - "{{ prosody_hosts }}"
    - "{{ databases }}"