当前位置: 首页 > article >正文

如何在 Debian 12 上安装 Chef Infra Server 自动化运维工具

Chef 简介

Chef 是一款基于 Ruby 语言开发的自动化配置管理工具。它能够帮助用户将基础设施的配置和管理过程转化为代码,实现基础设施即代码(Infrastructure as Code)的目标,从而提高运维效率,减少人为错误。Chef 可以用于管理各种规模的服务器,从几台到上千台都适用。

适用场景:

  • 大规模服务器配置管理
  • 云环境自动化部署
  • DevOps 持续集成/部署

简单来说,当你需要管理几十台甚至上百台服务器时,Chef 能帮你自动化完成配置工作,节省大量人工操作时间。

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
  • 3 台 Debian 12 服务器

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

img

  • 按照自己需求选择配置,选择 Debian 12 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

img

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

img

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

img

  • 到此为止,我们的云服务器就远程连接上了。

开始部署

设置 FQDN

在第一步中,你将为 Chef 服务器、Chef 工作站和客户端配置 FQDN(完全限定域名)。

运行以下 hostnamectl 命令,为每台服务器设置 fqdn。

sudo hostnamectl set-hostname chef.example.local
sudo hostnamectl set-hostname workstation.example.local
sudo hostnamectl set-hostname client.example.local

使用以下 nano 编辑器命令,打开每台服务器上的 /etc/hosts 文件。

sudo nano /etc/hosts

插入以下配置,并确保使用你的设置更改详细的 IP 地址、主机名和 fqdn。

192.168.5.15    chef.example.local    chef
192.168.5.20    workstation.example.local    workstation
192.168.5.21    client.example.local    client

完成后保存并关闭文件。

现在运行以下命令,以确保每个 fqdn 都指向服务器的正确 IP 地址。

sudo hostname -f
ping -c3 chef.example.local

同步服务器之间的时间

配置 FQDN 后,你将确保每台服务器的时间都已同步。在本例中,你将在 Chef 服务器上设置 NTP 服务器,并配置 Chef 工作站和客户端以连接到该服务器。

在 Chef 服务器上设置 Chrony

在 Chef 服务器上,运行以下命令以更新存储库包索引并安装 Chrony 包。

sudo apt update
sudo apt install chrony -y

安装 Chrony 后,使用以下 nano 编辑器命令打开文件 /etc/chrony/chrony.conf

sudo nano /etc/chrony/chrony.conf

插入以下配置以设置默认 NTP 服务器。请务必选择服务器最近的位置,有关详细信息,请查看 ntp.org。

此外,你还将在 Chef 服务器中将 Chrony 配置为 Chef 工作站和客户端的 NTP 服务器。

pool 0.nl.pool.ntp.org iburst
pool 1.nl.pool.ntp.org iburst
pool 2.nl.pool.ntp.org iburst
pool 3.nl.pool.ntp.org iburst

allow 192.168.5.0/24

完成后保存并关闭文件。

接下来,运行以下命令以设置默认时区并启用 NTP。

sudo timedatectl set-timezone Europe/Amsterdam
sudo timedatectl set-ntp true

然后,重新启动 chrony 服务以应用更改。

sudo systemctl restart chrony

最后,使用以下命令验证 NTP 源。

chronyc sources

你应该收到如下输出:

在 Chef 工作站和客户端上

现在移动到 Chef 工作站和客户端计算机。然后,运行以下命令以更新存储库并在两台服务器上安装 Chrnoy。

sudo apt update
sudo apt install chrony -y

之后,使用以下 nano 编辑器命令修改 Chrony 配置 /etc/chrony/chrony.conf

sudo nano /etc/chrony/chrony.conf

注释掉默认的 NTP 源以禁用它,然后输入 Chef 服务器 IP 地址作为 NTP 服务器,如下所示。

# default chrony
server 192.168.5.15 iburst

完成后保存并关闭文件。

接下来,运行以下命令以设置默认时区并启用 NTP。

sudo timedatectl set-timezone Europe/Amsterdam
sudo timedatectl set-ntp true

然后,重新启动 Chrony 服务以应用你的更改。

sudo systemctl restart chrony

