mitchellh / vagrant-aws

Use Vagrant to manage your EC2 and VPC instances.
MIT License
2.61k stars 572 forks source link

EC2 Terminates the instance as soon it is ready if vagrant-aws-extras plugin is installed #442

Open vikas027 opened 8 years ago

vikas027 commented 8 years ago

I am using Vagrant v1.8.1 on OSX Capitan. I think, I have hit a bug. My EC2 instance terminates if I have vagrant-aws-extras plugin installed but unused. The below code worked when I uninstalled vagrant-aws-extras

Here are my files and logs.

$ cat config/north_california.yml

---
aws:
  ami               : 'ami-d5ea86b5'
  subnet_id         : 'subnet-31f5eb77'
  access_key_id     : ''
  secret_access_key : ''
  keypair_name      : 'vagrant_test'
  security_groups   : ["my-test"]
  region            : 'us-west-1'
  availability_zone : 'us-west-1b'
  pemfile           : 'vagrant_test.pem'
  user_data         : "#!/bin/bash\necho 'Defaults:ec2-user !requiretty' > /etc/sudoers.d/999-vagrant-cloud-init-requiretty && #!/bin/bash\necho 'Defaults:root !requiretty' >> /etc/sudoers.d/999-vagrant-cloud-init-requiretty && chmod 440 /etc/sudoers.d/999-vagrant-cloud-init-requiretty \n"
$
$ cat Vagrantfile
require 'yaml'
if File.exist?("config/north_california.yml")
  aws_config  = YAML.load_file("config/north_california.yml")["aws"]
  pemfile     = aws_config["pemfile"]
end

boxes = [
  {
    :name           =>  'instance-01',
    :primary        =>  'true',
    :instance_type  =>  't2.micro',
    :elastic_ip     =>  false
  },
]

VAGRANTFILE_API_VERSION = "2"
BOX_TIMEOUT             = 180

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  boxes.each do |box|
    config.vm.define box[:name], primary: box[:primary] do |config|
      config.vm.box                 = "aws-amazon-linux"
      config.vm.box_url             = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box"

      config.vm.hostname            = box[:name]
      config.vm.boot_timeout        = BOX_TIMEOUT

      config.vm.provider :aws do |aws, override|
        override.ssh.private_key_path = pemfile
        override.ssh.username         = "ec2-user"
        override.ssh.forward_agent    = true

        aws.user_data                 = aws_config["user_data"]
        aws.access_key_id             = aws_config["access_key_id"]
        aws.secret_access_key         = aws_config["secret_access_key"]
        aws.keypair_name              = aws_config["keypair_name"]
        aws.security_groups           = aws_config["security_groups"]
        aws.region                    = aws_config["region"]
        aws.ami                       = aws_config["ami"]
        aws.instance_ready_timeout    = BOX_TIMEOUT
        aws.instance_type             = box[:instance_type]
        aws.elastic_ip                = box[:elastic_ip]

        aws.tags = {
          'Name' => 'My Vagrant Box',
          'Team' => 'devops',
          'Status' => 'active'
        }
      end
    end
  end
end
$

Here are the logs in debug mode.

