Build 如何从源代码本地构建和安装Puppet模块?

Build 如何从源代码本地构建和安装Puppet模块?,build,module,puppet,Build,Module,Puppet,我发现了一个puppet模块,其作者刚刚添加了一系列修改,否则我必须手动进行修改 这确实发生在20小时前 我已经将主分支下载到一个zip文件中,将其解压缩到我的modules文件夹中,然后运行puppet module build--verbose/etc/puppet/modules/arioch redis,但毫无效果 我明白这绝对不是正常的行为,但我觉得这个问题值得关注 使用源代码模块肯定有一个用例,特别是在快速移动或依赖快速反馈的项目中 我已经对此做了一些研究,请随意在评论中提出“你有没

我发现了一个puppet模块,其作者刚刚添加了一系列修改,否则我必须手动进行修改

这确实发生在20小时前

我已经将主分支下载到一个zip文件中,将其解压缩到我的modules文件夹中,然后运行
puppet module build--verbose/etc/puppet/modules/arioch redis
,但毫无效果

我明白这绝对不是正常的行为,但我觉得这个问题值得关注

使用源代码模块肯定有一个用例,特别是在快速移动或依赖快速反馈的项目中

我已经对此做了一些研究,请随意在评论中提出“你有没有研究过X”的问题

例如,我查看了一下,但它似乎主要是为了将模块上传到Forge,而不是从源代码本地安装

另外,我的尝试在“”部分失败

以下三项似乎都用“安装图书管理员傀儡”来回答这个问题,但考虑到我们可以编写自己的模块,使用
librarian puppet
来使用公开的git存储库中的源代码来使用简单的模块似乎是愚蠢的:

(我正在寻找一个答案,看看OP会在这个答案中创建私人回购协议之后会发生什么。)

(我的借口是:我不需要只使用
puppet模块安装工具。我也可以使用其他puppet工具。)

(我的理由是:答案似乎与这个问题无关。)

(我的理由是:同样,我认为最适合这个问题的最佳答案是“不要为此使用Puppet,找一个解决办法。”在这种情况下,解决办法是让Vagrant部分使用Shell配置。)

如果这真的是一个重复,或一个总结,请在评论中这样说,也许我可以解释。欢迎编辑

我需要破解
metadata.json
内容吗

我应该在某个地方克隆此存储库并将其链接到我自己的临时Forge帐户还是其他什么

总结:


当模块在其Git存储库中传递Travis时,但在Forge使其可用之前,我如何获得模块的Veeeerry最新版本?

从Forge下载的Puppet模块仍然是文件夹,Puppet模块命令只是对其进行修复并使用API下载依赖项

因此,您的方法很接近,您只需确保文件夹具有正确的目录名:

以你为例:

$ puppet module list
/Users/foo/.puppet/modules
├── fiddyspence-sysctl (v1.1.0)
├── puppetlabs-apt (v1.8.0)
├── puppetlabs-aws (v1.0.0)
├── puppetlabs-nodejs (v0.7.1)
└── puppetlabs-stdlib (v4.6.0)
$ cd /Users/foo/.puppet/modules
$ ll
total 0
drwxr-xr-x  15 foo  staff  510 Mar 17  2015 apt
drwxr-xr-x  18 foo  staff  612 Mar 26  2015 aws
drwxr-xr-x  14 foo  staff  476 Jan 22  2015 nodejs
drwxr-xr-x  17 foo  staff  578 Apr 15  2015 stdlib
drwxr-xr-x  12 foo  staff  408 Feb  9  2015 sysctl
$ wget https://github.com/arioch/puppet-redis/archive/master.zip
--2015-12-02 11:56:24--  https://github.com/arioch/puppet-redis/archive/master.zip
Resolving github.com... 192.30.252.130
Connecting to github.com|192.30.252.130|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/arioch/puppet-redis/zip/master [following]
--2015-12-02 11:56:24--  https://codeload.github.com/arioch/puppet-redis/zip/master
Resolving codeload.github.com... 192.30.252.144
Connecting to codeload.github.com|192.30.252.144|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 29509 (29K) [application/zip]
Saving to: 'master.zip'

master.zip                    100%[==================================================>]  28.82K  --.-KB/s   in 0.1s

2015-12-02 11:56:25 (257 KB/s) - 'master.zip' saved [29509/29509]

$ unzip master.zip
Archive:  master.zip
4fb33b960a09bfb459eff20ee112bfc9e0a1c096
   creating: puppet-redis-master/
  inflating: puppet-redis-master/.fixtures.yml
  inflating: puppet-redis-master/.gitignore
 extracting: puppet-redis-master/.puppet-lint.rc
  inflating: puppet-redis-master/.travis.yml
  inflating: puppet-redis-master/Gemfile
  inflating: puppet-redis-master/LICENSE
  inflating: puppet-redis-master/README.md
  inflating: puppet-redis-master/Rakefile
   creating: puppet-redis-master/manifests/
  inflating: puppet-redis-master/manifests/config.pp
  inflating: puppet-redis-master/manifests/init.pp
  inflating: puppet-redis-master/manifests/install.pp
  inflating: puppet-redis-master/manifests/params.pp
  inflating: puppet-redis-master/manifests/preinstall.pp
  inflating: puppet-redis-master/manifests/sentinel.pp
  inflating: puppet-redis-master/manifests/service.pp
  inflating: puppet-redis-master/metadata.json
   creating: puppet-redis-master/spec/
   creating: puppet-redis-master/spec/classes/
  inflating: puppet-redis-master/spec/classes/redis_sentinel_spec.rb
  inflating: puppet-redis-master/spec/classes/redis_spec.rb
 extracting: puppet-redis-master/spec/spec.opts
  inflating: puppet-redis-master/spec/spec_helper.rb
   creating: puppet-redis-master/templates/
  inflating: puppet-redis-master/templates/redis-sentinel.conf.erb
  inflating: puppet-redis-master/templates/redis-sentinel.init.erb
  inflating: puppet-redis-master/templates/redis.conf.erb
