在 Puppet 里做“版本控制”通常包含两个层面:
下面分别说明,重点在第 1 部分(最常见)。
Puppet 代码本质是文本文件,最适合用 Git。
常见仓库结构(以 control repo 为例):
control-repo/
├── environment.conf
├── Puppetfile
├── hiera.yaml
├── manifests/
│ └── site.pp
├── data/
│ └── common.yaml
└── modules/
初始化:
git init
git add .
git commit -m "init puppet control repo"
推荐:
production 分支作为生产环境development / feature/* 分支做开发Puppet 通常按 environment 对应 Git 分支:
| Git 分支 | Puppet 环境 |
|---|---|
| production | production |
| development | development |
Puppetfile:
mod 'nginx',
:git => 'https://github.com/puppetlabs/puppetlabs-nginx'
部署:
r10k deploy environment -p
这样:
每个 module 应有自己的 Git 仓库和版本号:
metadata.json
{
"name": "myorg-nginx",
"version": "1.2.0"
}
建议:
git tag 1.2.0
git push --tags
在 Puppetfile 中锁定版本:
mod 'myorg-nginx',
:git => 'https://github.com/myorg/puppet-nginx',
:tag => '1.2.0'
data/
├── common.yaml
├── nodes/
│ └── web01.yaml
└── roles/
└── web.yaml
避免:
/etc/puppetlabs/codeyum versionlock puppet-agent
或:
apt-mark hold puppet-agent
metadata.json 中声明支持版本:"requirements": [
{ "name": "puppet", "version_requirement": ">= 7.0.0 < 9.0.0" }
]
Git (control-repo)
├── branches = environments
├── r10k / Code Manager
├── modules (versioned + tagged)
└── Hiera (encrypted secrets)
流程示例:
feature/nginx 分支改配置production如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。