如何在Ubuntu 14.04/15.04上配置Chef(服务器/客户端)

时间:2020-03-05 15:32:22  来源:igfitidea点击:

Chef是面向信息技术专业人员的配置管理和自动化工具,可以配置和管理基础结构(无论是本地还是在云中)。它可用于加快应用程序部署,并协调涉及数百甚至数千个服务器和应用程序的多个系统管理员和开发人员的工作,以支持庞大的客户群。 Chef强大功能的关键在于它将基础架构转化为代码。掌握了Chef之后,我们将能够通过一流的支持启用Web IT,从而通过轻松实现内部部署或者最终用户系统的自动化来管理云基础架构。

这是我们将在本教程中设置和配置的Chef的主要组件。

Chef 必备条件和版本

我们将在以下基本环境下设置Chef配置管理系统。

Chef ,配置管理工具
基础操作系统Ubuntu 14.04.1 LTS(X86_64)
Chef 服务器版本12.1.0
Chef 管理版本1.17.0
Chef 发展套装版本0.6.2
内存和CPU4 GB,2.0 + 2.0 GHz

Chef Server的安装和配置

Chef Server是中央核心组件,用于存储配方以及其他配置数据,并与工作站和节点进行交互。
让我们通过从官方链接中选择最新版本的Chef服务器来下载安装介质。

我们将获取其安装包,并使用以下命令进行安装。

1)下载Chef服务器

root@ubuntu-14-chef:/tmp# wget https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/chef-server-core_12.1.0-1_amd64.deb

2)安装Chef Server

root@ubuntu-14-chef:/tmp# dpkg -i chef-server-core_12.1.0-1_amd64.deb

3)重新配置Chef服务器

现在,运行以下命令以启动所有Chef服务器服务,此步骤可能需要几分钟才能完成,因为它由许多不同的服务组成,这些服务共同创建了一个正常运行的系统。

root@ubuntu-14-chef:/tmp# chef-server-ctl reconfigure

Chef服务器启动命令“ chef-server-ctl reconfigure”需要运行两次,以便安装以以下完成输出结束。

Chef Client finished, 342/350 resources updated in 113.71139964 seconds
opscode Reconfigured!

4)重新启动操作系统

安装完成后,如果不执行此操作就重新引导操作系统以达到最佳工作状态,我们可能会在创建用户期间收到以下SSL_connect错误。

ERROR: Errno::ECONNRESET: Connection reset by peer - SSL_connect

5)创建新的管理员用户

运行以下命令以使用其配置文件设置创建一个新的管理员用户。
在创建过程中,系统会自动生成用户的RSA私钥,应将其保存到安全位置。
--filename选项会将RSA私钥保存到指定的路径。

root@ubuntu-14-chef:/tmp# chef-server-ctl user-create kashi kashi kashi [email protected] kashi123 --filename /root/kashi.pem

Chef在Chef服务器上管理设置

Chef Manage是Enterprise Chef的管理控制台,可启用基于Web的用户界面来可视化和管理节点,数据包,角色,环境,食谱和基于角色的访问控制(RBAC)。

1)下载Chef Manage

从官方复制Chef Manage的链接,然后下载Chef Manage软件包。

root@ubuntu-14-chef:~# wget https://web-dl.packagecloud.io/chef/stable/packages/ubuntu/trusty/opscode-manage_1.17.0-1_amd64.deb

2)安装Chef Manage

让我们使用以下命令将其安装到根目录的主目录中。

root@ubuntu-14-chef:~# chef-server-ctl install opscode-manage --path /root

3)重新启动Chef管理和服务器

安装完成后,我们需要通过执行以下命令来重新启动Chef管理和Chef服务器服务。

root@ubuntu-14-chef:~# opscode-manage-ctl reconfigure
root@ubuntu-14-chef:~# chef-server-ctl reconfigure

Chef管理Web控制台

