Ветки Puppet Enterprise и Git

Мы используем Puppet Enterprise, и я не понимаю, как переместить конкретный узел в ветку разработки Git для его конфигурации кода Puppet.

Мы успешно используем Code Manager для производственной ветки и имеем пару десятков узлов (в файле nodes.pp в репозитории), которые ведут себя хорошо. Но мы вносим все наши изменения в производственную ветку, и я хотел бы избавить нас от этой привычки. Вместо этого я бы хотел, чтобы мы создали именованную ветку разработки, внесли в нее изменения, опробовали ее на одном или двух узлах, затем объединили изменения с производственной и применили их ко всем остальным узлам.

Я сделал следующее:

  • Создал ветку PortainerFix и внес туда свои изменения.

  • Заходим на наш PE-сервер и запускаем команду puppet-code deploy PortainerFix --wait.

  • Вы вошли на веб-сервер PE и перешли в область Classifications. Я перешел в группу «Среда разработки» (в разделе «Все среды») и добавил dockerdev1001.foo.com в список закрепленных узлов.

Затем я подумал, что могу войти в узел dockerdev1001.foo.com на веб-сервере PE и запустить агент, выбрав эту конкретную среду, PortainerFix, которую можно выбрать в раскрывающемся списке.

Запуск прошел успешно, но на самом деле он не применил сделанные мной изменения ветки. Кажется, он все еще использует производственную ветку.

Я вошел в узел, сам. Единственная среда, которую я вижу, это /etc/puppetlabs/code/environments/production. Если я запускаю команду puppet agent -t --environment=PortainerFix, она говорит «Информация: использование настроенной среды «PortainerFix» и возвращает результат с успехом, но опять же, он НЕ вносит ожидаемых изменений в хост. Рабочая среда по-прежнему является единственной средой в файле /etc/puppetlabs/code/environments.

Что я делаю неправильно?? Я ожидал увидеть /etc/puppetlabs/code/environments/PortainerFix на узле и применил для него эту конфигурацию.


person John Fisher    schedule 09.02.2021    source источник


Ответы (1)


Я понял проблему. В случае, если это полезно для других, я объясню решение. Выяснилось, что описанные выше шаги работали нормально, а внесенное мной изменение кода — нет.

У меня был вызов Docker::services:

docker::services { 'portainer':
    create             => true,
    service_name       => 'portainer',
    image              => 'portainer/portainer-ce:2.0.1',
    replicas           => '1',
    publish            => ['9000:9000', '8000:8000'],
    mounts             => ["type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock",
                           "type=bind,source=/portainer_data,target=/data",
                          ],
   env                => ["AGENT_SECRET=myKey${env}-${hostname}"],
    extra_params       => ['--network portainer_agent_network'],
}

Я изменил версию образа с 2.0.1 на 2.1.1. Я ожидал, что он загрузит новый образ и запустит новый контейнер, но он не предпринял никаких действий. Поэтому я предположил, что он неправильно держал ветку.

Но когда я вручную удалил контейнер и образ порта в системе Docker, ЗАТЕМ запустил марионетку, затем он правильно захватил новую версию порта и запустил ее нормально. Итак, это то, о чем нам нужно просто знать, используя Puppet для управления службами Docker.

Джон

person John Fisher    schedule 10.02.2021