大家好日子,
我给流浪者一个镜头并将其与木偶配对,看看我是否可以开始一个虚拟项目。我正在使用配置脚本在ubuntu框中安装必要的组件我正在使用vagrant up命令;然而,当木偶供应时,它只是失败了,我不知道为什么,因为我刚开始玩它。我的目录结构如下:
Project
|--puppet
|--manifests
|--site.pp
|--modules(empty)
|--Puppetfile
|--provision scripts
|--Vagrantfile
我的配置脚本运行以下命令
$as_vagrant = 'sudo -u vagrant -H bash -l -c'
${as_vagrant} apt-get update
${as_vagrant} gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
${as_vagrant} apt-get install curl -y
${as_vagrant} curl -sSL https://get.rvm.io | bash -s $1
rvm install 2.1.4
rvm use 2.1.4 --default
${as_vagrant} apt-get install -y puppet
${as_vagrant} gem install librarian-puppet -v 2.0.0
sudo apt-get install git -y
sudo touch /home/vagrant/metadata.json
sudo echo '{}' >> /home/vagrant/metadata.json
(我只是将所有命令放在一个块中,而不是将它们分成单独的文件,以便保持这个简短)
我的Puppetfile如下所示:
#!/usr/bin/env ruby
#^syntax detection
forge "https://forgeapi.puppetlabs.com"
# use dependencies defined in metadata.json
#metadata
# use dependencies defined in Modulefile
# modulefile
# Java module
mod 'tylerwalts/jdk_oracle'
# A module from the Puppet Forge
mod 'puppetlabs-stdlib'
# A module from git
mod 'puppetlabs-ntp',
:git => 'git://github.com/puppetlabs/puppetlabs-ntp.git'
# A module from a git branch/tag
mod 'puppetlabs-apt',
:git => 'https://github.com/puppetlabs/puppetlabs-apt.git',
:ref => '1.4.x'
# A module from Github pre-packaged tarball
# mod 'puppetlabs-apache', '0.6.0', :github_tarball => 'puppetlabs/puppetlabs-apache'
我运行配置脚本的vagrantfile部分如下所示:
##### Puppet management section
config.vm.provision :shell, :path => "install-rvm.sh", :args => "stable"
config.vm.provision :shell, :path => "install-ruby.sh", :args => "2.1.4"
config.vm.provision :shell, :path => "install-puppetstuff.sh"
config.vm.provision :shell, :path => "install-defaults.sh"
#Provisioning puppet
config.vm.provision :puppet do |puppet|
puppet.manifests_path = 'puppet/manifests'
puppet.module_path = ['puppet/modules']
puppet.manifest_file = 'site.pp'
end
#Setting up librarian puppet for puppet modules
config.vm.provision :shell, :path => "librarian-puppet-init.sh"
最后,librarian-puppet-init.sh脚本如下所示:
#!/usr/bin/env bash
librarian-puppet install
site.pp文件:
class { 'jdk_oracle':
versrion => '7'
}
现在,考虑到我没有错过任何东西,这是我目前的“设置”,当我做流浪汉时,一切运行良好,直到流浪汉运行我的librarian-puppet-init脚本。当它执行它时,整个事情崩溃并且它吐出来
==> default: Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class jdk_oracle at /tmp/vagrant-puppet-3/manifests/site.pp:3 on node chard
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
puppet apply --modulepath '/tmp/vagrant-puppet-3/modules-0:/etc/puppet/modules' --manifestdir /tmp/vagrant-puppet-3/manifests --detailed-exitcodes /tmp/vagrant-puppet-3/manifests/site.pp
Stdout from the command:
warning: Could not retrieve fact fqdn
Stderr from the command:
stdin: is not a tty
Puppet::Parser::AST::Resource failed with error ArgumentError: Could not find declared class jdk_oracle at /tmp/vagrant-puppet-3/manifests/site.pp:3 on node chard
但是,如果我在site.pp文件中没有包含任何内容而是将其留空,我会得到此输出(其他所有内容保持不变)
==> default: Running provisioner: shell...
default: Running: /var/folders/jp/b91ydrmx1dx8kmvr0jvc78tw0000gn/T/vagrant-shell20141107-3334-likxg7.sh
==> default: stdin: is not a tty
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:74:in `metadata'
==> default: :
==> default: undefined method `each' for nil:NilClass
==> default: (
==> default: NoMethodError
==> default: )
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:24:in `block in run'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl/receiver.rb:34:in `instance_eval'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl/receiver.rb:34:in `run'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:47:in `run'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:34:in `block in run'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:28:in `tap'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:28:in `run'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl.rb:17:in `run'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/environment.rb:148:in `dsl'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/specfile.rb:15:in `read'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/action/resolve.rb:13:in `run'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:169:in `resolve!'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/cli.rb:67:in `install'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `block (2 levels) in bin!'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:31:in `returning_status'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `block in bin!'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:47:in `with_environment'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `bin!'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/bin/librarian-puppet:7:in `<top (required)>'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/bin/librarian-puppet:23:in `load'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/bin/librarian-puppet:23:in `<main>'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `eval'
==> default: from /usr/local/rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `<main>'
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
chmod +x /tmp/vagrant-shell && /tmp/vagrant-shell
Stdout from the command:
Stderr from the command:
stdin: is not a tty
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:74:in `metadata': undefined method `each' for nil:NilClass (NoMethodError)
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:24:in `block in run'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl/receiver.rb:34:in `instance_eval'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl/receiver.rb:34:in `run'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:47:in `run'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:34:in `block in run'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:28:in `tap'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:28:in `run'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl.rb:17:in `run'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/environment.rb:148:in `dsl'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/specfile.rb:15:in `read'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/action/resolve.rb:13:in `run'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:169:in `resolve!'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/cli.rb:67:in `install'
from /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
from /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
from /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
from /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `block (2 levels) in bin!'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:31:in `returning_status'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `block in bin!'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:47:in `with_environment'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `bin!'
from /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/bin/librarian-puppet:7:in `<top (required)>'
from /usr/local/rvm/gems/ruby-2.1.4/bin/librarian-puppet:23:in `load'
from /usr/local/rvm/gems/ruby-2.1.4/bin/librarian-puppet:23:in `<main>'
from /usr/local/rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `eval'
from /usr/local/rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `<main>'
任何人都知道发生了什么事吗?我花了几天的时间试图弄清楚什么是错的,并且无数个小时试图在谷歌上找到一些能够清楚地解释事情的东西,以便我有一个干净的清洁设置,但没有成功。欢迎任何和所有帮助。谢谢大家。
***** EDIT ******
我在配置puppet的命令之前移动了我的librarian puppet配置命令,所以我的vagrant文件现在看起来像这样,并且我添加了一个sync命令:
##### Puppet management section
config.vm.provision :shell, :path => "install-rvm.sh", :args => "stable"
config.vm.provision :shell, :path => "install-ruby.sh", :args => "2.1.4"
config.vm.provision :shell, :path => "install-puppetstuff.sh"
config.vm.provision :shell, :path => "install-defaults.sh"
#Seting up librrian puppet for puppet modules
config.vm.provision :shell, :path => "librarian-puppet-init.sh"
#Provisioning puppet
config.vm.provision :puppet do |puppet|
puppet.manifests_path = 'puppet/manifests'
puppet.module_path = ['puppet/modules']
puppet.manifest_file = 'site.pp'
end
#Syncs local chard folder with folder in box
config.vm.synced_folder "~/dev/chard", "/chard"
现在这是我获得的木偶图书管理员输出:
==> default: [Librarian] Ruby Version: 2.1.4
==> default: [Librarian] Ruby Platform: x86_64-linux
==> default: [Librarian] Rubygems Version: 2.4.2
==> default: [Librarian] Librarian Version: 0.1.2
==> default: [Librarian] Librarian Adapter: puppet
==> default: [Librarian] Librarian Adapter Version: 2.0.0
==> default: [Librarian] Project: /home/vagrant
==> default: [Librarian] Specfile: Puppetfile
==> default: [Librarian] Lockfile: Puppetfile.lock
==> default: [Librarian] Git: /usr/bin/git
==> default: [Librarian] Git Version: 1.7.9.5
==> default: [Librarian] Git Environment Variables:
==> default: [Librarian] (empty)
==> default: [Librarian] Specfile not found, using defaults: /home/vagrant/Puppetfile
==> default: [Librarian] Pre-Cached Sources:
==> default: Metadata file does not exist: /home/vagrant/metadata.json
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:70:in `metadata'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:24:in `block in run'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl/receiver.rb:34:in `instance_eval'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl/receiver.rb:34:in `run'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:47:in `run'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:34:in `block in run'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:28:in `tap'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:28:in `run'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl.rb:17:in `run'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/environment.rb:148:in `dsl'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/specfile.rb:15:in `read'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/action/resolve.rb:13:in `run'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:169:in `resolve!'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/cli.rb:67:in `install'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `block (2 levels) in bin!'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:31:in `returning_status'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `block in bin!'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:47:in `with_environment'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `bin!'
==> default: /usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/bin/librarian-puppet:7:in `<top (required)>'
==> default: /usr/local/rvm/gems/ruby-2.1.4/bin/librarian-puppet:23:in `load'
==> default: /usr/local/rvm/gems/ruby-2.1.4/bin/librarian-puppet:23:in `<main>'
==> default: /usr/local/rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `eval'
==> default: /usr/local/rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `<main>'
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
chmod +x /tmp/vagrant-shell && /tmp/vagrant-shell
Stdout from the command:
[Librarian] Ruby Version: 2.1.4
[Librarian] Ruby Platform: x86_64-linux
[Librarian] Rubygems Version: 2.4.2
[Librarian] Librarian Version: 0.1.2
[Librarian] Librarian Adapter: puppet
[Librarian] Librarian Adapter Version: 2.0.0
[Librarian] Project: /home/vagrant
[Librarian] Specfile: Puppetfile
[Librarian] Lockfile: Puppetfile.lock
[Librarian] Git: /usr/bin/git
[Librarian] Git Version: 1.7.9.5
[Librarian] Git Environment Variables:
[Librarian] (empty)
[Librarian] Specfile not found, using defaults: /home/vagrant/Puppetfile
[Librarian] Pre-Cached Sources:
Metadata file does not exist: /home/vagrant/metadata.json
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:70:in `metadata'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:24:in `block in run'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl/receiver.rb:34:in `instance_eval'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl/receiver.rb:34:in `run'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:47:in `run'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:34:in `block in run'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:28:in `tap'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/dsl.rb:28:in `run'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/dsl.rb:17:in `run'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/environment.rb:148:in `dsl'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/specfile.rb:15:in `read'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/action/resolve.rb:13:in `run'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:169:in `resolve!'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/lib/librarian/puppet/cli.rb:67:in `install'
/usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
/usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
/usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
/usr/local/rvm/gems/ruby-2.1.4/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `block (2 levels) in bin!'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:31:in `returning_status'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `block in bin!'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:47:in `with_environment'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-0.1.2/lib/librarian/cli.rb:26:in `bin!'
/usr/local/rvm/gems/ruby-2.1.4/gems/librarian-puppet-2.0.0/bin/librarian-puppet:7:in `<top (required)>'
/usr/local/rvm/gems/ruby-2.1.4/bin/librarian-puppet:23:in `load'
/usr/local/rvm/gems/ruby-2.1.4/bin/librarian-puppet:23:in `<main>'
/usr/local/rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `eval'
/usr/local/rvm/gems/ruby-2.1.4/bin/ruby_executable_hooks:15:in `<main>'
Stderr from the command:
stdin: is not a tty
/tmp/vagrant-shell: line 2: cd: /home/vagrant/chard: No such file or directory
答案 0 :(得分:0)
只有在Puppetfile中使用“metadata”命令,或者如果工作目录中没有Puppetfile但是有一个metadata.json,并且metadata.json没有'依赖项'时,才会发生该错误' 部分。 您发布的Puppetfile在这里运行正常,检查是否在正确的目录中调用了librarian-puppet,并且metadata.json有好的