==> instance-01: Machine is booted and ready for use!
 INFO warden: Calling IN action: #<Proc:0x00000100c8ce80@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::Call:0x00000105820dd8>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Builder:0x00000100a3db48>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Extras::Action::DNS::ProviderIsAWS:0x00000100a35970>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Extras::Action::DNS::ProviderIsAWS:0x00000100a35970>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Warden:0x00000103c858d0>
 INFO warden: Calling IN action: #<Proc:0x00000103c2da68@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x00000103c85858>
 INFO connect_aws: Connecting to AWS...
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ReadSSHInfo:0x00000103d55058>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Extras::Action::DNS::ConnectAWS:0x00000103d17c30>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Extras::Action::DNS::Set:0x00000103cdecf0>
ERROR warden: Error occurred: undefined method `records' for nil:NilClass
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
ERROR warden: Error occurred: undefined method `records' for nil:NilClass
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
ERROR warden: Error occurred: undefined method `records' for nil:NilClass
 INFO warden: Beginning recovery process...
 INFO warden: Calling recover: #<Vagrant::Action::Builtin::Call:0x00000105820dd8>
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Calling recover: #<Vagrant::Action::Builtin::Call:0x00000105820e50>
 INFO warden: Beginning recovery process...
 INFO warden: Calling recover: #<VagrantPlugins::AWS::Action::RunInstance:0x00000100cc63b0>
 INFO machine: Calling action: read_state on provider AWS (i-239f8391)
 INFO interface: Machine: action ["read_state", "start", {:target=>:"instance-01"}]
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 1 hooks defined.
 INFO runner: Running action: machine_action_read_state #<Vagrant::Action::Builder:0x000001038a0058>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::ConfigValidate:0x0000010387bfa0>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x0000010387bf78>
 INFO connect_aws: Connecting to AWS...
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ReadState:0x000001038195d0>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::ReadState:0x000001038195d0>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x0000010387bf78>
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::ConfigValidate:0x0000010387bfa0>
 INFO interface: Machine: action ["read_state", "end", {:target=>:"instance-01"}]
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Builder:0x00000100911d50>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::Call:0x0000010085df08>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Builder:0x00000105a70bb0>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::DestroyConfirm:0x00000105a59820>
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::DestroyConfirm:0x00000105a59820>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Warden:0x000001021ede28>
 INFO warden: Calling IN action: #<Proc:0x000001058e8018@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::ConfigValidate:0x000001021eddb0>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::Call:0x000001021edd88>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Builder:0x00000103f00ce0>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::IsCreated:0x00000103ef0d40>
 INFO machine: Calling action: read_state on provider AWS (i-239f8391)
 INFO interface: Machine: action ["read_state", "start", {:target=>:"instance-01"}]
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 1 hooks defined.
 INFO runner: Running action: machine_action_read_state #<Vagrant::Action::Builder:0x00000103e2ad20>
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::ConfigValidate:0x00000103e1b910>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x00000103e1b8e8>
 INFO connect_aws: Connecting to AWS...
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ReadState:0x00000105d227a0>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::ReadState:0x00000105d227a0>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x00000103e1b8e8>
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::ConfigValidate:0x00000103e1b910>
 INFO interface: Machine: action ["read_state", "end", {:target=>:"instance-01"}]
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::IsCreated:0x00000103ef0d40>
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 2 hooks defined.
 INFO runner: Running action: machine_action_up #<Vagrant::Action::Warden:0x00000100a46478>
 INFO warden: Calling IN action: #<Proc:0x00000105963e98@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x00000100a463b0>
 INFO connect_aws: Connecting to AWS...
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::ElbDeregisterInstance:0x00000102284c60>
 INFO warden: Calling IN action: #<VagrantPlugins::AWS::Action::TerminateInstance:0x0000010286a210>
 INFO interface: info: Terminating the instance...
 INFO interface: info: ==> instance-01: Terminating the instance...
==> instance-01: Terminating the instance...
 INFO machine: New machine ID: nil
 INFO warden: Calling IN action: #<Vagrant::Action::Builtin::ProvisionerCleanup:0x00000105ac0a48>
 INFO warden: Calling IN action: #<Proc:0x000001059cbd90@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling IN action: #<Proc:0x000001021edd10@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling OUT action: #<Proc:0x000001021edd10@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling OUT action: #<Proc:0x000001059cbd90@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::ProvisionerCleanup:0x00000105ac0a48>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::TerminateInstance:0x0000010286a210>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::ElbDeregisterInstance:0x00000102284c60>
 INFO warden: Calling OUT action: #<VagrantPlugins::AWS::Action::ConnectAWS:0x00000100a463b0>
 INFO warden: Calling OUT action: #<Proc:0x00000105963e98@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::Call:0x000001021edd88>
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::ConfigValidate:0x000001021eddb0>
 INFO warden: Calling OUT action: #<Proc:0x000001058e8018@/opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:94 (lambda)>
 INFO warden: Calling OUT action: #<Vagrant::Action::Builtin::Call:0x0000010085df08>
 INFO warden: Recovery complete.
 INFO warden: Recovery complete.
ERROR warden: Error occurred: undefined method `records' for nil:NilClass
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
ERROR warden: Error occurred: undefined method `records' for nil:NilClass
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO warden: Beginning recovery process...
 INFO warden: Recovery complete.
 INFO environment: Released process lock: machine-action-7c72967d40acb4ecd239569bc18216c4
 INFO environment: Running hook: environment_unload
 INFO runner: Preparing hooks for middleware sequence...
 INFO runner: 1 hooks defined.
 INFO runner: Running action: environment_unload #<Vagrant::Action::Builder:0x00000103d92db8>
/Users/vikas/.vagrant.d/gems/gems/vagrant-aws-extras-0.1.0/lib/vagrant-aws-extras/action/dns.rb:61:in `call': undefined method `records' for nil:NilClass (NoMethodError)
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-extras-0.1.0/lib/vagrant-aws-extras/action/dns.rb:50:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/read_ssh_info.rb:17:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/connect_aws.rb:43:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/call.rb:53:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/run_instance.rb:213:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/elb_register_instance.rb:16:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/warn_networks.rb:14:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/synced_folders.rb:87:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/provision.rb:80:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:95:in `block in finalize_action'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/call.rb:53:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /Users/vikas/.vagrant.d/gems/gems/vagrant-aws-0.7.0/lib/vagrant-aws/action/connect_aws.rb:43:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/box_check_outdated.rb:36:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/config_validate.rb:25:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builtin/handle_box.rb:56:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/warden.rb:34:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/builder.rb:116:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `block in run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/util/busy.rb:19:in `busy'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:66:in `run'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:224:in `action_raw`
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:199:in `block in action'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/environment.rb:561:in `lock'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:185:in `call'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/machine.rb:185:in `action'
 from /opt/vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/batch_action.rb:82:in `block (2 levels) in run'
kenorb commented 8 years ago

Related:

See also: Why does this AWS instance provisioned by Vagrant terminate as soon as it comes up?

However your error seems to be this one:

~/.vagrant.d/gems/gems/vagrant-aws-extras-0.1.0/lib/vagrant-aws-extras/action/dns.rb:61:in call': undefined methodrecords' for nil:NilClass (NoMethodError)