puppet stage 语法错误

puppet stage 语法错误

我有一个用于安装 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

相关内容