mwrock/kitchen-nodes

Error: Sandbox directory has not yet been created

Closed this issue · 8 comments

mheap commented

This only happens on 0.6. Version 0.5 runs quite happily.

>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: Failed to complete #converge action: [Sandbox directory has not yet been created. Please run Kitchen::Provisioner::Nodes#create_sandox before trying to access the path.]
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration

Some debug info:

  • I'm on Arch Linux
  • /opt/chef/bin is the first thing in my $PATH
$ chef --version
Chef Development Kit Version: 0.10.0
chef-client version: 12.5.1
berks version: 4.0.1
kitchen version: 1.4.2

And the output from kitchen diagnose

timestamp: 2015-12-16 17:30:57 UTC
kitchen_version: 1.4.2
plugins:
  driver:
    Docker:
      class: Kitchen::Driver::Docker
      version: 
      api_version: 
  provisioner:
    Nodes:
      class: Kitchen::Provisioner::Nodes
      version: 
      api_version: 
  transport:
    Ssh:
      class: Kitchen::Transport::Ssh
      version: 1.4.2
      api_version: 1
  verifier:
    Busser:
      class: Kitchen::Verifier::Busser
      version: 1.4.2
      api_version: 1
loader:
  process_erb: true
  process_local: true
  process_global: true
  global_config: 
  project_config:
    filename: "/home/michael/development/secretproject/commander/chef/cookbook/.kitchen.yml"
    raw_data:
      driver:
        name: docker
        use_sudo: false
      provisioner:
        name: nodes
        roles_path: test/fixtures/roles
        nodes_path: test/fixtures/nodes
        client_rb:
          audit_mode: ":enabled"
      platforms:
      - name: centos
        driver_config:
          image: secretproject/test-kitchen:6-12.4.1
      suites:
      - name: default
        run_list:
        - recipe[commander::default]
        attributes:
          packaging:
            ds_build_gocd:
              enabled: true
  local_config: 
  combined_config:
    filename: 
    raw_data:
      driver:
        name: docker
        use_sudo: false
      provisioner:
        name: nodes
        roles_path: test/fixtures/roles
        nodes_path: test/fixtures/nodes
        client_rb:
          audit_mode: ":enabled"
      platforms:
      - name: centos
        driver_config:
          image: secretproject/test-kitchen:6-12.4.1
      suites:
      - name: default
        run_list:
        - recipe[commander::default]
        attributes:
          packaging:
            ds_build_gocd:
              enabled: true
instances:
  default-centos:
    platform:
      os_type: unix
      shell_type: bourne
    state_file:
      container_id: bf49a475ed68d37a9e9b648b60bfe63edf3fefe58ac8eb3be131554c9a436b5b
      hostname: localhost
      image_id: 6c1da0217a76
      last_action: create
      port: 32779
      ssh_key: "/home/michael/development/secretproject/commander/chef/cookbook/.kitchen/docker_id_rsa"
    driver:
      binary: docker
      build_context: true
      cap_add: 
      cap_drop: 
      disable_upstart: true
      image: secretproject/test-kitchen:6-12.4.1
      kitchen_root: "/home/michael/development/secretproject/commander/chef/cookbook"
      log_level: :info
      name: docker
      password: kitchen
      platform: centos
      port: 22
      private_key: "/home/michael/development/secretproject/commander/chef/cookbook/.kitchen/docker_id_rsa"
      privileged: false
      public_key: "/home/michael/development/secretproject/commander/chef/cookbook/.kitchen/docker_id_rsa.pub"
      publish_all: false
      remove_images: false
      run_command: "/usr/sbin/sshd -D -o UseDNS=no -o UsePAM=no -o PasswordAuthentication=yes
        -o UsePrivilegeSeparation=no -o PidFile=/tmp/sshd.pid"
      security_opt: 
      socket: unix:///var/run/docker.sock
      sudo: true
      test_base_path: "/home/michael/development/secretproject/commander/chef/cookbook/test/integration"
      tls: false
      tls_cacert: 
      tls_cert: 
      tls_key: 
      tls_verify: false
      use_cache: true
      use_sudo: false
      username: kitchen
      wait_for_sshd: true
    provisioner:
      attributes:
        packaging:
          ds_build_gocd:
            enabled: true
      chef_client_path: "/opt/chef/bin/chef-client"
      chef_metadata_url: 
      chef_omnibus_install_options: 
      chef_omnibus_root: "/opt/chef"
      chef_omnibus_url: https://www.chef.io/chef/install.sh
      chef_zero_host: 
      chef_zero_port: 8889
      client_rb:
        audit_mode: ":enabled"
      clients_path: 
      cookbook_files_glob: README.*,metadata.{json,rb},attributes/**/*,definitions/**/*,files/**/*,libraries/**/*,providers/**/*,recipes/**/*,resources/**/*,templates/**/*
      data_bags_path: 
      data_path: 
      encrypted_data_bag_secret_key_path: 
      environments_path: 
      http_proxy: 
      https_proxy: 
      json_attributes: true
      kitchen_root: "/home/michael/development/secretproject/commander/chef/cookbook"
      log_file: 
      log_level: :info
      name: nodes
      nodes_path: "/home/michael/development/secretproject/commander/chef/cookbook/test/fixtures/nodes"
      require_chef_omnibus: true
      roles_path: "/home/michael/development/secretproject/commander/chef/cookbook/test/fixtures/roles"
      root_path: "/tmp/kitchen"
      ruby_bindir: "/opt/chef/embedded/bin"
      run_list:
      - recipe[commander::default]
      sudo: true
      sudo_command: sudo -E
      test_base_path: "/home/michael/development/secretproject/commander/chef/cookbook/test/integration"
    transport:
      compression: true
      compression_level: 6
      connection_retries: 5
      connection_retry_sleep: 1
      connection_timeout: 15
      keepalive: true
      keepalive_interval: 60
      kitchen_root: "/home/michael/development/secretproject/commander/chef/cookbook"
      log_level: :info
      max_wait_until_ready: 600
      name: ssh
      port: 22
      ssh_key: 
      test_base_path: "/home/michael/development/secretproject/commander/chef/cookbook/test/integration"
      username: root
    verifier:
      busser_bin: "/tmp/verifier/bin/busser"
      http_proxy: 
      https_proxy: 
      kitchen_root: "/home/michael/development/secretproject/commander/chef/cookbook"
      log_level: :info
      name: busser
      root_path: "/tmp/verifier"
      ruby_bindir: "/opt/chef/embedded/bin"
      sudo: true
      sudo_command: sudo -E
      suite_name: default
      test_base_path: "/home/michael/development/secretproject/commander/chef/cookbook/test/integration"
      version: busser

