简体   繁体   English

使用Chef在CentOS上安装MySQL Community Server

[英]MySQL Community Server installation on CentOS using Chef

I try to install MySQL Community Server on CentOS7 using Chef mysql cookbook from supermarket: https://supermarket.chef.io/cookbooks/mysql 我尝试使用超市的Chef mysql cookbook在CentOS7上安装MySQL Community Serverhttps : //supermarket.chef.io/cookbooks/mysql

My cookbook files: 我的食谱文件:

metadata.rb metadata.rb

depends 'mysql', '~> 8.0.4'

default.rb default.rb

mysql_service 'db_some_data' do
  port '3306'
  version '5.7'
  initial_root_password 'abc123'
  action [:create, :start]
end

I executed: 我执行了:

berks install
kitchen test -d never

and got following error: 并得到以下错误:

================================================================================
Error executing action `install` on resource 'yum_package[mysql-community-server]'
================================================================================

Chef::Exceptions::Package
-------------------------
No candidate version available for mysql-community-server

    Resource Declaration:
    ---------------------
    # In /tmp/kitchen/cache/cookbooks/mysql/libraries/mysql_server_installation_package.rb

     17:       package package_name do
     18:         version package_version if package_version
     19:         options package_options if package_options
     20:         notifies :install, 'package[perl-Sys-Hostname-Long]', :immediately if plaform_family?('suse')
     21:         notifies :run, 'execute[Initial DB setup script]', :immediately if platfom_family?('suse')
     22:         action :install
     23:       end
     24:

    Compiled Resource:
    ------------------
    # Declared in /tmp/kitchen/cache/cookbooks/mysql/libraries/mysql_server_installation_pckage.rb:17:in `block in <class:MysqlServerInstallationPackage>'

    yum_package("mysql-community-server") do
      package_name "mysql-community-server"
      action [:install]
      retries 0
      retry_delay 2
      default_guard_interpreter :default
      declared_type :package
      cookbook_name "obiwan"
      version "5.7.11-1.el7"
      flush_cache {:before=>false, :after=>false}
    end

    Platform:
    ---------
    x86_64-linux

It looks like this issue: https://github.com/chef-cookbooks/mysql/issues/443 看起来像这样的问题: https : //github.com/chef-cookbooks/mysql/issues/443

Thanks for your time! 谢谢你的时间!

I suspect you may need to use a different cookbook for this as the command below doesn't show mysql-community-server in the centos 7 repo. 我怀疑您可能需要为此使用其他食谱,因为以下命令在centos 7存储库中未显示mysql-community-server。 Perhaps try the mariadb cookbook. 也许尝试mariadb食谱。

yum provides mysql*

However if you really have to install mysql-community-server, you probably need to modify your recipe to look like so 但是,如果确实需要安装mysql-community-server,则可能需要修改配方,如下所示

execute 'mysql-community-repo' do
 command 'yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
 action :run
end

 mysql_service 'db_some_data' do
  port '3306'
  version '5.7'
  initial_root_password 'abc123'
  action [:create, :start]
 end   

Keep in mind, you may encounter some issues with the systemctl init script when starting mysql-community. 请记住,启动mysql-community时,systemctl初始化脚本可能会遇到一些问题。

I managed to fix this setup with following changes: 我设法通过以下更改来修复此设置:

metadata.rb metadata.rb

depends 'mysql'
depends 'mysql2_chef_gem'
depends 'database'

default.rb default.rb

mysql_client 'default' do
  action :create
end

mysql_service 'db_some_data' do
  port '3306'
  version '5.7'
  initial_root_password 'abc123'
  action [:create, :start]
end

mysql2_chef_gem 'default' do
  action :install
end

The problem exists because https://supermarket.chef.io/cookbooks/mysql doesn't yet support for 存在问题是因为https://supermarket.chef.io/cookbooks/mysql尚不支持

cookbook 'mysql', '~> 8.0'

I added the following dependencies and it worked fine. 我添加了以下依赖项,并且运行良好。

cookbook "yum-mysql-community", '~> 4.0.1'
cookbook 'mysql', '~> 6.0'
cookbook 'yum-centos', '~> 3.0.0'

Another thing to note here is to remember providing the package_name in the recipe. 这里要注意的另一件事是记住在配方中提供package_name My recipe looks like this: 我的食谱如下:

mysql_service 'foo' do
  port '3306'
  version '5.7'
  package_name 'mysql-server' 
  initial_root_password 'root'
  action [:create, :start]
end

Hope it helps! 希望能帮助到你!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM