7

Problem. Following command line

knife bootstrap 127.0.0.1 -r 'recipe[chef-client]' -x user -p password --sudo

returns

Bootstrapping Chef on 127.0.0.1
WARNING: Failed to connect to 127.0.0.1 -- Errno::ECONNREFUSED: Connection refused - connect(2)

Expected that this command will succeed and after it

knife node list

will return

[
"127.0.0.1"
]

SSH server is working fine on localhost and ssh [email protected] -p password works as expected.

4 Answers 4

5

Looks like the problem with the invocation is that you specified the password with the -p option, which knife bootstrap uses to specify an alternate ssh port. You wanted to use the -P (capital P), which the right option for specifying the password to the bootstrap command.

And, as Justin has indicated, bootstrap is likely not technically necessary if you already have chef installed to the point where you can run 'knife' commands. You should be able to fire off a 'chef-client' to enroll your node to the server (perhaps needing the validation key with -K option, if it's not already installed/available in /etc/chef). Once registered to your server, you can issue knife node run_list add commands to add the appropriate roles/recipes to the runlist, then invoke another chef-client to get it to take effect. Then again, bootstrap does it all in one command, so it's not a terrible option.

1
1

And you must add the IP and NODENAME(Hostname) to /etc/hosts:

127.0.0.1 NODENAME

And then split % knife bootstrap 127.0.0.1 -r 'recipe[chef-client]' -x user -p password --sudo to two steps:

Step 1:

% knife bootstrap IP_ADDRESS -x ubuntu -P PASSWORD --sudo

Step 2:

% knife ssh name:NODENAME -x ubuntu -P PASSWORD "sudo chef-client"
0

If you're getting a connection refused, then an SSH connection could not be opened because either:

  • SSH is not running on the system.
  • A firewall rule is blocking access to port 22.
  • SSH is running on a port other than 22.

That said, "knife bootstrap" is intended to be used to set up remote systems with Ruby/RubyGems, install Chef and configure it to connect to a configured chef server (from your local knife configuration). For more information about the "knife bootstrap" command, see:

Also, the node name will be the detected fully qualified domain name (typically output of hostname -f), unless specified with -N NODE_NAME.

0

knife bootstrap 127.0.0.1 -U USER -N NODE_NAME --sudo --use-sudo-password -y --connection-password PASSWORD

This command works for me on localhost. I saw it at https://github.com/chef/chef/issues/9404#issuecomment-597424916.

But as William and Justin said, you can use chef-client to enroll your node to the server.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .