我有一个在Ubuntu 14.04上运行的Chef服务器(参见注1 ),我可以在浏览器中访问IP地址( mychefserver.myorg.com )来访问“Chef Manage”网站。
我有一个在Mac OS X El Capitan上运行的工作站(请参阅注2 ),我可以使用knife ssl check和knife client list连接到厨师服务器。
问题: knife不会引导我的第三台机器( mynode.myorg.com )作为节点。
$ knife bootstrap mynode.myorg.com --sudo --ssh-user myname --forward-agent --node-name mynode Creating new client for mynode Creating new node for mynode Connecting to mynode Failed to authenticate myname - trying password auth Enter your password: stty: 'standard input': unable to perform all requested operations ERROR: Net::SSH::AuthenticationFailed: Authentication failed for user myname@mynode@mynode
mynode.myorg.com是一个公司机器。 SSH设置为只允许基于证书的身份validation。 带密码的SSH和带私钥的SSH是不允许的。
在我看来,因为knife bootstrap使用基于密码或基于密钥的SSH,并且由于我可以通过简单地运行ssh mynode.myorg.com到达节点上的命令行,我最好的select是SSH到节点并设置厨师手动。 不幸的是,没有关于如何创build不涉及从工作站调用knife bootstrap的Chef节点的文档。
我必须在节点上本地运行哪些命令来重新创build knife bootstrap 执行的工作 ?
注1:厨师服务器12.4.1设置步骤
$ wget https://packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core_12.4.1-1_amd64.deb/download $ dpkg -i download $ cat > /etc/opscode/chef-server.rb server_name = 'mychefserver.myorg.com' api_fqdn server_name bookshelf['vip'] = server_name nginx['url'] = "https://#{server_name}/" nginx['server_name'] = server_name nginx['ssl_certificate'] = "/var/opt/opscode/nginx/ca/#{server_name}.crt" nginx['ssl_certificate_key'] = "/var/opt/opscode/nginx/ca/#{server_name}.key" ^D $ chef-server-ctl reconfigure $ chef-server-ctl install opscode-manage $ chef-server-ctl reconfigure $ opscode-manage-ctl reconfigure $ chef-server-ctl install opscode-reporting $ chef-server-ctl reconfigure $ opscode-reporting-ctl reconfigure $ chef-server-ctl user-create myname My Name [email protected] mypassword --filename myname.pem $ chef-server-ctl org-create myorg "My Org" --association_user myname
注2: ChefDK 0.11.2工作站设置步骤
$ wget URL: https://opscode-omnibus-packages.s3.amazonaws.com/mac_os_x/10.11/x86_64/chefdk-0.11.2-1.dmg $ hdiutil mount chefdk-0.11.2-1.dmg $ installer -package '/Volumes/Chef Development Kit/chefdk-0.11.2-1.pkg' -target '/Volumes/Macintosh HD' $ hdiutil unmount '/Volumes/Chef Development Kit/' $ chef generate app chef-repo $ cd chef-repo $ mkdir .chef $ cat > .chef/myname.pem -----BEGIN RSA PRIVATE KEY----- # …snip… -----END RSA PRIVATE KEY----- ^D $ cat > .chef/knife.rb log_level :info log_location STDOUT node_name 'myname' client_key "#{__dir__}/myname.pem" chef_server_url 'https://mychefserver.myorg.com/organizations/myorg' cookbook_path ["#{__dir__}/../chef-repo/cookbooks"] ^D $ knife ssl fetch
请使用https://www.chef.io/chef/install.sh脚本,或者为您的操作系统下载并安装正确的chef-client包。
也许你可以使用一个自举节点作为参考。 重要的是你有chef_server_url指向你的厨师服务器。
例:
/etc/chef/client.rb
chef_server_url "https://mychefserver.myorg.com/organizations/myorg" validation_client_name "myorg-validator" validation_key "/etc/chef/myorg-validator.pem" log_level :info
运行chef-server-ctl org-create后得到的密钥。 如果丢失,您可以从厨师pipe理中生成一个新的。
将密钥复制到/etc/chef/myorg-validator.pem (在client.rbconfiguration为validation_key )
或者,如果Chef服务器上的SSL证书未签名(可能不是),则必须手动获取该证书,以便knife / chef-client将信任该证书。
mkdir /etc/chef/trusted_certs knife ssl fetch -c /etc/chef/client.rb
另见http://jtimberman.housepub.org/blog/2014/12/11/chef-12-fix-untrusted-self-sign-certs/