【问题标题】:Running a command once after a group of packages is installed安装一组软件包后运行一次命令
【发布时间】:2015-04-14 23:22:13
【问题描述】:

我有一个现有的 puppet manifest,它安装了一堆 php5 包,只有在安装后才会重新启动 apache。简化的清单类似于

package { 'apache-php':
    name => $modules,
    ensure => installed
}

exec {'enable-mod-php':
    command     => $enable_cmd,
    refreshonly => true
}

Package['apache-php'] ~> Exec['enable-mod-php'] ~> Service['apache']

在系统升级目录运行开始失败并显示以下错误消息后:

错误:无法应用目录:Package[apache-php] 上的参数名称失败:名称必须是 /etc/puppet/modules/apache/manifests/php.pp:22 中的字符串而不是数组

我发现我使用了一个未记录的功能/错误:Puppet 3.4.0 name as an array in package

但是,我很难弄清楚升级后如何重新设置。如何重写此清单以使其适用于更新的 puppet 版本?

【问题讨论】:

    标签: puppet


    【解决方案1】:

    而不是在您的示例中为包定义使用任意标题。 (例如apache-php)并使用name 参数,您可以执行以下操作:

    $modules = ['foo','bar','baz']
    
    package { $modules:
      ensure => present
      notify => Exec['enable-mod-php']
    }
    
    exec {'enable-mod-php':
      command     => $enable_cmd,
      refreshonly => true,
      notify      => Service['apache']
    }
    
    service { 'apache':
      # your apache params
    }
    

    我没有查看包提供程序的代码,但可以验证上述内容是否有效。您还应该注意,链接箭头都很好,但根据Puppet style guidemetaparameters 是首选。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2011-12-23
      • 2018-02-12
      • 2012-07-03
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多