我有一个模块apt(我的自定义模块,我正在学习,想要探索更多)apt-get update
。我还有两个用户定义的资源类型apt::key
和apt::source
。
假设我想安装一个包示例docker
,我们需要添加一个apt键和源代码。因此,我理想地希望按顺序执行执行
现在我想确保我的代码也位于正确的类下并遵循正确的依赖关系。我的目录结构类似于
├── apt
│ └── manifests
│ ├── init.pp
│ ├── key.pp
│ ├── packages.pp
│ ├── source.pp
│ └── update.pp
└── docker
└── manifests
├── init.pp
├── install.pp
我应该在哪里定义docker的key和source以及如何实现依赖?我的依赖项应该在这些模块中还是在节点定义下的默认清单文件中?
编辑:添加更多上下文 我很困惑,因为我可以通过两种选择实现这一目标:
因此,我希望看到人们如何实现这一点,还有其他我没有想到的替代方案。
答案 0 :(得分:1)
让docker :: install拥有apt :: source和apt :: key for docker
我认为这是正确的方法,因为它包含/将所有资源整齐地封装到需要它们的模块(docker
)中。
虽然这种方法的问题是我必须在每个apt源更改后运行apt update。
这是系统应该做的事情 - 如果来源发生变化,例如一个URL更改,您应该运行apt-get update
重新加载包列表,因为它们可能已过期。我似乎不太可能经常改变消息来源。
如果您在目录中有多个apt源(即来自其他模块),那么Puppet代理在评估所有apt源资源之后仍然只刷新Exec[apt_update]
一次(通知某些内容隐含{也有{1}}关系。)