在 Ubuntu 20.04 上安装 Chef 服务器和工作站 |
欢迎阅读今天关于如何在 Ubuntu 20.04 (Focal Fossa) 上安装 Chef 服务器和工作站的指南。 Chef 是一款功能强大的自动化解决方案,旨在帮助您将基础架构转变为代码。基础设施可以是本地、云或混合环境。借助 Chef,您可以自动化基础架构的部署、配置和管理方式。 Chef 服务器充当您的食谱及其管理的每个节点的信息的中央存储库。
Chef 自动化服务器背后的公司还开发了其他自动化工具,其中包括:
- Chef – 基础设施自动化
- Habitat – 应用自动化
- INSPEC – 合规自动化
按照以下部分中的步骤在 Ubuntu 20.04 Linux 服务器上安装和配置 Chef Server。
第 1 步:更新系统并设置主机名
我们需要更新系统以确保所有安装的软件包都是最新版本。
sudo apt update
sudo apt -y upgrade
设置服务器主机名,该主机名将是部署在 Ubuntu 20.04 上的 Chef 服务器的 DNS 名称。
sudo hostnamectl set-hostname chef-server.computingforgeeks.com
如果您有活动的 DNS 服务器,请相应地设置 A 记录。对于没有 DNS 服务器的安装,请在 /etc/hosts
文件中设置记录:
$ sudo vim /ect/hosts
192.168.200.10 chef-server.example.com
还要在您的 Ubuntu 计算机上安装一些其他基本软件包。
sudo apt -y install curl wget bash-completion
安装这些软件包并升级您的计算机后,我建议您重新启动。
sudo reboot
步骤 2:配置本地邮件中继
Chef 服务器使用电子邮件发送各种事件的通知:
- 密码重置
- 用户邀请
- 故障转移通知
- 作业失败通知
使用指南在 Chef 服务器上配置本地邮件传输代理:
- 在 Ubuntu 上将 Postfix 配置为仅发送 SMTP 服务器
步骤 3:配置 NTP 时间同步
Chef 服务器对时钟漂移特别敏感,它要求运行它的系统连接到网络时间协议 (NTP)。
在 Ubuntu 20.04 上安装 chrony 软件包。
sudo apt -y install chrony
设置正确的时区以便自动选择日期。
sudo timedatectl set-timezone Africa/Nairobi
您可以选择限制对 NTP 服务器的访问,例如从您的 Chef 客户端节点,设置如下:
restrict 192.168.18.0 mask 255.255.255.0 nomodify notrap
其中192.168.18.0是您本地网络的IP子网。更改后重新启动 ntp 服务:
sudo systemctl restart chrony
如果您启用了 UFW
防火墙,请不要忘记允许 ntp 端口:
sudo ufw allow ntp
显示 ntp 状态:
sudo chronyc sources
确认时间同步:
$ timedatectl
Local time: Fri 2020-07-10 20:38:57 EAT
Universal time: Fri 2020-07-10 17:38:57 UTC
RTC time: Fri 2020-07-10 17:38:58
Time zone: Africa/Nairobi (EAT, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
在 Chef 客户端上,安装 ntp 并将 NTP 服务器设置为 Chef 服务器 IP 地址
sudo apt install chrony
sudo vim /etc/ntp.conf
取消注释 NTP 池服务器行并指定 Chef 服务器 IP 地址
#pool 0.ubuntu.pool.ntp.org iburst
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst
server 192.168.18.39
步骤 4:下载并安装 Chef 服务器包
首先,从 Chef 下载页面检查最新版本的 Chef 服务器
截至撰写本文时,最新版本为 14.11.21
。这是我们将下载并安装的包:
VERSION="14.11.21"
wget https://packages.chef.io/files/stable/chef-server/${VERSION}/ubuntu/18.04/chef-server-core_${VERSION}-1_amd64.deb
下载完成后,使用 dpkg
命令安装软件包:
sudo apt install ./chef-server-core_${VERSION}-1_amd64.deb
样品状态:
....
The following NEW packages will be installed:
chef-server-core
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/246 MB of archives.
After this operation, 956 MB of additional disk space will be used.
Get:1 /home/ubuntu/chef-server-core_14.11.21-1_amd64.deb chef-server-core amd64 14.11.21-1 [246 MB]
Selecting previously unselected package chef-server-core.
(Reading database ... 63527 files and directories currently installed.)
Preparing to unpack .../chef-server-core_14.11.21-1_amd64.deb ...
Unpacking chef-server-core (14.11.21-1) ...
Setting up chef-server-core (14.11.21-1) ...
Thank you for installing Chef Infra Server!
Run 'chef-server-ctl reconfigure' to configure your Chef Infra Server
For more information on getting started see https://docs.chef.io/server/
等待安装完成然后配置 Chef Server:
sudo chef-server-ctl reconfigure
在开始配置之前,您需要接受许可协议。
....
Before you can continue, 3 product licenses
must be accepted. View the license at
https://www.chef.io/end-user-license-agreement/
Licenses that need accepting:
* Chef Infra Server
* Chef Infra Client
* Chef InSpec
Do you accept the 3 product licenses (yes/no)?
> yes
Persisting 3 product licenses...
✔ 3 product licenses persisted.
+---------------------------------------------+
创建管理员帐户
格式为:
sudo chef-server-ctl user-create USER_NAME FIRST_NAME LAST_NAME EMAIL 'PASSWORD' --filename FILE_NAME
- RSA 私钥是自动生成的。
- 这是用户的私钥,应保存到安全位置。
- 选项
--filename
将把RSA私钥保存到指定的绝对路径。
例子 :
sudo chef-server-ctl user-create chefadmin Chef Admin \
[email 'StrongPassword' \
--filename /home/chefadmin.pem
另外,创建一个组织。语法是:
sudo chef-server-ctl org-create short_name 'full_organization_name' --association_user user_name --filename ORGANIZATION-validator.pem
- 名称必须以小写字母或数字开头,
- 全名必须以非空格字符开头
--association_user
选项会将user_name
与 Chef 服务器上的 admins 安全组关联起来。- RSA 私钥是自动生成的。这是厨师验证者密钥,应保存到安全位置。
--filename
选项会将 RSA 私钥保存到指定的绝对路径。
请参阅下面的示例:
chef-server-ctl org-create mycompany 'Company X, Inc.' \
--association_user chefadmin \
--filename /home/mycompany-validator.pem
生成的密钥应位于 /home
目录中
# ls /home/
chefadmin.pem mycompany-validator.pem
安装 Chef 管理
Chef Manage 是一款高级插件,提供图形用户界面来管理常见的 Chef 服务器任务。最多 25 个节点免费。
让我们安装管理控制台:
sudo chef-server-ctl install chef-manage
sudo chef-server-ctl reconfigure
sudo chef-manage-ctl reconfigure
您还可以从 .deb
软件包安装 Chef Manage:
VER="3.2.20"
wget https://packages.chef.io/files/stable/chef-manage/${VER}/ubuntu/18.04/chef-manage_${VER}-1_amd64.deb
sudo apt install -f ./chef-manage_${VER}-1_amd64.deb
sudo chef-manage-ctl reconfigure
所有 Chef Server 服务都将在用户名/组 opscode
下运行。 PostgreSQL 的用户名是 opscode-pgsql
。可以从 https://packages.chef.io/ 安装其他软件包
如果您希望使用或已经使用 UFW 防火墙,请通过运行以下命令打开端口 80
和 443
:
sudo ufw allow proto tcp from any to any port 80,443
您应该能够通过 https://serverip/login
访问 Chef Web 管理仪表板
使用之前添加的用户名登录。一个新的 Chef 仪表板应该类似于下面
第 5 步:在您的工作站计算机上安装 Chef 开发套件
Chef 工作站是安装 Chef 开发套件的地方。它包含开发和测试基础设施所需的所有工具,由出色的 Chef 社区构建。使用以下指南安装 Chef 开发套件/工作站:
- 如何在 Ubuntu 上安装 Chef 开发套件/工作站
对于 Arch Linux 用户,请使用:
- 如何在 Arch Linux 上安装 Chef 开发套件
第6步:在Chef Workstation上配置knife
Knife 是一个命令行工具,提供工作站和 Chef 服务器之间的接口。接下来阅读:
- 配置 Chef Knife、上传食谱并在 Chef 客户端节点上运行菜谱