我尝试使用puppet在Vagrant盒子上安装node.js。我的Vagrantfile(Debian Wheezy)具有以下配置:
config.vm.provision :puppet, run: "always" do |puppet|
puppet.manifests_path = "puppet/manifests"
puppet.module_path = "puppet/modules"
puppet.options = '--verbose'
end
内部puppet/modules
我有官方puppetlabs-nodejs
模块(重命名为nodejs
)。在puppet/manifests
内我开始小 - default.pp
就是这样:
Exec { path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ] }
include nodejs
当我运行vagrant provision
时,我收到以下错误:
==> default: err: /Stage[main]/Nodejs/Package[nodejs]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install nodejs' returned 100: Reading package lists...
==> default: Building dependency tree...
==> default: Reading state information...
==> default: E: Unable to locate package nodejs
==> default:
==> default: err: /Stage[main]/Nodejs/Package[npm]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install npm' returned 100: Reading package lists...
==> default: Building dependency tree...
==> default: Reading state information...
==> default: E: Unable to locate package npm
==> default:
我可以告诉我the readme。这个自述文件是不完整的?安装节点还有更多内容,而不仅仅是包含模块吗?
答案 0 :(得分:1)
您可以使用manage_package_repo
参数:
package { 'nodejs':
ensure => present,
manage_package_repo => true,
}
这将运行这个Puppet代码(与exec相同,但更加幂等!)
if ($ensure == 'present') {
apt::source { 'nodesource':
include_src => $enable_src,
key => '1655A0AB68576280',
key_source => 'https://deb.nodesource.com/gpgkey/nodesource.gpg.key',
location => 'https://deb.nodesource.com/node',
pin => $pin,
release => $::lsbdistcodename,
repos => 'main',
required_packages => 'apt-transport-https ca-certificates',
}
}
答案 1 :(得分:0)
您需要首先添加run以运行指向包的指针。
curl -sL https://deb.nodesource.com/setup | sudo bash -
您需要exec
块才能执行此操作。
使用该命令执行exec,并将set设置为'/etc/apt/sources.list.d/nodesource.list'