可以使用r10k部署像puppetforge这样的 Puppet 模块。
问题
Ansible 中这个工具的等价物是什么?
尝试回答问题
发现此 Google Q&A未回答问题
我目前正在以无主模式运行 Puppet。我正在使用r10k进行模块和环境部署。
简化版:r10k 控制存储库有两个分支:测试和生产。生产中的更改将自动分发到生产服务器。对某些登台服务器的测试进行了更改。
现在,如果我在测试中进行更改,有时我也必须更改 r10k 控制存储库。一个常见的例子是Puppetfile
,目前在生产中看起来像这样:
forge 'forge.puppetlabs.com'
# Forge modules
mod 'puppetlabs/stdlib'
mod 'puppetlabs/concat'
mod 'saz/ssh'
# Custom modules
mod 'ownmodule1',
:git => 'https://git.example.org/configuration/ownmodule1.git',
:ref => 'production'
mod 'ownmodule2',
:git => 'https://git.example.org/configuration/ownmodule2.git',
:ref => 'production'
自定义模块的配置在测试分支上可能如下所示:
mod 'ownmodule1',
:git => 'https://git.example.org/configuration/ownmodule1.git',
:ref => 'testing'
mod 'ownmodule2',
:git => 'https://git.example.org/configuration/ownmodule2.git',
:ref => 'testing'
现在,测试中的提交可能如下所示:
+mod 'ownmodule3,
+ :git => 'https://git.example.org/configuration/ownmodule3.git',
+ :ref => 'testing'
如果我将其合并到production并且不小心,ownmodule3将与testing分支一起添加到production中,这可能是致命的。当所有测试都成功时,这也可以防止自动合并。
如何修改我的存储库或工作流程以防止意外合并分支特定更改?
我正在学习使用 r10k 来部署我的 puppet 代码,但在尝试从我的控制仓库部署时遇到了障碍。我得到的错误信息是:
Failed to authenticate SSH session: Unable to extract public key from private key file: Method unimplemented in libgcrypt backend
我已验证我的 ssh 密钥在直接连接到服务器时有效。
r10k 的文档有点令人困惑,但据我所知,指定 ssh 密钥的唯一方法是使用坚固的 gem,并且据我所知,Ubuntu 上的 libssh2(坚固取决于通过 libgit2)链接到 libgcrypt而不是openssl。'shellgit' 提供者似乎没有任何指定 ssh 密钥的方法。
解决这个问题的最简单方法是什么?
编辑:我还没有真正解决尝试配置“坚固”提供程序的问题,但我确实弄清楚了为什么“shellgit”不起作用 - 我正在使用 sudo 运行 r10k 并且 git 服务器不在 root 的 known_hosts 文件中,导致密钥认证失败。一旦我将主机添加到文件中,一切都使用 shellgit 顺利运行。