我们可以从本地主机访问Chef管理Web控制台,就像它的fqdn一样,并使用已经创建的admin用户帐户登录。

1)使用Chef Manage创建新组织

系统将要求我们创建新组织或者接受组织的邀请。
让我们通过提供如图所示的简称和全名来创建一个新组织。

2)使用命令行创建新组织

我们还可以通过执行以下命令从命令行创建新的组织。

root@ubuntu-14-chef:~# chef-server-ctl org-create linux theitroad Linux Org. --association_user kashi --filename linux.pem

工作站的配置和设置

正如我们成功安装Chef服务器所做的那样,现在我们将设置其工作站来创建和配置我们要对Chef配置进行的任何配方,食谱,属性以及其他更改。

1)在Chef服务器上创建新用户和组织

为了设置工作站,我们从命令行创建一个新用户和一个组织。

root@ubuntu-14-chef:~# chef-server-ctl user-create bloger Bloger Kashif [email protected] bloger123 --filename bloger.pem
root@ubuntu-14-chef:~# chef-server-ctl org-create blogs theitroad Blogs Inc. --association_user bloger --filename blogs.pem

2)下载工作站入门套件

现在,从工作站上的Chef管理Web控制台下载并保存入门工具包,并将其用于Chef服务器。

3)单击“继续”,下载入门工具包

Chef开发套件的工作站设置

Chef Development Kit是一个软件包套件,其中包含对Chef进行编码所需的所有开发工具。
它与Chef 社区和Chef 客户共同开发的最佳育种工具结合在一起。

1)下载Chef DK

我们可以从官方链接下载Chef 开发工具包,然后选择所需的操作系统以获取其Chef 开发工具包。

复制链接并使用wget命令下载。

root@ubuntu-15-WKS:~# wget https://opscode-omnibus-packages.s3.amazonaws.com/ubuntu/12.04/x86_64/chefdk_0.6.2-1_amd64.deb

1)Chef 开发套件安装

使用dpkg命令安装Chef-Development Kit

root@ubuntu-15-WKS:~# dpkg -i chefdk_0.6.2-1_amd64.deb

3)Chef DK验证

使用以下命令验证客户端是否已正确安装。

root@ubuntu-15-WKS:~# chef verify
Running verification for component 'berkshelf'
Running verification for component 'test-kitchen'
Running verification for component 'chef-client'
Running verification for component 'chef-dk'
Running verification for component 'chefspec'
Running verification for component 'rubocop'
Running verification for component 'fauxhai'
Running verification for component 'knife-spork'
Running verification for component 'kitchen-vagrant'
Running verification for component 'package installation'
Running verification for component 'openssl'
..............
--------------------------------------------
Verification of component 'rubocop' succeeded.
Verification of component 'knife-spork' succeeded.
Verification of component 'openssl' succeeded.
Verification of component 'berkshelf' succeeded.
Verification of component 'chef-dk' succeeded.
Verification of component 'fauxhai' succeeded.
Verification of component 'test-kitchen' succeeded.
Verification of component 'kitchen-vagrant' succeeded.
Verification of component 'chef-client' succeeded.
Verification of component 'chefspec' succeeded.
Verification of component 'package installation' succeeded.

连接到Chef服务器

我们将创建~/.chef并将两个用户和组织的pem文件从Chef服务器复制到此文件夹中。

root@ubuntu-14-chef:~# scp bloger.pem blogs.pem kashi.pem linux.pem [email protected]:/.chef/
[email protected]'s password:
bloger.pem 100% 1674 1.6KB/s 00:00
blogs.pem 100% 1674 1.6KB/s 00:00
kashi.pem 100% 1678 1.6KB/s 00:00
linux.pem 100% 1678 1.6KB/s 00:00

Knife 配置以管理Chef 环境

现在,使用前面步骤中配置的以下内容创建“~/.chef/knife.rb”。

