在rackspace上使用jclouds-chef安装chef客户端



我遇到了一个问题,试图自动化一切。我试图在rackspace

上创建几个全新的服务器。
  1. 节点1 -已安装Chef Server。
  2. Node 2 - Chef Client
  3. Node 3 - Chef Client并且能够在节点1上安装chef-server,并试图使用jclouds-chef api在其他节点上安装chef客户端。我正在从本地机器运行代码并连接到rackspace。

Q1。我如何在节点1上远程配置刀具与我们的交互。有什么方法可以使用jclouds吗?

Q2。我怎样才能得到客户。Pem文件和验证。当我尝试使用上面的示例使用chef client配置节点时,在我的本地机器上不可用的Pem文件。

第三季。我怎么得到客户?使用脚本创建还是远程创建?

任何帮助将不胜感激。

这里棘手的部分是安装Chef Server。Chef API不提供为客户端获取私钥的方法;它允许您重新生成和下载它,但在第一个实例中,您需要有一个有效的实例来执行对API的调用。

最简单的方法是在本地生成一个密钥对,然后使用它在Chef Server中配置客户机和验证器,并使用它们配置客户机节点。这涉及到一个棘手的步骤,将私钥存储在内部Chef Server数据库中(它使用Postgres),但这对我来说工作得很好。

这可以是一个脚本,用于安装和配置Chef Server,并用已知的键覆盖默认客户端和验证器的键。

首先,在本地生成密钥对。这可以通过编程方式完成,也可以使用以下命令完成:

# Generate the keys for the client and the validator
ssh-keygen -t rsa -N "" -f client.pem      # This creates the client.pem and client.pem.pub
ssh-keygen -t rsa -N "" -f validator.pem   # This creates the validator.pem and validator.pem.pub

生成密钥后,可以使用以下脚本来安装和配置Chef Server。

# Install the Chef Server (assumes an Ubuntu operating system)
# You can get the URLs for other operating systems at http://www.getchef.com
wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chef-server_11.0.11-1.ubuntu.12.04_amd64.deb
dpkg -i chef-server_11.0.11-1.ubuntu.12.04_amd64.deb
chef-server-ctl reconfigure
# Install the client public keys in the database
CLIENTKEY=`cat client.pem.pub`
VALIDATORKEY=`cat validator.pem.pub`
/opt/chef-server/embedded/bin/psql -U opscode_chef -c "update clients set public_key = "$CLIENTKEY" where name = 'chef-validator'"
/opt/chef-server/embedded/bin/psql -U opscode_chef -c "update clients set public_key = "$VALIDATORKEY" where name = 'chef-webui'"
# Override the default keys with the auto-generated ones
cp -f client.pem /etc/chef-server/chef-webui.pem
cp -f validator.pem /etc/chef-server/chef-validator.pem
此时,您已经安装了Chef Server,并使用生成的密钥配置了默认客户机。

拥有这些脚本将帮助您完成引导过程。您可能必须首先将生成的密钥上传到节点。您可以使用ssh客户端,如jclouds compute指南中所示。

配置了带有Chef服务器的节点后,使用jclouds-chef提供客户端节点非常简单。您可以按照Chef指南或这个堆栈溢出问题中描述的过程进行操作。