bootstrap
// Этот файл создается .github/workflows/gh-pages.yml - все локальные изменения в конечном итоге будут потеряны! = ansible-role-bootstrap Йонас Паммер opensource@jonaspammer.at; :toc: слева :toclevels: 2 :toc-placement!: :source-highlighter: rouge
https://galaxy.ansible.com/jonaspammer/bootstrap[image:https://img.shields.io/badge/available%20on%20ansible%20galaxy-jonaspammer.bootstrap-brightgreen[Версия на Galaxy]] // Очень важные статусные значки https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/ci.yml[image:https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/ci.yml/badge.svg[Тестирование CI]]
Роль Ansible для подготовки Linux-системы к управлению с помощью Ansible.
Эта роль использует модуль https://docs.ansible.com/ansible-core/2.16/collections/ansible/builtin/raw_module.html[`ansible.builtin.raw`] в сочетании с собственно реализованной системой определения операционной системы для установки минимально необходимых пакетов (python
и sudo
), чтобы Ansible мог управлять системой.
Эта роль также гарантирует наличие актуального кэша пакетов для большинства систем.
В большинстве случаев вы захотите использовать эту роль в сочетании с моей ролью https://github.com/JonasPammer/ansible-role-core_dependencies[`core_dependencies`].
[ПРИМЕЧАНИЕ] .ОГОВОРКА ===== Эта роль является форком https://github.com/robertdebock/ansible-role-bootstrap/releases/tag/5.2.12[robertdebock/ansible-role-bootstrap v5.2.12 (27 января 2022 года)] (Лицензия Apache 2.0, Авторские права Роберта де Бока (robert@meinit.nl)) с различными изменениями/исправлениями. + Отрывок изменений из https://github.com/JonasPammer/ansible-role-bootstrap/releases[/releases] ниже (с сопутствующими проблемами в репозитории robertdebock):
- Роль должна предварительно подготовить кэш менеджера пакетов: https://github.com/robertdebock/ansible-role-bootstrap/pull/57[robertdebock/ansible-role-bootstrap#57] (исправлено в https://github.com/JonasPammer/ansible-role-bootstrap/pull/43[JonasPammer#43]; https://github.com/JonasPammer/ansible-role-bootstrap/pull/50[JonasPammer#50])
- Изменить значение по умолчанию для become на
false
, добавить возможность определятьbecome_user
отдельно отansible_user
: https://github.com/robertdebock/ansible-role-bootstrap/issues/63[robertdebock/ansible-role-bootstrap#63] (исправлено в https://github.com/JonasPammer/ansible-role-bootstrap/pull/61[JonasPammer#61]) - Изменить значение по умолчанию для
bootstrap_become_user
на root - Использовать
bootstrap_become_user
в шагах модулей ansible тоже Сделать роль совместимой с podman, указав
/bin/sh
https://github.com/robertdebock/ansible-role-bootstrap/pull/66[robertdebock/ansible-role-bootstrap#66] (исправлено в https://github.com/JonasPammer/ansible-role-bootstrap/pull/62[JonasPammer#62])
toc::[]
[[meta]] == 🔎 Метаданные Ниже вы можете найти информацию о…
- необходимой версии Ansible для роли
- поддерживаемых платформах роли
- зависимостях роли https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#role-dependencies
.link:meta/main.yml[] [source,yaml]
galaxy_info: role_name: bootstrap description: Роль ansible для подготовки linux-системы к управлению ansible. Основана на роли robertdebock.
author: jonaspammer license: "MIT"
min_ansible_version: "2.9" platforms: - name: EL # (Enterprise Linux) versions: - "9" # активно тестируется: rockylinux9 - name: Fedora versions: - "38" # активно тестируется: fedora38 - "39" # активно тестируется: fedora39 - name: Debian versions: - bullseye # активно тестируется: debian11 - bookworm # активно тестируется: debian12 - name: Ubuntu versions: - focal # активно тестируется: ubuntu2004 - jammy # активно тестируется: ubuntu2204
galaxy_tags: - bootstrap - python - sudo
dependencies: []
[[requirements]]
== 📌 Требования
// Все предварительные условия, которые могут быть не охвачены этой ролью или самим Ansible, должны быть указаны здесь.
Пользователь Ansible должен иметь возможность become
.
[[variables]] == 📜 Переменные роли // Описание настраиваемых переменных для этой роли должно находиться здесь // и любые переменные, которые могут/должны быть заданы через параметры к роли. // Любые переменные, которые считываются из других ролей и/или глобальной области (например, hostvars, group vars и т.д.) // также должны быть упомянуты здесь.
[source,yaml]
bootstrap_user: root
https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html#term-ansible_user[Имя пользователя], используемое для подключения к машине для основных raw
задач сбор простых фактов / установки.
[source,yaml]
bootstrap_become: false bootstrap_become_user: root
Переменные become
и become_user
передаются большинству фактических задач.
Значение по умолчанию для bootstrap_become
было установлено на false
, поскольку предполагается, что sudo
недоступен до начальной настройки.
[source,yaml]
bootstrap_wait_for_host: false
Необходимо ли ждать, чтобы хост стал доступен на ansible_port
(22).
[source,yaml]
bootstrap_timeout: 3
Максимальное количество секунд, чтобы дождаться доступности/используемости удаленной системы перед сбоем.
[[public_vars]] == 📜 Факты/Переменные, определенные этой ролью
Каждая переменная, перечисленная в этом разделе, динамически определяется при выполнении этой роли (и может быть переопределена только с помощью ansible.builtin.set_facts
) и предназначена для использования не только внутренне.
[[tags]] == 🏷️ Теги
// Ознакомьтесь с https://github.com/tribe29/ansible-collection-tribe29.checkmk/blob/main/roles/server/README.md#tags для отличного примера группировки задач с использованием тегов
Задачи помечены следующими тегами: [cols="1,1"] |=== |Тег | Назначение
2+| Эта роль еще не имеет официально задокументированных тегов.
// | download-xyz // | // | install-prerequisites // | // | install // | // | create-xyz // | |===
Вы можете использовать Ansible, чтобы пропускать задачи или запускать только определенные задачи, используя эти теги. По умолчанию все задачи выполняются, если не указаны теги.
[[dependencies]] == 👫 Зависимости // Список других ролей должен быть здесь, // а также любые детали относительно параметров, которые могут потребоваться для установки других ролей, // или переменные, которые используются из других ролей.
[[example_playbooks]] == 📚 Примеры использования плейбука // Примеры того, как использовать эту роль в плейбуке для распространенных сценариев, также всегда полезны для пользователей:
[ВАЖНО]
Вы должны отключить свойство gather_facts
плейбука, в котором используется эта роль.
Если эта роль завершится успешно, она сама вызовет https://docs.ansible.com/ansible/latest/collections/ansible/builtin/setup_module.html[модуль настройки Ansible] (эквивалентный эффект будет получен от gather_facts: true
).
Перед этой ролью не должно быть задач.
.Минимально жизнеспособный плей
[source,yaml]
hosts: servers:&provisioned name: Настройка Linux-машин для управления Ansible. become: false gather_facts: false
roles:
- role: jonaspammer.bootstrap
====
.Изменение пользователя для начальной настройки (например, когда root не является вариантом)
[source,yaml]
hosts: servers:&provisioned name: Настройка Linux-машин для управления Ansible. become: false gather_facts: false
vars: bootstrap_user: "{{ ansible_user }}"
roles:
- role: jonaspammer.bootstrap
====
.Использование become true (например, когда вы уверены, что у вас есть работающий sudo)
[source,yaml]
hosts: servers:&provisioned name: Настройка Linux-машин для управления Ansible. become: true gather_facts: false
vars: bootstrap_user: "{{ ansible_user }}" bootstrap_become: true
roles:
- role: jonaspammer.bootstrap
====
[[tested-distributions]] == 🧪 Протестированные дистрибуции
Роль может работать на разных дистрибуциях, таких как Red Hat Enterprise Linux (RHEL), даже если для этой конкретной дистрибуции нет тестов. // хорошая ссылка для следования -- это наиболее отмеченный и закрепленный проект geerlingguy: // https://github.com/geerlingguy/ansible-role-docker/blob/master/.github/workflows/ci.yml |=== | Семейство ОС | Дистрибуция | Дата выпуска дистрибуции | Дата окончания жизненного цикла дистрибуции | Сопутствующий образ Docker
// https://endoflife.date/rocky-linux | Rocky | Rocky Linux 8 (https://www.howtogeek.com/devops/is-rocky-linux-the-new-centos/[RHEL/CentOS 8 под другим именем]) | 2021-06 | 2029-05 | https://github.com/geerlingguy/docker-rockylinux8-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-rockylinux8-ansible/workflows/Build/badge.svg?branch=master[CI]]
| Rocky | Rocky Linux 9 | 2022-07 | 2032-05 | https://github.com/geerlingguy/docker-rockylinux9-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-rockylinux9-ansible/workflows/Build/badge.svg?branch=master[CI]]
// https://endoflife.date/fedora (13 месяцев) | RedHat | Fedora 39 | 2023-11 | 2024-12 | https://github.com/geerlingguy/docker-fedora39-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-fedora39-ansible/workflows/Build/badge.svg?branch=master[CI]]
// https://ubuntu.com/about/release-cycle | Debian | Ubuntu 20.04 LTS | 2021-04 | 2025-04 | https://github.com/geerlingguy/docker-ubuntu2004-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-ubuntu2004-ansible/workflows/Build/badge.svg?branch=master[CI]]
| Debian | Ubuntu 22.04 LTS | 2022-04 | 2027-04 | https://github.com/geerlingguy/docker-ubuntu2204-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-ubuntu2204-ansible/workflows/Build/badge.svg?branch=master[CI]]
// https://wiki.debian.org/DebianReleases // https://wiki.debian.org/LTS | Debian | Debian 11 | 2021-08 | 2024-06 (2026-06 LTS) | https://github.com/geerlingguy/docker-debian11-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-debian11-ansible/workflows/Build/badge.svg?branch=master[CI]]
| Debian | Debian 12 | 2023-06 | 2026-06 (2028-06 LTS) | https://github.com/geerlingguy/docker-debian12-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-debian12-ansible/workflows/Build/badge.svg?branch=master[CI]] |===
[[tested-ansible-versions]] == 🧪 Протестированные версии Ansible
Протестированные версии ansible пытаются оставаться эквивалентными в соответствии с https://github.com/ansible-collections/community.general#tested-with-ansible[шаблоном поддержки коллекцииcommunity.general
Ansible]. На момент написания это:
- 2.13 (Ansible 6)
- 2.14 (Ansible 7)
- 2.15 (Ansible 8)
- 2.16 (Ansible 9)
[[development]] == 📝 Разработка // Значки о Конвенциях в этом Проекте https://conventionalcommits.org[image:https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg[Конвенциональные коммиты]] https://results.pre-commit.ci/latest/github/JonasPammer/ansible-role-bootstrap/master[image:https://results.pre-commit.ci/badge/github/JonasPammer/ansible-role-bootstrap/master.svg[статус pre-commit.ci]] // image:https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white[pre-commit, link=https://github.com/pre-commit/pre-commit]
[[development-system-dependencies]] === 📌 Зависимости машины для разработки
- Python 3.10 или выше
- Docker
[[development-dependencies]]
=== 📌 Зависимости для разработки
Зависимости для разработки определены в https://pip.pypa.io/en/stable/user_guide/#requirements-files[файле требований pip],
названном requirements-dev.txt
.
Пример инструкций по установке для Linux показан ниже:
"по желанию": создайте виртуальную среду python и активируйте ее для текущей сессии оболочки
$ python3 -m venv venv $ source venv/bin/activate
$ python3 -m pip install -r requirements-dev.txt
[[development-guidelines]] === ℹ️ Руководство по разработке роли Ansible
Пожалуйста, ознакомьтесь с моими https://github.com/JonasPammer/cookiecutter-ansible-role/blob/master/ROLE_DEVELOPMENT_GUIDELINES.adoc[Руководство по разработке роли Ansible].
Если вам интересно, я также изложил некоторые https://github.com/JonasPammer/cookiecutter-ansible-role/blob/master/ROLE_DEVELOPMENT_TIPS.adoc[Рекомендации по разработке ролей Ansible].
[[versioning]] === 🔢 Версии
Версии определяются с помощью https://git-scm.com/book/en/v2/Git-Basics-Tagging[Тегов], которые, в свою очередь, https://galaxy.ansible.com/docs/contributing/version.html[признаются и используются] Ansible Galaxy.
Версии не должны начинаться с v
.
Когда новый тег отправляется, https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/release-to-galaxy.yml[рабочий процесс CI GitHub] (image:https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/release-to-galaxy.yml/badge.svg[Релиз CI]) заботится об импорте роли в мою учетную запись Ansible Galaxy.
[[testing]] === 🧪 Тестирование Автоматические тесты выполняются при каждом внесении изменений с помощью рабочих процессов GitHub.
Тесты в основном связаны с выполнением https://molecule.readthedocs.io/en/latest/[Molecule] на <<tested-distributions,различных наборах дистрибуций linux>> и с использованием <<tested-ansible-versions,различных версий ansible>>.
Тест Molecule также включает шаг, который линтерует все плейбуки ansible с использованием https://github.com/ansible/ansible-lint#readme[`ansible-lint`] для проверки наилучших практик и поведения, которое можно улучшить.
Чтобы запустить тесты, просто выполните команду tox
в командной строке.
Вы можете передать дополнительную переменную окружения, чтобы определить дистрибуцию контейнера Docker, который будет создан Molecule:
$ MOLECULE_DISTRO=ubuntu2204 tox
Для получения списка возможных значений, передаваемых MOLECULE_DISTRO
, посмотрите матрицу, определенную в link:.github/workflows/ci.yml[].
==== 🐛 Отладка контейнера Molecule
- Запустите ваши тесты molecule с опцией
MOLECULE_DESTROY=never
, например:
- [subs="quotes,macros"]
$ MOLECULE_DESTROY=never MOLECULE_DISTRO=#ubuntu1604# tox -e py3-ansible-#5# ... ЗАДАЧА [ansible-role-pip : (урезано).] пройдена:[************************] не удалось: [instance-py3-ansible-9] => изменено=false ... пройдена:[___________________________________ резюме ____________________________________] pre-commit: команды прошли успешно ERROR: py3-ansible-9: команды не прошли
- Найдите имя контейнера Docker, предоставленного Molecule:
- [subs="quotes"]
$ docker ps #30e9b8d59cdf# geerlingguy/docker-debian12-ansible:latest "/lib/systemd/systemd" 8 минут назад Запущен 8 минут instance-py3-ansible-9
- Зайдите в оболочку bash контейнера и отлаживайте:
- [subs="quotes"]
$ docker exec -it #30e9b8d59cdf# /bin/bash
root@instance-py3-ansible-2:/#
[Совет]
Если ошибка, которую вы пытаетесь отладить, является частью шагаverify.yml
, а не фактическогоconverge.yml
, вам может быть интересно, что вывод модулей ansible (vars
), хостов (hostvars
) и переменных среды был сохранен в файлах на обоих провидерах и внутри машины Docker по адресу:
/var/tmp/vars.yml
(содержит переменные хоста под ключомhostvars
)/var/tmp/environment.yml
grep
, cat
или передавайте их по мере необходимости!
[Совет]
Вам также может быть интересно, что файлы, упомянутые в предупреждении выше, прикреплены к Артефактам CI GitHub конкретного запуска рабочего процесса. + Это позволяет проверить отличие между запусками и тем самым помочь в отладке причин, которые могли вызвать деградацию или сбой в целом.
image::https://user-images.githubusercontent.com/32995541/178442403-e15264ca-433a-4bc7-95db-cfadb573db3c.png[]
- После завершения отладки выйдите из контейнера и уничтожьте его:
- [subs="quotes"]
root@instance-py3-ansible-2:/# exit
$ docker stop #30e9b8d59cdf#
$ docker container rm #30e9b8d59cdf# или $ docker container prune
==== 🐛 Отладка установленных версий пакетов локально
Хотя это стандартная функция в tox 3, https://github.com/tox-dev/tox/pull/2794[в настоящее время] это происходит только тогда, когда tox распознает наличие CI-переменной. Например:
$ CI=true tox
[[development-container-extra]] === 🧃 СОВЕТ: Идеальная среда разработки в контейнере
Этот проект предлагает определение "Среды разработки в контейнере с одним щелчком".
Этот контейнер даже позволяет запускать контейнеры Docker внутри него (Docker-In-Docker, dind), что позволяет выполнять Molecule.
Чтобы его использовать:
- Убедитесь, что вы соответствуете ссылке:https://code.visualstudio.com/docs/remote/containers#_system-requirements[системным требованиям контейнеров разработки Visual Studio Code], возможно, следуя разделу Установка на связанной странице. + Это включает: установку Docker, установку самого Visual Studio Code и установку необходимых расширений.
- Клонируйте проект на свою машину
- Откройте папку репозитория в Visual Studio Code (Файл - Открыть папку…).
- Если в правом нижнем углу появится подсказка о наличии определения devcontainer, вы можете нажать соответствующую кнопку, чтобы перейти к нему.
В противном случае вы также можете выполнить команду Visual Studio
Remote-Containers: Open Folder in Container
самостоятельно (Просмотр - Командная палитра -> введите упомянутую команду).
[Совет]
Я рекомендую использовать Remote-Containers: Rebuild Without Cache and Reopen in Container
время от времени, так как функция devcontainer по некоторым причинам может не распознавать изменения, внесенные в его определение.
[ПРИМЕЧАНИЕ]
Вам может потребоваться настроить вашу хост-систему для использования контейнера с вашими SSH/GPG ключами.
Процедура описана https://code.visualstudio.com/remote/advancedcontainers/sharing-git-credentials[в официальной документации devcontainer в разделе "Совместное использование привилегий Git с вашим контейнером"].
[[cookiecutter]] === 🍪 CookieCutter
Этот проект должен поддерживаться в синхронизации с https://github.com/JonasPammer/cookiecutter-ansible-role[CookieCutter, с которого он был изначально сгенерирован] с использованием https://github.com/cruft/cruft[cruft] (если возможно) или ручных изменений (если необходимо) насколько это возможно.
.Официальный пример использования cruft update
image::https://raw.githubusercontent.com/cruft/cruft/master/art/example_update.gif[Официальный пример использования cruft update
]
==== 🕗 Журнал изменений Когда новый тег отправляется, соответствующий релиз GitHub будет создан проводником репозитория, чтобы предоставить правильный журнальный отчет о изменениях с заголовком и описанием.
[[pre-commit]] === ℹ️ Общие соглашения по линтингу и стилю Общие соглашения по линтингу и стилю автоматически соблюдаются различными хуками https://pre-commit.com/[`pre-commit`] по крайней мере в некоторой степени.
Автоматическое выполнение pre-commit происходит на каждом внесении изменений с помощью https://pre-commit.ci/[`pre-commit.ci`]<<note_pre-commit-ci,*>>. Запросы на извлечение даже автоматически исправляются тем же инструментом, по крайней мере, с помощью хуков, которые автоматически изменяют файлы.
[ПРИМЕЧАНИЕ]
Не путайте:
Хотя некоторые хуки pre-commit могут предупредить вас о недостатках в анализируемом коде или даже в синтаксисе (по этой причине хуки pre-commit являются частью тестового набора),
pre-commit сам по себе не запускает никаких реальных тестовых наборов.
Для получения информации о тестировании смотрите <
[СОВЕТ]
[[note_pre-commit-ci]] Тем не менее, я рекомендую интегрировать pre-commit в ваш локальный рабочий процесс разработки.
Это можно сделать, перейдя в каталог вашего клонированного проекта и выполнив pre-commit install
.
Это заставит Git запускать проверки pre-commit при каждом вашем коммите, прерывая сам коммит, если хук сработал.
Вы также можете, например, выполнить хуки pre-commit в любое время, выполнив pre-commit run --all-files
.
== 💪 Вклад https://open.vscode.dev/jonaspammer/ansible-role-bootstrap[image:https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc[Открыть в Visual Studio Code]] image:https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square[PRs приветствуются]
// Включено в README.adoc :toc: :toclevels: 3
Следующие разделы являются общими и используются для помощи новым участникам.
Фактическая "Документация по разработке" этого проекта находится в разделе <
=== Предисловие Во-первых, спасибо вам за то, что рассматриваете возможность внести вклад в этот проект.
Следование этим рекомендациям помогает продемонстрировать, что вы цените время разработчиков, работающих над этим проектом с открытым исходным кодом. В ответ они должны также уважительно отнестись к решению вашей проблемы, оценке изменений и помощи в завершении ваших запросов на извлечение.
[[cookiecutter--contributing]] === 🍪 CookieCutter Этот проект во многом обязан своим файлам https://github.com/JonasPammer/cookiecutter-ansible-role[CookieCutter, с которого он был изначально сгенерирован].
Пожалуйста, проверьте, применимы ли ваши изменения к шаблону, и если да, внесите соответствующие изменения там. Ваше исправление может также частично относиться к шаблону, а частично к чему-то специфическому для этого проекта, в этом случае вам следует создать несколько PR.
=== 💬 Конвенционные коммиты
Обычному участнику не нужно беспокоиться о следовании https://github.com/JonasPammer/JonasPammer/blob/master/demystifying/conventional_commits.adoc[__спецификации__] https://www.conventionalcommits.org/en/v1.0.0/[__по определению__], так как запросы на извлечение объединяются в один коммит в проекте. Только основные участники, т.е. те, кто имеют право отправлять в ветки этого проекта, должны соблюдать её (например, это позволяет автоматически определять версии и генерировать журналы изменений).
=== 🚀 Начало работы
Вклад осуществляется в этот репозиторий через вопросы и запросы на извлечение (PR). Несколько общих рекомендаций, которые охватывают оба:
- Ищите существующие вопросы и PR перед тем, как создать свои.
- Если вы никогда раньше не делали вклад, ознакомьтесь с https://auth0.com/blog/a-first-timers-guide-to-an-open-source-project/[руководством для новичков на блоге Auth0], чтобы получить ресурсы и советы о том, как начать.
==== Вопросы Вопросы следует использовать для сообщения о проблемах, запроса новой функции или обсуждения потенциальных изменений до создания PR. Когда вы https://github.com/JonasPammer/ansible-role-bootstrap/issues/new[создаете новый вопрос], будет загружен шаблон, который поможет вам собрать и предоставить необходимую информацию для расследования.
Если вы найдете вопрос, который касается вашей проблемы, пожалуйста, добавьте свою информацию о воспроизведении к существующему вопросу вместо того, чтобы создавать новый. Добавление https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/[реакции] также поможет показать нашим поддерживающим, что конкретная проблема затрагивает больше людей, чем просто того, кто ее сообщил.
==== Запросы на Изменения PR в этот проект всегда приветствуются и могут быть быстрым способом получить ваше исправление или улучшение, запланированное для следующего релиза. https://blog.ploeh.dk/2015/01/15/10-tips-for-better-pull-requests/[В общем] PR должны:
- Исправлять или добавлять только одну функцию ИЛИ решать широко распространенные проблемы с пробелами/стилем, но не то и другое.
- Добавлять юнитные или интеграционные тесты для исправленной или измененной функциональности (если тестовый набор уже существует).
- Уделять внимание одной проблеме
- Включать документацию в репозиторий
- Сопровождаться полным шаблоном запроса на изменение (загружаемым автоматически при создании PR).
Для изменений, касающихся основной функциональности или требующих разрывных изменений (например, при крупном релизе), лучше сначала открыть вопрос, чтобы обсудить ваше предложение.
В общем, мы следуем рабочему процессу "форк и пул" Git:
- Скопируйте репозиторий в свой аккаунт Github
- Клонируйте проект на свою машину
- Создайте локальную ветку с лаконичным, но описательным именем
- Зафиксируйте изменения в ветке
- Следуя любым специфическим для этого репозитория рекомендациям по форматированию и тестированию
- Отправьте изменения в свой форк
- Откройте PR в нашем репозитории и следуйте шаблону PR, чтобы мы могли эффективно рассмотреть изменения.
[[changelog]] == 🗒 Журнал изменений Пожалуйста, обратитесь к https://github.com/JonasPammer/ansible-role-bootstrap/releases[странице релизов этого репозитория] для получения человеческой версии журнала изменений, соответствующих https://github.com/JonasPammer/ansible-role-bootstrap/tags[тегам (версиям) этого проекта].
Обратите внимание, что этот проект придерживается семантического версионирования. Пожалуйста, сообщайте о любых случайных разрывных изменениях в обновлениях минорных версий.
== ⚖️ Лицензия
.link:LICENSE[]
MIT License
Авторские права (c) 2022, Йонас Паммер
Разрешение настоящим документом предоставляется, бесплатно, любому лицу, получающему копию данного программного обеспечения и сопутствующей документации (далее "Программное обеспечение"), заниматься Программным обеспечением без ограничений, включая, помимо прочего, права на использование, копирование, модификацию, объединение, публикацию, распространение, сублицензирование и/или продажу копий Программного обеспечения, и разрешать лицам, которым Программное обеспечение предоставляется, делать это, при условии соблюдения следующих условий:
Указанное выше авторское право и это сообщение об отсутствии ответственности должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ ГАРАНТИЙ КАКОГО-ЛИБО РОДА, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ КОММЕРЧЕСКОСТИ, ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ И НЕНАРУШЕНИЯ. В НИКИМ СЛУЧАЕ АВТОРЫ ИЛИ ДЕРЖАТЕЛИ АВТОРСКИХ ПРАВ НЕ НЕСУТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ИСКИ, УБЫТКИ ИЛИ ИНЫЕ ОБЯЗАТЕЛЬСТВА, НИ НА ОСНОВЕ ДОГОВОРА, ДЕЛИКТА ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКАЮЩИЕ ИЗ, ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИНЫМ ИСПОЛЬЗОВАНИЕМ В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ.
An ansible role for preparing a linux system to be managed by ansible. Based on robertdebock's role.
ansible-galaxy install JonasPammer/ansible-role-bootstrap