root@ubuntu-15-WKS:/.chef# vim knife.rb
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name "kashi"
client_key "#{current_dir}/kashi.pem"
validation_client_name "kashi-linux"
validation_key "#{current_dir}/linux.pem"
chef_server_url "https://172.25.10.173/organizations/linux"
cache_type 'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path ["#{current_dir}/../cookbooks"]

为菜Knife 创建“~/cookbooks”文件夹,作为指定的knife.rb文件。

root@ubuntu-15-WKS:/# mkdir cookbooks

用Knife 配置进行测试

运行“Knife 具用户列表”和“Knife 具客户列表”命令,以验证Knife 具配置是否有效。

root@ubuntu-15-WKS:/.chef# knife user list

第一次运行此命令时,我们可能会收到以下错误。
这是因为我们的工作站上没有Chef服务器的SSL证书。

ERROR: SSL Validation failure connecting to host: 172.25.10.173 - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
ERROR: Could not establish a secure connection to the server.
Use `knife ssl check` to troubleshoot your SSL configuration.
If your Chef Server uses a self-signed certificate, you can use
`knife ssl fetch` to make knife trust the server's certificates.

要从上述错误中恢复,请运行以下命令以获取ssl证书,然后再次运行利Knife 用户和客户端列表命令,这样就可以了。

root@ubuntu-15-WKS:/.chef# knife ssl fetch
WARNING: Certificates from 172.25.10.173 will be fetched and placed in your trusted_cert
directory (/.chef/trusted_certs).
Knife has no means to verify these are the correct certificates. You should
verify the authenticity of these certificates after downloading.
Adding certificate for ubuntu-14-chef.test.com in /.chef/trusted_certs/ubuntu-14-chef_test_com.crt

现在,使用上述命令获取ssl certs之后,让我们再次运行以下命令。

root@ubuntu-15-WKS:/.chef#knife client list
kashi-linux

与Chef 服务器交互的新节点配置

节点包含执行所有基础结构自动化的chef-client。
因此,现在是时候在配置了Chef 服务器和Knife 库工作站组合之后,通过配置一个新节点与Chef 服务器交互来向Chef 环境添加新服务器。

要将新节点配置为与Chef服务器一起使用,请使用以下命令。

root@ubuntu-15-WKS:~# knife bootstrap 172.25.10.170 --ssh-user root --ssh-password kashi123 --node-name mydns
Doing old-style registration with the validation key at /.chef/linux.pem...
Delete your validation key in order to use your user credentials instead
Connecting to 172.25.10.170
172.25.10.170 Installing Chef Client...
172.25.10.170 --2014-07-04 22:21:16-- https://www.opscode.com/chef/install.sh
172.25.10.170 Resolving www.opscode.com (www.opscode.com)... 184.106.28.91
172.25.10.170 Connecting to www.opscode.com (www.opscode.com)|184.106.28.91|:443... connected.
172.25.10.170 HTTP request sent, awaiting response... 200 OK
172.25.10.170 Length: 18736 (18K) [application/x-sh]
172.25.10.170 Saving to: ‘STDOUT’
172.25.10.170
100%[======================================>] 18,736 --.-K/s in 0s
172.25.10.170
172.25.10.170 2014-07-04 22:21:17 (200 MB/s) - written to stdout [18736/18736]
172.25.10.170
172.25.10.170 Downloading Chef 12 for ubuntu...
172.25.10.170 downloading https://www.opscode.com/chef/metadata?v=12&prerelease=false&nightlies=false&p=ubuntu&pv=14.04&m=x86_64
172.25.10.170 to file /tmp/install.sh.26024/metadata.txt
172.25.10.170 trying wget...

毕竟,我们可以在Knife 节点列表和新客户端列表下看到经过精心创建的节点,因为它还将使用该节点创建一个新客户端。

root@ubuntu-15-WKS:~# knife node list
mydns

同样,我们可以通过提供与上述knofe bootstrap命令相同的ssh凭据,向Chef基础结构中添加多个节点。