bootstrap (add node) localhost in chef

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.


Solution 1:

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.

Solution 2:

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"