Додавання користувача та пароля за допомогою Ansible

Додавання користувача та пароля за допомогою Ansible

27.05.2024
Автор: HostZealot Team
2 мін.
46

Користувачам пропонується безліч інструментів і функцій для автоматизації, що значно спрощує всі проблеми, які можуть бути пов'язані з управлінням. Тут ми познайомимо вас з чудовим інструментом, який називається Ansible. Це фантастичний варіант для додавання нових користувачів і паролів. Якщо у вас кілька серверів, то процес додавання нових користувачів вручну може забирати багато часу. Тепер вам не потрібно витрачати час і вводити всіх користувачів, ви можете автоматизувати цей процес.

Виходячи з нашого практичного досвіду використання інструменту, ми поділимося кількома ідеями про 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, починаючи від створення користувача і закінчуючи використанням без пароля. Сподіваємося, ця інформація була для вас корисною!

# Як зробити Поділитися:
Статті за темою