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

时间:2014-07-18 19:13:41

标签: java chef rackspace-cloud jclouds

我遇到了一个试图自动化所有问题的问题。我试图在rackspace上创建几个全新的服务器

  1. 节点1 - 安装了Chef服务器。
  2. 节点2 - Chef Client
  3. 节点3 - Chef Client 并能够在节点1上安装chef-server,并尝试使用jclouds-chef api在其他节点上安装Chef客户端。我从本地计算机运行代码并连接到rackspace。
  4. Q1。如何在远程节点1上配置刀具工具,而不使用交互式交互式工具。有什么方法可以使用jclouds吗?

    Q2。如何获取client.pem文件和验证。当我尝试使用上面的示例配置带有厨师客户端的节点时,我的本地计算机上没有的pem文件。

    Q3。如何使用脚本创建client.pem或远程执行?

    任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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

这可以是安装和配置Chef服务器的脚本,并使用已知的客户端和验证器覆盖默认客户端和验证器的密钥。

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

# 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服务器。

# 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服务器,并使用生成的密钥配置默认客户端。

拥有这些脚本将帮助您完成引导过程。您可能必须先将生成的密钥上传到节点。您可以使用ssh客户端执行此操作,如jclouds compute guide

所示

配置了Chef服务器的节点后,使用jclouds-chef配置客户端节点非常简单。您可以按照Chef guidethis stack overflow question中描述的步骤进行操作。