我正在尝试与Opscode的厨师和免费的厨师服务器。
我在运行Ubuntu 12.04LTS的本地虚拟机上configuration了Chef工作站。 我按照说明从GitHub下载了厨师回购。
我从Opscode下载密钥(myorg.pem作为组织密钥,jgodse.pem作为个人密钥)。 我还有一个来自Amazon的密钥来使用他们的EC2 API(我设置为环境variables的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY)。 我还在Amazon创build了一个用于实例(deploy.pem)的密钥。 所有的钥匙都在〜chef-repo / .chef /和〜/ .ssh /中,这可能是矫枉过正的,但我只是想让它工作。
我设法使用了刀ec2来创build一个EC2实例,但是刀-EC2无法完成作业并引导主厨客户端,因为它无法login到新创build的服务器。
这是我的会议。
railsdev@localchef:~/Chef/chef-repo$ knife ec2 server create -r 'recipe[apt]' Instance ID: i-fa4c1b99 Flavor: m1.small Image: ami-xxxxxxxx Region: us-east-1 Availability Zone: us-east-1b Security Groups: default Tags: {"Name"=>"i-fa4c1b99"} SSH Key: deploy Waiting for instance..................... Public DNS Name: ec2-107-21-188-230.compute-1.amazonaws.com Public IP Address: 107.21.188.230 Private DNS Name: ip-10-10-206-167.ec2.internal Private IP Address: 10.10.206.167 Waiting for sshd...done Bootstrapping Chef on ec2-107-21-188-230.compute-1.amazonaws.com Failed to authenticate root - trying password auth Enter your password: ERROR: Net::SSH::AuthenticationFailed: [email protected] railsdev@localchef:~/Chef/chef-repo$
我能够使用ssh进入这个实例
jgodse/Chef/chef-repo> ssh -i ./.chef/deploy.pem [email protected]
任何线索,为什么这将无法validation与刀EC2?
我〜chef-repo / .chef / knife.rb文件看起来像这样:
current_dir = File.dirname(__FILE__) log_level :info log_location STDOUT node_name "jgodse" client_key "#{current_dir}/jgodse.pem" validation_client_name "myorg-validator" validation_key "#{current_dir}/myorg-validator.pem" chef_server_url "https://api.opscode.com/organizations/myorg" cache_type 'BasicFile' cache_options( :path => "#{ENV['HOME']}/.chef/checksums" ) cookbook_path ["#{current_dir}/../cookbooks"] knife[:aws_access_key_id] = ENV['AWS_ACCESS_KEY_ID'] knife[:aws_secret_access_key] = ENV['AWS_SECRET_ACCESS_KEY'] # Default flavor of server (m1.small, c1.medium, etc). knife[:flavor] = "m1.small" # Default AMI identifier, eg ami-12345678 knife[:image] = "ami-xxxxxxxx" # AWS Region #knife[:region] = "us-east-1" # AWS Availability Zone. Must be in the same Region. knife[:availability_zone] = "us-east-1b" # A file with EC2 User Data to provision the instance. #knife[:aws_user_data] = "" # AWS SSH Keypair. knife[:aws_ssh_key_id] = "deploy"
呃…你试图以root身份login。 默认情况下,EC2默认情况下不允许使用密钥文件login:
ERROR: Net::SSH::AuthenticationFailed: root@
而你的testing命令使用ubuntu@ 。
您可以通过修改/root/.ssh下的authorized_keys文件(或自己添encryption钥)来“允许”root访问。
有几个问题。
该脚本试图使用“root”,因为它是默认的用户ID。 要解决这个问题,我必须添加一行到knife.rb文件:
knife[:ssh_user]="ubuntu"
第二个问题是,ssh不知道如何find密钥(因为它是deploy.pem)。 所以我必须做到以下几点:
ubuntu> exec ssh-agent /user/bin/bash #This causes the terminal to disappear ubuntu> ssh-add /home/jgodse/.ssh/deploy.pem
一旦完成,我重新发布命令
knife ec2 server create -r 'recipe[apt]'
我得到了进一步的。
尝试运行下面的命令:
knife ec2 server create --image ami-xxxx -i /root/.ssh/deploy.pem --flavor t1.micro -x root --groups ChefGroup -Z ap-southeast-1a -r "recipe[apt]"