使用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'],
}
但这并没有解决我的问题。
没有关于如何解决这个问题的想法。
答案 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之后执行。