puppet-vcsrepo 模块
puppet-vcsrepo
是由 Puppet 公司维护的官方模块,提供了管理版本控制系统(VCS) 的能力,如:git,svn,cvs,bazaar 等。 puppet-vcsrepo
项目地址: https://github.com/puppetlabs/puppetlabs-vcsrepo
注 1 vcsrepo
并不会主动安装任何的 vcs 软件,因此在使用该模块前需要完成 VCS 的安装。
注 2 git
是 Puppet 公司唯一官方支持的 vcs provider
1.先睹为快
不想看下面大段的代码解析,已经跃跃欲试了?
OK,我们开始吧!
创建一个 git.pp 文件并输入:
vcsrepo { '/tmp/git_repo':
ensure => present,
provider => git,
}
打开虚拟机终端并输入以下命令:
$ puppet apply -v git.pp
该命令将会创建一个 git 仓库,其路径是'/tmp/git_repo'。
2.使用示例
puppet-vcsrepo
模块除了自定义资源类型 vcsrepo 以外,并没有任何 manfests 代码。因此,本节主要介绍使用 vcsrepo 来管理 git 仓库。
例 1: 创建和管理一个空的 git bare 仓库:
vcsrepo { '/path/to/repo':
ensure => bare,
provider => git,
}
例 2:clone/pull 一个 repo:
vcsrepo { '/path/to/repo':
ensure => present,
provider => git,
source => 'git://example.com/repo.git',
}
例 3:指定 branch 或 tag:
注 3:默认 vcsrepo
会使用源仓库 master 分支的 HEAD。若要使用其他分支或指定的 commit,可以设置 revision
来指定 branch 名称或 commit SHA 值或者 tag 号
- 指定 Branch:
vcsrepo { '/path/to/repo': ensure => present, provider => git, source => 'git://example.com/repo.git', revision => 'development', }
- 指定 SHA:
vcsrepo { '/path/to/repo': ensure => present, provider => git, source => 'git://example.com/repo.git', revision => '0c466b8a5a45f6cd7de82c08df2fb4ce1e920a31', }
- 指定 tag:
vcsrepo { '/path/to/repo': ensure => present, provider => git, source => 'git://example.com/repo.git', revision => '1.1.2rc1', }
例 4:保持 repo 为最新代码:
vcsrepo { '/path/to/repo':
ensure => latest,
provider => git,
source => 'git://example.com/repo.git',
revision => 'master',
}
例 5:clone repo,但是跳过初始化 submodule:
vcsrepo { '/path/to/repo':
ensure => latest,
provider => git,
source => 'git://example.com/repo.git',
submodules => false,
}
例 6:设置多个 source,必须指定明确的 remote:
vcsrepo { '/path/to/repo':
ensure => present,
provider => git,
remote => 'origin'
source => {
'origin' => 'https://github.com/puppetlabs/puppetlabs-vcsrepo.git',
'other_remote' => 'https://github.com/other_user/puppetlabs-vcsrepo.git'
},
}
例 7:使用指定用户的 SSH 密钥来 clone repo:
若要使用 SSH 方式连接到源码仓库,推荐使用 Puppet 来管理 SSH 密钥,并使用 require
元参数来确保它们间的执行顺序。
csrepo { '/path/to/repo':
ensure => latest,
provider => git,
source => 'git://username@example.com/repo.git',
user => 'toto', #uses toto's $HOME/.ssh setup
require => File['/home/toto/.ssh/id_rsa'],
}
2.1 Git 支持的特性和参数
特性:
bare_repositories
depth
multiple_remotes
reference_tracking
ssh_identity
submodules
user
参数:
depth
ensure
excludes
force
group
identity
owner
path
provider
remote
revision
source
user
3.动手练习
1.使用 vcsrepo
管理 nova 源码仓库,并使用 stable/ocata 分支
2.使用 vcsrepo
管理一个带有 submodule 的项目,并指定管理 submodule
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论