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

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

11:12, 27.05.2024

Содержание статьи
arrow

  • Подготовка среды
  • Модуль пользователя
  • Процесс создания пользователя
  • Ввод пользователя с помощью Ad-Hoc команд
  • Ввод пользователя с помощью плейбуков
  • Создание членства в группе
  • Интеграция паролей
  • Генерация паролей с помощью mkpasswd
  • Ввод пароля с помощью специальных команд
  • Вставка пароля с помощью плейбуков
  • Конфигурация удаленного доступа
  • Подведем итоги

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

views 2m, 20s
views 2
Поделиться

Была ли эта статья полезной для вас?

Популярные предложения VPS

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.