如何在Puppet中存储状态?

时间:2017-07-09 17:05:02

标签: puppet

我最近开始使用Puppet,我正在努力解决的一个问题是保存"状态"。也许以下示例任务将有所帮助:

  1. 使用Puppet安装某些软件(Apache httpd或数据库)
  2. 使用Puppet创建一些服务(比如数据库或httpd实例)
  3. 使用Puppet启动服务(假设启动数据库实例)
  4. 使用Puppet请求SSL证书并在准备好后将其导入(Apache)
  5. 将有关服务器详细信息的信息复制到某个数据库中
  6. 还有更多......
  7. 在所有这一切中,我想拯救国家。说一旦SSL任务完成,保存状态,这样当Puppet下次运行时,它知道生成了SSL并且一起跳过了这个任务。我目前正在做这个" cheesey"方式,即我正在创建"文件"表明任务已完成,在下一次运行中,我检查文件是否存在,以便我做出决定  有更优雅的方式实现这一目标吗?也许是一个自定义事实我真的很想知道其他人如何使用Puppet来存储和检索他们的任务状态。

    编辑:为Alex添加更多详细信息 其中一项任务是使用服务器名称,创建的数据库实例的名称等详细信息更新内部公司数据库。此任务只需要完成一次,而不是每30分钟完成一次(30分钟是Puppet代理运行的频率)。

1 个答案:

答案 0 :(得分:0)

如果我正确理解了问题,我认为所有"陈述"您可以使用onlyifunless

轻松检查上述列表中要查看的内容

示例:从上面列出nr1。您已经安装了apache,并且您希望下次检查它是否已安装。

exec { 'install_apache':
command     => '/usr/bin/apt-get install apache2 apache2-doc apache2-utils',
refreshonly => true,
path        => ['/usr/bin', '/bin', '/sbin'],
unless   => 'apt-cache search apache2', }

因此,在这种情况下,您将检查unless是否已安装apache,即如果命令apt-cache的退出状态返回0(true),则不会执行命令。

这可以用来检查是否创建了SSL,甚至是数据库查询。