- Just 53.7%
- Jinja 46.3%
| examples | ||
| roles/forgejo_pages | ||
| .gitignore | ||
| ansible.cfg | ||
| justfile | ||
| playbook.yml | ||
| README.md | ||
| requirements.yml | ||
ansible-forgejo-pages
Переиспользуемая Ansible-роль для развёртывания pages-сервера Forgejo
(ronmi/forgejo-pages) за реверс-прокси (по умолчанию Traefik). Раздаёт ветку
репозитория как статический сайт: https://<hostname>/<user>/<repo>/.
Роль универсальная — ничего не захардкожено. Инвентори организован
папкой, как в mash/MDAD: шаблоны лежат в examples/, их копируют в
inventory/ и заполняют под себя.
Структура
ansible-forgejo-pages/
├── ansible.cfg # inventory = inventory/, roles_path = roles
├── justfile # рецепты just (roles / install-all / check / ...)
├── playbook.yml # применяет роль к группе [pages]
├── requirements.yml # community.docker
├── examples/ # ШАБЛОНЫ — скопировать в inventory/
│ ├── hosts
│ └── host_vars/
│ └── myserver.example.com/
│ └── vars.yml
├── inventory/ # ТВОЙ инвентори (создаётся копированием из examples/)
│ └── .gitkeep
└── roles/
└── forgejo_pages/
├── defaults/main.yml # все переменные + дефолты
├── tasks/main.yml # проверки + деплой
├── templates/… # docker-compose шаблон
├── meta/main.yml # Galaxy-метаданные
└── README.md # справка по роли
Быстрый старт
# 1. зависимости на контроллере
just roles # = ansible-galaxy collection install -r requirements.yml
# 2. СКОПИРОВАТЬ примеры в inventory/
cp examples/hosts inventory/hosts
cp -r examples/host_vars/myserver.example.com inventory/host_vars/<твой-host>
# 3. отредактировать под себя
$EDITOR inventory/hosts # сервер; имя хоста = имя папки в host_vars/
$EDITOR inventory/host_vars/<твой-host>/vars.yml # hostname / forgejo_url / token
# токен лучше зашифровать:
just encrypt-token 'ТВОЙ_ТОКЕН'
# 4. запуск — нужна vault-аутентификация (см. ниже)
just install-all --ask-vault-pass
Vault: токен зашифрован, поэтому при запуске нужен доступ к vault-паролю. Способы: передать
--ask-vault-pass(как выше) либо--vault-password-file ~/.ansible-vault-pass; или — удобнее — раскомментироватьvault_password_fileвansible.cfg, и тогда хватитjust install-all. Не комбинируй--ask-vault-passи--vault-password-fileодновременно — ansible это запрещает.Список рецептов —
justбез аргументов (roles,install-all,check,ping,encrypt-token). Синонимы:deps=roles;install=setup-all=install-all.
Имя хоста в
inventory/hostsи имя папки вinventory/host_vars/должны совпадать — это связывает сервер с его переменными (как в mash/MDAD).
Что нужно один раз на стороне Forgejo/DNS
- Токен Forgejo со scope
read:repository. - DNS-запись
<hostname>→ IP сервера. - Реверс-прокси (Traefik) уже работает на сервере.
Обязательные переменные (в host_vars//vars.yml)
forgejo_pages_hostname— web-хост раздачи.forgejo_pages_forgejo_url— URL Forgejo.forgejo_pages_token— API-токен (read:repository).
Остальное — с дефолтами, см. roles/forgejo_pages/defaults/main.yml и
roles/forgejo_pages/README.md. Если Traefik с другими именами
сети/entrypoint/резолвера — подсмотри их docker inspect-ом (в README роли) и
переопредели forgejo_pages_traefik_* в vars.yml.
Несколько серверов
Добавляй хосты в inventory/hosts и заводи для каждого свою папку
inventory/host_vars/<host>/vars.yml — роль применится к каждому со своими
значениями.
Без Traefik
forgejo_pages_traefik_enabled: false (+ при желании
forgejo_pages_published_port) — и подключай свой прокси.
Проверка
В любом репозитории создай ветку static-pages с index.html, открой
https://<hostname>/<user>/<repo>/index.html.