我正在尝试使用ansible来管理远程postgres实例的角色,它的剧本看起来像这样:
---
- hosts: localhost
tasks:
- postgresql_user:
login_host: the.db.com
login_password: password
port: 5432
login_user: admin
db: the-db
name: user-i-want-to-create这是可行的,但是我想要创建许多这样的用户,并且为每个用户重复这5个参数是单调乏味且容易出错的。我怎样才能把这些变量分解出来而不需要在每个任务中重复它们?
发布于 2018-04-27 14:05:45
通过几个变量和一个循环,这将非常容易地工作。下面这样的代码应该可以做到:
---
- hosts: localhost
vars:
pgsql_default_db: "the-db"
pgsql_root_user: "admin"
pgsql_root_pass: "password"
pgsql_users:
- name: "user_1"
password: "user_1_password"
- name: "user_2"
password: "user_2_password"
- name: "user_3"
password: "user_3_password"
db: "the-alternate-db"
tasks:
- name: Create database users.
postgresql_user:
login_host: the.db.com
login_password: "{{ pgsql_root_pass }}"
login_user: "{{ pgsql_root_user }}"
port: 5432
db: "{{ item.db | default(pgsql_default_db) }}"
name: "{{ item.name }}"
password: "{{ item.password }}"
with_items: "{{ pgsql_users }}"这将创建三个用户,由pgsql_users变量定义,并展示了一种改变某些属性的方法--创建user_3时可以访问与user_1和user_2不同的数据库。
现在只有一个任务,所以很容易设置the user data could even come from a different source (虽然为了使用基本的with_items循环,数据结构需要类似于我在这里展示的数据结构)。
https://stackoverflow.com/questions/50053718
复制相似问题