Как можно развернуть архив с марионеткой - PullRequest
0 голосов
/ 21 октября 2018

Я использовал 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 Ответ

0 голосов
/ 21 октября 2018

Для того, что вы делаете, вы хотели бы использовать серию 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

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

...