上一篇 下一篇 分享链接 返回 返回顶部

Ubuntu上安装Chef Server和Client

发布人:Minchunlin 发布时间:2020-12-25 16:44 阅读量:1153

Chef是一个配置管理工具,可以帮助您在物理服务器、虚拟机或云服务器中配置机器。Chef是用Ruby和Erlang编写,它使用一种特定于领域的语言来编写系统配置文件。有了这些方法,您就可以将基础设施当作代码来处理,同时配置大量的机器。

我将指导您完成在Ubuntu 20.04上安装Chef Server和Client的过程。在Chef Client上创建cookbook,然后通过Chef Server分发。我将演示在Ubuntu Server 20.04上的安装。

如果愿意,您可以始终将客户端安装在台式计算机上-特别是在您的Chef管理员需要使用GUI的情况下。对于大型部署,您可能需要大量的管理员和开发人员使用Chef,您将安装一台服务器和多个客户端。

准备工作

两个正在运行的Ubuntu 20.04系统的服务器实例

具有sudo特权的用户

如何安装Chef Server

我们要做的第一件事是安装Chef Server。为此,登录到您的Ubuntu Server 20.04实例,并使用以下命令下载服务器核心:

wget https://packages.chef.io/files/stable/chef-server/13.1.13/ubuntu/18.04/chef-server-core_13.1.13-1_amd64.deb

下载该文件后,请使用以下命令安装软件包:

sudo dpkg -i chef-server-core_*.deb

安装完成后,使用以下命令启动Chef Server服务:

sudo chef-server-ctl reconfigure

现在,我们需要创建一个包含安全密钥的新目录。使用以下命令执行此操作:

mkdir ~/.chef

接下来,我们创建一个新用户以及该用户的密钥文件。发出命令:

sudo chef-server-ctl user-create USERNAME FNAME LNAME EMAIL 'PASSWORD' --filename ~/.chef/USERNAME.pem

其中:

USERNAME是新用户的用户名

FNAME / LNAME是用户的姓名

EMAIL是新用户的电子邮件地址

PASSWORD是一个强大的、唯一的新用户的密码。

新用户创建好了,就该创建一个组了。同时,我们要把新用户添加到管理员和计费管理员安全组中。具体操作是通过命令来完成的:

sudo chef-server-ctl org-create ORGNAME "ORGFULLNAME" --association_user USERNAME --filename ~/.chef/ORGNAME.pem

其中ORGNAME(必须全小写)是组名称,ORGFULLNAME是组的全名,而USERNAME是刚创建的新用户的名称。

服务器安装就是这样。

如何安装Chef Client

登录到客户端计算机并使用以下命令下载必要的文件:

wget https://packages.chef.io/files/stable/chef-workstation/20.6.62/debian/10/chef-workstation_20.6.62-1_amd64.deb

文件下载完成后,请使用以下命令安装软件:

sudo dpkg -i chef-workstation*.deb

接下来,使用以下命令在客户端上创建存储库:

chef generate repo chef-repo

使用以下命令在存储库中创建一个子目录,该子目录将存储刀具配置:

mkdir ~/chef-repo/.chef

使用以下命令进入新创建的存储库:

cd ~/chef-repo

如何生成RSA密钥并将其复制到服务器

如果客户端计算机上还没有RSA密钥,请使用以下命令生成它们:

ssh-keygen -b 4096

使用以下命令将新密钥上载到服务器:

ssh-copy-id USER@SERVER

其中USER是生成密钥对的用户名,而SERVER是服务器的IP地址。

如何将PEM文件从服务器复制到客户端

接下来,我们必须将PEM文件从服务器复制到客户端。这是使用以下命令从服务器完成的:

scp USER@CLIENTIP:~/.chef/*.pem ~/chef-repo/.chef/

其中USER是生成PEM文件的用户名,而CLIENTIP是客户端计算机的IP地址。

如何添加版本控制

现在我们将混合使用版本控制,这样您就可以轻松的跟踪cookbook的更改。如果您的客户端还没有安装Git,请使用命令:

sudo apt-get install git -y

安装完成后,使用以下两个命令配置Git:

git config --global user.name NAME

git config --global user.email EMAIL

其中NAME是您的姓名,EMAIL是您的电子邮件地址。

使用以下命令将.chef目录添加到gitignore:

echo ".chef" > ~/chef-repo/.gitignore

使用以下命令进入存储库:

cd ~/chef-repo

使用以下命令添加并提交文件:

git add .

git commit -m "Initial Commit"

如何生成您的第一个cookbook并配置knife

下一步是使用以下命令生成您的第一本cookbook:

chef generate cookbook my_cookbook

完成后,您将需要使用以下命令创建刀具配置文件:

nano ~/chef-repo/.chef/config.rb

在该文件中,粘贴以下内容:

current_dir = File.dirname(__FILE__)

log_level                :info

log_location             STDOUT

node_name                'USER'

client_key               "USER.pem"

validation_client_name   'ORGNAME-validator'

validation_key           "ORGNAME-validator.pem"

chef_server_url          'https://SERVER/organizations/ORGNAME'

cache_type               'BasicFile'

cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )

cookbook_path            ["#{current_dir}/../cookbooks"]

其中:

USER是生成客户端密钥的用户名

ORGNAME是您创建的组名称

SERVER是Chef服务器的主机名或IP地址

保存并关闭文件。

使用以下命令进入chef-repo目录:

cd ~/chef-repo

使用以下命令从服务器获取SSL文件:

knife ssl fetch

如何引导节点

最后一步是在服务器上安装并验证客户端。在执行此操作之前,需要使用以下命令在客户端计算机上编辑主机文件:

sudo nano /etc/hosts

在该文件中,以以下形式添加Chef服务器的IP地址/主机名:

192.168.1.17 eaonvm

确保使用服务器的IP地址和主机名。保存并关闭文件。

使用以下命令进入.chef目录:

cd ~/chef-repo/.chef

要引导节点,请发出命令:

knife bootstrap SERVER -x USER -P PASSWORD --node-name NODE

其中:

SERVER是Chef服务器的主机名或IP地址

USER是您一直在使用的用户

PASSWORD是USER的密码

NODE是节点的名称

在这里可能会有些棘手。如果引导失败,则可能是由于您如何生成PEM文件。如果使用PEM文件的主机名(而不是IP地址),则需要使用该主机名进行引导。

自举成功后,您可以使用以下命令进行验证(在客户端上运行):

knife client list

您应该看到返回的ORG-validator(其中ORG是您创建的组的名称)。

就这样,就这样了。你现在准备好了,可以开始创建cookbook并使用它们来配置网络上的机器了。

目录结构
全文