Я полностью согласен с тем, что LDAP или подобные системы - лучший способ. Если вы настаиваете на выполнении этого вручную, вот способ:
Лучший инструмент для этой работы - newusers
. Вам нужно будет создать текстовый файл, содержащий список пользователей и их данные. Если вы хотите добавить того же пользователя на каждый сервер, в этом файле потребуется всего одна строка.
Создайте список пользователей. Общий формат файла:
имя пользователя: пароль: UID: GID: полное имя, номер комнаты, рабочий телефон, домашний телефон, другое: каталог: оболочка
Итак, в вашем случае вы нужно будет использовать что-то вроде
tom: password1 ::: "Tom Hanks", "101", "123456", "654321", "Tall" ::
danny: password2 ::: "Danny DeVito "," 102 "," 222333 "," 333222 "," Short "::
Обратите внимание, что я оставил параметры UID, GUID, каталога и оболочки пустыми. Это означает, что будут использоваться значения по умолчанию.
Теперь, когда вы создали список, вам нужно будет скопировать его на каждую удаленную машину, а затем добавить новых пользователей. Сохраните этот небольшой скрипт как newusers.sh
:
#! / Bin / bash
при чтении ip; do
scp users.txt root @ $ ip: / home / root
ssh root @ $ ip newusers users.txt
готово
Сделайте сценарий исполняемый файл ( chmod a + x newusers.sh
) и запустите его для каждого IP-адреса в вашем файле:
newusers.sh
IP-адреса .txt
должен содержать список IP-адресов серверов, на которые вы хотите скопировать это, по одному в каждой строке:
1.2.3.4
foo.bar.com
Это Все будет намного проще, если у вас настроен беспарольный ssh. Если вы этого не сделаете, выполните следующие команды, чтобы использовать ssh-ключи, разрешающие доступ без пароля (вам все равно понадобится кодовая фраза):
ssh-keygen -t rsa
при чтении ip; сделать ssh-copy-id -i ~ / .ssh / id_rsa.pub root @ $ ip; done
Это решение работает на веб-сервере CentOS 7 с Apache 2.4.6 и GitLab 11.9.4, установленными с помощью пакета GitLab Omnibus. Сервер работает на http, но его можно легко перевести на https.
Я полагаю начать с чистой установки Apache, управляющей только одним хостом в домене mywebsite.com(без виртуального хоста ). Также предполагается чистая установка пакета GitLab Omnibus(официальное руководство). Для полноты картины вот файл httpd.conf , основной файл конфигурации Apache. Он содержит директивы для прослушивания порта 80 и направления всех запросов к основному домену mywebsite.com в каталог, указанный директивой DocumentRoot
, то есть /var/www/html
; в моем случае такой каталог содержит экземпляр WordPress.
/etc/httpd/conf/httpd.conf
httpd.conf на Pastebin
Теперь, прежде чем редактировать конфигурацию GitLab, обязательно остановите все связанные службы с помощью sudo gitlab-ctl stop
. Чтобы GitLab мог работать с относительным URL-адресом в качестве подкаталога основного домена mywebsite.com , в первую очередь необходимо установить GitLab на относительный URL-адрес; в частности, вы должны изменить директиву external_url
файла gitlab.rb , установив 'http://mywebsite.com/gitlab'
в качестве аргумента. Затем необходимо отключить nginx, который является веб-сервером по умолчанию, включенным в GitLab Omnibus; внешний пользователь для веб-сервера должен быть установлен какapache
(внешний пользователь для Apache www-data
в большинстве дистрибутивов, но apache
для CentOS 7 ); Рабочая лошадка GitLab должна быть настроена на прослушивание tcp, поскольку Apache может использовать только http-сокеты; в дальнейшем предполагается, что рабочая лошадка GitLab слушает порт 8181, который также необходимо настроить. Чтобы упростить установку GitLab, я также отключил функции CI/CD для конвейера (с помощью директивы gitlab_rails
), но это скорее зависит от ваших потребностей.
См. официальную документацию GitLab Omnibus, чтобы узнать больше о настройке относительного URL-адреса и с использованием не -связанного веб-сервера . В результате файл конфигурации для GitLab должен выглядеть примерно так.
/etc/gitlab/gitlab.rb
external_url 'http://mywebsite.com/gitlab'
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
web_server['external_users'] = ['apache']
nginx['enable'] = false
gitlab_rails['gitlab_default_projects_features_builds'] = false
Теперь запустите sudo gitlab-ctl reconfigure
. Вернемся к конфигурации Apache :, теперь GitLab настроен -, но нам нужно перенаправить все запросы наhttp://mywebsite.com/gitlabна фактический сервер GitLab. Большинство решений, которые я нашел, предлагают использовать подпапку с виртуальными хостами, но, похоже, это не работает с GitLab. Решение состоит в использовании директивы Location
; вы можете либо добавить такую конфигурацию в основной файл конфигурации apache httpd.conf , либо создать новый файл.conf и поместить его в /etc/httpd/conf.d/ , чтобы он будет включен автоматически (, но убедитесь, что ваш httpd.conf содержит директивуIncludeOptional conf.d/*.conf
). Конфигурация следующая.
/etc/httpd/conf.d/gitlab.conf
Header add Strict-Transport-Security: "max-age=15768000;includeSubdomains"
<Location /gitlab>
Require all granted
#Allow forwarding to gitlab-workhorse
ProxyPassReverse http://127.0.0.1:8181
ProxyPassReverse http://mywebsite.com/gitlab
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} ^/uploads/.*
RewriteRule.* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]
ErrorDocument 404 /404.html
ErrorDocument 422 /422.html
ErrorDocument 500 /500.html
ErrorDocument 502 /502.html
ErrorDocument 503 /503.html
</Location>
</VirtualHost>
Обязательно измените аргумент <Location /gitlab>
на основе относительного URL-адреса, по которому вы хотите, чтобы GitLab был доступен.
Настройка завершена, запустите systemctl reload httpd
, чтобы перенастроить Apache, и перезапустите GitLab с помощью sudo gitlab-ctl restart
. Еще одна вещь :обязательно разрешите Apache использовать http-сокеты:sudo setsebool -P httpd_can_network_connect=1
.