Vagrant 流浪者/傀儡-设置失败(MySQL不工作)

Vagrant 流浪者/傀儡-设置失败(MySQL不工作),vagrant,puppet,vagrantfile,puppetlabs-mysql,Vagrant,Puppet,Vagrantfile,Puppetlabs Mysql,我尝试过不同的虚拟盒,我改变了很多配置(可能重新创建、重新加载和重新设置了50-100次)——这与Puppet的MySQL模块有关——它显然适用于成千上万的其他人,所以我所做的事情是错的 流浪汉档案 # -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "

我尝试过不同的虚拟盒,我改变了很多配置(可能重新创建、重新加载和重新设置了50-100次)——这与Puppet的MySQL模块有关——它显然适用于成千上万的其他人,所以我所做的事情是错的

流浪汉档案

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # Every Vagrant virtual environment requires a box to build off of.
  config.vm.box = "puppetlabs/ubuntu-14.04-64-puppet"

  # Was necessary
  #vagrant plugin install vagrant-vbguest

  # Networking
  config.vm.network "forwarded_port", guest: 80, host: 8000
  # config.vm.network "private_network", ip: "192.168.33.10"

  # Synced folders
  config.vm.synced_folder ".", "/var/www"

  # Update
  config.vm.provision "shell", inline: "apt-get -y update"

  # Provisioning
   config.vm.provision :shell do |shell|
    shell.inline = "mkdir -p /etc/puppet/modules;
                    (puppet module install example42-puppi; true)
                    (puppet module install example42-apache; true)
                    (puppet module install example42-php; true)
                    (puppet module install puppetlabs-stdlib; true)
                    (puppet module install puppetlabs-mysql; true)
                    (puppet module install saz-vim; true)
                    (puppet module install saz-timezone; true)
                    (puppet module install puppetlabs-git; true)
                    (puppet module install tPl0ch-composer; true)
                     "
  end

  config.vm.provision "puppet" do |puppet|
      puppet.facter = {
        "fqdn" => "development.mydomain.com",
        "aliases" => "*.development.mydomain.com",
        "hostname" => "www",
        "docroot" => '/var/www/html/',
      }
      puppet.hiera_config_path = "manifests/hiera.yaml"
      puppet.working_directory = "/etc/puppet"
    end
end
傀儡文件:default.pp

###########################
# MySite Puppet Config    #
###########################
# OS          : Ubuntu 14 #
# Database    : MySQL 5   #
# Web Server  : Apache 2  #
# PHP version : 5.4       #
###########################

# Vim
class { 'vim': }

# Set Timezone
class { 'timezone':
    timezone => 'America/Chicago',
}

# Puppi
class { 'puppi': }

# Apache setup
class { "apache":
  puppi        => true,
  puppi_helper => "myhelper",
}

apache::vhost { $fqdn :
  docroot => $docroot,
  server_name => $fqdn,
  serveraliases => $aliases,
  priority            => '',
  template            => 'apache/virtualhost/vhost.conf.erb',
}

apache::module { 'rewrite': }
apache::module { 'headers': }

# PHP Extensions
class {"php":}

php::module { ['xdebug', 'mysql', 'curl', 'gd', 'mcrypt']:
  notify => Service['apache2']
}

# MySQL Server
class { '::mysql::server':
  package_ensure  => present,
  root_password     => '[root_password]',
  override_options  => { 'mysqld' => { 'default_time_zone' => 'America/Chicago' } },
}

class { 'mysql::client':}

mysql::db { '[db_name]':
  user     => '[user]',
  password => '[password]',
  host     => 'localhost',
  grant    => ['ALL'],
  charset => 'utf8',
}

exec { "database_import":
  timeout => 300,
  command => "/bin/gzip -dc /vagrant/manifests/provision.sql.gz | /usr/bin/mysql -u root -p[root_password]";
}

mysql::db { '[db_test]':
  user     => '[user_test]',
  password => '[password_test]',
  host     => 'localhost',
  grant    => ['ALL'],
  charset => 'utf8',
  sql  => "/var/www/test/db-schema.sql",
}

# Install Composer components
include composer

composer::exec { 'install':
    cmd                  => 'install',  # REQUIRED
    cwd                  => '/var/www', # REQUIRED
    dev                  => true, # Install dev dependencies
}

# Git
include git

# MySite Setup
file { $docroot:
  ensure  => 'directory',
}

$writeable_dirs = ["${docroot}cache/", "${docroot}cache/css/", "${docroot}cache/css/js/"]

file { $writeable_dirs:
  ensure => "directory",
  mode   => '0777',
  require => File[$docroot],
}

file { '/var/www/cl/':
  ensure  => directory
}

file { 'errors_log':
  path    => "/var/www/cl/errors.log",
  ensure  => present,
  mode    => 0777,
}

# Cron Jobs
cron { thirty_minutes:
  command => "/usr/bin/php ${docroot}cl-load.php crons/thirty_minutes/",
  user  => root,
  minute => '*/30'
}

cron { hourly:
  command => "/usr/bin/php ${docroot}cl-load.php crons/hourly/",
  user  => root,
  hour => '*',
  minute => 0,
}

cron { four_hours:
  command => "/usr/bin/php ${docroot}cl-load.php crons/four_hours/",
  user  => root,
  hour => '*/4',
  minute => 0,
}

cron { daily:
  command => "/usr/bin/php ${docroot}cl-load.php crons/daily/",
  user  => root,
  monthday => '*',
  hour => '0',
  minute => 0,
}
以下是我收到的错误消息(第一条):


Puppet似乎正在尝试在安装MySQL服务器包之前导入数据库

请记住,Puppet并不关心您首先编写哪些资源,如果您需要按特定顺序管理某些内容,则必须显式声明关系。因此,在您的情况下,以下声明:

exec { "database_import":
  timeout => 300,
  command => "/bin/gzip -dc /vagrant/manifests/provision.sql.gz | /usr/bin/mysql -u root -p[root_password]",
  require => Class['::mysql::server']
}

无法为该资源设置正确的顺序。您可能需要以类似的方式声明其他关系。

嘿,补充说,意识到之前有一个警告:
==>默认值:错误:无法启动服务[mysqld]:执行“/sbin/start mysql”返回1:
exec { "database_import":
  timeout => 300,
  command => "/bin/gzip -dc /vagrant/manifests/provision.sql.gz | /usr/bin/mysql -u root -p[root_password]",
  require => Class['::mysql::server']
}