Добавление пользователя и пароля с помощью Ansible

Добавление пользователя и пароля с помощью Ansible

27.05.2024
Автор: HostZealot Team
2 мин.
1006

Пользователям предлагается множество инструментов и функций для автоматизации, что значительно упрощает все проблемы, связанные с управлением. Здесь мы познакомим вас с отличным инструментом под названием 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, начиная с создания пользователя и заканчивая использованием без пароля. Надеемся, эта информация была полезной для вас!

# Как сделать Поделиться:
Статьи по Теме