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
Предварительные требования
- Установлены 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 install andrelohmann/ansible-role-accounts