Добавление пользователя и пароля с помощью Ansible
11:12, 27.05.2024
Пользователям предлагается множество инструментов и функций для автоматизации, что значительно упрощает все проблемы, связанные с управлением. Здесь мы познакомим вас с отличным инструментом под названием Ansible. Это фантастический вариант для добавления новых пользователей и паролей. Если у вас несколько серверов, то ручной процесс добавления новых пользователей может отнимать много времени. Теперь вам не нужно тратить время и вводить всех пользователей, вы можете автоматизировать этот процесс.
Основываясь на нашем практическом опыте эксплуатации инструмента, мы поделимся с вами некоторыми соображениями об Ansible.
Подготовка среды
Подготовка среды - важнейший этап любого процесса, поэтому постарайтесь проверить, есть ли все необходимое:
- Файл инвентаря с хостами
- Ansible установлена на узле контроллера
- SSH-соединение между клиентским и контрольным узлами
- Клиентский узел как удаленный
Модуль пользователя
Этот тип модуля в Ansible необходим для процессов управления пользователями на хостах. Вот несколько опций, которые предоставляет пользовательский модуль:
- State - определяет необходимое состояние учетной записи
- Home - указывает домашний каталог
- Shell - оболочка для входа в систему
- Password - пароль пользователя
- Groups - дополнительные группы
- Ssh_key_file - место, где хранится SSH-ключ
- Ssh_key_bits - указание количества битов в ключе
- Name - и не забудем про обязательное имя пользователя.
Конечно, это только основные опции, но разнообразие их огромно, и для данного модуля есть несколько дополнительных:
- Profile - указание профиля
- Seuser - эта опция добавляет контекст безопасности
- Update_password - этот критерий необходим для обновления
Процесс создания пользователя
Если говорить конкретно о процессе создания пользователя, то технически существует 2 варианта. Итак, давайте обсудим каждый вариант подробнее.
Ввод пользователя с помощью Ad-Hoc команд
Первый вариант создания пользователя связан с Ad-Hoc командами. Давайте рассмотрим реальный пример процесса создания пользователя:
$ 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, начиная с создания пользователя и заканчивая использованием без пароля. Надеемся, эта информация была полезной для вас!