Перейти к содержимому

Ansible это как создать пользователя

  • автор:

Как создать определенного пользователя на определенном хосте

Есть несколько компьютеров в сети, на каждом из них нужно создать пользователя с определенным логином и паролем. Пользователей создаю так:

vars_prompt: - name: "user_name" prompt: "User name" private: no - name: "user_password" prompt: "Enter a password for the user" private: yes encrypt: "md5_crypt" confirm: yes salt_size: 7 tasks: - name: "add new user" user: name: ">" password: ">" shell: /bin/bash 

Так как компов много не хочу запускать playbook огромное количество раз. В идеале хотел бы реализовать ввод списка хостов(компов) и списка пользователей. Пароль в принципе можно везде одинаковый сделать.

Отслеживать
задан 24 мая 2019 в 16:14
21 1 1 бронзовый знак
Пароль один, а юзеры разные? А какой смысл?
25 мая 2019 в 13:41

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

25 мая 2019 в 17:07

Тогда просто таска по созданию юзера, а потом запускаешь плейбук 1 раз с inventory файлом, где у тебя перечислены хосты.

25 мая 2019 в 17:10

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

На входе: список хостов с заранее известными адресами и количеством пользователей которых нужно добавить.

На выходе: каждый хост содержит сконфигурированные учетные записки для всех перечисленных пользователей.

~$ tree ./ ├── host_vars │ ├── host-01.yml │ ├── host-02.yml │ ├── host-03.yml │ ├── host-04.yml │ ├── host-05.yml │ ├── host-06.yml │ ├── host-07.yml │ ├── host-08.yml │ └── host-09.yml ├── inventory ├── pl-add-users.yml └── roles └── sys_cfg_users_groups └── tasks ├── main.yml └── set_userts.yml 
./host_vars/host-01.yml --- cfg: users: - name: "name-01" password: "hashed_password" shell: "/bin/bash" - name: "name-02" password: "hashed_password" shell: "/bin/bash" - name: "name-03" password: "hashed_password" shell: "/bin/bash" . ./host_vars/host-07.yml ./host_vars/host-08.yml ./host_vars/host-03.yml ./host_vars/host-09.yml ./host_vars/host-02.yml ./host_vars/host-05.yml ./host_vars/host-06.yml ./host_vars/host-04.yml ./inventory [main_group] host-01 ansible_hostname=192.168.1.1 host-02 ansible_hostname=192.168.1.2 host-03 ansible_hostname=192.168.1.3 host-04 ansible_hostname=192.168.1.4 host-05 ansible_hostname=192.168.1.5 host-06 ansible_hostname=192.168.1.6 host-07 ansible_hostname=192.168.1.7 host-08 ansible_hostname=192.168.1.8 host-09 ansible_hostname=192.168.1.9 ./roles/sys_cfg_users_groups/tasks/set_userts.yml --- - name: "set_users | creating user's group" group: name: ">" state: present when: cfg.users | bool with_items: ">" - name: "set_users | creating user's account" user: name: ">" group: ">" shell: ">" passowrd: ">" state: present when: cfg.users | bool with_items: ">" . ./roles/sys_cfg_users_groups/tasks/main.yml --- - name: "include | set users account" include_tasks: "set_users.yml" . ./pl-add-users.yml --- - hosts: main_group roles: - role: sys_cfg_users_groups 

Я бы в своей работе использую унифицированные роли и полностью декларированный список параметров для каждого хоста (под впечатлением от Guix)

click fraud protection

Управление пользователями и их атрибутами — типичная операция для любого системного администратора. Пользовательский модуль Ansible — один из самых удобных способов управления пользователями и их атрибутами при работе с удаленными хостами.

Модуль Ansible.builtin.user является частью ansible-core и доступен по умолчанию в большинстве установок ansible.

В этом руководстве мы сосредоточимся на том, как управлять учетными записями пользователей с помощью пользовательского модуля ansible.

Как работает модуль Ansible User

Пользовательский модуль Ansible работает с использованием набора параметров. Каждый параметр позволяет вам настроить действие, выполняемое модулем, и то, как модуль выполняет заданные действия на удаленном хосте.

