下面是我们将要在本篇中要设置和配置Chef的主要组件。
安装Chef的要求和版本
我们将在下面的基础环境下设置Chef配置管理系统。
Chef服务端的安装和配置
Chef服务端是核心组件,它存储配置以及其他和工作站交互的配置数据。让我们在他们的官网https://www.chef.io下载最新的安装文件。
我使用下面的命令来下载和安装它。
(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'需要运行两次,这样就会在安装后看到这样的输出。
Chef Client finished, 342/350 resources updated in 113.71139964 secondsopscode 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 [email protected] 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 reconfigureroot@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 Linoxide Linux Org. --association_user kashi --filename linux.pem
设置工作站
我们已经完成安装chef服务端,现在我们可以开始创建任何recipes(基础配置元素)、cookbooks(基础配置集)、attributes(节点属性),以及做一些其他修改。
(1) 在Chef服务端上创建新的用户和组织
为了设置工作站,我们需要用命令行创建一个新的用户和组织。
root@ubuntu-14-chef:~# chef-server-ctl user-create bloger Bloger Kashif [email protected] bloger123 --filename bloger.pem root@ubuntu-14-chef:~# chef-server-ctl org-create blogs Linoxide Blogs Inc. --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文件到该目录下。
root@ubuntu-14-chef:~# scp bloger.pem blogs.pem kashi.pem linux.pem [email protected]:/.chef/
[email protected]'s password:bloger.pem 100% 1674 1.6KB/s 00:00blogs.pem 100% 1674 1.6KB/s 00:00kashi.pem 100% 1678 1.6KB/s 00:00linux.pem 100% 1678 1.6KB/s 00:00
(5) 编辑配置来管理chef环境 **
现在使用下面的内容创建"~/.chef/knife.rb"。
root@ubuntu-15-WKS:/.chef# vim knife.rbcurrent_dir = File.dirname(__FILE__) log_level :infolog_location STDOUTnode_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 failedERROR: Could not establish a secure connection to the server.Use `knife ssl check` to troubleshoot your SSL configuration.If your Chef Server 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 fetchWARNING: Certificates from 172.25.10.173 will be fetched and placed in your trusted_certdirectory (/.chef/trusted_certs).
knife没有办法验证这些是否是有效的证书。你应该在下载时验证这些证书的真实性。
在/.chef/trusted_certs/ubuntu-14-chef_test_com.crt下面添加ubuntu-14-chef.test.com的证书。
在上面的命令取得ssl证书后,接着运行下面的命令。
root@ubuntu-15-WKS:/.chef#knife client listkashi-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.170172.25.10.170 Installing Chef Client...172.25.10.170 --2015-07-04 22:21:16-- https://www.opscode.com/chef/install.sh172.25.10.170 Resolving www.opscode.com (www.opscode.com)... 184.106.28.91172.25.10.170 Connecting to www.opscode.com (www.opscode.com)|184.106.28.91|:443... connected.172.25.10.170 HTTP request sent, awaiting response... 200 OK172.25.10.170 Length: 18736 (18K) [application/x-sh]172.25.10.170 Saving to: ‘STDOUT’172.25.10.170100%[======================================>] 18,736 --.-K/s in 0s172.25.10.170172.25.10.170 2015-07-04 22:21:17 (200 MB/s) - written to stdout [18736/18736]172.25.10.170172.25.10.170 Downloading Chef 12 for 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_64172.25.10.170 to file /tmp/install.sh.26024/metadata.txt172.25.10.170 trying wget...
之后我们可以在knife节点列表下看到创建的新节点,它也会在新节点下创建新的客户端。
root@ubuntu-15-WKS:~# knife node listmydns
类似地我们只要通过给上面的knife命令提供ssh证书,就可以在chef设施上创建多个节点。
1. PuppetPuppet是一款开源工具,旨在为系统管理员大大简化自动化和报告工作。它基本上是款配置管理软件,有助于配置和维护企业网络中的服务器及其他系统。系统管理员通常每天要花大量时间重复做同样的任务。他们总是想要使这些任务实现自动化,以便有更多的时间来处理其他项目或学习新的概念和脚本语言。管理员可以通过编写脚本使任务实现自动化,但是在拥有大型网络的公司,脚本不是很方便。这时候,Puppet就大有用场,因为借助Puppet,你可以:为网络上的每个主机定义独特的配置设置不断监测网络,查找任何变动帮助高效地创建和管理用户帮助管理每个开源工具的配置设置。2. CHEFChef是另一款可供Linux系统管理员使用的流行的自动化工具。它用Ruby和Erlang编写,对于配置和维护公司的服务器大有帮助,无论贵公司拥有十台服务器还是上百台。它还可以帮助你将云端服务器与亚马逊EC2、OpenStack、RackSpace或谷歌云整合起来。Chef可以将你的基础设施转变成代码,那样借助代码,你只要更改几行代码,就能轻松撤下一台服务器,从而让你轻松管理服务器。物理节点还意味着:将变更内容部署到生产环境之前,可以对它轻松进行测试,你还可以轻松控制针对代码的每次更新的版本。Chef DK为你提供了测试和管理配置的所有工具,Chef Server充当你所有“菜谱”(recipe)的存储库,可以管理与服务器连接的每个节点。Chef客户软件在每个客户端上运行,时不时收到服务器方面的信息,从而更新其配置设置。3. CFEngine面向Linux系统管理员的下一款自动化工具是CFEngine,这是另一个领先的自动化系统,可帮助你轻松管理整套基础设施,并使之实现自动化。一旦你使用CFEngine为网络中的系统定义了配置,那么CF Engine就会自动确保配置符合规范。不用说,如果你的网络中有10个或100个节点,可以在短短几秒内更新或改动任何一个节点或所有节点。CFEngine之所以受到许多Linux系统管理员的青睐,是由于它运行成本低、响应速度快、具有自愈合功能。4. AnsibleAnsible是Red Hat提供的一款开源配置管理和IT企业自动化软件,随带一种简单的编程语言,让系统管理员能够高效地处理自动化和配置过程。Ansible由控制机器和控制机器控制的节点组成。节点是通过SSH来加以控制的。Ansible的主要特点之一是代理并不是部署到节点 ,但是完全借助SSH来进行通信。易学易用、具有一致性、高可靠性和安全性是让Ansible脱颖而出的其他特性。Ansible的唯一局限就是无法配置裸机和虚拟机。5. ForemanForeman是另一种用于取证分析的开源配置管理工具。Foreman提供了仪表板,我们可以通过仪表板来配置裸机服务器和虚拟机。默认情况下,无论我们何时安装Foreman,它都使用Puppet作为配置工具。不过借助插件,Foreman还支持与其他配置管理工具整合起来,比如Chef、Puppet、Ansible、Salt及其他众多工具。Foreman自动化工具还随带各种各样的接口,包括命令行接口、Web前端以及REST API。Foreman的其他一些显著功能包括如下:通过仪表板,管理Puppet模块和puppet类方面的改动;很容易从Foreman仪表板来管理Puppet环境;由于仪表板,创建主机群(Hosts Group)以及为主机群添加puppet模块变得很轻松;可以从Foreman仪表板,轻松添加Puppet模块或推送到节点。6. KatelloKatello是另一种开源自动化工具。换而言之,我们可以说Katello是一种开源版的Red Hat satellite Server如果我们不想花钱在企业产品及其支持上,就可以用它来代替Red Hat satellite Server。Katello已被Foreman收购,Foreman中的大部分功能在Katello中也得到了支持。Katello Server的主要功能如下:给基于Linux的服务器(RHEL和CentOS )打补丁使用Pulp Service来同步代码库使用Foreman进行各种配置它还可以处理订阅内容管理,并审计所有已部署的软件包借助Katello,你可以为所有主机创建主机群,另外还可以在单一主机或一群主机上批量执行 *** 作。7. NagiosNagios现在名为Nagios Core,它是一种开源自动化和监控工具,可以管理基础设施中的所有系统。它还提供警报服务,一旦察觉到你的网络中哪里有问题,就会提醒系统管理员。借助SNMP以及Nagios,系统管理员还可以控制并管理打印机、路由器和交换机。Nagios让我们得以创建事件处理工具,一旦某个应用程序及其服务停运,就可以自动重启出现故障的那个应用程序及其服务。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)