我有以下任务来创建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:
。
答案 0 :(得分:2)
您如何使用vars表明您并未遵循最佳做法。 staging
和production
应为Ansible组,用户应定义为group_vars。然后你传递的所有内容都是一个用户列表,Ansible会自动从您正在运行该剧本的正确群组中选择。
但要回答你的问题,你可以这样做:
with_items: "{{ database_production_users if vpc_environment == 'production' else database_staging_users }}"