最后,使用以下命令验证 Chef 工作站和客户端上的 NTP 源。

chronyc sources

你应该看到 Chef 工作站和客户端的默认 NTP 源是 Chef 服务器,其 IP 地址为 192.168.5.15

安装和配置 Chef Server

通过 DEB 安装 Chef Server

移动到 Chef 服务器并运行以下命令以下载 Chef 服务器包。在本例中,你将使用 Chef 15。

VERSION="15.7.0"
wget https://packages.chef.io/files/stable/chef-server/${VERSION}/ubuntu/22.04/chef-server-core_${VERSION}-1_amd64.deb

现在使用以下命令通过 .deb 文件安装 Chef 服务器。安装将需要一些时间。

sudo apt install ./chef-server-core_*.deb

安装完成后,你应该会收到确认信息 “Thank you for installing Chef Infra Server”。

接下来,运行下面的 chef-server-ctl 命令来重新配置你的 Chef Server 安装。

sudo chef-server-ctl reconfigure

当系统询问时,输入 Y 以确认 Chef 许可证。

Chef 服务器初始化将开始。完成后,你应该会收到类似 “Chef Infra Server Reconfigured” 的确认信息。

配置用户和组织

现在你已经重新配置了 Chef Server,你将在 Chef Server 安装上设置用户和组织。

使用以下命令创建一个新的目录 ~/.chef

mkdir -p ~/.chef

然后,使用以下命令创建一个新的 Chef 用户。在本例中,我们将创建一个新用户 alice,密码为 password,TLS 证书将存储在 ~/.chef/alice.pem 中。

sudo chef-server-ctl user-create alice Alice Wonderland alice@example.local 'password' --filename ~/.chef/alice.pem

现在使用以下命令创建一个新组织。请务必更改组织名称、关联用户和 TLS 证书路径的详细信息。

sudo chef-server-ctl org-create hworgz 'HW Corp, Inc.' --association_user alice --filename ~/.chef/hworgz-validator.pem

一切完成后,使用以下命令验证 Chef 服务器上的用户和组织列表。

sudo chef-server-ctl user-list
sudo chef-server-ctl org-list

如果一切顺利,你应该会看到 Chef 服务器,其中用户为 alice,组织为 hworgz,如下所示。

此外,你还可以使用以下命令检查生成的 TLS 证书。你应该会看到 alice.pemhworgz-validator.pem 证书。

ls ~/.chef/

此时,你已完成 Chef Server 的安装。

安装和配置 Chef 工作站

安装 Chef Server 后,你将安装 Chef 工作站。 chef 工作站是管理员/用户用来创建和测试菜谱和食谱的节点。

在本例中,你将在具有 2 GB RAM 的 Debian 12 服务器上安装 Chef 工作站。

通过 DEB 安装 Chef 工作站

移动到 Chef 工作站并运行以下命令,使用以下 wget 命令下载 Chef 工作站包。在本例中,你将安装 Chef 工作站 23。

VERSION="23.7.1042"
wget https://packages.chef.io/files/stable/chef-workstation/${VERSION}/debian/11/chef-workstation_${VERSION}-1_amd64.deb

下载完成后,运行以下命令将 Chef 工作站包安装到你的系统中。

sudo apt install ./chef-workstation_*.deb

完成后,你应该会收到确认信息 “Thank you for installing Chef Workstation”。

最后,运行以下命令以验证 Chef 版本。

chef -v

以下输出确认你已在 Debian 服务器上安装了 Chef 23。

配置 Chef 工作站

现在你已经安装了 Chef 工作站,接下来你将配置你的安装。

首先,使用以下命令生成新的 SSH 密.钥。在提示时输入以设置密.钥的密码。

ssh-keygen -t ed25519

现在运行以下命令,将密.钥上传到 Chef Server chef.example.local。这将用于从 Chef 服务器检索 TLS 证书到工作站。

ssh-copy-id root@chef.example.local

在询问时输入你的密码。

接下来,使用以下命令生成新的 Chef repo。在本例中,你将创建一个新的 Chef repo test-repo。

chef generate repo test-repo

现在创建一个新目录 ~/test-repo/.chef 并进入该目录。

