我一直在使用ansible部署在jenkins中创建的工件。剧本看起来像这样:
在p中,您可以使用服务提供商来管理服务。但是,由于要管理“状态”,因此无法将资源python_service声明为“ stopped”,然后在清单中将其声明为“ started”,因为这将导致重复的声明错误。在ansible中,这势在必行,这很容易实现。
有没有办法在木偶中实现它?
答案 0 :(得分: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
我也建议将代码放在类中,并用类参数替换硬编码的内容。