共计 7367 个字符,预计需要花费 19 分钟才能阅读完成。
Chef 是面对 IT 专业人员的一款配置管理和自动化工具,它可以配置和管理你的基础设施,无论它在本地还是在云上。它可以用于加速应用部署并协调多个系统管理员和开发人员的工作,这涉及到可支持大量的客户群的成百上千的服务器和程序。chef 最有用的是让基础设施变成代码。一旦你掌握了 Chef,你可以获得一流的网络 IT 支持来自动化管理你的云端基础设施或者终端用户。
下面是我们将要在本篇中要设置和配置 Chef 的主要组件。
安装 Chef 的要求和版本
我们将在下面的基础环境下设置 Chef 配置管理系统。
管理和配置工具:Chef | |
---|---|
基础操作系统 | Ubuntu 14.04.1 LTS (x86_64) |
Chef Server | Version 12.1.0 |
Chef Manage | Version 1.17.0 |
Chef Development Kit | Version 0.6.2 |
内存和 CPU | 4 GB , 2.0+2.0 GHz |
Chef 服务端的安装和配置
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 服务端
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’ 需要运行两次,这样就会在安装后看到这样的输出。
ChefClient finished,342/350 resources updated in113.71139964 seconds
opscode Reconfigured!
4) 重启系统
安装完成后重启系统使系统能最好的工作,不然我们或许会在创建用户的时候看到下面的 SSL 连接错误。
ERROR:Errno::ECONNRESET:Connection reset by peer - SSL_connect
5) 创建新的管理员
运行下面的命令来创建一个新的管理员账户及其配置。创建过程中,用户的 RSA 私钥会自动生成,它需要保存到一个安全的地方。–file 选项会保存 RSA 私钥到指定的路径下。
root@ubuntu-14-chef:/tmp# chef-server-ctl user-create kashi kashi kashi kashif.fareedi@gmail.com kashi123 --filename /root/kashi.pem
Chef 服务端的管理设置
Chef Manage 是一个针对企业 Chef 用户的管理控制台,它提供了可视化的 web 用户界面,可以管理节点、数据包、规则、环境、Cookbook 和基于角色的访问控制(RBAC)
1) 下载 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 的家目录下安装它。
root@ubuntu-14-chef:~# chef-server-ctl install opscode-manage --path /root
3) 重启 Chef Manage 和服务端
安装完成后我们需要运行下面的命令来重启 chef manage 和服务端。
root@ubuntu-14-chef:~# opscode-manage-ctl reconfigure
root@ubuntu-14-chef:~# chef-server-ctl reconfigure
Chef Manage 网页控制台
我们可以使用 localhost 或它的全称域名来访问网页控制台,并用已经创建的管理员登录
chef amanage
1) Chef Manage 创建新的组织
你或许被要求创建新的组织,或者也可以接受其他组织的邀请。如下所示,使用缩写和全名来创建一个新的组织。
Create Org
2) 用命令行创建新的组织
我们同样也可以运行下面的命令来创建新的组织。
root@ubuntu-14-chef:~# chef-server-ctl org-create linux LinoxideLinuxOrg.--association_user kashi --filename linux.pem
设置工作站
我们已经完成安装 chef 服务端,现在我们可以开始创建任何 recipes(基础配置元素)、cookbooks(基础配置集)、attributes(节点属性)和其他任何的我们想要对 Chef 做的修改。
1) 在 Chef 服务端上创建新的用户和组织
为了设置工作站,我们用命令行创建一个新的用户和组织。
root@ubuntu-14-chef:~# chef-server-ctl user-create bloger BlogerKashif bloger.kashif@gmail.com bloger123 --filename bloger.pem
root@ubuntu-14-chef:~# chef-server-ctl org-create blogs LinoxideBlogsInc.--association_user bloger --filename blogs.pem
2) 下载工作站入门套件
在工作站的网页控制台中下载保存入门套件,它用于与服务端协同工作
Starter Kit
3) 下载套件后,点击 ”Proceed”
starter kit
用于工作站的 Chef 开发套件设置
Chef 开发套件是一款包含开发 chef 所需的所有工具的软件包。它捆绑了由 Chef 开发的带 Chef 客户端的工具。
1) 下载 Chef DK
我们可以从它的官网链接中下载开发包,并选择操作系统来下载 chef 开发包。
Chef DK
复制链接并用 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
2) Chef 开发套件安装
使用 dpkg 命令安装开发套件
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.
4) 连接 Chef 服务端
我们将创建 ~/.chef 并从 chef 服务端复制两个用户和组织的 pem 文件到 chef 的文件到这个目录下。
root@ubuntu-14-chef:~# scp bloger.pem blogs.pem kashi.pem linux.pem root@172.25.10.172:/.chef/
root@172.25.10.172'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
5) 编辑配置来管理 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.rb 中指定的“~/cookbooks”文件夹。
root@ubuntu-15-WKS:/# mkdir cookbooks
6) 测试 Knife 配置
运行“knife user list”和“knife client list”来验证 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:Couldnot establish a secure connection to the server.
Use`knife ssl check` to troubleshoot your SSL configuration.
If your ChefServer uses a self-signed certificate, you can use
`knife ssl fetch` to make knife trust the server's certificates.
要从上面的命令中恢复,运行下面的命令来获取 ssl 证书,并重新运行 knife user 和 client list,这时候应该就可以了。
root@ubuntu-15-WKS:/.chef# knife ssl fetch
WARNING:Certificatesfrom172.25.10.173 will be fetched and placed in your trusted_cert
directory (/.chef/trusted_certs).
knife 没有办法验证这些是有效的证书。你应该在下载时候验证这些证书的真实性。
在 /.chef/trustedcerts/ubuntu-14-cheftest_com.crt 下面添加 ubuntu-14-chef.test.com 的证书。
在上面的命令取得 ssl 证书后,接着运行下面的命令。
root@ubuntu-15-WKS:/.chef#knife client list
kashi-linux
配置与 chef 服务端交互的新节点
节点是执行所有基础��施自动化的 chef 客户端。因此,在配置完 chef-server 和 knife 工作站后,通过配置新的与 chef-server 交互的节点,来添加新的服务端到我们的 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.170InstallingChefClient...
172.25.10.170--2015-07-0422:21:16-- https://www.opscode.com/chef/install.sh
172.25.10.170Resolving www.opscode.com (www.opscode.com)...184.106.28.91
172.25.10.170Connecting 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.170Length:18736(18K)[application/x-sh]
172.25.10.170Saving to:‘STDOUT’
172.25.10.170
100%[======================================>]18,736--.-K/s in0s
172.25.10.170
172.25.10.1702015-07-0422:21:17(200 MB/s)- written to stdout [18736/18736]
172.25.10.170
172.25.10.170DownloadingChef12for 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
相似地我们只要提供 ssh 证书通过上面的 knife 命令,就可以在 chef 设施上创建多个节点。
总结
本篇我们学习了 chef 管理工具并通过安装和配置设置基本了解了它的组件。我希望你在学习安装和配置 Chef 服务端以及它的工作站和客户端节点中获得乐趣。
更多 Ubuntu 相关信息见 Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2
via: How to Configure Chef (server/client) on Ubuntu 14.04 / 15.04
作者:Kashif Siddique 译者:geekpi 校对:wxy
本文由 LCTT 原创翻译,Linux 中国 荣誉推出
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-08/121445.htm