如何在Puppet中存储状态?

如何在Puppet中存储状态?,puppet,Puppet,我最近开始使用木偶,我正在努力的领域之一就是拯救“国家”。以下示例任务可能会有所帮助: 使用Puppet安装一些软件(Apache httpd或数据库) 使用Puppet创建一些服务(比如数据库或httpd实例) 使用Puppet启动服务(比如启动数据库实例) 使用Puppet请求SSL证书并在准备好后导入它们(Apache) 将有关服务器详细信息的信息复制到某些数据库中 还有更多 在这一切中,我想拯救国家。假设SSL任务完成后,保存状态,这样当Puppet下次运行时,它知道生成了SSL并跳过此

我最近开始使用木偶,我正在努力的领域之一就是拯救“国家”。以下示例任务可能会有所帮助:

  • 使用Puppet安装一些软件(Apache httpd或数据库)
  • 使用Puppet创建一些服务(比如数据库或httpd实例)
  • 使用Puppet启动服务(比如启动数据库实例)
  • 使用Puppet请求SSL证书并在准备好后导入它们(Apache)
  • 将有关服务器详细信息的信息复制到某些数据库中
  • 还有更多 在这一切中,我想拯救国家。假设SSL任务完成后,保存状态,这样当Puppet下次运行时,它知道生成了SSL并跳过此任务。我目前正在以“cheesey”的方式进行此操作,即我正在创建“文件”以表示任务已完成,在下一次运行中,我会检查是否存在该文件,以便做出该决定。
    有没有更优雅的方式来实现这一点?也许是一个习惯的事实?我真的很想知道其他人是如何使用Puppet来存储和检索他们任务的状态的

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

    如果我正确理解了问题,我认为您要从上面列表中检查的所有“状态”都可以通过或轻松检查

    示例:从上面的列表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', }
    
    所以在本例中,您将使用
    检查apache是否已安装,即如果命令apt cache的退出状态返回0(true),则不会执行该命令


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

    人们使用来自(例如)Vagrant Box或Docker映像的可移植实例来执行此操作。使用Puppet设置这些将自动执行您想要的操作。@用户,如果您提供您正在使用的实际代码,我可以就更干净的实现给出我的想法。目前,我不能完全确定你试图解决的问题是什么。