$ mv puppet-redis-master/ redis
$ ll
total 64
drwxr-xr-x  15 foo  staff    510 Mar 17  2015 apt
drwxr-xr-x  18 foo  staff    612 Mar 26  2015 aws
-rw-r--r--   1 foo  staff  29509 Dec  2 11:56 master.zip
drwxr-xr-x  14 foo  staff    476 Jan 22  2015 nodejs
drwxr-xr-x  14 foo  staff    476 Nov 30 15:10 redis
drwxr-xr-x  17 foo  staff    578 Apr 15  2015 stdlib
drwxr-xr-x  12 foo  staff    408 Feb  9  2015 sysctl
你会注意到它抱怨缺少依赖性

$ puppet module list
Warning: Module 'puppetlabs-apt' (v1.8.0) fails to meet some dependencies:
  'arioch-redis' (v1.1.3) requires 'puppetlabs-apt' (>= 2.0.1 <3.0.0)
Warning: Missing dependency 'stahnma-epel':
  'arioch-redis' (v1.1.3) requires 'stahnma-epel' (>= 1.0.2 <2.0.0)
/Users/foo/.puppet/modules
├── arioch-redis (v1.1.3)
├── fiddyspence-sysctl (v1.1.0)
├── puppetlabs-apt (v1.8.0)  invalid
├── puppetlabs-aws (v1.0.0)
├── puppetlabs-nodejs (v0.7.1)
└── puppetlabs-stdlib (v4.6.0)

//,为了清晰、详细,以及你回答一个比我的问题更一般的问题的方式,我对此进行了改进,使我能够立即将其应用到问题的案例中。我将对此进行测试,如果有效,请接受这个答案。“谢谢你,”彼得绍尔说。
$ cd redis/
$ librarian-puppet install --path ../. --verbose
[Librarian] Ruby Version: 2.1.2
[Librarian] Ruby Platform: x86_64-darwin14.0
[Librarian] Rubygems Version: 2.4.8
[Librarian] Librarian Version: 0.6.3
[Librarian] Librarian Adapter: puppet
[Librarian] Librarian Adapter Version: 2.2.1
[Librarian] Project: /Users/foo/.puppet/modules/redis
[Librarian] Specfile: Puppetfile
[Librarian] Lockfile: Puppetfile.lock
[Librarian] Git: /opt/boxen/homebrew/bin/git
[Librarian] Git Version: 2.4.3
[Librarian] Git Environment Variables:
[Librarian]   GIT_PS1_SHOWDIRTYSTATE=true
[Librarian]   GIT_PS1_SHOWSTASHSTATE=true
[Librarian]   GIT_PS1_SHOWUNTRACKEDFILES=true
[Librarian]   GIT_PS1_SHOWUPSTREAM=auto
[Librarian] Pre-Cached Sources:
[Librarian]   [:forge, "https://forgeapi.puppetlabs.com", {}]
[Librarian] Specfile /Users/foo/.puppet/modules/redis/Puppetfile not found, using defaults
[Librarian] Post-Cached Sources:
[Librarian]   [:forge, "https://forgeapi.puppetlabs.com", {}]
[Librarian] The specfile is unchanged: nothing to do.
[Librarian] Install: dependencies resolved
[Librarian] Installing puppetlabs-stdlib/4.9.0 <https://forgeapi.puppetlabs.com>
[Librarian] Installing puppetlabs-apt/2.2.0 <https://forgeapi.puppetlabs.com>
[Librarian] Installing stahnma-epel/1.2.0 <https://forgeapi.puppetlabs.com>
$ puppet module list
/Users/petersouter/.puppet/modules
├── arioch-redis (v1.1.3)
├── fiddyspence-sysctl (v1.1.0)
├── puppetlabs-apt (v2.2.0)
├── puppetlabs-aws (v1.0.0)
├── puppetlabs-nodejs (v0.7.1)
├── puppetlabs-stdlib (v4.9.0)
└── stahnma-epel (v1.2.0)
$ puppet module install puppetlabs-apt -v 2.0.1 --force
Notice: Preparing to install into /Users/petersouter/.puppet/modules ...
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/Users/foo/.puppet/modules
└── puppetlabs-apt (v2.0.1)

$ puppet module install stahnma-epel -v 1.2.0 --force
Notice: Preparing to install into /Users/petersouter/.puppet/modules ...
Notice: Downloading from https://forgeapi.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/Users/foo/.puppet/modules
└── stahnma-epel (v1.2.0)