要求 apt::source 作为依赖项会出现语法错误

Fla*_*ius 5 puppet vagrant docker

我需要在安装docker之前将docker源列表添加到apt中。

我有

apt::source { 'debian-jessie':
  comment  => 'This is the docker Debian jessie mirror',
  location => 'http://apt.dockerproject.org/repo',
  release  => 'debian-jessie',
  repos    => 'main',
  key_content => '58118E89F3A912897C070ADBF76221572C52609D',
  key_server => 'keyserver.ubuntu.com',
  ensure => present,
  include_src  => false,
  include_deb => true,
}
Run Code Online (Sandbox Code Playgroud)

哪个有效,而且还

package {'docker-engine':
  ensure => present,
  before => Class['docker'],
}
Run Code Online (Sandbox Code Playgroud)

仅在第二次运行后才有效(我使用vagrant provision,但这与问题无关)。

我想要的是通过指示 puppet 在apt::sourcebefore执行来使整个事情在第一次配置时工作docker-engine,但是添加它require不是有效的语法:

package {'docker-engine':
  ensure => present,
  before => Class['docker'],
  require => [
    Apt::source['debian-jessie'],
  ]
}
Run Code Online (Sandbox Code Playgroud)

如何指定这个依赖关系?

文件的其余部分如下所示:

class { 'docker':
  dns                        => '192.168.1.1',
  manage_package             => false,
  use_upstream_package_source=> false,
# service_name   => 'docker',
  docker_command             => 'docker',
  package_name               => 'docker-engine',
  service_enable             => true,
  service_state              => 'running',
  extra_parameters           => ["--insecure-registry=192.168.1.0/24"],
}

include 'docker'

file { "/lib/systemd/system/docker.service":
  notify  => Service["docker"],
  ensure  => present,
  owner   => "root",
  group   => "root",
  mode    => 0600,
  source  =>"puppet:///modules/docker/etc/systemd/system/docker.service"
} ~> Exec['systemctl-daemon-reload']
Run Code Online (Sandbox Code Playgroud)

Ali*_*lik 4

单词大写source

require => Apt::Source['debian-jessie']
Run Code Online (Sandbox Code Playgroud)

木偶文档指出:

资源引用的一般形式是:

  • 资源类型,大写(如果资源类型包含命名空间分隔符 [::],则每个段都必须大写)
  • 左方括号
  • 资源的标题为字符串或以逗号分隔的标题列表
  • 右方括号