首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于缺少OS包而提供Pupppet期间的依赖循环

由于缺少OS包而提供Pupppet期间的依赖循环
EN

Stack Overflow用户
提问于 2015-12-15 23:09:31
回答 2查看 199关注 0票数 0

我试图使用VagrantPuppet提供我的开发服务器。下面是我的一些傀儡宣言在这一点上。im所具有的问题是im在依赖循环中结束,这当然是正确的。唯一的问题是,我没有办法做到这一点,所以我需要一些帮助。

我使用的是由名为puppetlabs/ubuntu-14.04-64-puppet的Puppetlabs提供的最新版本的盒子。在将PPA添加到包管理器时,我会收到一个apt-add-repository不可用的错误。为此,您需要安装software-properties-common包。

唯一的问题是,在安装此软件包之前,您需要运行apt-get更新。第二个问题是清单不会接受它,它将尝试在前面添加PPA,这样,当然,这是一个逻辑结论,它只需要更新包管理器一次。但是,通过选择最后一个解决方案,我将在一个循环中结束,这会触发一个错误:

==>默认值:错误:未能应用目录:找到了一个依赖周期:==>默认值:(Execadd-apt-存储库-ppa:ondrej/php-7.0 => ClassApt:Update => Execapt_update => ClassApt::Update => Packagegit => ClassSystempackages => Apt::Ppappa:ondrej/php-7.0 => Execadd-apt-ppa:ondrej/php-7.0)

代码语言:javascript
复制
class systempackages {
  package { [ 'git', 'curl', 'acl', 'unattended-upgrades', 'vim', 'software-properties-common']:
    ensure => "installed",
    require => [
        Class['apt::update'],
    ],
  }
}

/*===========================================*/

## System
Exec { path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ] }

class{'systempackages':}

# APT
class { 'apt':
  update => {
    frequency => 'always',
  },
}
apt::ppa { 'ppa:ondrej/php-7.0':
  before => Package['php7.0-cli'],
  require => Class['systempackages'],
}

# PHP
package {'php7.0-cli':
  ensure => 'installed',
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-17 17:42:24

考虑到这是在流浪,我建议手动安装软件包software-properties-common作为您的vagrant文件的一部分。

类似于config.vm.provision "shell", inline: "apt-get update && apt-get install software-properties-common的东西应该能工作。

票数 1
EN

Stack Overflow用户

发布于 2015-12-16 16:48:15

循环依赖反映了Puppet不是一个供应系统这一事实。它可以由一个供应系统使用,也可以与一个系统一起使用,但它取决于一个相当大的软件栈是否可用,然后才能启动。如果软件包‘软件-属性-公共’是Apt子系统全面运行所必需的,那么最好的选择是依靠您的供应系统来安装它,以便在Puppet运行之前就可以使用它,并且避免声明该包与Apt模块的类和资源之间的任何关系。

你也会受到傀儡实验室的影响--apt模块非常擅长于声明确保应用程序的正确顺序所需的关系。然而,这是一把双刃剑:人们以令人惊讶的频率从模块中声明自己与类或定义类型的关系,从而给自己制造麻烦。特别是,让您的Apt::ppa资源require --一个包含自己从Apt模块中的任何类或资源的资源--的类是自找麻烦的。

无论如何, is not a public class of the module。主要的含义是模块外部的代码不应该以任何方式引用它。相反,您应该依赖为类参数$apt::update提供的值来指示Puppet在适当的时间执行apt-get update

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34301196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档