use*_*249 2 chef knife chef-server
我有一个在 Ubuntu 14.04 上运行的 Chef 服务器(请参阅注 1),我可以通过访问mychefserver.myorg.com
浏览器中的 IP 地址 ( )来访问“Chef Manage”网站。
我有一个在 Mac OS X El Capitan 上运行的工作站(见注 2),我可以使用knife ssl check
和连接到 Chef 服务器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
Run Code Online (Sandbox Code Playgroud)
mynode.myorg.com
是企业机器。SSH 设置为仅允许基于证书的身份验证。禁止带密码的 SSH 和带私钥的 SSH。
在我看来,由于knife bootstrap
使用基于密码或密钥的 SSH,并且因为我可以通过简单地运行来访问节点上的命令行,所以ssh mynode.myorg.com
我最好的选择是通过 SSH 进入节点并手动设置 Chef。不幸的是,没有关于如何创建不涉及knife bootstrap
从工作站调用的 Chef 节点的文档。
我必须在节点上本地运行哪些命令才能重新创建由 执行的工作 knife bootstrap
?
注 1: Chef Server 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 myname@myorg.com mypassword --filename myname.pem
$ chef-server-ctl org-create myorg "My Org" --association_user myname
Run Code Online (Sandbox Code Playgroud)
注 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
Run Code Online (Sandbox Code Playgroud)
小智 8
使用https://www.chef.io/chef/install.sh脚本或为您的操作系统下载并安装正确的 Chef-client 软件包。
也许您可以使用您的引导节点之一作为参考。重要的一点是你已经chef_server_url
指向你的 Chef 服务器。
例子:
/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
Run Code Online (Sandbox Code Playgroud)
运行后得到的密钥chef-server-ctl org-create
。如果丢失,您可以从 Chef Manage 生成一个新的。
复制钥匙/etc/chef/myorg-validator.pem
(什么是配置validation_key
中client.rb
)
或者,如果您的 Chef 服务器上的 SSL 证书未签名(可能没有),您必须手动获取它,以便 Knife/chef-client 信任该证书。
mkdir /etc/chef/trusted_certs
knife ssl fetch -c /etc/chef/client.rb
Run Code Online (Sandbox Code Playgroud)
另见http://jtimberman.housepub.org/blog/2014/12/11/chef-12-fix-untrusted-self-sign-certs/
归档时间: |
|
查看次数: |
13300 次 |
最近记录: |