Данная статья предназначена для тех, кто искал подробное и понятное руководство о том, как установить Foreman на Ubuntu Server.

Foreman — это программное обеспечение с открытым исходным кодом для развертывания, настройки и мониторинга физических и виртуальных серверов. Foreman может интегрироваться с Ansible, Puppet, Chef, Salt и другими программными продуктами для управления конфигурацией.

В этом руководстве мы будем рассматривать тот случай, когда у вас уже есть два сервера с установленной на них операционной системой Ubuntu Server 18.04 LTS.

Подробно о том, как установить Ubuntu Server 18.04 LTS, вы можете прочитать в моем руководстве «Установка Ubuntu Server 18.04 LTS».

Кроме того, на сервер должен быть установлен OpenSSH, а также открыт 22 порт, чтобы иметь возможность подключаться к серверу по протоколу SSH.

Для установки OpenSSH на сервер вы можете воспользоваться командой:

sudo apt-get install openssh-server

Если вы планируете подключиться к серверу, используя операционную систему Windows, то можете воспользоваться PuTTY — свободно распространяемым клиентом для различных протоколов удаленного доступа, включая SSH, Telnet, rlogin.

В данном руководстве рассматривается подключение к серверу при помощи терминального эмулятора iTerm2, установленного на операционную систему macOS.

Обратите внимание, вам потребуется открыть следующие порты TCP для доступа к вашему серверу:

  • 80 — для работы службы развертывания конфигураций.
  • 443 — для доступа к панели управления Foreman.
  • 8140 — для работы Puppet Agent.
  • 5648 — для работы клиента и Smart Proxy.
  • 9090 — для связи с Smart Proxy.

Подключаемся к серверу, на который планируется установить Foreman.

Присвоим имя серверу с помощью команды:

sudo hostnamectl set-hostname foreman.heyvaldemar.net

В данном руководстве в качестве имени сервера Foreman используется «foreman.heyvaldemar.net».

Сервер с установленным агентом должен разрешать имя сервера Foreman, и также сервер Foreman должен разрешать имя клиентского сервера.

Убедитесь, что имя сервера имеет правильную запись DNS, а также обновите файл «/etc/hosts» на сервере с помощью команды:

echo "172.31.19.67 foreman.heyvaldemar.net puppet.heyvaldemar.net foreman puppet" | sudo tee -a /etc/hosts

В данном руководстве в качестве имени сервера Foreman используется «foreman.heyvaldemar.net».

Перезапустим службу hostamed, чтобы внесенные изменения для имени сервера вступили в силу, с помощью команды:

sudo systemctl restart systemd-hostnamed

Проверим корректность имени сервера с помощью команды:

hostname

Теперь заменим текущий процесс оболочки на новый с помощью команды:

exec bash

Теперь необходимо загрузить и установить пакет конфигурации репозитория Puppet Server.

Загрузим пакет конфигурации репозитория Puppet Server с помощью команды:

wget https://apt.puppetlabs.com/puppet6-release-bionic.deb

Установим пакет конфигурации репозитория Puppet Server с помощью команды:

udo dpkg -i puppet6-release-bionic.deb

Далее подключаем репозиторий Foreman с помощью команды:

echo "deb http://deb.theforeman.org/ bionic 1.24" | sudo tee /etc/apt/sources.list.d/foreman.list

Далее подключаем репозиторий плагинов для Foreman с помощью команды:

echo "deb http://deb.theforeman.org/ plugins 1.24" | sudo tee -a /etc/apt/sources.list.d/foreman.list

Теперь добавим официальный ключ Foreman с помощью команды:

wget -q https://deb.theforeman.org/pubkey.gpg -O- | sudo apt-key add -

Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:

sudo apt update

Теперь установим Foreman Installer с помощью команды:

sudo apt -y install foreman-installer

Теперь установим Foreman с помощью команды:

sudo foreman-installer

На следующем шаге вы получите имя пользователя и пароль учетной записи, обладающей правами администратора Foreman.

Сохраните эти данные в надежное место.

Исполняемые файлы Puppet расположены в директории «/opt/puppetlabs/bin/», которой по умолчанию нет в переменной среды «PATH» и в переменной «secure_path», которая используется для операций «sudo».

Обратите внимание, путь к исполняемым файлам не имеет значения для служб Puppet, так как запуск служб не зависит от «PATH» и «secure_path».

Добавив путь к исполняемым файлам в переменные, вы сможете использовать sudo puppet agent -t вместо sudo /opt/puppetlabs/bin/puppet agent -t.

Добавим путь к исполняемым файлам Puppet в переменную «secure_path».

Открываем конфигурационный файл «sudoers» в текстовом редакторе с помощью команды:

