我如何在 Puppet 中使用 yumrepo 添加 Docker 存储库?

How do i use yumrepo in Puppet to add the Docker repos?

根据 Docker 文档,yum 存储库列表是通过此命令添加的:

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

我想让 Puppet 为我做这件事,所以我希望这会起作用:

yumrepo { "docker":
    descr => 'docker',
    baseurl => 'https://download.docker.com/linux/centos/docker-ce.repo',
    enabled => 1
}

但是,这行不通。

不幸的是,yum-config-manager 中使用的 URL 包含完整的 name/baseurl/enabled/gpgcheck/gpgkey 条目列表,而 yumrepo 只需要其中一个条目。那么,有没有办法用一个 yumrepo 命令或其他命令在 docker URL 中添加整个条目列表?

Docker指令中的URL是要安装在系统上的.repo文件。 此类文件的内容Yumrepo 资源的属性描述的内容。应用 Yumrepo 资源涉及管理存储库描述文件的内容,而不是从其他地方获取外部文件,无论是通过 yum-config-manager 还是其他方式。

您有很多选择,但以下是一些更有可能的选择:

  • 从docker.com获取指定文件,将其存储在模块的files目录中,并通过File资源在目标节点上安装和管理它。

  • 在一些也有 Puppet 的节点上安装 repo 文件,并使用 puppet resource 命令获取由此产生的 Yumrepo 资源的 Puppet DSL 表示。把这些放到master上合适class.

或者您可以在 docker-ce.repo 中达到峰值并编写正确的 yumrepo 配置:

[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

进入:

yumrepo { 'docker-ce-stable':
   name     => 'Docker CE Stable',
   baseurl  => 'https://download.docker.com/linux/centos/$releasever/$basearch/stable',
   enabled  => 1,
   gpgcheck => 1,
   gpgkey   => https://download.docker.com/linux/centos/gpg',
}

看起来很简单,可以通过 sed 或其他工具从 docker-ce.repo 文件生成一次。