Я только начал использовать Ansible. Есть ли лучшие практики при управлении несколькими учетными записями пользователей с помощью Ansible; (например, создание, отключение и удаление учетных записей пользователей). Думал, управление учетными записями из csv файла будет раньше. Мне не удалось найти никаких ссылок или примеров.
Я создал следующий тест ниже. Но для удобства использования, кажется, было бы проще запустить это с файлом csv, и вам не приходилось каждый раз редактировать файл yml.
- hosts: servers
remote_user: root
tasks:
- name: adding several users
user:
name={{ item.name }}
state=present
comment={{ item.comment }}
password=$1$*)^%$CeUUJM&v#0pQhHjqjpqX1
update_password=on_create
createhome=yes
groups={{ item.groups }}
with_items:
- { name: 'testuser3', comment: 'testuser3', groups: 'wheel' }
- { name: 'testuser4', comment: 'testuser4', groups: 'users' }
Спасибо за помощь.
В документации есть хорошая глава: Разделение файлов переменных.
Определить users.yml
:
users:
- name: testuser3
comment: testuser3
groups: wheel
- name: testuser4
comment: testuser4
groups: users
И в вашей пьесе:
- hosts: servers
remote_user: root
vars_files:
- /vars/users.yml
tasks:
- name: adding several users
user:
name: "{{ item.name }}"
state: present
comment: "{{ item.comment }}"
password: "$1$*)^%$CeUUJM&v#0pQhHjqjpqX1"
update_password: on_create
createhome: yes
groups: "{{ item.groups }}"
with_items: "{{ users }}"
P.S. Я также изменил синтаксис аргументов на YAML вместо key=value
- поверьте мне, он более надежен в сложных пьесах.
А если вы хотите управлять разными наборами пользователей на разных хостах, вы можете использовать переменные группы / хоста инвентаря вместо файлов переменных уровня воспроизведения.
Начиная с версии Ansible 2.8 существует модуль под названием read_csv.
# Example CSV file with header
#
# name,uid,gid
# dag,500,500
# jeroen,501,500
# Read a CSV file and access the first item
- name: Read users from CSV file and return a list
read_csv:
path: users.csv
register: users
delegate_to: localhost
- debug:
msg: 'User {{ users.list.1.name }} has UID {{ users.list.1.uid }} and GID {{ users.list.1.gid }}'