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

内森·巴萨尼斯(Nathan Basanese)

我找到了一个木偶模块,其作者刚刚添加了很多修改,否则我将不得不手动进行修改。

这实际上是在20个小时前发生的。

我已经将master分支下载到一个zip文件中,将其提取到我的modules文件夹中,然后运行puppet module build --verbose /etc/puppet/modules/arioch-redis,但无济于事。

我知道这绝对不是正常行为,但是我觉得这个问题值得关注。

绝对有一个使用源模块的用例,尤其是在快速移动或依赖快速反馈的项目中。

我对此进行了一些研究,请随时在评论中询问“您是否研究过X”问题。

例如,我查看了https://docs.puppetlabs.com/puppet/latest/reference/modules_publishing.html#build-your-module,但它似乎主要是为了将模块上传到Forge,而不是从本地进行安装来源。

另外,我的尝试在“构建模块”部分中失败

以下所有三个似乎都可以通过“ install librarian-puppet”来回答这个问题,但是鉴于我们可以编写自己的模块,不得不使用librarian-puppet公共git仓库中的源代码来使用简单的代码似乎很愚蠢。模块:

更改人偶模块源(我正在寻找OP会在该答案中创建私有存储库发生的情况的答案。)

如何使用puppet模块安装从本地存储库中安装puppet文件(我的借口:我不需要只使用该puppet module install工具。我也可以使用其他puppet工具。)

直接从克隆的存储库中使用人偶模块(我的借口:答案似乎与该问题无关。)

从清单脚本安装人偶模块(我的借口:同样,对于该问题,我认为最佳的最佳答案是“不要为此使用人偶,请找到解决方法。”在这种情况下,解决方法是让Vagrant部分使用Shell Provisioning。)

如果这确实是重复的或摘要,请在评论中说出来,也许我可以解释。欢迎编辑!

我需要破解metadata.json内容吗?

我应该在某个地方克隆该存储库,然后将其链接到我自己的临时Forge帐户中吗?

概括:

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

彼得·苏特

从伪造者下载的人偶模块仍然是文件夹,人偶模块命令只是解压缩它们并使用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)

据我所知:无法使用Puppet的module命令解决本地模块的依赖关系。

那就是图书管理员-木偶出现的地方:

$ 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-librarian,也可以手动更新这些模块:

$ 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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Debian 9.8上从源代码构建和安装Python 3.7.x

来自分类Dev

在本地构建和安装JAGS

来自分类Dev

从源代码构建和使用pydrake

来自分类Dev

从源代码构建和使用安装包之间有什么区别?

来自分类Dev

如何构建和安装 mpv?

来自分类Dev

通过apt-get安装Linux软件包与从源代码构建和编译有何不同?

来自分类Dev

如何从本地文件安装自定义构建的Python模块

来自分类Dev

如何从源代码构建libcurl?

来自分类Dev

如何从源代码构建libcurl?

来自分类Dev

如何从源代码构建Unity?

来自分类Dev

如何从源代码构建Compiz?

来自分类Dev

如何安装JDK源代码?

来自分类Dev

如何从源代码安装tmux?

来自分类Dev

如何从源代码安装Mesa?

来自分类Dev

如何从git构建和安装最新的SimpleScreenRecorder?

来自分类Dev

如何从git构建和安装最新的SimpleScreenRecorder?

来自分类Dev

如何构建和安装克隆的GitHub库?

来自分类Dev

如何自动化Puppet的模块安装

来自分类Dev

如何在本地计算机上从源代码安装gem?

来自分类Dev

如何在本地计算机上从源代码安装gem?

来自分类Dev

TFS构建和本地构建

来自分类Dev

如何从源代码构建我所有已安装的软件包?

来自分类Dev

如何在使用开放源代码配方构建的HUB上安装Rappture Java绑定?

来自分类Dev

如何从源代码构建 SDL2 并制作 debian 包并安装 debian 包?

来自分类Dev

如何将整个vs代码本地项目添加到github

来自分类Dev

如何从源代码构建Nautilus 3.70 / 3.80?

来自分类Dev

如何从其源代码构建KDE Dolphin?

来自分类Dev

如何从源代码构建glibcxx 3.4.21?

来自分类Dev

如何从源代码构建Nautilus 3.70 / 3.80?

Related 相关文章

热门标签

归档