sudo visudo

Находим переменную «secure_path», и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.

Для того чтобы сохранить изменения в файле «sudoers», нажимаем «Ctrl+x».

Теперь необходимо подтвердить изменения в файле.

Нажимаем на кнопку «y».

Нажимаем на кнопку «Enter», чтобы подтвердить сохранение файла.

Теперь добавим путь к исполняемым файлам Puppet в переменную среды «PATH».

Открываем конфигурационный файл «environment» в текстовом редакторе с помощью команды:

sudo vim /etc/environment

Нажимаем на кнопку «i», чтобы перейти в режим редактирования, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.

Теперь нажмите на кнопку «Esc», чтобы выйти из режима редактирования, а затем введите «:x» и нажмите на кнопку «Enter», чтобы сохранить изменения и выйти из редактора.

Теперь можно установить модуль NTP, который поможет установить, настроить и управлять службой NTP в операционных системах клиентов.

Установим модуль NTP с помощью команды:

sudo puppet module install puppetlabs-ntp -i /etc/puppetlabs/code/modules/

Теперь необходимо импортировать модуль NTP в панели управления Foreman.

С рабочей станции переходим по ссылке https://foreman.heyvaldemar.net, где foreman.heyvaldemar.net — имя моего субдомена для доступа к панели управления Foreman. Вам нужно будет указать ваш домен или субдомен, по которому ваша панель управления Foreman будет доступна из сети Интернет.

В данном руководстве в качестве веб-браузера для подключения к панели управления Foreman используется Mozilla Firefox.

На следующем шаге вы можете увидеть предупреждение «Warning: Potential Security Risk Ahead».

Нажимаем на кнопку «Advanced».

Далее нажимаем на кнопку «Accept the Risk and Continue».

Логин для учетной записи администратора Foreman по умолчанию: admin

Обратите внимание, пароль для учетной записи администратора был сгенерирован после завершения установки Foreman.

Указываем имя пользователя и пароль учетной записи, обладающей правами администратора Foreman, и нажимаем на кнопку «Log in».

В меню слева выбираем «Configure», затем «Classes».

Далее нажимаем на кнопку «Import environments from foreman.heyvaldemar.net.

В данном руководстве в качестве имени сервера Foreman используется «foreman.heyvaldemar.net».

Выбираем окружение, для которого требуется импортировать модуль, и нажимаем на кнопку «Update».

Модуль успешно импортирован в выбранное окружение.

Далее подключаемся к серверу, на который планируется установить Puppet Agent.

Присвоим имя серверу с помощью команды:

sudo hostnamectl set-hostname puppet-agent.heyvaldemar.net

В данном руководстве в качестве имени сервера с установленным агентом Puppet используется «puppet-agent.heyvaldemar.net».

Сервер с установленным агентом должен разрешать имя сервера Foreman, и также сервер Foreman должен разрешать имя клиентского сервера.

Убедитесь, что имя сервера имеет правильную запись DNS, а также обновите файл «/etc/hosts», добавив IP-адрес и имя клиентского сервера, с помощью команды:

echo "172.31.27.184 puppet-agent.heyvaldemar.net puppet-agent" | sudo tee -a /etc/hosts

В данном руководстве в качестве имени сервера с установленным агентом Puppet используется «puppet-agent.heyvaldemar.net».

Далее в файл «/etc/hosts» добавим IP-адрес и имя сервера Foreman с помощью команды:

echo "172.31.19.67 foreman.heyvaldemar.net puppet.heyvaldemar.net foreman puppet" | sudo tee -a /etc/hosts

Наличие данной записи позволит серверу с установленным агентом разрешать имя сервера Foreman даже без записи DNS.

Перезапустим службу hostamed, чтобы внесенные изменения для имени сервера вступили в силу, с помощью команды:

sudo systemctl restart systemd-hostnamed

Проверим корректность имени сервера с помощью команды:

hostname

Теперь заменим текущий процесс оболочки на новый с помощью команды:

exec bash

Теперь необходимо загрузить и установить пакет конфигурации репозитория Puppet Agent.

Загрузим пакет конфигурации репозитория Puppet Agent с помощью команды:

wget https://apt.puppetlabs.com/puppet6-release-bionic.deb

Установим пакет конфигурации репозитория Puppet Agent с помощью команды:

sudo dpkg -i puppet6-release-bionic.deb

Обновим локальный индекс пакетов до последних изменений в репозиториях с помощью команды:

sudo apt update

Теперь установим Puppet Agent с помощью команды:

sudo apt install -y puppet-agent

Исполняемые файлы Puppet расположены в директории «/opt/puppetlabs/bin/», которой по умолчанию нет в переменной среды «PATH» и в переменной «secure_path», которая используется для операций «sudo».