Ниже приведены некоторые из важных параметров пользовательского модуля Ansible.

  • имя — Имя пользователя для создания, удаления или изменения
  • пароль — Устанавливает пароль для указанного пользователя.
  • uid — Устанавливает UID определенного пользователя.
  • оболочка — Устанавливает оболочку по умолчанию для пользователя.

Хорошо понимать, что есть другие параметры, не описанные в этом руководстве. Проверить Документы по доступному пользовательскому модулю, чтобы узнать больше.

Лучший способ проиллюстрировать использование пользовательского модуля Ansible — использовать практические примеры.

Практические примеры пользовательского модуля Ansible

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

Прежде чем продолжить, начните с проверки, работают ли удаленные хосты:

доступный все -m ping -v

Если все хосты включены и все требования выполнены, вы должны увидеть результат, аналогичный показанному ниже:

Пример 1: Как создать пользователя

Чтобы создать пользователя на удаленных хостах, мы можем использовать простую книгу воспроизведения, такую ​​как показанная в примере ниже:

— хосты: все
стать реальностью
задания:
— name: создать пользователя на удаленном хосте
ansible.builtin.user:
имя: ansible_test
оболочка: / bin / bash
группа: колесо

В приведенном выше примере мы вызываем пользовательский модуль, используя его полное имя. Однако вы можете кратко называть его «пользователь».

  1. имя — Задает имя пользователя целевого пользователя для создания
  2. оболочка — Устанавливает оболочку по умолчанию для пользователя
  3. группа — Определяет основную группу для пользователя

Сохраните playbook и запустите с помощью команды:

Ansible-playbookСоздать пользователя.yml

Пример 2: Как удалить пользователя

Мы можем удалить удаленного пользователя, установив состояние как отсутствует и удалив значение true. Ниже приведен пример сценария:

— хосты: все
стать реальностью
задания:
— имя: удалить пользователя
ansible.builtin.user:
имя: ansible_test
состояние: отсутствует
удалить: правда

В этом примере мы устанавливаем состояние как отсутствует. Если установить для параметра remove значение true, будут удалены связанные с пользователем каталоги.

Пример 3: Как установить срок действия пароля

Предположим, мы хотим установить дату истечения срока действия пароля пользователя. Мы можем сделать это, установив срок годности как:

— хосты: все
стать реальностью
задания:
— имя: установить срок действия пароля
ansible.builtin.user:
имя: ansible_test
password_expire_min: 5
password_expire_max: 15

Пример 4: Как создать SSH-ключ для пользователя

Чтобы сгенерировать пару ключей SSH для удаленного пользователя, мы можем использовать параметры generate_ssh_key, как показано в playbook ниже:

— хосты: все
задания:
— name: сгенерировать ключ ssh
Пользователь:
имя: ansible_test
generate_ssh_key: true
файл-ключа-ssh: ~ / .ssh / id_rsa
ssh_key_type: rsa
ssh_key_bits: 4096

Пример 5: Как обновить пароль пользователя

Чтобы обновить пароль пользователя, мы создадим резервную копию тени и сгенерируем хэш для пароля, как показано в инструкции ниже:

— хосты: все
стать реальностью
задания:
— имя: резервный теневой файл
копия:
SRC: / и т.д. / тень
dest: /etc/shadow.bak
— имя: обновить пароль пользователя
Пользователь:
имя: ansible_test
состояние: настоящее
update_password: правда
пароль: «>»

В приведенном выше примере мы начинаем с резервного копирования теневого файла. Далее мы указываем новый пароль для пользователя.

Запустите playbook как:

ansible-playbook updatepass.yml updatedpassword =

Заключение

Это руководство научило вас управлять пользователями и их атрибутами с помощью пользовательского модуля Ansible. Предлагаю проверить документацию на дополнительные параметры.

Добавление учетных записей с помощью Ansible

Oct 6, 2016 22:38 · 260 words · 2 minute read ansible

Ранее мы уже рассматривали несколько вариантов использования системы управления конфигурациями Ansible , теперь давайте разберемся как добавить пользователя на удаленный хост!

Считаем, что Ansible установлен и настроен. Для создания пользователя на удаленном хосте мы будем использовать простой набор инструкций (плейбук), хотя можно подойти к вопросу более основательно и создать роль для управления пользователями (подробнее о ролях можно почитать здесь).

