SCROLL
Среднее время на прочтение: 1 мин.

Ansible — Playbook создание пользователя в Linux

Ansible Playbook — это мощные сценарии автоматизации, которые организуют выполнение множества задач, назначают роли, определяют конфигурации и шаги развертывания, а также управляют переменными.

В рамках данного формата статей, я буду публиковать только playbook сценарии под различные нужны, которыми самолично пользуюсь.

Playbook создания пользователя и добавления его в указанные группы на Linux машине. В переменные (vars), задаются параметры на основе которых уже создается пользователь и назначается ему членство в группах.

/opt/ansible/pb_linux_add_usr.yml
---
- name:
  hosts: linux_host
  vars:
    username: "username"      # Имя пользователя, которого нужно создать
    user_password: "password" # Пароль для пользователя (в незашифрованном виде)
    group: "sudo"             # В какие группы добавить пользователя (разделитель ,)

  tasks:
    - name: Получить информацию о пользователе
      ansible.builtin.getent:
        database: passwd
        key: "{{ username }}"
      register: user_info
      ignore_errors: yes

    - name: Получить информацию о группе
      ansible.builtin.getent:
        database: group
        key: "{{ group }}"
      register: group_info
      ignore_errors: yes

    - name: Отладка - показать информацию о пользователе
      ansible.builtin.debug:
        msg: "User info: {{ user_info }}"

    - name: Отладка - показать информацию о группе
      ansible.builtin.debug:
        msg: "Group info: {{ group_info }}"

    - name: Проверить, состоит ли пользователь в группе
      set_fact:
        user_in_group: "{{ group in user_info.entries.groups }}"
      when: user_info is defined and user_info.entries is defined

    - name: Добавить пользователя и задать ему пароль, если пользователя не существует
      ansible.builtin.user:
        name: "{{ username }}"
        password: "{{ user_password | password_hash('sha512') }}"  # Зашифровываем пароль
        state: present
        shell: /bin/bash
        create_home: yes
      when: user_info is undefined

    - name:  Добавить пользователя в группу sudo, если группа sudo существует.
      ansible.builtin.user:
        name: "{{ username }}"
        groups: "{{ group }}"
        append: yes
      when: user_info.entries is defined and not user_in_group

Обсуждение

0 комментариев

Нет комментариев.