Обратите внимание, путь к исполняемым файлам не имеет значения для служб Puppet, так как запуск служб не зависит от «PATH» и «secure_path».

Добавив путь к исполняемым файлам в переменные, вы сможете использовать sudo puppet agent -t вместо sudo /opt/puppetlabs/bin/puppet agent -t.

Добавим путь к исполняемым файлам Puppet в переменную «secure_path».

Открываем конфигурационный файл «sudoers» в текстовом редакторе с помощью команды:

sudo visudo

Находим переменную «secure_path», и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.

Теперь необходимо подтвердить изменения в файле.

Нажимаем на кнопку «y».

Нажимаем на кнопку «Enter», чтобы подтвердить сохранение файла.

Теперь добавим путь к исполняемым файлам Puppet в переменную среды «PATH».

Открываем конфигурационный файл «environment» в текстовом редакторе с помощью команды:

sudo vim /etc/environment

Нажимаем на кнопку «i», чтобы перейти в режим редактирования, и в конце строки, перед закрывающей кавычкой, добавляем путь к исполняемым файлам Puppet :/opt/puppetlabs/bin.

Теперь нажмите на кнопку «Esc», чтобы выйти из режима редактирования, а затем введите «:x» и нажмите на кнопку «Enter», чтобы сохранить изменения и выйти из редактора.

Далее необходимо внести изменения в конфигурационный файл Puppet, открыв его в текстовом редакторе, с помощью команды:

sudo vim /etc/puppetlabs/puppet/puppet.conf

Нажимаем на кнопку «i», чтобы перейти в режим редактирования, добавляем новый раздел «[main]» со следующими параметрами:

[main]
certname = puppet-agent.heyvaldemar.net
server = foreman.heyvaldemar.net
environment = production
runinterval = 15m

В данном руководстве Puppet Agent установлен на сервер puppet-agent.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Puppet Agent будет доступен из сети Интернет или в локальной сети вашей организации.

Также Foreman установлен на сервер foreman.heyvaldemar.net. Вам нужно будет указать ваш сервер, по которому ваш Foreman будет доступен из сети Интернет или в локальной сети вашей организации.

Обратите внимание, в параметре «runinterval» указывается промежуток времени между запросами агента к серверу Foreman.

Теперь нажмите на кнопку «Esc», чтобы выйти из режима редактирования, а затем введите «:x» и нажмите на кнопку «Enter», чтобы сохранить изменения и выйти из редактора.

Запускаем Puppet Agent и включаем его в автозапуск при запуске операционной системы с помощью команды:

sudo puppet resource service puppet ensure=running enable=true

Теперь необходимо утвердить запрос сертификата для сервера, на котором установлен Puppet Agent, чтобы в последующем клиент смог получать конфигурацию от сервера Foreman.

Возвращаемся в панель управления Foreman и в меню слева выбираем «Infrastructure», затем «Smart Proxies».

Далее находим сервер Foreman и в разделе «Actions», в выпадающем списке, выбираем «Certificates».

В данном руководстве в качестве имени сервера Foreman используется «foreman.heyvaldemar.net».

Теперь находим клиентский сервер и в разделе «Actions», выбираем «Sign».

В данном руководстве в качестве имени сервера с установленным агентом Puppet используется «puppet-agent.heyvaldemar.net».

Сертификат для клиентского сервера успешно утвержден.

Теперь можно настроить автоматическое утверждение сертификатов.

Переходим в раздел «Autosign entries» и нажимаем на кнопку «Create Autosign Entry».

Далее можно указать домен для которого Foreman будет автоматически утверждать сертификаты.

Обратите внимание, перед доменом необходимо указать «*.», чтобы для всех участников указанного домена утверждение сертификатов происходило автоматически.

Нажимаем на кнопку «Save».

Автоматическое утверждение сертификатов настроено.

Возвращаемся на сервер с установленным Puppet Agent.

Теперь необходимо получить конфигурацию для клиента с сервера Puppet с помощью команды:

sudo puppet agent -t

Конфигурация для клиента с сервера Foreman успешно получена.

Автор

Привет, я Владимир Михалев, но друзья зовут меня Вальдемарыч. Я обладаю практическим опытом проектирования и сопровождения различных информационных систем. На моем веб-сайте ты найдешь подробные и понятные руководства по настройке ИТ-решений. Окунись в океан, полный позитива и технологий! По вопросам сотрудничества: callvaldemar@gmail.com

2 комментария

  1. Класный гайд. Почему на заглавной картинке статьи девушка? И почему девушки на других статьях? Это такой маркетингоывй ход?

Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

%d такие блоггеры, как: