使用数据库cookbook使用Chef创建数据库时出错

时间:2016-10-11 22:38:17

标签: vagrant chef chef-solo

我使用bento/centos6.7配置程序配置了一个Vagrant chef_solo框。我使用berkshelf-plugin作为食谱依赖。

我的项目文件夹如下所示:

|── Vagrantfile
|── cookbooks
    └── my_cookbook
        |── Berksfile
        |── metadata.rb
...

在我的Vagrantfile内(这是bento/centos6.7的默认设置加上以下配置)

config.berkshelf.enabled = true
config.berkshelf.berksfile_path = "cookbooks/my_cookbook/Berksfile"

config.vm.provision "chef_solo" do |chef|
  chef.add_recipe "my_cookbook"
end

在我的metadata.rb

depends 'mysql2_chef_gem', '~> 1.1'
depends 'database', '~> 5.1'

当我配置我的流浪汉机器时,我收到以下错误:

Error executing action `create` on resource 'mysql_database[my_database]'

Mysql2::Error
-------------
Lost connection to MySQL server at 'reading initial communication packet', system error: 110

PS:它在bento/centos7.2

上完美运行

编辑:这是数据库创建部分:

# Install the MySQL client
mysql_client 'default' do
  action :create
end

# Configure the MySQL service
mysql_service 'default' do
  initial_root_password node['webserver']['database']['root_password']
  action [:create, :start]
end

# Install the mysql2 Ruby gem
mysql2_chef_gem 'default' do
  action :install
end

mysql_database node['webserver']['database']['db_name'] do
  connection(
    :host     => node['webserver']['database']['host'],
    :username => node['webserver']['database']['root_username'],
    :password => node['webserver']['database']['root_password']
   )
  action :create
end

编辑2:它在bento/centos7.2上无法正常工作。它并没有崩溃,但是MySQL似乎已经死了并且正在运行sudo systemctl start mysqld

1 个答案:

答案 0 :(得分:0)

我过度建议我使用了很多新东西(我也是Chef的新手)所以我认为这个问题来自不同的来源(流浪汉,糟糕的bersfile集成,还有别的东西)。 / p>

原来我没有read the docs明确指出:

  

登录到机器并输入没有额外参数的mysql将失败。您需要通过mysql -S /var/run/mysql-foo/mysqld.sock显式连接套接字,或使用mysql -h 127.0.0.1通过网络显式连接