2

我正在使用来自https://github.com/puppetlabs/puppetlabs-mysql的 Puppet 模块,由于某种原因,它不断产生有关 apt-get 更新的错误。

可以在此处找到确切的错误消息。

出于某种奇怪的原因,MySQL 类在执行其他任何操作之前以及执行我的 apt-get update 命令之前首先执行。

有没有办法确保命令apt-update在我的 MySQL 模块之前运行?

在这里你可以找到我当前的 default.pp 清单

我尝试了各种方法来确保首先执行 apt-update 命令,但似乎没有任何效果。在第 148 行,我尝试了以下代码,

package { 'mysql': ensure => "installed", require => Exec['apt-update'], }

但这并没有解决我的问题。

没有关于如何解决这个问题的想法。

4

3 回答 3

5

为了确保 apt-get update 在 Puppet 配置之前发生,我在定义 Puppet 之前将以下命令放在了我的 Vagrantfile 中。

config.vm.provision :shell, :inline => "apt-get update --fix-missing"

于 2013-01-23T09:41:43.673 回答
0

它可能就像删除“已安装”周围的引号一样简单,或者如果已经安装了 mysql,您可能需要确保最新以更新 mysql:

package { 'mysql': 
  ensure  => latest, 
  require => Exec['apt-update'], 
} 
于 2013-01-23T02:02:50.533 回答
0

您必须在 puppet 中设置执行顺序。如果您使用 puppet mysql 模块,它带有不同的类。这些是(现在):

**Public classes**
mysql::server: Installs and configures MySQL.
mysql::server::account_security: Deletes default MySQL accounts.
mysql::server::monitor: Sets up a monitoring user.
mysql::server::mysqltuner: Installs MySQL tuner script.
mysql::server::backup: Sets up MySQL backups via cron.
mysql::bindings: Installs various MySQL language bindings.
mysql::client: Installs MySQL client (for non-servers).

因此,要将 APT 模块设置为首先设置您正在使用的所有 mysql 模块类的执行顺序。例如:

Class['apt'] -> Class['mysql::server'] -> Class['mysql::client'] -> Class['mysql::bindings']

现在,你的 puppet 脚本中所有与 sql 相关的东西都将在 apt 之后执行。

于 2014-04-03T15:06:52.900 回答