puppet - 在使用 Puppet 安装其他软件包之前运行 `apt-get update`

标签 puppet apt-get zend-server

我正在尝试创建自动安装 zend server CE 的 puppet 模块,这在这里并不重要,但步骤如下

  1. 更新/etc/apt/source.list
  2. 通过 wget 下载存储库 key
  3. 执行 apt-get 更新
  4. 执行 apt-get install zend-server-ce-5.2

我有init.pp文件

class zendserverce {

# https://github.com/puppetlabs/puppetlabs-stdlib
file_line { 'debian_package':
    path => '/etc/apt/sources.list',
    line => 'deb http://repos.zend.com/zend-server/deb server non-free'
}

exec { "wget http://repos.zend.com/zend.key -O- |apt-key add -":
    path => ["/usr/bin", "/usr/sbin"]
}

exec { "apt-get update":
    command => "/usr/bin/apt-get update",
    onlyif  => "/bin/sh -c '[ ! -f /var/cache/apt/pkgcache.bin ] || /usr/bin/find /etc/apt/* -cnewer /var/cache/apt/pkgcache.bin | /bin/grep . > /dev/null'",
}

package { "zend-server-ce-php-5.2":
    ensure => "latest"
}

}

似乎 puppet 以与我需要的不同顺序运行命令。有什么办法告诉他按照我想要的顺序运行吗?

该代码片段的输出是

  [0;36mnotice: /Stage[main]/Mc/Package[mc]/ensure: ensure changed 'purged' to 'latest'[0m
  [1;35merr: /Stage[main]/Zendserverce/Package[zend-server-ce-php-5.2]/ensure: change from purged to latest failed: Could not update: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install zend-server-ce-php-5.2' returned 100: Reading package lists...
  Building dependency tree...
  Reading state information...
  E: Couldn't find package zend-server-ce-php-5.2 at /tmp/vagrant-puppet/modules 0/zendserverce/manifests/init.pp:28[0m
  [0;36mnotice: /Stage[main]/Zendserverce/Exec[wget http://repos.zend.com/zend.key -O- |apt-key add -]/returns: executed successfully[0m
  [0;36mnotice: /Stage[main]/Zendserverce/File_line[debian_package]/ensure: created[0m
  [0;36mnotice: Finished catalog run in 6.75 seconds[0m

所以它说:找不到包 zend-server-ce-php-5.2

谁能指导我哪里出了问题?

最佳答案

自 Puppet 2.6.0 起,一个新功能“关系语法”是 introduced .

Puppet 2.6.0 及更高版本中的示例如下所示:

exec { "apt-update":
    command => "/usr/bin/apt-get update"
}

Exec["apt-update"] -> Package <| |>

每次执行打包命令时,依赖项(在我们的例子中为“apt-update”)都会首先被触发。 您甚至可以定义更长的链。

关于puppet - 在使用 Puppet 安装其他软件包之前运行 `apt-get update`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10845864/

相关文章:

ssl - 无法重新加载 Puppet 配置 -> 无法连接到 Puppet 服务器

puppet - 如果不满足条件,如何使 puppet 模块中断。

windows - 如何从 puppet list 中卸载在 Windows 客户端中运行的 exe 文件

php - 如何为 zend 服务器(PHP)安装 MongoDb 驱动程序

mysql - 在 zend server 8.0 上设置 wordpress

vagrant - 直接从克隆的存储库使用 puppet 模块

apt-get 使用 Multipass 更新 Ubuntu 20.04 VM 时哈希和不匹配

ubuntu - MariaDB:正在安装 MariaDB:未满足的依赖项,mariadb-server-10.0

ubuntu - 在 Ubuntu 上下载 Parisienne 字体

php - 适用于 Windows 的 zeromq php 扩展