背景:随着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/chrony.conf                              //如无此文件,请安装:yum install chronyd -y
---------------------------------------->
server time.windows.com iburst
server s1b.time.edu.cn iburst
$ sudo systemctl start chronyd
$ sudo systemctl enable chronyd       //查看是否生效:chronyc sources -v

  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                  //接着按ESC,然后输入yes确定接受协议后方能配置完成

  6、创建管理用户

 $ sudo chef-server-ctl user-create jeff jeff lee 8888888@qq.com 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、添加节点到服务器:

$ cd /data/chef-repo
$ 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

  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、  打开链接验证:http://172.16.1.203

  7、下图为chef-server后台界面

注意事项:新节点如果添加不进去,请注意排查以下几个问题

1、时间同步;

2、hosts文件需添加对应的IP+主机名称;

3、selinux

PS:此配置参考自  https://wenku.baidu.com/view/7d297631657d27284b73f242336c1eb91a3733ea.html

Centos 7安装与配置chef的更多相关文章

  1. 在 CentOS 上安装和配置 OpenNebula

    转自:http://www.aikaiyuan.com/4889.html 我们提到的云计算一般有三种类型:软件即服务(Software as a Service, SaaS),平台即服务(Platf ...

  2. CentOS 7 安装 Nginx 配置反向代理

    Linux使用Nginx Yum存储库上安装Nginx,适用于Red Hat Enterprise Linux和CentOS系统. 1.添加设置Nginx Yum存储库 在CentOS中首次安装Ngi ...

  3. 阿里云CentOs服务器 安装与配置mysql数据库

    阿里云CentOs服务器 安装与配置mysql数据库 以上为Linux安装mysql数据库 Linux 安装mysql 数据库 一下为mysql 安装教程 Using username "r ...

  4. CentOS 7 安装、配置、使用 PostgreSQL 9.5及PostGIS2.2

    学习CentOS下安装使用PostgreSQL [安装过程] 1.添加RPM    yum install https://download.postgresql.org/pub/repos/yum/ ...

  5. CentOS SSH安装与配置

    SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议. 传 统的网络服务程序, ...

  6. centos下安装并配置tomcat

    1,安装jdk,centos默认安装了java-openjdk的环境,但是不带JDK,运行 yum install java-1.7.0-openjdk java-1.7.0-openjdk-deve ...

  7. CentOS 7 安装、配置、使用 PostgreSQL 10 安装及基础配置

    官网安装方法:https://www.postgresql.org/download/linux/redhat/ 卸载的话使用 yum remove 相应的安装 Install the reposit ...

  8. CentOS 7 安装、配置、使用 PostgreSQL 9.5(一)安装及基础配置

    一直不知道怎么读这个数据库的名字,在官网上找到了文档.PostgreSQL is pronounced Post-Gres-Q-L. 读音 What is PostgreSQL? How is it ...

  9. centos msyql 安装与配置

    Mysql具有简单易学.体积小等优点,深受编程开发初学者的喜爱 工具/原料 接入Internet的Centos计算机 安装Mysql 1 Centos 6.6下安装Mysql很简单, yum list ...

随机推荐

  1. Linux下自动清除MySQL日志文件

    MySQL运行过程中会生成大量的日志文件,占用不少空间,修改my.cnf文件配置bin-log过期时间,在Linux下自动清除MySQL日志文件 [mysqld] expire-logs-days= ...

  2. 图片的等比缩放和Logo水印

    /** * 等比缩放函数(以保存的方式实现) * @param string $picname 被缩放的处理图片源 * @param int $maxx 缩放后图片的最大宽度 * @param int ...

  3. 模仿jquery框架源码

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  4. 基于CocoaPods的iOS项目模块化实践

    什么是CocoaPods? CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has ove ...

  5. CKeditor插件开发流程(二)SyntaxHighlighter

    CKEditor整合SyntaxHighlighter实现代码高亮显示 1,版本说明 CKEditor:ckeditor_4.0.1_standard.zipSyntaxHighlighter:syn ...

  6. Python 3 面向对象进阶

    Python 3 面向对象进阶 一.    isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的 ...

  7. shell正则

    第五天 REGEXP:REGular EXPressionPattern: 正则表达式: Basic REGEXP:基本 Extended REGEXP:扩展 基本正则表达式: 字符匹配类:.: 任意 ...

  8. java深入探究07-jsp

    RequestDispatcher是web资源包装类<jsp:include>只能实现固定jsp文件名他可以翻译为:RequestDispatcher(filename).include( ...

  9. 2_flyweight, 轻量化模式

    ### instanced rendering. send shared data to gpu just once mesh, texture, leaves push every instance ...

  10. 【leetcode刷题笔记】Populating Next Right Pointers in Each Node II

    What if the given tree could be any binary tree? Would your previous solution still work? Note: You ...