我有一个用于安装 nodejs 模块包的 shell 脚本,该脚本应在所有包安装完成后执行。我在 Stage[main] 之后定义了一个阶段“last”,这是我的代码
stage { 'last': }
Stage[main] -> Stage[last]
class npm {
stage => last,
file { '/tmp/nodejs.sh':
source => 'puppet:///modules/npm/nodejs.sh',
ensure => present,
}
exec { 'install web development nodejs packages':
command => '/tmp/nodejs.sh',
user => "root",
require => Package['nodejs', 'npm']
}
}
然而它返回一个错误
==> 默认:错误:无法解析环境生产:'=>' 处的语法错误;节点 local.d ev 上的 /tmp/vagrant-puppet-/manifests/init.pp:90 处应为 '}'
第 90 行指向“stage => last”,
答案1
您混淆了两个遗憾的是语法非常相似的概念。
类定义
class <name> {
# includes of other classes ...
# resource declarations ...
}
类声明
# usually
include <name>
# ...but if you need stages
class {
'<name>':
stage => 'last'
}
后者被称为资源类声明(它有一些警告)。
还要注意的是,社区里有些不赞同这个阶段。
如果不使用虚拟包资源,则可以避免使用阶段。
Package<| |> -> Exec['install web development nodejs packages']
这将建立before
所有package
资源与您的之间的关系exec
。