puppet apt-get只更新一次吗?

时间:2013-07-17 00:30:27

标签: vagrant puppet apt-get

我知道在puppet中排序的基本知识是在特定包之前运行apt-get update但是想指定只运行apt-get update一次然后执行其余的puppet文件。那可能吗?

列出Here的所有方法都需要在每个包之前运行apt-get或使用箭头或者需要指定每个包。

2 个答案:

答案 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,
    },
  }