Chef 是一个功能强大的自动化平台,可帮助您自动执行整个网络中基础架构的配置、部署和管理方式。它将基础结构转换为代码,并允许您跨多个节点或服务器管理和部署资源。在将代码部署到任何其他环境之前,请创建代码并在工作站上对其进行测试。在工作站上,您可以管理基础结构并编写说明书。
在本教程中,我将向您展示如何使用 Ubuntu 16.04 在阿里云弹性计算服务 (ECS) 上安装和设置 Chef 服务器工作站。
在继续安装任何类型的软件包之前,请使用以下命令更新 Ubuntu 系统。要执行此命令,请记住从具有 sudo 权限的非 root 用户登录。
# sudo apt update && sudo apt upgrade
Chef 服务器充当使用 Chef 的所有节点和工作站之间的交互中心。进行更改后,这些更改将上载到 Chef 服务器。之后,chef 客户端访问 Chef 服务器并帮助配置每个单独的节点。要安装 Chef 服务器,请执行以下步骤。
您需要下载 Chef 服务器核心。要下载它,请执行以下命令。
# wget https://packages.chef.io/files/stable/chef-server/12.17.33/ubuntu/16.04/chef-server-core_12.17.33-1_amd64.deb
您需要使用以下命令解压缩并安装.deb。
# sudo dpkg -i chef-server-core_12.17.33-1_amd64.deb
通过执行以下命令删除下载的.deb文件。
# sudo rm chef-server-core_12.17.33-1_amd64.deb
执行以下命令以启动 Chef 服务器命令行实用程序。它将启动 Chef 服务器服务。
# sudo chef-server-ctl reconfigure
如果安装成功,您将看到以下屏幕。
要将节点和工作站链接到 Chef 服务器,您需要创建具有关联 RSA 私钥的管理员用户和组织。为此,请按照以下步骤操作。
通过执行以下命令创建用于存储密钥的目录。
# mkdir .chef
要创建用户,您将使用 Chef 命令行实用程序。执行以下命令创建用户,并记住将 aareez 替换为所需的用户名、123@example.com替换为所需的电子邮件地址和文件名 aareez.pem 到 your_username.pem,将 654321Ab 替换为所需的密码,将 Arslan 替换为您的名字,将 Malik 替换为您的姓氏。
# sudo chef-server-ctl user-create aareez Arslan Shafiq 123@example.com '654321Ab' --filename ~/.chef/aareez.pem
创建一个组织,并在管理员和帐单管理员安全组中添加在上述步骤中创建的用户。为此,请执行以下命令。
# sudo chef-server-ctl org-create org_name 'org_full_name' --association_user aareez --filename ~/.chef/org_name.pem
请记住将org_name和org_full_name替换为组织的名称,并将 aareez 替换为您的用户名。
为 Chef 工作站创建新的阿里云实例并进行更新。
# sudo apt update && sudo apt upgrade
使用以下命令安装 Git。
# sudo apt-get install git
(可选)执行以下命令,通过提供您的姓名和有效的电子邮件地址来配置 Git,以便提交消息可能包含您的正确信息。
# git config --global user.name 'Aareez'
# git config --global user.email 'xyz@example.com'
Chef 工作站允许您创建和配置配方、说明书、属性以及对 Chef 配置所做的其他更改。要安装和配置 Chef 开发工具包,请执行以下步骤。
您需要通过执行以下命令下载 Chef 开发工具包。
# wget https://packages.chef.io/files/stable/chefdk/3.3.23/ubuntu/16.04/chefdk_3.3.23-1_amd64.deb
要安装 Chef 开发工具包,请执行以下命令。
# sudo dpkg -i chefdk_3.3.23-1_amd64.deb
通过执行以下命令删除下载.deb文件。
# sudo rm chefdk_3.3.23-1_amd64.deb
通过执行以下命令生成 chef 存储库。
# chef generate app chef-repo
导航到 chef-repo
# cd chef-repo
创建 .chef 目录以存储 aareez.pem、organization-validator.pem 和 knife.rb。执行以下命令。
# mkdir .chef
设置和安装 Chef 服务器时生成的 RSA 密钥将放置在工作站上。为此,请执行以下命令。
# scp aareez@softpedia.xyz:~/.chef/*.pem ~/chef-repo/.chef/
请记住将 aareez 替换为您的用户名,将 softpedia.xyz 替换为您的域名或 ECS IP 地址。
要确认文件是否已成功复制,您可以执行以下命令。
# ls ~/chef-repo/.chef
您需要将 .chef 目录添加到 .gitignore 文件中。为此,请执行以下命令。
# echo '.chef' > .gitignore
您将需要添加并提交所有现有文件。为此,请执行以下命令。
对于添加: # git add .
对于提交:# git commit -m “initial commit”
您可以通过执行以下命令来检查状态。
# git status
要生成 knife.rb 文件,请按照以下步骤操作。
通过执行以下命令导航到 /chef-repo/.chef。
# cd ~/chef-repo/.chef
创建一个名为 knife.rb 的文件,通过执行以下命令,将在 nano 文本编辑器中打开一个文件。
# sudo nano knife.rb
将以下文本复制并粘贴到打开的文件中。请记住将 aareez 替换为您的 Chef 服务器用户名,org_name替换为您组织的名称,并将chef_server_url值替换为您自己的域或 IP 地址。
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name 'aareez'
client_key 'aareez.pem'
validation_client_name 'org_name-validator'
validation_key 'org_name-validator.pem'
chef_server_url 'https://softpedia.xyz/organizations/org_name'
cache_type 'BasicFile'
cache_options( :path => '#{ENV['HOME']}/.chef/checksums' )
cookbook_path ['#{current_dir}/../cookbooks']
导航回 /chef-repo 并使用下面的命令进行获取。
# cd ..
# knife ssl fetch
您可以通过执行以下命令来确认 knife.rb 是否已正确设置。
# knife client list
使用配置的工作站和服务器,您现在可以引导第一个节点。
在引导节点时,将安装 Chef 客户端。它验证节点并允许从 Chef 服务器读取并允许进行配置。要引导节点,请执行以下步骤。
通过执行以下命令导航到 /chef-repo/.chef。
# cd ~/chef-repo/.chef
以具有 sudo 权限的用户身份,执行以下命令。请记住使用您的节点用户名更改 aareez,使用用户密码更改 654321Ab,使用 Chef 服务器的 IP 地址或域更改 softpedia.xyz,以及使用要提供给节点的名称更改 imaareez。
# knife bootstrap softpedia.xyz -x aareez -P 654321Ab --sudo --node-name imaareez
您可以通过执行以下命令来确认节点是否已引导。
# knife client list
如果您已激活防火墙,则必须在阿里云安全组中为云服务器定义规则,以便为端口 80/tcp 和 443/tcp 添加例外。您可以在创建 ECS 实例时启用这些端口,但如果您忘记取消阻止这些端口,您可以按照本指南中的步骤操作:https://www.alibabacloud.com/help/doc-detail/25471.htm
祝贺!您已在 ECS 实例上成功安装并配置了 Chef 服务器和 Chef 服务器工作站。