错误:$ cron_values为false,不是散列或数组

时间:2015-03-16 16:07:59

标签: vagrant parallels

Vagrant正确安装并启动Centos 6.6 VM,但无法使用此错误消息进行配置:

  

错误:$ cron_values为false,而不是节点localhost.localdomain上/tmp/vagrant-puppet/manifests-893fcda21077f5a583c2dbbba8515c0a/nodes/Cron.pp:3的哈希或数组

就在此之前显示:

  

==>默认:运行配置器:puppet ...   ==>默认:使用site.pp运行Puppet ...   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/composer/lib/facter/composer_home.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/concat/lib/facter/concat_basedir.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/firewall/lib/facter/ip6tables_version.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/firewall/lib/facter/iptables_persistent_version.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/firewall/lib/facter/iptables_version.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/git/lib/facter/git_exec_path.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/git/lib/facter/git_version.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/php/lib/facter/php_fact_extension_dir.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/php/lib/facter/php_fact_version.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/puppi/lib/facter/last_run.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/puppi/lib/facter/puppi_projects.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/puppi/lib/facter/windows_common_appdata.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/rabbitmq/lib/facter/rabbitmq_erlang_cookie.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/rvm/lib/facter/rvm_installed.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/rvm/lib/facter/rvm_version.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/staging/lib/facter/staging_http_get.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/staging/lib/facter/staging_windir.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/stdlib/lib/facter/facter_dot_d.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/stdlib/lib/facter/pe_version.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/stdlib/lib/facter/puppet_vardir.rb中加载事实   ==>默认值:信息:在/tmp/vagrant-puppet/modules-419a158586c48436c8f5c2349fe39c11/stdlib/lib/facter/root_home.rb中加载事实

老实说,我不确定在哪里来解决问题。我可以SSH到VM,该部分似乎正常工作。由于主机无法解析,似乎尚未安装Apache。