Создаем набор инструкций с именем useradd.yml :

touch useradd.yml 

Содержимое файла useradd.yml следующее:

--- - hosts: all  become: yes  tasks:   - name: Add user to remote hosts  user: name=admin groups=sudo shell=/bin/bash password=$6$KjyfytoJ$hoQdVIGcRZgje2HpHFf8ldvooLfY774SrEpHkADUf3d7uGBSwVLeMXsPIfb4l2TaXWvprMz868ZbH8HLaiDeh.   - name: Add SSH keys to remote hosts  authorized_key: user=admin key=">" 

В данном примере поле hosts: содержит группу, на которой будет запущена задача (task). Дополнительно указано, что для выполнения задач требуется эскалация привилегий ( become: yes ).

Примечание. become используется начиная с версии Ansible 1.9, до этого для эскалации привилегий использовали sudo .

Поле tasks: содержит имена задач (Add user to remote hosts и Add SSH keys to remote hosts), имена модулей, которые должны выполняться ( user и authorized_key ) и аргументы, необходимые для выполнения модуля (для первого это name , groups , shell , password , для второго — user , key ).

Запустить только что созданный набор инструкций можно следующей командой:

ansible-playbook playbooks/useradd.yml  PLAY [all] *********************************************************************  TASK [setup] ******************************************************************* ok: [test1] ok: [test2]  TASK [Add user to remote hosts] ************************************************ changed: [test2] changed: [test1]  TASK [Add SSH keys to remote hosts] ******************************************** changed: [test2] changed: [test1]  PLAY RECAP ********************************************************************* test2 : ok=3 changed=2 unreachable=0 failed=0 test1 : ok=3 changed=2 unreachable=0 failed=0 

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

Read more

© Copyright 2023 Yevhen Lebid

Регистрация результата — Основы автоматизации в Ansible

Представьте себе ситуацию, когда результат вывода одной таски, нужно использовать в другой. Например, добавить в cron список домашних директорий пользователя. Для выполнения такой операции в Ansible существует механизм, который называется регистрация результата:

- hosts: all gather_facts: no tasks: - ansible.builtin.shell: ls /Users register: home_dirs - name: add home dirs to cron ansible.builtin.cron: name: "backup_dirs" minute: "0" hour: "5,2" job: "backup /home/ item >>" with_items: home_dirs.stdout_lines - ansible.builtin.debug: var: home_dirs.stdout_lines 

С помощью ключа register , можно записать результат работы модуля shell в переменную с произвольным именем, например, home_dirs . И использовать эту переменную в другой задаче, при вызове модуля cron .

Распечатаем содержимое переменной home_dirs . Для этого нам подойдет модуль debug , который позволяет делать вывод значений:

- hosts: all gather_facts: no tasks: - ansible.builtin.shell: ls /Users register: home_dirs # - name: add home dirs to cron # ansible.builtin.cron: name="backup_dirs" minute="0" hour="5.2" job="backup /home/>" # loop: home_dirs.stdout_lines - name: print home_dirs variable ansible.builtin.debug: var: home_dirs 
-i inventory.ini TASK: [print home_dirs variable] **************** ok: [localhost] =>  "var":  "home_dirs":  "changed": true, "cmd": "ls /Users", "delta": "0:00:00.011196", "end": "2020-08-11 15:20:12.739441", "failed": false, "rc": 0, "start": "2020-08-11 15:20:12.728245", "stderr": "", "stderr_lines": [], "stdout": "Guest\nShared\nkirill" "stdout_lines": [ "Guest", "Shared", "kirill" ] > > > 

home_dirs — это хеш, внутри которого содержится информация о таске: выполнена ли задача, сколько времени заняло ее выполнение, какой модуль использовался и, самое главное, содержимое stderr и stdout . Причем stdout представлен в двух форматах: в виде строки и списка. Списочный формат позволяет использовать результат в цикле, что мы и сделали в первоначальном плейбуке.

Еще один пример:

- hosts: all gather_facts: no tasks: - ansible.builtin.command: 'false' register: result ignore_errors: yes - ansible.builtin.command: echo 'ehu' when: not result.failed - ansible.builtin.command: uptime when: result.failed 

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *