要求apt :: source作为依赖项会产生语法错误

我需要在安装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, } 

哪个工作,也

 package {'docker-engine': ensure => present, before => Class['docker'], } 

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

我想通过指示puppet在docker-engine之前执行apt::source来在第一次configuration中完成整个工作,但是在require中添加它并不是一个有效的语法:

 package {'docker-engine': ensure => present, before => Class['docker'], require => [ Apt::source['debian-jessie'], ] } 

如何指定这个依赖关系?

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

 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'] 

大写词源

 require => Apt::Source['debian-jessie'] 

木偶文档指出:

资源参考的一般forms是:

  • 资源types,大写(如果资源types包含名称空间分隔符[::],则每个段都必须大写)
  • 一个开放方括号
  • 作为string的资源标题,或逗号分隔的标题列表
  • 一个结束方括号