Chef是一个免费的开源配置管理工具。 它是用Ruby和Erlang编写的。 Chef可以轻松地与基于云的平台(如AWS,OpenStack或RackSpace等)集成,以自动创建和管理服务器。 当组织增长并且节点数量增加时,系统管理员自身难以管理每个节点。 在这种情况下,Chef来抢救。 Chef生态系统由Chef服务器,Chef工作站和Chef节点三部分组成。 此DevOps工具允许系统管理员从中央位置管理多个节点。
在本教程中,我们将在Ubuntu 17.04(Zesty Zapus)中安装最新版本的Chef。
条件
- 最小Ubuntu 17.04服务器。
- 根权限 本指南以root用户身份编写,如果以sudo用户身份登录,请运行
sudo -i
。 - 指向您的服务器的域名。
更新基本系统
在安装任何软件包之前,建议您使用以下命令更新软件包和存储库。
apt update && apt -y upgrade
更新系统后,继续进行。
更新主机名
Chef需要在服务器上设置可解析的主机名。 主机名必须是FQDN或完全限定域名,例如, chef.yourdomain.com
。 要在服务器上设置主机名,请运行以下命令。
hostname 'chef.yourdomain.com'
将chef.yourdomain.com
替换为您的实际域名。 另外,更新/ etc / hostname
文件中的主机名
。
echo "chef.yourdomain.com" | tee /etc/hostname
通过运行以下命令,将主机名的IP地址添加到/ etc / hosts
文件中。
echo "192.168.1.1 chef.yourdomain.com" >> /etc/hosts
将192.168.1.1
替换为您的实际公用IP地址。
设置NTP
网络时间协议服务器的NTP需要同步服务器的时钟。 Chef需要连接的系统运行NTP,因为它对时钟变化非常敏感。 NTP在UDP端口123上运行。 要在服务器上安装NTP,请运行以下命令。
apt install ntp
通过运行以下命令启动NTP。
systemctl start ntp
要启用NTP在引导时自动启动,请运行以下命令。
systemctl enable ntp
您可以通过运行以下命令来验证NTP是否同步了时钟。
ntpq -p
您应该看到以下输出:
root@chef:~# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000 ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000 #hydrogen.consta 129.6.15.29 2 u 34 64 17 174.427 -9.145 0.751 #helium.constant 128.59.0.245 2 u 30 64 17 176.812 -8.253 0.726 #lithium.constan 18.26.4.105 2 u 33 64 17 175.435 0.357 0.684 #ntppublic.uzh.c 130.60.159.8 3 u 24 64 17 256.712 8.982 0.927 +x.ns.gin.ntt.ne 249.224.99.213 2 u 25 64 17 0.872 -1.636 0.805 -borris.netwurx. 144.92.9.22 2 u 22 64 17 163.284 0.848 1.141 -ns1.do.steersne 195.66.241.3 2 u 23 64 17 222.882 -3.528 0.965 -sircabirus.von- 36.224.68.195 2 u 28 64 17 266.005 3.502 1.173 *chobi.paina.net 131.113.192.40 2 u 26 64 17 1.280 -1.852 1.046 #213.251.53.11 193.62.22.74 2 u 27 64 17 246.940 9.920 1.405 -flightplandatab 210.240.96.206 2 u 27 64 17 258.052 -1.338 2.789 -time.platformni 118.211.218.186 2 u 27 64 17 1.592 3.394 1.127
下载并安装Chef
通过运行以下命令,为Ubuntu下载Chef Server软件包。
wget https://packages.chef.io/files/stable/chef-server/12.15.8/ubuntu/16.04/chef-server-core_12.15.8-1_amd64.deb
您可以随时通过访问Chef下载页面找到最新版本的Chef的链接 。 现在,通过运行以下命令安装软件包。
dpkg -i chef-server-*.deb
Chef现在安装在您的系统上。 使用前需要配置服务器。
配置Chef
现在,您可以运行以下命令来启动所需的所有服务。
chef-server-ctl reconfigure
上述命令将需要几分钟的时间才能完成,因为它可以安装和配置Chef服务器的所有组件。 一旦成功完成,您应该在最后收到以下消息。
Chef Client finished, 491/1096 resources updated in 03 minutes 13 seconds Chef Server Reconfigured!
您可以通过运行以下步骤检查服务是否成功启动:
chef-server-ctl status
您应该看到以下输出。
root@chef:~# chef-server-ctl status run: bookshelf: (pid 6030) 87s; run: log: (pid 6047) 86s run: nginx: (pid 5859) 91s; run: log: (pid 6387) 82s run: oc_bifrost: (pid 5766) 92s; run: log: (pid 5842) 92s run: oc_id: (pid 5849) 91s; run: log: (pid 5854) 91s run: opscode-erchef: (pid 6244) 84s; run: log: (pid 6108) 85s run: opscode-expander: (pid 5926) 88s; run: log: (pid 6010) 87s run: opscode-solr4: (pid 5895) 89s; run: log: (pid 5912) 89s run: postgresql: (pid 5718) 93s; run: log: (pid 5745) 92s run: rabbitmq: (pid 5239) 101s; run: log: (pid 5099) 105s run: redis_lb: (pid 5036) 121s; run: log: (pid 6361) 83s
安装Web管理控制台
Chef向管理员Chef服务器提供基于Web的图形用户界面。 您可以使用基于GUI的控制台来管理数据包,属性,运行列表,角色,环境和Recipe。
要安装Chef Manage,请运行以下命令:
chef-server-ctl install chef-manage
重新配置Chef服务器,方法是:
chef-server-ctl reconfigure
最后,通过运行以下命令配置Chef Manage。
chef-manage-ctl reconfigure
上述命令将要求您接受许可协议。 您可以选择在运行期间接受许可协议,或者直接运行以下命令来自动接受许可证。
chef-manage-ctl reconfigure --accept-license
创建管理员和组织
在登录并使用管理控制台之前,您需要创建一个用户和组织。 在用户和组织创建过程中,它会自动生成连接到工作站和客户端所需的RSA私钥。 您可以创建一个新的.chef
目录来存储密钥。 运行命令创建一个新的目录来存储私钥。
mkdir ~/.chef
现在通过运行以下命令创建一个新的管理员。
chef-server-ctl user-create admin Chef Administrator chef@yourdomain.com StrongPassword -f ~/.chef/admin.pem
使用您的首选用户名替换管理员
,具有姓氏的Chef
和姓氏的管理员
chef@yourdomain.com
与您的电子邮件和admin.pem
应该根据您的用户名。 用强大的密码替换StrongPassword
。
现在通过运行以下命令创建一个新的组织。
chef-server-ctl org-create my_org 'My Organization' --association_user admin -f ~/.chef/my_org.pem
使用您创建的管理用户,将组织的名称,组织名称和管理员的
名称替换为my_org
。
访问Web控制台
现在,访问Web控制台所需的一切都已安装和配置,您可以通过浏览以下URL访问控制台。
http://Your-Server-IP
如果您配置了域,还可以使用您的域名而不是服务器IP。 您应该看到以下登录屏幕。
使用您创建的用户名和密码登录。 成功登录后,您将看到以下界面。
安装可选插件
您可以启用报告来了解由Chef服务器管理的所有Chef客户端上发生的过程。 您可以通过Chef管理控制台运行报告,以查看Web控制台上的报告。 可以为整个组织生成报告,并且可以为特定节点生成报告。 要安装报告,请运行以下命令。
chef-server-ctl install opscode-reporting
通过运行以下命令重新配置Chef服务器:
chef-server-ctl reconfigure
通过运行以下命令配置报告模块
opscode-reporting-ctl reconfigure
您可以通过运行以下步骤验证报告插件是否已安装并正常工作:
opscode-reporting-ctl test
以类似的方式,您可以安装Chef Push作业来运行作业。 Chef推送作业允许Chef服务器独立于Chef - 客户端运行而独立运行作业。 Chef推送作业使用Chef服务器API和Ruby客户端来启动与Chef服务器的所有连接。 通过运行以下命令安装推送作业。
chef-server-ctl install opscode-push-jobs-server
通过运行以下命令重新配置Chef服务器:
chef-server-ctl reconfigure
通过运行以下命令配置推送作业模块
opscode-push-jobs-server-ctl reconfigure
结论
在本教程中,我们已经学会了在最新版本的Ubuntu上安装最新版本的Chef。 您可以访问Chef网站了解更多关于Chef的信息 。