背景:随着DevOps 逐渐流行起来,越来越多的工作需要自动化处理,而chef就是其中一款能实现自动化管理的工具,掌握类似chef这样的自动化工具,相信会使你在未来的竞争中更具优势。
俗话说“好记性不如烂笔头”,以下记录一来为了记忆,二来希望能帮到对chef有兴趣的朋友们。
一、 简介:chef总共分成三部分,分别为chef-server、workstation和node:
Server:维护一套配置脚本(cookbook),与每个被管节点(node)交互并给出配置指令。
Workstation:定义cookbook,并将cookbook上传到chef server上,以保证被管节点能从chef server上取得最新的配置指令。
Node:被管节点,可以是任何机器(包括物理机与虚拟机),chef node通过workstation从chef-server取得配置指令。
二、 配置环境
名称 |
主机名 |
IP |
系统 |
内存 |
chef-server |
server01.zun1.com |
172.16.1.201 |
centos 7 |
1G |
workstation |
workstation.zun1.com |
172.16.1.202 |
centos 7 |
1G |
Node |
node1.zun1.com |
172.16.1.203 |
centos 7 |
1G |
三、chef-server的安装
1、 创建目录并切换:
$ mkdir –p /home/zun1/soft && cd /home/zun1/soft
2、 配置ntp时间服务器:
$ vim /etc/ntp.conf //如无此文件,请安装:yum install ntpd ----------------------------------------> server time.windows.com iburst serve s1b.time.edu.cn iburst $ ssudo systemctl restart ntpd //配置后如无效果,请安装:yum install chrony
3、 将三台主机名称加入hosts
$ sudo vim /etc/hosts -------------------------------------------> 172.16.1.201 server01.zun1.com 172.16.1.202 workstation.zun1.com 172.16.1.203 node1.zun1.com //保存后用scp复制到另外两台电脑
4、 安装chef-server
$ cd /home/zun1/soft $ wget https://packages.chef.io/files/stable/chef-server/12.15.8/el/7/chef-server-core-12.15.8-1.el7.x86_64.rpm $ sudo rpm –ivh chef-server-core-12.15.8-1.el7.x86_64.rpm $ sudo yum update –y $ sudo chef-server-ctl reconfigure
验证方法:能正常打开https://172.16.1.201 就表示安装成功了。
5、安装chef管理控制台
$ cd /home/zun1/soft $ wget https://packages.chef.io/files/stable/chef-manage/2.5.4/el/7/chef-manage-2.5.4-1.el7.x86_64.rpm $ sudo chef-server-ctl install chef-manage –path /home/jeff/soft/chef-manage-2.5.4-1.el7.x86_64.rpm $ sudo chef-server-ctl reconfigure $ sudo chef-manage-ctl reconfigure
6、创建管理用户
$ sudo chef-server-ctl user-create jeff jeff jeff [email protected] 123456 –filename /root/.chef/jeff.pem //登录用户为:jeff,密码为:123456
7、 打开页面登录:https://172.16.1.201 ,登录用户:jeff,密码:123456,然后创建组织zun1.com,简称zun1。
四、workstation的安装
1、 安装chefdk
$ cd /home/zun1/soft $ wget https://packages.chef.io/files/stable/chefdk/2.0.28/el/7/chefdk-2.0.28-1.el7.x86_64.rpm $ sudo rpm –ivh chefdk-2.0.28-1.el7.x86_64.rpm
2、 配置NTP时间服务器,配置方法同上,此处不再赘述。
3、 配置环境变量:
$ echo ‘eval "$(chef shell-init bash)"‘ >> ~/.bash_profile $ source ~/.bash_profile $ which ruby //验证安装结果 -------------------------------------> /opt/chefdk/embedded/bin/ruby //证明安装成功
4、 下载chef-starter.zip的方法:进入chef-server管理页面后:Administrator -> Starter Kit -> Download Start Kit,如下图:
5、 复制到/data/下,并更名
$ sudo mkdir –p /data && cd /data/ $ unzip /home/zun1/chef-starter.zip /home/zun1 $ mv /home/zun1/chef-starter /home/zun1/chef-repo
6、 进行/data/chef-repo下验证安装结果,没报错则证明安装成功
$ cd /data/chef-repo $ knife ssl fetch $ knife ssl check $ knife nod list
五、Node的安装:node的安装跟workstation一样,都是安装chefdk
1、安装chefdk
$ cd /home/zun1/soft $ sudo rpm –ivh chefdk-2.0.28-1.el7.x86_64.rpm //将workstation的文件复制过来 $ echo ‘eval "$(chef shell-init bash)"‘ >> ~/.bash_profile $ source ~/.bash_profile
2、配置NTP时间,同上。
3、添加节点到服务器:
$ knife bootstrap 172.16.1.203 –ssh-user root –ssh-password redhat –node-name node1.zun1.com
4、进入登录界面查看节点:http://172.16.1.201
六、测试:给node安装apache,并创建一个主页
1、下载cookbook
$ knife cookbook site download learn_chef_httpd.tar.gz
2、 解压
$ tar zxvf learn_chef_httpd.tar.gz
3、 移动到对应的目录
$ mv learn_chef_httpd /data/chef-repo/cookbooks/
4、 上传到chef-server
$ knife cookbook upload learn_chef_httpd
5、 将cookbook加入runlist
$ knife bootstrap 172.16.1.203 –ssh-user root –ssh-password ‘redhat’ --sudo –use-sudo-password –node-name node1.zun1.com --run-list ‘recipe[learn_chef_httpd]’
6、 在workstation上执行
$ knife ssh ADDRESS ‘sudo chef-client’ –manual-list –ssh-user root –ssh-password ‘redhat’ //此处的ADDRESS貌似也可以是node的IP
7、 打开链接验证:http://172.16.1.203
PS:此配置参考自 https://wenku.baidu.com/view/7d297631657d27284b73f242336c1eb91a3733ea.html