Как создать пользователей в среде с использованием ansible Inventory и модуля "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 инвентаризация /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 ответ

Решение

По умолчанию каждый хост назначен all группа по Ansible. С помощью следующей структуры вы можете определить групповые переменные на основе инвентаря.

  • товарно-материальные запасы / 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
Другие вопросы по тегам