我知道在puppet中排序的基本知识是在特定包之前运行apt-get update但是想指定只运行apt-get update一次然后执行其余的puppet文件。那可能吗?
列出Here的所有方法都需要在每个包之前运行apt-get或使用箭头或者需要指定每个包。
答案 0 :(得分:28)
这是我从该列表中的建议:
exec { "apt-update":
command => "/usr/bin/apt-get update"
}
Exec["apt-update"] -> Package <| |>
这将确保exec在任何包之前运行,而不是在每个包之前运行exec。事实上,木偶中的任何资源只会在每次木偶运行时最多执行一次。
但是如果你想让exec在任何类型的资源之前发生,我猜你可以这样做:
exec { "apt-update":
command => "/usr/bin/apt-get update",
before => Stage["main"],
}
“main”阶段是每个资源的默认阶段,因此这将使exec在其他任何事情之前发生。
我希望这会有所帮助。
答案 1 :(得分:1)
使用puppetlabs-apt模块,应该足以为将要安装的任何软件包定义模块的依赖关系:
Class['apt'] -> Package<| |>
这假定apt
的基本配置,例如:
class { 'apt':
update => {
frequency => 'daily',
},
purge => {
'sources.list' => false,
'sources.list.d' => true,
},
}