Ansible - 根据条件将不同的变量传递给with_items

时间:2016-02-18 14:27:07

标签: python ansible devops

我有以下任务来创建MySQL用户,我将database_staging_users传递给with_items。我想在database_production_users时传递vpc_environment == "production"

- name: Create MySQL users
  mysql_user:
    name: "{{ item.username }}"
    password: "{{ item.password }}"
    priv: "{{ item.privileges }}"
    host: "%"
    state: present
    login_host: "{{ hostvars.localhost.rds_db.instance.endpoint }}"
    login_user: "{{ rds_db_username }}"
    login_password: "{{ rds_db_password }}"
  with_items: database_staging_users

有办法吗?我不想复制任务并使用when:

1 个答案:

答案 0 :(得分:2)

您如何使用vars表明您并未遵循最佳做法。 stagingproduction应为Ansible组,用户应定义为group_vars。然后你传递的所有内容都是一个用户列表,Ansible会自动从您正在运行该剧本的正确群组中选择。

但要回答你的问题,你可以这样做:

with_items: "{{ database_production_users if vpc_environment == 'production' else database_staging_users }}"