如何在 Ubuntu 上安装配置管理系统 Chef (大厨)

简介:

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服务端是核心组件,它存储配置以及其他和工作站交互的配置数据。让我们在他们的官网https://www.chef.io下载最新的安装文件。

我使用下面的命令来下载和安装它。

1) 下载Chef服务端

 
  1. 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服务端

 
  1. root@ubuntu-14-chef:/tmp# dpkg -i chef-server-core_12.1.0-1_amd64.deb

3) 重新配置Chef服务端

现在运行下面的命令来启动所有的chef服务端服务,这一步也许会花费一些时间,因为它需要由许多不同一起工作的服务组成一个可正常运作的系统。

 
  1. root@ubuntu-14-chef:/tmp# chef-server-ctl reconfigure

chef服务端启动命令'chef-server-ctl reconfigure'需要运行两次,这样就会在安装后看到这样的输出。

 
  1. Chef Client finished, 342/350 resources updated in 113.71139964 seconds
  2. opscode Reconfigured!

4) 重启系统

安装完成后重启系统使系统能最好的工作,不然我们或许会在创建用户的时候看到下面的SSL连接错误。

 
  1. ERROR: Errno::ECONNRESET: Connection reset by peer - SSL_connect

5) 创建新的管理员

运行下面的命令来创建一个新的管理员账户及其配置。创建过程中,用户的RSA私钥会自动生成,它需要保存到一个安全的地方。--file选项会保存RSA私钥到指定的路径下。

 
  1. 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的安装包。

 
  1. 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的家目录下安装它。

 
  1. root@ubuntu-14-chef:~# chef-server-ctl install opscode-manage --path /root

3) 重启Chef Manage和服务端

安装完成后我们需要运行下面的命令来重启chef manage和服务端。

 
  1. root@ubuntu-14-chef:~# opscode-manage-ctl reconfigure
  2. root@ubuntu-14-chef:~# chef-server-ctl reconfigure

Chef Manage网页控制台

我们可以使用localhost或它的域名来访问网页控制台,并用已经创建的管理员登录

chef amanage

chef amanage

1) Chef Manage创建新的组织

你或许被要求创建新的组织,或者也可以接受其他组织的邀请。如下所示,使用缩写和全名来创建一个新的组织。

Create Org

Create Org

2) 用命令行创建新的组织

我们同样也可以运行下面的命令来创建新的组织。

 
  1. root@ubuntu-14-chef:~# chef-server-ctl org-create linux Linoxide Linux Org. --association_user kashi --filename linux.pem

设置工作站

我们已经完成安装chef服务端,现在我们可以开始创建任何recipes(基础配置元素)、cookbooks(基础配置集)、attributes(节点属性),以及做一些其他修改。

1) 在Chef服务端上创建新的用户和组织

为了设置工作站,我们需要用命令行创建一个新的用户和组织。

 
  1. root@ubuntu-14-chef:~# chef-server-ctl user-create bloger Bloger Kashif bloger.kashif@gmail.com bloger123 --filename bloger.pem
  2. root@ubuntu-14-chef:~# chef-server-ctl org-create blogs Linoxide Blogs Inc. --association_user bloger --filename blogs.pem

2) 下载工作站入门套件

在工作站的网页控制台中下载并保存入门套件,它用于与服务端协同工作

Starter Kit

Starter Kit

3) 下载套件后,点击"Proceed"

starter kit

starter kit

用于工作站的Chef开发套件设置

Chef开发套件是一款包含开发chef所需的所有工具的软件包。它捆绑了由Chef开发的带Chef客户端的工具。

1) 下载 Chef  DK

我们可以从它的官网链接中下载开发包,并选择操作系统来下载chef开发包。

Chef DK

Chef DK

复制链接并用wget下载

 
  1. 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命令安装开发套件

 
  1. root@ubuntu-15-WKS:~# dpkg -i chefdk_0.6.2-1_amd64.deb

3) Chef DK 验证

