Ansible 如何使用puppet部署存档
我一直在使用ansible部署在jenkins中创建的工件。这出戏是这样的:Ansible 如何使用puppet部署存档,ansible,puppet,idempotent,Ansible,Puppet,Idempotent,我一直在使用ansible部署在jenkins中创建的工件。这出戏是这样的: 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/syste
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}
有没有办法在puppet中实现它?对于您正在做的事情,您需要使用一系列
Exec
资源类型,并使用->
资源排序操作符。因此,您的puppet清单如下所示:
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}
您需要在此处查看有关资源排序的详细信息:
另外,我建议将代码放在类中,并用类参数替换硬编码的内容。嘿,我熟悉关系和顺序,也熟悉exec。在我看来,这样工作非常“不简单”。你能告诉我这是一种最佳做法还是一种可行的解决方案吗?这有点不简单puppetty,但是如果您将代码打包在RPM中,您可以更好地遵循
包>>文件>>服务
的傀儡模式。如果您将python代码打包到python包中,您可能可以在包
资源声明中使用pip
作为提供者。pip思想对于pyt来说是一个好主意亲爱的。我的主要挑战是处理代码目录中的a文件可能被正在运行的进程锁定的情况。同样,从命令式方法来看,这相当容易处理。*停止->*覆盖代码->*启动。例如,如果您使用puppet管理nginx,并想升级它,puppet可能需要在服务启动之前停止服务确定代码目录的日期,然后重新启动。我将看看其他一些模块是如何实现这一点的。感谢您的建议。您想要: