AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 638795
Accepted
Christoph
Christoph
Asked: 2014-10-23 02:05:59 +0800 CST2014-10-23 02:05:59 +0800 CST 2014-10-23 02:05:59 +0800 CST

使用 git 管理 puppet 模块

  • 772

我有一个运行在 Debian 7 上的 puppet/foreman 服务器来管理我的系统。我使用 puppet 和 foreman 1.6.0 的社区版本 3.7。我使用目录环境。

目前,我为自己编写的模块使用了一个相当复杂的工作流程,在我的开发环境中创建它们,这是受颠覆控制的,然后将它们导出到外部目录,构建它们的 puppet 模块(puppet module build ...)和在生产中安装它。我考虑过使用颠覆将它们分支/标记到生产中,但当时出于我不记得的原因排除了这一点。

同时我学了一点 git,我宁愿使用 git 而不是 subversion。我现在的问题是,是否有最佳做法可以这样做?我可以想象至少有两种方法各有利弊。一种是将环境开发置于版本控制之下,然后将其克隆/分支到生产环境。其次是为每个模块制作一个 git repo,并将它们克隆到环境中。

正如我所说,我是 git 新手,所以我对它的优缺点一无所知。此外,我只使用 puppet 和 foreman 大约 8 个月。

干杯,克里斯托夫

linux
  • 1 1 个回答
  • 1112 Views

1 个回答

  • Voted
  1. Best Answer
    Craig Watson
    2014-10-23T02:50:32+08:002014-10-23T02:50:32+08:00

    答案实际上取决于您想要的版本控制方式。主要有以下几种方法:

    1. 将所有内容存放在一个平面 Git 存储库中,然后将其克隆到您的主服务器(或节点,如果您正在运行无主服务器)。

      这是迄今为止最简单的选项,但意味着您将在生产和开发环境中拥有同一模块的多个副本(尽管您可以使用符号链接绕过它)。


    1. 将您的主要 Puppet 代码放在一个 Git 存储库中,Git 子模块指向您的自定义模块。部署与上面相同,只是添加--recursive了git clone.

      这种方法的优点是您可以轻松引用外部模块(例如PuppetLabs Apache e 模块)并且相对容易拉入上游更改,但您也必须处理 Git 子模块的开销,这些子模块出了名的混乱.


    1. 运行您自己的 Puppet Forge,并使用Librarian-puppet或R10K来管理您的模块的安装。

      这样做的好处是能够通过SemVer完全控制模块的版本,而无需公开发布它们——尽管滚动你自己的 Puppet Forge 仍然被某些人认为是“前沿”。

    • 6

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve