如何使用 ansible Inventory 和模块 "htpasswd" 根据环境创建用户

How create users per enviroment using ansible Inventory and module "htpasswd"

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

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

现在,我试图了解如何使用清单(或任何其他方式)为此模型的每个环境设置用户和密码占位符变量。就像,如果我 运行 "ansible playbook -i inventories/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 有类似的东西吗?或者有人可以向我解释一下最佳做法吗?

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

  • inventories/dev/hosts
  • inventories/dev/group_vars/all.yml
  • inventories/staging/hosts
  • inventories/staging/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