Thanks for this detailed information. Would you mind running your kitchen test with -l debug and report the stacktrace?

mheap commented

@mwrock Sorry for the delay on this. I've been using 0.5 without any issues

>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: Failed to complete #converge action: [Sandbox directory has not yet been created. Please run Kitchen::Provisioner::Nodes#create_sandox before trying to access the path.]
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration

D      ------Exception-------
D      Class: Kitchen::ActionFailed
D      Message: Failed to complete #converge action: [Sandbox directory has not yet been created. Please run Kitchen::Provisioner::Nodes#create_sandox before trying to access the path.]
D      ---Nested Exception---
D      Class: Kitchen::ClientError
D      Message: Sandbox directory has not yet been created. Please run Kitchen::Provisioner::Nodes#create_sandox before trying to access the path.
D      ------Backtrace-------
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/provisioner/base.rb:145:in `sandbox_path'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/provisioner/base.rb:154:in `cleanup_sandbox'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/driver/ssh_base.rb:87:in `ensure in converge'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/driver/ssh_base.rb:87:in `converge'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:540:in `legacy_ssh_base_converge'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:364:in `block in converge_action'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:488:in `call'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:488:in `synchronize_or_call'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:453:in `block in action'
D      /opt/chefdk/embedded/lib/ruby/2.1.0/benchmark.rb:279:in `measure'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:452:in `action'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:362:in `converge_action'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:341:in `block in transition_to'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:340:in `each'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:340:in `transition_to'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:160:in `verify'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:189:in `block in test'
D      /opt/chefdk/embedded/lib/ruby/2.1.0/benchmark.rb:279:in `measure'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:185:in `test'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/command.rb:176:in `public_send'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/command.rb:176:in `block (2 levels) in run_action'
D      ----------------------

Ugh. Looks like this stacktrace is from an error raised in converge's ensure block hiding the real error likely thrown from kitchen-nodes.

I just released 0.6.1 which will not fix your issue but should at least allow the root error to be bubbled up so I can better troubleshoot.

My hunch is that the real error is going to be related somehow to your roles file(s) in test/fixtures/roles since the 0.6.0 change now touches that.

Would you be able to share those files? And/Or converge with 0.6.1 and send me the debug stacktrace if you get a chance?

Thanks!

mheap commented

Evening!

Sadly I can't share the project, but here's a stack trace from 0.6.1

>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: Failed to complete #converge action: [wrong number of arguments (2 for 3)]
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration

D      ------Exception-------
D      Class: Kitchen::ActionFailed
D      Message: Failed to complete #converge action: [wrong number of arguments (2 for 3)]
D      ---Nested Exception---
D      Class: ArgumentError
D      Message: wrong number of arguments (2 for 3)
D      ------Backtrace-------
D      /home/michael/.chefdk/gem/ruby/2.1.0/gems/kitchen-nodes-0.6.1/lib/kitchen/provisioner/run_list_expansion_from_kitchen.rb:25:in `fetch_role'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/chef-12.5.1/lib/chef/run_list/run_list_expansion.rb:95:in `inflate_role'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/chef-12.5.1/lib/chef/run_list/run_list_expansion.rb:150:in `expand_run_list_items'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/chef-12.5.1/lib/chef/run_list/run_list_expansion.rb:84:in `expand'
D      /home/michael/.chefdk/gem/ruby/2.1.0/gems/kitchen-nodes-0.6.1/lib/kitchen/provisioner/nodes.rb:84:in `recipes'
D      /home/michael/.chefdk/gem/ruby/2.1.0/gems/kitchen-nodes-0.6.1/lib/kitchen/provisioner/nodes.rb:105:in `node_template'
D      /home/michael/.chefdk/gem/ruby/2.1.0/gems/kitchen-nodes-0.6.1/lib/kitchen/provisioner/nodes.rb:41:in `create_node'
D      /home/michael/.chefdk/gem/ruby/2.1.0/gems/kitchen-nodes-0.6.1/lib/kitchen/provisioner/nodes.rb:34:in `create_sandbox'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/driver/ssh_base.rb:72:in `converge'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:540:in `legacy_ssh_base_converge'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:364:in `block in converge_action'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:488:in `call'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:488:in `synchronize_or_call'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:453:in `block in action'
D      /opt/chefdk/embedded/lib/ruby/2.1.0/benchmark.rb:279:in `measure'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:452:in `action'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:362:in `converge_action'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:341:in `block in transition_to'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:340:in `each'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:340:in `transition_to'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:160:in `verify'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:189:in `block in test'
D      /opt/chefdk/embedded/lib/ruby/2.1.0/benchmark.rb:279:in `measure'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:185:in `test'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/command.rb:176:in `public_send'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/command.rb:176:in `block (2 levels) in run_action'
D      ----------------------

Thanks so much! Should be fixed now.

mheap commented

It gets past that point, but sadly now we have another error :(

Cleaning up local sandbox in /tmp/default-centos-sandbox-20151227-2262-1e07zdy
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::ActionFailed
>>>>>> Message: Failed to complete #converge action: [uninitialized constant Kitchen::Provisioner::Chef::Exceptions]
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration

D      ------Exception-------
D      Class: Kitchen::ActionFailed
D      Message: Failed to complete #converge action: [uninitialized constant Kitchen::Provisioner::Chef::Exceptions]
D      ---Nested Exception---
D      Class: NameError
D      Message: uninitialized constant Kitchen::Provisioner::Chef::Exceptions
D      ------Backtrace-------
D      /home/michael/.chefdk/gem/ruby/2.1.0/gems/kitchen-nodes-0.6.2/lib/kitchen/provisioner/run_list_expansion_from_kitchen.rb:33:in `rescue in fetch_role'
D      /home/michael/.chefdk/gem/ruby/2.1.0/gems/kitchen-nodes-0.6.2/lib/kitchen/provisioner/run_list_expansion_from_kitchen.rb:31:in `fetch_role'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/chef-12.5.1/lib/chef/run_list/run_list_expansion.rb:95:in `inflate_role'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/chef-12.5.1/lib/chef/run_list/run_list_expansion.rb:150:in `expand_run_list_items'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/chef-12.5.1/lib/chef/run_list/run_list_expansion.rb:84:in `expand'
D      /home/michael/.chefdk/gem/ruby/2.1.0/gems/kitchen-nodes-0.6.2/lib/kitchen/provisioner/nodes.rb:84:in `recipes'
D      /home/michael/.chefdk/gem/ruby/2.1.0/gems/kitchen-nodes-0.6.2/lib/kitchen/provisioner/nodes.rb:105:in `node_template'
D      /home/michael/.chefdk/gem/ruby/2.1.0/gems/kitchen-nodes-0.6.2/lib/kitchen/provisioner/nodes.rb:41:in `create_node'
D      /home/michael/.chefdk/gem/ruby/2.1.0/gems/kitchen-nodes-0.6.2/lib/kitchen/provisioner/nodes.rb:34:in `create_sandbox'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/driver/ssh_base.rb:72:in `converge'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:540:in `legacy_ssh_base_converge'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:364:in `block in converge_action'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:488:in `call'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:488:in `synchronize_or_call'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:453:in `block in action'
D      /opt/chefdk/embedded/lib/ruby/2.1.0/benchmark.rb:279:in `measure'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:452:in `action'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:362:in `converge_action'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:341:in `block in transition_to'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:340:in `each'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:340:in `transition_to'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:160:in `verify'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:189:in `block in test'
D      /opt/chefdk/embedded/lib/ruby/2.1.0/benchmark.rb:279:in `measure'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/instance.rb:185:in `test'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/command.rb:176:in `public_send'
D      /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/test-kitchen-1.4.2/lib/kitchen/command.rb:176:in `block (2 levels) in run_action'
D      ----------------------

ugh. ok this time I did what I should have done before, create a test role for the kitchen tests and was able to reproduce and fix this error.

mheap commented

I tested 0.6.3 and it's working like a dream.

Thanks for the continued work on kitchen-nodes!