简化木偶清单

时间:2013-08-30 15:50:08

标签: puppet

我想使用现有的puppet模块在服务器上配置多组内容,最简单的例子是:

file { "/var/www/MYVARIABLEHERE":
    ensure => "directory",
}
mysql::db { MYVARIABLEHERE:
    user     => MYVARIABLEHERE,
    password => MYVARIABLEHERE,
    host     => 'localhost',
    grant    => ['all'],
}

有没有办法将它抽象出来,以便我可以说出一组预先定义的选项,然后将它们传递给现有的puppet模块,这样我就不会得到一个长达数千行的清单文件?

根据下面的答案我已经设置:

define mySites {
  mysql::db { $name:
    user     => $name,
    password => $name,
    host     => 'localhost',
    grant    => ['all'],
  }

  file { "/var/www/${name}.drupal.dev":
    ensure => "directory",
  }
}
然后我打电话给:

mySites {"site": $name => "test", }

并收到以下错误:

Could not parse for environment production: Syntax error at 'name'; expected '}'

1 个答案:

答案 0 :(得分:1)

您可以使用define类型来简化:

define mydef( $usern, $passn) {
  file { "/var/www/$usern":
     ensure => "directory",
  }
  mysql::db { $usern :
      user => $usern,
      password => $passn,
      host => "localhost",
      grant => ['all'],
  }
}

# You have to call the define type for each cases.
mydef{"u1": usern => "john", password => "pass", }

# It might be possible to provide multiple arrays to a define
# type if you use puppet's future parser