使用下面的命令验证客户端是否已经正确安装。

 
  1. root@ubuntu-15-WKS:~# chef verify

 
  1. Running verification for component 'berkshelf'
  2. Running verification for component 'test-kitchen'
  3. Running verification for component 'chef-client'
  4. Running verification for component 'chef-dk'
  5. Running verification for component 'chefspec'
  6. Running verification for component 'rubocop'
  7. Running verification for component 'fauxhai'
  8. Running verification for component 'knife-spork'
  9. Running verification for component 'kitchen-vagrant'
  10. Running verification for component 'package installation'
  11. Running verification for component 'openssl'
  12. ..............
  13. ---------------------------------------------
  14. Verification of component 'rubocop' succeeded.
  15. Verification of component 'knife-spork' succeeded.
  16. Verification of component 'openssl' succeeded.
  17. Verification of component 'berkshelf' succeeded.
  18. Verification of component 'chef-dk' succeeded.
  19. Verification of component 'fauxhai' succeeded.
  20. Verification of component 'test-kitchen' succeeded.
  21. Verification of component 'kitchen-vagrant' succeeded.
  22. Verification of component 'chef-client' succeeded.
  23. Verification of component 'chefspec' succeeded.
  24. Verification of component 'package installation' succeeded.

4) 连接Chef服务端

我们将创建 ~/.chef目录,并从chef服务端复制两个用户和组织的pem文件到该目录下。

 
  1. root@ubuntu-14-chef:~# scp bloger.pem blogs.pem kashi.pem linux.pem root@172.25.10.172:/.chef/

 
  1. root@172.25.10.172's password:
  2. bloger.pem 100% 1674 1.6KB/s 00:00
  3. blogs.pem 100% 1674 1.6KB/s 00:00
  4. kashi.pem 100% 1678 1.6KB/s 00:00
  5. linux.pem 100% 1678 1.6KB/s 00:00

5) 编辑配置来管理chef环境 **

现在使用下面的内容创建"~/.chef/knife.rb"。

 
  1. root@ubuntu-15-WKS:/.chef# vim knife.rb
  2. current_dir = File.dirname(__FILE__)
  3. log_level :info
  4. log_location STDOUT
  5. node_name "kashi"
  6. client_key "#{current_dir}/kashi.pem"
  7. validation_client_name "kashi-linux"
  8. validation_key "#{current_dir}/linux.pem"
  9. chef_server_url "https://172.25.10.173/organizations/linux"
  10. cache_type 'BasicFile'
  11. cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
  12. cookbook_path ["#{current_dir}/../cookbooks"]

创建knife.rb中指定的“~/cookbooks”文件夹。

 
  1. root@ubuntu-15-WKS:/# mkdir cookbooks

6) 测试Knife配置

运行“knife user list”和“knife client list”来验证knife是否工作。

 
  1. root@ubuntu-15-WKS:/.chef# knife user list

第一次运行的时候可能会看到下面的错误,这是因为工作站上还没有chef服务端的SSL证书。

 
  1. 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
  2. ERROR: Could not establish a secure connection to the server.
  3. Use `knife ssl check` to troubleshoot your SSL configuration.
  4. If your Chef Server uses a self-signed certificate, you can use
  5. `knife ssl fetch` to make knife trust the server's certificates.

要解决上面的命令的错误,运行下面的命令来获取ssl证书,并重新运行knife user和client list,这时候应该就可以了。

 
  1. root@ubuntu-15-WKS:/.chef# knife ssl fetch
  2. WARNING: Certificates from 172.25.10.173 will be fetched and placed in your trusted_cert
  3. directory (/.chef/trusted_certs).

knife没有办法验证这些是否是有效的证书。你应该在下载时验证这些证书的真实性。

在/.chef/trusted_certs/ubuntu-14-chef_test_com.crt下面添加ubuntu-14-chef.test.com的证书。

在上面的命令取得ssl证书后,接着运行下面的命令。

 
  1. root@ubuntu-15-WKS:/.chef#knife client list
  2. kashi-linux

配置与chef服务端交互的新节点

节点是执行所有基础设施自动化的chef客户端。因此,在配置完chef-server和knife工作站后,通过配置与chef-server交互的新节点,来将新的服务端添加到我们的chef环境下。

