如何以正确的方式修复我的木偶依赖?

How to fix my puppet dependency in the correct way?

我有一个适合 apt-get update 的模块(我的自定义模块,我正在学习并想探索更多)。我还有两个用户定义的资源类型 apt::keyapt::source

假设我想安装一个包示例 docker,我们需要为其添加 apt 密钥和源代码。因此,我理想情况下希望按顺序执行

  1. 配置密钥然后为apt
  2. 配置源
  3. apt-get 更新
  4. 安装docker包

现在我想确保我的代码也位于正确的 类 下并遵循正确的依赖关系。我的目录结构看起来像

├── apt
│   └── manifests
│       ├── init.pp
│       ├── key.pp
│       ├── packages.pp
│       ├── source.pp
│       └── update.pp
└── docker
    └── manifests
        ├── init.pp
        ├── install.pp

我应该在哪里定义 docker 的键和源以及我应该如何实现依赖?我的依赖项应该在这些模块内还是在节点定义下的默认清单文件中?

编辑:添加更多上下文 我很困惑,因为我可以通过两种选择来实现这一点:

因此我想看看人们是如何做到这一点的,还有其他我没有想到的选择。

having docker::install have apt::source and apt::key for docker

我认为这是正确的方法,因为它 contains/encapsulates 将所有资源整齐地放入需要它们的模块 (docker) 中。

Though the problem with this approach is I have to run apt update after each apt source change.

这是系统应该做的事情 - 如果源发生变化,例如URL 更改,您应该 运行 apt-get update 重新加载包列表,因为它们可能已过时。在我看来,来源不太可能经常更改。

如果您在整个目录中有多个 apt 源(即来自其他模块),那么 Puppet 代理在评估所有 apt 源资源(通知某些东西放置一个也隐含 before 关系。)