Puppet确保在MySQL之前进行apt-get更新

时间:2013-01-23 00:06:48

标签: mysql puppet vagrant

使用https://github.com/puppetlabs/puppetlabs-mysql中的Puppet模块,由于某种原因,它一直产生有关apt-get更新的错误。

可以找到确切的错误消息here

由于一些奇怪的原因,在执行apt-get update命令之前,MySQL类首先被执行。

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

Here您可以找到我当前的默认.pp清单

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

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

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

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分: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之后执行。