Как запретить virtualbox создавать бесполезные сетевые интерфейсы

Я полностью согласен с тем, что LDAP или подобные системы - лучший способ. Если вы настаиваете на выполнении этого вручную, вот способ:

Лучший инструмент для этой работы - newusers . Вам нужно будет создать текстовый файл, содержащий список пользователей и их данные. Если вы хотите добавить того же пользователя на каждый сервер, в этом файле потребуется всего одна строка.

  1. Создайте список пользователей. Общий формат файла:

     имя пользователя: пароль: UID: GID: полное имя, номер комнаты, рабочий телефон, домашний телефон, другое: каталог: оболочка 
     

    Итак, в вашем случае вы нужно будет использовать что-то вроде

     tom: password1 ::: "Tom Hanks", "101", "123456", "654321", "Tall" :: 
    danny: password2 ::: "Danny DeVito "," 102 "," 222333 "," 333222 "," Short ":: 
     

    Обратите внимание, что я оставил параметры UID, GUID, каталога и оболочки пустыми. Это означает, что будут использоваться значения по умолчанию.

  2. Теперь, когда вы создали список, вам нужно будет скопировать его на каждую удаленную машину, а затем добавить новых пользователей. Сохраните этот небольшой скрипт как newusers.sh :

     #! / Bin / bash 
    при чтении ip; do 
    scp users.txt root @ $ ip: / home / root 
    ssh root @ $ ip newusers users.txt 
    готово 
     
  3. Сделайте сценарий исполняемый файл ( chmod a + x newusers.sh ) и запустите его для каждого IP-адреса в вашем файле:

     newusers.sh 

    IP-адреса .txt должен содержать список IP-адресов серверов, на которые вы хотите скопировать это, по одному в каждой строке:

     1.2.3.4 
    foo.bar.com 
     
  4. Это Все будет намного проще, если у вас настроен беспарольный ssh. Если вы этого не сделаете, выполните следующие команды, чтобы использовать ssh-ключи, разрешающие доступ без пароля (вам все равно понадобится кодовая фраза):

     ssh-keygen -t rsa 
    при чтении ip; сделать ssh-copy-id -i ~ / .ssh / id_rsa.pub root @ $ ip; done 
1
04.04.2019, 10:58
1 ответ

Это решение работает на веб-сервере 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.

2
27.01.2020, 23:41

Теги

Похожие вопросы