首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DRY Ansible playbook?

DRY Ansible playbook?
EN

Stack Overflow用户
提问于 2018-04-27 08:44:54
回答 1查看 262关注 0票数 0

我正在尝试使用ansible来管理远程postgres实例的角色,它的剧本看起来像这样:

代码语言:javascript
复制
---
- 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个参数是单调乏味且容易出错的。我怎样才能把这些变量分解出来而不需要在每个任务中重复它们?

EN

回答 1

Stack Overflow用户

发布于 2018-04-27 14:05:45

通过几个变量和一个循环,这将非常容易地工作。下面这样的代码应该可以做到:

代码语言:javascript
复制
---
- 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_1user_2不同的数据库。

现在只有一个任务,所以很容易设置the user data could even come from a different source (虽然为了使用基本的with_items循环,数据结构需要类似于我在这里展示的数据结构)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50053718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档