我们使用下面的命令来添加与chef服务端协同工作的新节点。

 
  1. root@ubuntu-15-WKS:~# knife bootstrap 172.25.10.170 --ssh-user root --ssh-password kashi123 --node-name mydns

 
  1. Doing old-style registration with the validation key at /.chef/linux.pem...
  2. Delete your validation key in order to use your user credentials instead
  3. Connecting to 172.25.10.170
  4. 172.25.10.170 Installing Chef Client...
  5. 172.25.10.170 --2015-07-04 22:21:16-- https://www.opscode.com/chef/install.sh
  6. 172.25.10.170 Resolving www.opscode.com (www.opscode.com)... 184.106.28.91
  7. 172.25.10.170 Connecting to www.opscode.com (www.opscode.com)|184.106.28.91|:443... connected.
  8. 172.25.10.170 HTTP request sent, awaiting response... 200 OK
  9. 172.25.10.170 Length: 18736 (18K) [application/x-sh]
  10. 172.25.10.170 Saving to: STDOUT
  11. 172.25.10.170
  12. 100%[======================================>] 18,736 --.-K/s in 0s
  13. 172.25.10.170
  14. 172.25.10.170 2015-07-04 22:21:17 (200 MB/s) - written to stdout [18736/18736]
  15. 172.25.10.170
  16. 172.25.10.170 Downloading Chef 12 for ubuntu...
  17. 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
  18. 172.25.10.170 to file /tmp/install.sh.26024/metadata.txt
  19. 172.25.10.170 trying wget...

之后我们可以在knife节点列表下看到创建的新节点,它也会在新节点下创建新的客户端。

 
  1. root@ubuntu-15-WKS:~# knife node list
  2. mydns

类似地我们只要通过给上面的knife命令提供ssh证书,就可以在chef设施上创建多个节点。

总结

本篇我们学习了chef管理工具,并通过安装和配置设置基本了解了它的组件。我希望你在学习安装和配置Chef服务端以及它的工作站和客户端节点中获得乐趣。

本文来自云栖社区合作伙伴“Linux中国”,原文发布日期:2015-08-10

目录
相关文章
|
17天前
|
Ubuntu Windows
【Ubuntu/Arm】Ubuntu 系统如何链接有线网络(非虚拟机)?
【Ubuntu/Arm】Ubuntu 系统如何链接有线网络(非虚拟机)?
|
22天前
|
Ubuntu NoSQL 关系型数据库
Ubuntu系统下安装常用软件
Ubuntu系统下安装常用软件
46 0
Ubuntu系统下安装常用软件
|
3月前
|
存储 网络协议 Ubuntu
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
69 0
|
3月前
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统SSH服务端配置】
现在,你已经成功在Ubuntu系统上配置了SSH服务端。这将允许其他计算机通过SSH协议连接到你的Ubuntu系统,并进行远程管理和操作。请注意,远程访问有安全风险,建议在生产环境中采取必要的安全措施来保护系统。
39 3
|
3月前
|
Ubuntu 网络安全
百度搜索:蓝易云【ubuntu系统ufw开放端口教程】
现在,你已经成功在Ubuntu系统中使用ufw开放了指定的端口。请确保只开放必要的端口,并注意网络安全。
77 3
|
3月前
|
存储 Ubuntu
百度搜索:蓝易云【在ubuntu系统下安装配置onedrive步骤】
现在,你已经成功在Ubuntu系统下安装和配置了OneDrive,可以使用该工具与OneDrive云端存储进行同步。
40 0
|
3月前
|
Ubuntu
百度搜索:蓝易云【Ubuntu系统apt添加第三方PPA源教程】
现在,你已经成功在Ubuntu系统中添加了第三方PPA源。系统将会从该源获取更新和软件包。请注意,添加第三方PPA源时要确保其来源可信,以免引入不安全的软件包。
40 5
|
3月前
|
Ubuntu
百度搜索:蓝易云【Ubuntu系统永久自动挂载硬盘或分区教程】
现在,Ubuntu系统将会在每次启动时自动挂载指定的硬盘或分区,并且挂载将保持永久有效。请确保配置 `fstab`文件时使用正确的UUID和挂载目录名,以免出现挂载错误。
57 7
|
3月前
|
Ubuntu 测试技术 Linux
百度搜索:蓝易云【Ubuntu系统打RT实时内核补丁教程】
现在,你已经成功在Ubuntu系统上打上RT实时内核补丁,并且系统将使用RT内核运行,提供更好的实时性能。请注意,内核编译和替换是一项复杂的操作,建议在实施前备份重要数据,并在测试环境中进行验证。
34 2
|
3月前
|
Ubuntu 网络协议
百度搜索:蓝易云【ubuntu系统如何设置静态IP地址?】
现在,你已经成功在Ubuntu系统中设置了静态IP地址。系统将使用指定的静态IP地址进行网络连接。
29 0