【问题标题】:Puppet ensure apt-get update before MySQLPuppet 确保在 MySQL 之前进行 apt-get 更新
【发布时间】:2013-01-06 09:03:19
【问题描述】:

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

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

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

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

Here你可以找到我当前的 default.pp manifest for my

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

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

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

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

【问题讨论】:

    标签: mysql puppet vagrant


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        你必须在 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 之后执行。

        【讨论】:

          猜你喜欢
          • 2013-07-15
          • 2012-06-06
          • 2014-08-11
          • 1970-01-01
          • 2014-11-06
          • 2021-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多