我也不确定是否有更多可能有益的信息?如果是这样,我很乐意提供它。似乎没有很多人经历过这个问题。即使您不知道解决方案,如果您至少可以提供一些方向来查找可能更详细的日志(我运行vagrant provision --debug但是错误日志不是很多,我将不胜感激。那里更有意义,或者可以让我开始的东西?

我正在使用Parallels作为提供商来运行这台机器。

有什么想法吗?

更新

VagrantFile由puppet(或真正的PuPHPet)生成。这是config.yaml文件:

vagrantfile-local:
    vm:
        box: puphpet/centos65-x64
        box_url: puphpet/centos65-x64
        hostname: ''
        memory: '512'
        cpus: '1'
        chosen_provider: parallels
        network:
            private_network: 192.168.58.101
            forwarded_port:
                48IqH2aTQkz4:
                    host: '9321'
                    guest: '22'
        post_up_message: ''
        provider:
            virtualbox:
                modifyvm:
                    natdnshostresolver1: on
            vmware:
                numvcpus: 1
            parallels:
                cpus: 1
        provision:
            puppet:
                manifests_path: puphpet/puppet
                manifest_file: site.pp
                module_path: puphpet/puppet/modules
                options:
                    - '--verbose'
                    - '--hiera_config /vagrant/puphpet/puppet/hiera.yaml'
                    - '--parser future'
        synced_folder:
            jzVfnoa6cO3T:
                owner: ''
                group: ''
                source: ./
                target: /Users/myname/Sites/website/
                sync_type: nfs
                rsync:
                    auto: 'false'
        usable_port_range:
            start: 10200
            stop: 10500
    ssh:
        host: null
        port: null
        private_key_path: null
        username: vagrant
        guest_port: null
        keep_alive: true
        forward_agent: false
        forward_x11: false
        shell: 'bash -l'
    vagrant:
        host: detect
server:
    install: '1'
    packages:
        - ImageMagick
        - vim-common
        - php-soap
firewall:
    install: '1'
    rules: null
apache:
    install: '1'
    settings:
        user: www-data
        group: www-data
        default_vhost: true
        manage_user: false
        manage_group: false
        sendfile: 0
    modules:
        - rewrite
    vhosts:
        MvR5v9C4Vsuh:
            servername: myserver.mag
            serveraliases:
                - www.awesome.dev
            docroot: /Users/myname/Sites/sitename/base/
            port: '80'
            setenv:
                - 'APP_ENV dev'
            override:
                - All
            options:
                - Indexes
                - FollowSymLinks
                - MultiViews
            engine: ''
            custom_fragment: ''
            ssl_cert: ''
            ssl_key: ''
            ssl_chain: ''
            ssl_certs_dir: ''
    mod_pagespeed: 0
php:
    install: '1'
    version: '55'
    composer: '1'
    composer_home: ''
    modules:
        php:
            - cli
            - intl
            - mcrypt
        pear: {  }
        pecl:
            - pecl_http
            - imagick
    ini:
        display_errors: On
        error_reporting: '-1'
        session.save_path: /var/lib/php/session
    timezone: America/Chicago
    mod_php: 0
xdebug:
    install: '1'
    settings:
        xdebug.default_enable: '1'
        xdebug.remote_autostart: '0'
        xdebug.remote_connect_back: '1'
        xdebug.remote_enable: '1'
        xdebug.remote_handler: dbgp
        xdebug.remote_port: '9000'
ruby:
    install: '1'
    versions: {  }
nodejs:
    install: '0'
    npm_packages: {  }
python:
    install: '1'
    packages: {  }
    versions: {  }
mysql:
    install: '1'
    override_options: {  }
    root_password: root
    adminer: 0
    databases:
        ouWYyTlD0olg:
            grant:
                - ALL
            name: db_name
            host: localhost
            user: user_name
            password: password
            sql_file: ../databases/output.sql
redis:
    install: '1'
    settings:
        conf_port: '6379'

VagrantFile:

require 'yaml'

dir = File.dirname(File.expand_path(__FILE__))

configValues = YAML.load_file("#{dir}/puphpet/config.yaml")
data         = configValues['vagrantfile-local']

Vagrant.require_version '>= 1.6.0'

Vagrant.configure('2') do |config|
  config.vm.box     = "#{data['vm']['box']}"
  config.vm.box_url = "#{data['vm']['box_url']}"

  if data['vm']['hostname'].to_s.strip.length != 0
    config.vm.hostname = "#{data['vm']['hostname']}"
  end

  if data['vm']['network']['private_network'].to_s != ''
    config.vm.network 'private_network', ip: "#{data['vm']['network']['private_network']}"
  end

  data['vm']['network']['forwarded_port'].each do |i, port|
    if port['guest'] != '' && port['host'] != ''
      config.vm.network :forwarded_port, guest: port['guest'].to_i, host: port['host'].to_i
    end
  end

  if !data['vm']['post_up_message'].nil?
    config.vm.post_up_message = "#{data['vm']['post_up_message']}"
  end

  if Vagrant.has_plugin?('vagrant-hostmanager')
    hosts = Array.new()

    if !configValues['apache']['install'].nil? &&
        configValues['apache']['install'].to_i == 1 &&
        configValues['apache']['vhosts'].is_a?(Hash)
      configValues['apache']['vhosts'].each do |i, vhost|
        hosts.push(vhost['servername'])

        if vhost['serveraliases'].is_a?(Array)
          vhost['serveraliases'].each do |vhost_alias|
            hosts.push(vhost_alias)
          end
        end
      end
    elsif !configValues['nginx']['install'].nil? &&
           configValues['nginx']['install'].to_i == 1 &&
           configValues['nginx']['vhosts'].is_a?(Hash)
      configValues['nginx']['vhosts'].each do |i, vhost|
        hosts.push(vhost['server_name'])

        if vhost['server_aliases'].is_a?(Array)
          vhost['server_aliases'].each do |x, vhost_alias|
            hosts.push(vhost_alias)
          end
        end
      end
    end

    if hosts.any?
      if config.vm.hostname.to_s.strip.length == 0
        config.vm.hostname = 'puphpet-dev-machine'
      end

      config.hostmanager.enabled           = true
      config.hostmanager.manage_host       = true
      config.hostmanager.ignore_private_ip = false
      config.hostmanager.include_offline   = false
      config.hostmanager.aliases           = hosts
    end
  end

  if Vagrant.has_plugin?('vagrant-cachier')
    config.cache.scope = :box
  end

  data['vm']['synced_folder'].each do |i, folder|
    if folder['source'] != '' && folder['target'] != ''
      sync_owner = !folder['sync_owner'].nil? ? folder['sync_owner'] : 'www-data'
      sync_group = !folder['sync_group'].nil? ? folder['sync_group'] : 'www-data'

      if folder['sync_type'] == 'nfs'
        config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: 'nfs'
        if Vagrant.has_plugin?('vagrant-bindfs')
          config.bindfs.bind_folder "#{folder['target']}", "/mnt/vagrant-#{i}"
        end
      elsif folder['sync_type'] == 'smb'
        config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: 'smb'
      elsif folder['sync_type'] == 'rsync'
        rsync_args = !folder['rsync']['args'].nil? ? folder['rsync']['args'] : ['--verbose', '--archive', '-z']
        rsync_auto = !folder['rsync']['auto'].nil? ? folder['rsync']['auto'] : true
        rsync_exclude = !folder['rsync']['exclude'].nil? ? folder['rsync']['exclude'] : ['.vagrant/']

        config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
          rsync__args: rsync_args, rsync__exclude: rsync_exclude, rsync__auto: rsync_auto, type: 'rsync', group: sync_group, owner: sync_owner
      elsif data['vm']['chosen_provider'] == 'parallels'
        config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
          group: sync_group, owner: sync_owner, mount_options: ['share']
      else
        config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}",
          group: sync_group, owner: sync_owner, mount_options: ['dmode=775', 'fmode=764']
      end
    end
  end

  config.vm.usable_port_range = (data['vm']['usable_port_range']['start'].to_i..data['vm']['usable_port_range']['stop'].to_i)

  if data['vm']['chosen_provider'].empty? || data['vm']['chosen_provider'] == 'virtualbox'
    ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'

    config.vm.provider :virtualbox do |virtualbox|
      data['vm']['provider']['virtualbox']['modifyvm'].each do |key, value|
        if key == 'memory'
          next
        end
        if key == 'cpus'
          next
        end

        if key == 'natdnshostresolver1'
          value = value ? 'on' : 'off'
        end

        virtualbox.customize ['modifyvm', :id, "--#{key}", "#{value}"]
      end

      virtualbox.customize ['modifyvm', :id, '--memory', "#{data['vm']['memory']}"]
      virtualbox.customize ['modifyvm', :id, '--cpus', "#{data['vm']['cpus']}"]

      if data['vm']['provider']['virtualbox']['modifyvm']['name'].nil? ||
        data['vm']['provider']['virtualbox']['modifyvm']['name'].empty?
        if data['vm']['hostname'].to_s.strip.length != 0
          virtualbox.customize ['modifyvm', :id, '--name', config.vm.hostname]
        end
      end
    end
  end

  if data['vm']['chosen_provider'] == 'vmware_fusion' || data['vm']['chosen_provider'] == 'vmware_workstation'
    ENV['VAGRANT_DEFAULT_PROVIDER'] = (data['vm']['chosen_provider'] == 'vmware_fusion') ? 'vmware_fusion' : 'vmware_workstation'

    config.vm.provider :vmware_fusion do |v, override|
      data['vm']['provider']['vmware'].each do |key, value|
        if key == 'memsize'
          next
        end
        if key == 'cpus'
          next
        end

        v.vmx["#{key}"] = "#{value}"
      end

      v.vmx['memsize']  = "#{data['vm']['memory']}"
      v.vmx['numvcpus'] = "#{data['vm']['cpus']}"

      if data['vm']['provider']['vmware']['displayName'].nil? ||
        data['vm']['provider']['vmware']['displayName'].empty?
        if data['vm']['hostname'].to_s.strip.length != 0
          v.vmx['displayName'] = config.vm.hostname
        end
      end
    end
  end

  if data['vm']['chosen_provider'] == 'parallels'
    ENV['VAGRANT_DEFAULT_PROVIDER'] = 'parallels'

    config.vm.provider 'parallels' do |v|
      data['vm']['provider']['parallels'].each do |key, value|
        if key == 'memsize'
          next
        end
        if key == 'cpus'
          next
        end

        v.customize ['set', :id, "--#{key}", "#{value}"]
      end

      v.memory = "#{data['vm']['memory']}"
      v.cpus   = "#{data['vm']['cpus']}"

      if data['vm']['provider']['parallels']['name'].nil? ||
        data['vm']['provider']['parallels']['name'].empty?
        if data['vm']['hostname'].to_s.strip.length != 0
          v.name = config.vm.hostname
        end
      end
    end
  end

  ssh_username = !data['ssh']['username'].nil? ? data['ssh']['username'] : 'vagrant'

  config.vm.provision 'shell' do |s|
    s.path = 'puphpet/shell/initial-setup.sh'
    s.args = '/vagrant/puphpet'
  end
  config.vm.provision 'shell' do |kg|
    kg.path = 'puphpet/shell/ssh-keygen.sh'
    kg.args = "#{ssh_username}"
  end
  config.vm.provision :shell, :path => 'puphpet/shell/install-ruby.sh'
  config.vm.provision :shell, :path => 'puphpet/shell/install-puppet.sh'

  config.vm.provision :puppet do |puppet|
    puppet.facter = {
      'ssh_username'     => "#{ssh_username}",
      'provisioner_type' => ENV['VAGRANT_DEFAULT_PROVIDER'],
      'vm_target_key'    => 'vagrantfile-local',
    }
    puppet.manifests_path = "#{data['vm']['provision']['puppet']['manifests_path']}"
    puppet.manifest_file  = "#{data['vm']['provision']['puppet']['manifest_file']}"
    puppet.module_path    = "#{data['vm']['provision']['puppet']['module_path']}"

    if !data['vm']['provision']['puppet']['options'].empty?
      puppet.options = data['vm']['provision']['puppet']['options']
    end
  end

  config.vm.provision :shell do |s|
    s.path = 'puphpet/shell/execute-files.sh'
    s.args = ['exec-once', 'exec-always']
  end
  config.vm.provision :shell, run: 'always' do |s|
    s.path = 'puphpet/shell/execute-files.sh'
    s.args = ['startup-once', 'startup-always']
  end
  config.vm.provision :shell, :path => 'puphpet/shell/important-notices.sh'

  customKey  = "#{dir}/files/dot/ssh/id_rsa"
  vagrantKey = "#{dir}/.vagrant/machines/default/#{ENV['VAGRANT_DEFAULT_PROVIDER']}/private_key"

  if File.file?(customKey)
    config.ssh.private_key_path = [
      customKey,
      "#{ENV['HOME']}/.vagrant.d/insecure_private_key"
    ]

    if File.file?(vagrantKey) and ! FileUtils.compare_file(customKey, vagrantKey)
      File.delete(vagrantKey)
    end

    if ! File.directory?(File.dirname(vagrantKey))
      FileUtils.mkdir_p(File.dirname(vagrantKey))
    end

    if ! File.file?(vagrantKey)
      FileUtils.cp(customKey, vagrantKey)
    end
  end

  if !data['ssh']['host'].nil?
    config.ssh.host = "#{data['ssh']['host']}"
  end
  if !data['ssh']['port'].nil?
    config.ssh.port = "#{data['ssh']['port']}"
  end
  if !data['ssh']['username'].nil?
    config.ssh.username = "#{data['ssh']['username']}"
  end
  if !data['ssh']['guest_port'].nil?
    config.ssh.guest_port = data['ssh']['guest_port']
  end
  if !data['ssh']['shell'].nil?
    config.ssh.shell = "#{data['ssh']['shell']}"
  end
  if !data['ssh']['keep_alive'].nil?
    config.ssh.keep_alive = data['ssh']['keep_alive']
  end
  if !data['ssh']['forward_agent'].nil?
    config.ssh.forward_agent = data['ssh']['forward_agent']
  end
  if !data['ssh']['forward_x11'].nil?
    config.ssh.forward_x11 = data['ssh']['forward_x11']
  end
  if !data['vagrant']['host'].nil?
    config.vagrant.host = data['vagrant']['host'].gsub(':', '').intern
  end
end

1 个答案:

答案 0 :(得分:2)

我最近自己遇到过这个问题,这就是我修复它的方法。当您创建Puphpet配置文件,并且未指定任何cron作业时,将创建此错误。

要解决此问题,请将cron中的config.yaml键看作以下其中一项:

选项#1(用于启动Magento cron作业):

cron:
    install: '1'
    jobs:
        cj_lfgowfjsb51y:
            name: magento
            user: ''
            command: '/bin/sh /var/www/sites/cron.sh'
            minute: '*/5'
            hour: '*'
            weekday: '*'
            month: '*'
            monthday: ''

选项#2

cron:
    install:'1'
    jobs: []