Как можно развернуть архив с марионеткой

Я использовал ansible для развертывания артефактов, созданных в jenkins. Игра выглядит так:

  1. Перенести архив tar.gz на удаленный хост (архив содержит код Python)
  2. остановите код Python (он был настроен как сервис systemd, который ссылается на скрипт внутри / home / arl / code
  3. Удалить папку / home / arl / code (рекурсивно)
  4. Извлеките файл tar.gz в / home / arl
  5. Запустите сценарий systemd для кода.

В Puppet вы можете управлять услугами с помощью поставщика услуг. Но так как вы хотите управлять "состоянием", вы не можете объявить ресурс python_service как "остановленный", а затем в манифесте как "запущенный", так как это приведет к ошибке объявления дубликата. В ansible, что является обязательным условием, это легко достижимо.

Есть ли способ добиться этого в марионетке?

1 ответ

Для того, что вы делаете, вы хотели бы использовать серию Exec типы ресурсов и использование -> оператор заказа ресурсов. Так что ваш манифестный манифест будет выглядеть примерно так:

scp_tarball_command = '/usr/bin/scp ...';
stop_python = '/usr/sbin/systemd stop whatever';
delete_code_dir = '/bin/rm -rf /home/arl/code';
untar_tarball = '/usr/bin/tar -xzf ...';
start_python = '/usr/sbin/systemd start whatever';

exec { $scp_tarball_command: creates => 'whatever'} ->
exec { $stop_python: refreshonly => true} ->
exec { $delete_code_dir: refreshonly => true} ->
exec { $untar_tarball: refreshonly => true} ->
exec { $start_python: refreshonly => true}

Вы можете посмотреть здесь детали заказа ресурсов: https://puppet.com/docs/puppet/5.3/types/exec.html

Также я бы предложил поместить этот код в класс и заменить жестко закодированный материал параметрами класса.

Другие вопросы по тегам