mkdir ~/test-repo/.chef; cd ~/test-repo/.chef

使用以下命令将 TLS 证书从 Chef 服务器复制到工作站的当前目录。

scp root@chef.example.local:~/.chef/*.pem .

完成后,检查 ~/test-repo/.chef 目录中的文件列表。

ls ~/test-repo/.chef/

确保你的 TLS 证书在 Chef 工作站服务器上可用。

配置 Knife 实用程序 - 与 Chef Server 的接口

在 Chef 工作站计算机上,移动到 ~/test-repo/.chef 目录,并使用以下 nano 编辑器命令创建一个新文件 knife.rb

cd ~/test-repo/.chef
nano knife.rb

插入以下 Ruby 脚本,并确保更改用户、组织、TLS 证书文件和 Chef Server URL 的详细信息。

current_dir = File.dirname(__FILE__)
log_level                :info
log_location             STDOUT
node_name                'alice'
client_key               "alice.pem"
validation_client_name    'hworgz-validator'
validation_key            "hworgz-validator.pem"
chef_server_url          'https://chef.example.local/organizations/hworgz'
cache_type               'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path            ["#{current_dir}/../cookbooks"]

完成后保存并关闭文件。

现在移动到 ~/test-repo 目录,并使用以下 knife 命令从 Chef Server 检索证书。

cd ~/test-repo
knife ssl fetch

完成后,你应该会获得以下输出。

从现在开始,你可以使用 knife 与 Chef Server 通信并引导客户端计算机。

knife client list

从 Chef 工作站引导客户端/节点

在以下部分中,你将学习如何使用 Knife 通过 SSH 从 Chef 工作站自动引导节点 192.168.5.21。

首先,移动到 ~/test-repo/.chef 目录。

cd ~/test-repo/.chef

运行以下 knife 命令以引导客户端 192.168.5.21。 请务必使用你的信息更改用户 root 和密码 password

在本例中,你将添加节点 192.168.5.21 并将其命名为 client

knife bootstrap 192.168.5.21 -U root -P password --node-name client

输入 Y 继续并继续该过程。

完成后,你应该会收到确认信息“Infra Phase complete”。

现在使用以下命令验证 Chef 环境中可用节点的列表。如果一切顺利,你应该会看到客户端节点可用。

knife node list

然后,使用以下 knife 命令验证客户端节点的详细信息。

knife node show client

在以下输出中,你可以看到 FQDN 为 client.example.local 的客户端节点 Debian 12 计算机。

最后,你现在可以通过以下 knife 命令在客户端节点上运行任意命令。

knife ssh "client" "whoami;top" -u alice

在提示时输入 Chef 用户 alice 的密码。如果命令成功,你应该会得到以下结果。


http://www.kler.cn/a/445619.html

相关文章:

  • RestTemplate远程调用、服务注册、
  • CPU性能优化--函数分组
  • 【使用MCP协议连接本地和远程数据——以Claude的Windows客户端为例】
  • 【HarmonyOS之旅】DevEco Studio的安装与环境配置
  • 文心一言对接FreeSWITCH实现大模型呼叫中心
  • 时间序列异常值检测方法
  • springboot检测配置是否存在,如果存在则返回,不存在则提示新增
  • 网站安全监测存在的挑战,以及应对方案
  • java线程共享模型之管程(synchronized原理、wait-notify、park方法)
  • 【波数】常见波数计算公式及分析
  • 防火墙(RHCE)
  • RNN LSTM Seq2Seq Attention
  • VR展厅模板在各种平台上运行效果如何?
  • HTTP—02
  • 如何在Anaconda的虚拟环境中下载Python包
  • 学习记录:electron主进程与渲染进程直接的通信示例【开箱即用】
  • 类似于GitHub的平台
  • 【C语言】特殊指针汇总
  • 【Ubuntu】截图软件flameshort
  • docker--压缩镜像和加载镜像
  • Go 语言常量
  • Webpack中Loader和Plugin的区别
  • 怎么利用Redis实现延时队列?
  • 机器智能能产生算计吗?
  • 分布式全文检索引擎ElasticSearch-数据的写入存储底层原理
  • C语言——实现百分制换算为等级分