accounts

аккаунты

Последний тест

Содержание

Развертывание пользователей и открытых ключей на ваших машинах.

Требования

Эта роль требует Ubuntu.

Переменные роли

Создайте список всех пользователей, которых необходимо создать в системе. Вы можете установить любые параметры для пользователя, доступные на http://docs.ansible.com/ansible/user_module.html. Также вы можете установить любые параметры (кроме "user") для ключа, доступные на http://docs.ansible.com/ansible/authorized_key_module.html. Необязательный массив "accounts_sshd_configs" позволяет устанавливать параметры sshd_config.

accounts_users:
- name: __USERNAME__
  uid: __UID__
  state: present
  groups:
  - sudo
  public_keys:
  - key: ssh-rsa AAA...
    state: present

accounts_sshd_configs:
- key: PermitRootLogin
  value: 'no'
- key: AuthenticationMethods
  value: 'publickey password'
- key: PasswordAuthentication
  value: 'yes'

Если вам нужны дополнительные пользователи на основе хоста, вы можете установить дополнительный список accounts_host_users.

accounts_host_users:
- name: __USERNAME__
  uid: __UID__
  state: present
  groups:
  - sudo
  public_keys:
  - key: ssh-rsa AAA...
    state: present

Пример плейбука

- hosts: accounts
  roles:
  - { role: andrelohmann.accounts }

Разработка роли

Специальное назначение

Этот репозиторий поддерживает следующие функции для разработки роли:

  • yamllint
  • ansible-lint
  • molecule test
  • github action
  • автоматическое обновление версии
  • обновление ansible-galaxy
  • отображение статуса сборки
  • тестирование в vagrant (для целей разработки)
  • тестирование с molecule (внутри или вне vagrant)
  • тестирование в контейнере Docker
  • тестирование и разработка внутри vscode

Предварительные требования

https://thedatabaseme.de/2022/01/17/automated-testing-your-ansible-role-with-molecule-and-github-actions/

  • Установлены Virtualbox и Vagrant (только если роль должна быть протестирована с vagrant)
  • Docker Desktop
  • VisualStudioCode + пакет расширений для удаленной работы (зависимости определены в .vscode/extensions.json)

Настройка разработки

Эта ansible роль разрабатывается с использованием molecule для тестирования. Разработка основана на Visual Studio Code и соответствующем контейнере разработки, решающем все зависимости в отношении необходимых инструментов (ansible, linter, molecule).

Роль будет тестироваться на двух контейнерах Ubuntu (focal, jammy).

Чтобы запустить контейнеры тестирования molecule изнутри контейнера разработки, необходимо смонтировать сокет Docker в контейнер разработки.

Важные папки и файлы

.devcontainer
  • Определяет Dockerfile для контейнера разработки
  • Настраивает запуск контейнера разработки (например, монтирование сокета Docker)
molecule/default/Dockerfile.js
  • Используется как шаблон для всех платформ, определенных в molecule/default/molecule.yml
  • Подготавливает среды для поддержки служб systemd (необходимо для некоторых ansible ролей, работающих с systemd)
  • Устанавливает все требования для работы ansible с производным контейнером
  • Файл приведён в соответствие с атрибутами платформ в molecule/default/molecule.yml
  • Для получения дополнительной информации - изучите документацию molecule

Использование

Visual Studio Code

  • Перейдите в корневую директорию вашей роли и запустите vscode
code .
  • Из контейнера разработки можно использовать следующие команды запуска
yamllint .
ansible-lint .
molecule create
molecule test

Vagrant + Virtualbox

  • Перейдите в корневую директорию вашей роли
  • Перейдите в папку vagrant
  • Запустите и войдите в машину vagrant
vagrant up
vagrant ssh
  • Перейдите в папку роли
cd /etc/ansible/roles/ansible-role- [tab]
  • Теперь вы можете выполнить все тесты
yamllint .
ansible-lint .
molecule create
molecule test

Процесс сборки и выпуска

Роль ansible определяет набор рабочих процессов github для выполнения тестирования molecule и управления выпуском.

Управление выпуском требует определенных настроек.

Защита ветки master/main

  • Настройки -> Ветки -> Добавить правило защиты ветки
  • Шаблон ветки -> main или master (в зависимости от вашей ветки по умолчанию)
  • Защитить соответствующие ветки -> отметьте "Требовать pull request перед слиянием"
  • "Требовать одобрения" можно обрабатывать индивидуально по мере необходимости.

Дать права на чтение и запись для GITHUB_TOKEN

  • Настройки -> Действия -> Общее -> Права рабочего процесса -> права на чтение и запись

Сообщения коммита

Сообщения коммита должны следовать специальному формату для достижения патчевого, минорного или мажорного обновления семантической версии.

патч

0.0.x

fix(single_word): описание
минорное

0.x.0

feat(single_word): описание
мажорное

x.0.0

perf(single_word): описание
BREAKING CHANGE: описание поломки

Крайне важно, чтобы "BREAKING CHANGE: " упоминалось на второй и последующих строках. В однострочных сообщениях коммитов обновление мажорной версии будет игнорироваться.

Добавить секрет GALAXY_API_KEY

  • Аутентифицируйтесь с вашей учетной записью github на https://galaxy.ansible.com/.
  • Получите ключ API galaxy из Настройки -> API ключ
  • Откройте ваш репозиторий роли github
  • Настройки -> Секреты и переменные -> Действия -> Новый секрет репозитория
  • Используйте "GALAXY_API_KEY" в качестве ключа и скопированный ключ API galaxy в качестве значения.

Лицензия

MIT

Информация об авторе

© Андре Лохманн (и другие) 2024

https://github.com/andrelohmann

Контактные данные для поддержки

  • Андре Лохманн <lohmann.andre (at) gmail (dot) com>
О проекте

ansible galaxy role to deploy users and public keys

Установить
ansible-galaxy install andrelohmann/ansible-role-accounts
Лицензия
mit
Загрузки
480
Владелец