如何使用ansible Inventory和模块“htpasswd”为每个环境创建用户

时间:2017-06-28 07:33:22

标签: ansible ansible-inventory

我是ansible的新手。我在“ /etc/httpd/.htpasswd ”中创建了用于创建用户和密码的ansible角色,如下所示:

- name: htpasswd
  htpasswd:
    path: /etc/httpd/.htpasswd
    name: dev
    password: dev
    group: apache
    mode: 0640
  become: true

现在,我试图了解如何使用库存(或任何其他方式)为此模型设置每个环境的用户和密码占位符变量。就像,如果我运行“ansible playbook -i inventoryories / dev”,那么可以设置这个模型的角色:

- name: htpasswd
  htpasswd:
    path: /etc/httpd/.htpasswd
    name: "{{ inventory.htpasswd.name }}"
    password: "{{ inventory.htpasswd.password }}"
    group: apache
    mode: 0640
  become: true

在每个环境的库存文件夹中,文件名为“htpasswd”,其名称和密码内容如下:

name: dev
password: dev

Ansible有类似的东西吗?或者有人可以解释一下最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

默认情况下,Ansible将每个主机分配到all组。使用以下结构,您可以根据库存定义组变量。

  • 库存的/ dev /主机
  • 库存的/ dev / group_vars / all.yml
  • 库存/分段/主机
  • 库存/分段/ group_vars / all.yml

inventories/dev/group_vars/all.yml

name: dev
password: dev

inventories/staging/group_vars/all.yml

name: staging
password: staging

然后在你的任务中,用他们的名字引用变种:

- name: htpasswd
  htpasswd:
    path: /etc/httpd/.htpasswd
    name: "{{ name }}"
    password: "{{ password }}"
    group: apache
    mode: 0640
  become: true