-
Notifications
You must be signed in to change notification settings - Fork 0
gitolite
Для хранения настроек клиентов Let's Encrypt и полученных сертификатов используются git-репозитории.
Для этого на ekb.ru
было установлено ПО Gitolite
для централизованного хранения копий всех репозиториев.
Gitolite согласно общаться только по протоколу SSH,
поэтому и администратору и каждой машине,
где получаются сертификаты,
необходимо иметь (создать командой ssh-keygen
)
свой собственный ключ.
Веб-интерфейса нет.
Командной строки нет.
Населена роботами
Управление ведётся только путём изменения специального репозитория git@ekb.ru:gitolite-admin
и никак иначе.
Фактически оно сводится к добавлению файлов keydir/*.pub
для авторизации клиентов
(как людей, так и роботов)
и (редкому) изменению файла conf/gitolite.conf
для назначения прав доступа.
Для работы gitolite создан специальный пользователь git
и вся деятельность осуществляется в его домашнем
каталоге ~git
(/home/git
).
Делать там что-то ручками не рекомендуется,
но посмотреть - можно.
Сами копии репозиториев хранятся в ~git/repositories
.
Репозитории доступны извне
(кому-то на чтение, кому-то на запись)
по URL вида git@ekb.ru:path/to/repo
Административный репозиторий git@ekb.ru:gitolite-admin
Репозитории с сертификатами и т.п. имеют URL вида git@ekb.ru:letsencrypt/DOMAIN.ekb.ru
Клиент с именем DOMAIN.ekb.ru
(и только он)
имеет право записи в такой репозиторий.
Чтобы клиент мог хотя бы подключиться к gitolite, у него должен быть SSH ключ и этот ключ должен быть установлен (администратором) в gitolite.
Ключ генерируется командой ssh-keygen
.
Сохраняется он в файл ~/.ssh/id_rsa.pub
.
В файле ~/.ssh/id_rsa
лежит секретный ключ
и трогать его
(а особенно уносить с этого места хоть куда-то)
не рекомендуется.
Чтобы дать доступ клиенту к gitolite нужно:
- Склонировать репозиторий
git@ekb.ru:gitolite-admin
- Скопировать
id_rsa.pub
клиента в папкуkeydir
репозитория - Переименовать его по схеме
keydir/DOMAIN.ekb.ru.pub
- Добавить в репозиторий
git add .
- Зафиксировать
git commit -m "Add DOMAIN.ekb.ru key"
- Отправить на сервер gitolite
git push
После этого клиент может отдать команду ssh git@ekb.ru
и убедиться, что сервер согласен с ним общаться.
При первой попытке обратиться
(неважно на чтение или на запись)
именно этим клиентом к URL git@ekb.ru:letsencrypt/DOMAIN.ekb.ru
этот репозиторий будет создан автоматически.
Поскольку каждый сервер имеет свой собственный репозиторий,
следить за ними сложновато.
Поэтому был создан объемлющий репозиторий git@ekb.ru:letsencrypt
,
в котором нет собственных данных,
а есть только субмодули - все репозитории git@ekb.ru:letsencrypt/DOMAIN.ekb.ru
.
Соотвественно,
при появлении нового репозитория есть смысл добавить его
в мета-репозиторий git submodule add
.
Находясь в склонированном мета-репозитории
относительно удобно проверять,
не появились ли обновления во всех
дочерних репозиториях командой git pull --recurse-submodules
.
Администратор имеет право
- Просматривать все репозитории
gitolite
- Добавлять ключи новых пользователей
- Назначать права доступа пользователей к репозиториям
- Делать пользователей администраторами