包括变量的定义

时间:2013-09-09 23:04:24

标签: puppet

我正在努力整理一些木偶剧本 - 我有一个服务列表(可能大约20个左右)需要以非常相似的方式进行部署。

  1. 停止现有服务
  2. 从nexus中获取包
  3. 将其解压缩到目录
  4. 设置配置变量
  5. 开始服务
  6. 问题是#4。每项服务的配置略有不同。我想使用augeas来设置每个服务的配置,似乎有必要为每个服务的配置定义,然后在主服务定义中加载该定义。

    所以,我有类似的东西:

    definition service ($serviceName) {
        //stopping, wget, unzip
    
        config[downcase($serviceName)] { "${servicename}_config":
            serviceName => $serviceName
        }
    
        //start
    }
    

    然后,我(例如)在配置模块的清单文件夹“foo.pp”中

    definition config::foo {
        //set some stuff
    }
    

    由于我确信我已经破坏但不知道的各种规则,这是行不通的。做我正在做的事情有“标准”的方式吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码。您可以将所有这些设置为define类型,其中包含服务名称myserv的变量。我建议使用templates来设置配置而不是augeas ...更容易控制。

exec { "stop_myserv" :
  command => "service stop myserv",
  path => "/path/to/command/service",
  refreshonly => true,
 }

exec { "get_pkg_from_nexus" :
  command => "/command/to/do/the/above && unzip to/dirctory",
  path => "/path/to/command",
  require => Exec["stop_myserv"],
}

file { "set_configuration" :
  path => "/etc/somewhere/file",
  content => template("modulename/file.erb"),
  mode => "999",
  group => "jiut",
  owner => "muit",
  require => Exec["get_pkg_from_nexus"],
}

service { "myserv" :
  ensure => running,
  subscribe => File["set_configuration"],
}