Додавання користувача та пароля за допомогою Ansible
Користувачам пропонується безліч інструментів і функцій для автоматизації, що значно спрощує всі проблеми, які можуть бути пов'язані з управлінням. Тут ми познайомимо вас з чудовим інструментом, який називається Ansible. Це фантастичний варіант для додавання нових користувачів і паролів. Якщо у вас кілька серверів, то процес додавання нових користувачів вручну може забирати багато часу. Тепер вам не потрібно витрачати час і вводити всіх користувачів, ви можете автоматизувати цей процес.
- Підготовка середовища
- Модуль користувача
- Процес створення користувача
- Додавання користувача за допомогою спеціальних команд
- Додавання користувачів за допомогою плейбуків
- Встановлення членства у групі
- Інтеграція пароля
- Створення пароля за допомогою mkpasswd
- Введення пароля за допомогою спеціальних команд
- Введення пароля за допомогою плейбуків
- Налаштування віддаленого доступу
- Підсумовуючи
Виходячи з нашого практичного досвіду використання інструменту, ми поділимося кількома ідеями про Ansible.
Підготовка середовища
Підготовка середовища - важливий крок у будь-якому процесі, тому переконайтеся, що все необхідне є в наявності:
- Файл інвентаризації з хостами
- Ansible встановлений на вузлі керування
- Доступне SSH-з'єднання між клієнтською та керуючими нодами
- Клієнтський вузол як віддалений
Модуль користувача
Цей тип модулів в Ansible є важливим для процесів управління користувачами на хостах. Ось декілька опцій, які надає режим користувача:
- State - визначає необхідний стан облікового запису
- Home - вказує домашню директорію
- Shell- оболонка для входу в систему
- Password - пароль користувача
- Groups - додаткові групи
- Ssh_key_file - місце, де зберігається ключ SSH
- Ssh_key_bits - специфікація кількості бітів у ключі
- Name - і не забуваємо про обов'язкове ім'я користувача
Звичайно, це лише основні опції, але різноманітність їх величезна і для цього модуля передбачено ще кілька додаткових:
- Profile - специфікація профілю
- Seuser - ця опція додає контекст безпеки
- Update_password - цей критерій потрібен для оновлення
Процес створення користувача
Якщо говорити конкретно про процес створення користувача, то технічно є 2 варіанти. Давайте розглянемо кожен з них детальніше.
Додавання користувача за допомогою спеціальних команд
Перший варіант створення користувача пов'язаний зі спеціальними командами. Давайте зануримося в реальний приклад процесу створення користувача:
$ ansible -i project_inventory.ini client1 -m user -a "name=Action state=present createhome=yes" -b
192.168.221.171 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": true,
"comment": "",
"create_home": true,
"group": 1006,
"home": "/home/action",
"name": "Action",
"shell": "/bin/sh",
"state": "present",
"system": false,
"uid": 1005
}
Щоб перевірити, чи було створено користувача з усіма зазначеними даними, скористайтеся наступною командою:
$ ls /home
Додавання користувачів за допомогою плейбуків
Процес створення користувача починається з плейбуків:
$ cat add_user.yml
---
- name: Create a user
hosts: client1
become: yes
tasks:
- name: Add user Action
user:
name: Action
shell: /bin/bash
home: /home/action
Після цього запустіть цей сценарій. Щоб перевірити, чи процес пройшов успішно, як і у попередньому прикладі, перейдіть на клієнтський вузол і виконайте ту саму команду:
$ ls /home/
Встановлення членства у групі
Тепер перейдемо до встановлення членства в групі для вже створеного користувача, процес наступний:
$ cat add_grp.yml
---
- name: Create a group and add a user
hosts: client1
become: yes
tasks:
- name: Ensure the group exists
group:
name: group1
state: present
- name: Add user to the group
user:
name: action
groups: group1
append: yes
Після цього запустіть цей сценарій. Щоб перевірити, чи успішно завершився процес, скористайтеся наступною командою:
$ groups group1
Інтеграція пароля
Тут ми покажемо декілька методів для правильної інтеграції пароля.
Створення пароля за допомогою mkpasswd
Зашифровані паролі можна створювати різними методами, але mkpasswd вважається найпоширенішим з них. Ця утиліта входить до складу whois-пакету, тому почнемо з її встановлення:
$ sudo apt install whois
Введення пароля за допомогою спеціальних команд
Mkpasswd можна використовувати разом з Ad-Hoc таким чином:
$ ansible -i project_inventory.ini client1 -m user -a "name=Action password=$(mkpasswd --method=sha-512 '123')" --become
192.168.221.171 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"append": false,
"changed": true,
"comment": "",
"group": 1006,
"home": "/home/action",
"move_home": false,
"name": "Action",
"password": "NOT_LOGGING_PASSWORD",
"shell": "/bin/sh",
"state": "present",
"uid": 1005
}
Для перевірки пароля спробуйте увійти з новим паролем для користувача.
Введення пароля за допомогою плейбуків
Для введення через плейбук використовуйте наступний рядок:
mkpasswd --method=sha-512
Password:
$6$r6pnvoHc$gpG9kpqIbQfGL2o/NsTD/uN04OsZ15zAydVFPYkflnbSWCTTUBn9yC6IJb7MoRvzQqmadKuf.GEYv8ldQrlZO1
Після цього ви можете вставити пароль у плейбук і запустити його. Після цього ви можете спробувати увійти зі створеним паролем.
Налаштування віддаленого доступу
За допомогою Ansible ми також можемо використовувати безпарольний доступ. Для цього віддаленого доступу почніть зі створення плейбука:
$ cat user_ssh.yml
---
- name: Create user, SSH directory, and transfer SSH keys
hosts: client1
become: yes # Use become to run tasks as a privileged user
tasks:
- name: Create SSH directory for action
file:
path: /home/action/.ssh
state: directory
owner: action
group: action
mode: 0700
- name: Generate SSH key for action
user:
name: action
generate_ssh_key: yes
ssh_key_type: rsa
ssh_key_bits: 4096
ssh_key_file: /home/action/.ssh/id_rsa # Full path is needed here
- name: Transfer public key to the target host
authorized_key:
user: action
key: "lookup('file', '/home/vagrant/.ssh/id_rsa.pub')"
Підсумовуючи
У цій статті ми поділилися типовими прикладами використання Ansible, починаючи від створення користувача і закінчуючи використанням без пароля. Сподіваємося, ця інформація була для вас корисною!