gpt4 book ai didi

mysql - Puppet 和 Mysql 5.5

转载 作者:行者123 更新时间:2023-11-29 06:31:17 25 4
gpt4 key购买 nike

背景

我正在使用 Centos 6.5 和 Puppet 3.7.3。

我已经安装了模块 puppetlabs-mysql v3.1.0

Centos 6.5 默认安装了 MySql 5.1.73。我想要实现的是使用上述模块通过 Puppet 将该版本升级到 5.5.40

最初的解决方案

嗯,我找不到合适的解决方案来执行此操作。官方文档只告诉如何配置 puppet list 以便安装 MySql,没有考虑版本。这不适合我,因为运行 puppet 代理后版本保持不变。

package { "MySQL-client": ensure => installed }

在 Internet 论坛上找到的解决方案 #1

找到 here .

package {
'mysql-client-core-5.5': ensure => present
}

使用该解决方案,我收到以下错误:

Error: Execution of '/usr/bin/yum -d 0 -e 0 -y list mysql-client-core-5.5' 
returned 1: Error: No matching Packages to list

在 Internet 论坛上找到的解决方案 #2

找到 here .

其实是提出了两种解决方案:

package { 'mysql-server' : ensure => '5.5' , }

package { 'mysql55w' : ensure => 'present' , }

在这两种情况下,我都会遇到类似的错误,只不过是在当前安装的存储库中找不到包

为了解决上述所有问题,我成功地在 puppet list 上添加了必要的更改,以安装 MySQL 5.5.40 所在的存储库。

再次重新 puppet 后,我现在得到一个不同的错误:

Error: mysql55w-libs conflicts with mysql-libs-5.1.73-3.el6_5.i686

当然,旧库与新库存在冲突。幸运的是,有一个解决方法,如所述here .我成功地将这些命令添加到我的 puppet list 中(使用 EXEC 命令)

yum install mysql.`uname -i` yum-plugin-replace
yum replace mysql --replace-with mysql55w

在所有这些解决方法之后,我的 puppet list 执行得很好,但只有在链接每个声明以按顺序执行它之后(puppet 不假定顺序)。否则,它可能会在安装 repo 或更改库之前尝试安装 Mysql 5.5。

问题

好吧,问题是,有没有其他方法可以在 puppet 中更优雅地管理它?

仅仅告诉 puppet 我想安装 MySQL 是不够的。实际上,我必须告诉 Puppet 如何去做。

我的 Puppet list 看起来像是 Puppet 应该取代的优秀的旧时尚脚本。我无法专注于我想要的。我还必须指导它如何实现它

最佳答案

即使有配置管理包提供者也会让人头疼! :)

但是,在这种情况下,我们可以通过使用预先存在的模块来管理 Yum:example42/yum

像这样安装模块:

puppet module install example42/yum

有了这个,它变得更容易管理,你可以更干净和幂等地安装 MySQL 5.5:

  class { 'yum':
defaultrepo => false,
extrarepo => '' ,
}

class { 'yum::repo::mysql_community':
enabled_version => '5.5',
}

package { 'mysql-community-server':
ensure => '5.5.42-2.el6',
require => Class['yum::repo::mysql_community'],
}

如您所见,唯一使用的顺序是包上的 require,以确保在尝试安装之前已经设置了 Yum 存储库。

在全新的 Centos 6.6 Vagrant box 上为我工作:

# Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "puppetlabs/centos-6.6-64-puppet"

config.vm.provision "shell", inline: "puppet module install example42/yum"

config.vm.provision "puppet" do |puppet|
puppet.manifests_path = "./"
puppet.manifest_file = "default.pp"
end

end

输出:

==> default: Running provisioner: shell...
default: Running: inline script
==> default: Notice: Preparing to install into /etc/puppet/modules ...
==> default: Notice: Downloading from https://forgeapi.puppetlabs.com ...
==> default: Notice: Installing -- do not interrupt ...
==> default: /etc/puppet/modules
==> default: └─┬ example42-yum (v2.1.17)
==> default: └── example42-puppi (v2.1.10)
==> default: Running provisioner: puppet...
==> default: Running Puppet with default.pp...
==> default: Notice: Compiled catalog for localhost.home in environment production in 0.85 seconds
==> default: Notice: /Stage[main]/Yum::Repo::Mysql_community/Yum::Managed_yumrepo[mysql-connectors-community]/File[/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql]/ensure: defined content as '{md5}26b9ed77a3a087874a27103c1f9d6a6f'
==> default: Notice: /Stage[main]/Yum::Repo::Mysql_community/Yum::Managed_yumrepo[mysql-tools-community]/File[/etc/yum.repos.d/mysql-tools-community.repo]/ensure: created
==> default: Notice: /Stage[main]/Yum::Repo::Mysql_community/Yum::Managed_yumrepo[mysql56-community]/File[/etc/yum.repos.d/mysql56-community.repo]/ensure: created
==> default: Notice: /Stage[main]/Yum::Repo::Mysql_community/Yum::Managed_yumrepo[mysql56-community]/Yumrepo[mysql56-community]/ensure: created
==> default: Notice: /Stage[main]/Yum::Repo::Mysql_community/Yum::Managed_yumrepo[mysql57-community-dmr]/File[/etc/yum.repos.d/mysql57-community-dmr.repo]/ensure: created
==> default: Notice: /Stage[main]/Yum::Repo::Mysql_community/Yum::Managed_yumrepo[mysql57-community-dmr]/Yumrepo[mysql57-community-dmr]/ensure: created
==> default: Notice: /Stage[main]/Yum::Repo::Mysql_community/Yum::Managed_yumrepo[mysql-connectors-community]/File[/etc/yum.repos.d/mysql-connectors-community.repo]/ensure: created
==> default: Notice: /Stage[main]/Yum::Repo::Mysql_community/Yum::Managed_yumrepo[mysql-connectors-community]/Yumrepo[mysql-connectors-community]/ensure: created
==> default: Notice: /Stage[main]/Yum::Prerequisites/Yum::Plugin[priorities]/Package[yum-plugin-priorities]/ensure: created
==> default: Notice: /Stage[main]/Yum::Repo::Mysql_community/Yum::Managed_yumrepo[mysql-tools-community]/Yumrepo[mysql-tools-community]/ensure: created
==> default: Notice: /Stage[main]/Yum::Repo::Mysql_community/Yum::Managed_yumrepo[mysql55-community]/File[/etc/yum.repos.d/mysql55-community.repo]/ensure: created
==> default: Notice: /Stage[main]/Yum::Repo::Mysql_community/Yum::Managed_yumrepo[mysql55-community]/Yumrepo[mysql55-community]/ensure: created
==> default: Notice: /Stage[main]/Main/Node[default]/Package[mysql-community-server]/ensure: created
==> default: Notice: Finished catalog run in 63.97 seconds

关于mysql - Puppet 和 Mysql 5.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27772364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com