puppet-vcsrepo模块

    1. 先睹为快
    2. 动手练习

    注1 vcsrepo并不会主动安装任何的vcs软件,因此在使用该模块前需要完成VCS的安装。
    注2 git是Puppet公司唯一官方支持的vcs provider

    不想看下面大段的代码解析,已经跃跃欲试了?

    OK,我们开始吧!

    创建一个git.pp文件并输入:

    打开虚拟机终端并输入以下命令:

    1. $ puppet apply -v git.pp

    puppet-vcsrepo模块除了自定义资源类型vcsrepo以外,并没有任何manfests代码。因此,本节主要介绍使用vcsrepo来管理git仓库。

    例1: 创建和管理一个空的git bare仓库:

    1. vcsrepo { '/path/to/repo':
    2. ensure => bare,
    3. provider => git,
    4. }

    例2:clone/pull一个repo:

    例3:指定branch或tag:

    注3:默认vcsrepo会使用源仓库master分支的HEAD。若要使用其他分支或指定的commit,可以设置revision来指定branch名称或commit SHA值或者tag号

    • 指定Branch:
      1. vcsrepo { '/path/to/repo':
      2. ensure => present,
      3. provider => git,
      4. source => 'git://example.com/repo.git',
      5. revision => 'development',
      6. }
    • 指定SHA:
      1. vcsrepo { '/path/to/repo':
      2. source => 'git://example.com/repo.git',
      3. revision => '0c466b8a5a45f6cd7de82c08df2fb4ce1e920a31',
      4. }
    • 指定tag:
    1. vcsrepo { '/path/to/repo':
    2. ensure => latest,
    3. provider => git,
    4. source => 'git://example.com/repo.git',
    5. revision => 'master',
    6. }

    例5:clone repo,但是跳过初始化submodule:

    1. vcsrepo { '/path/to/repo':
    2. ensure => latest,
    3. provider => git,
    4. source => 'git://example.com/repo.git',
    5. submodules => false,
    6. }

    例6:设置多个source,必须指定明确的remote:

    例7:使用指定用户的SSH密钥来clone repo:

    若要使用SSH方式连接到源码仓库,推荐使用Puppet来管理SSH密钥,并使用元参数来确保它们间的执行顺序。

    1. csrepo { '/path/to/repo':
    2. ensure => latest,
    3. provider => git,
    4. source => 'git://username@example.com/repo.git',
    5. }

    特性:

    • bare_repositories
    • depth
    • multiple_remotes
    • reference_tracking
    • ssh_identity
    • submodules
    • user
    • depth
    • ensure
    • excludes
    • force
    • group
    • identity
    • owner
    • path
    • provider
    • remote
    • revision
    • source

    1.使用管理nova源码仓库,并使用stable/ocata分支
    2.使用vcsrepo管理一个带有submodule的项目,并指定管理submodule