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"