背景:随着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. overflow-y:auto 回到顶部

    overflow-y     内容溢出元素框时发生的事情. overflow-y:auto        内容溢出元素框时自动出现滚动条,滑动滚动条显示溢出的内容. 滚动条回到顶部 var conta ...

  2. Python OOP(3) staticmethod和classmethod统计实例

    staticmethod 统计实例 #!python2 #-*- coding:utf-8 -*- class c1: amount_instance=0 def __init__(self): c1 ...

  3. java并发实现原子操作

    来自<java并发编程的艺术>.只是方便自己以后查找. 处理器如何实现原子操作 32位IA-32处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作.首先处理器会自动保证基 ...

  4. 第七篇、os、sys、random、time、datetime、logging

    一.sys 用于提供对Python解释器相关的操作: 1 2 3 4 5 6 7 8 9 sys.argv           命令行参数List,第一个元素是程序本身路径 sys.exit(n)   ...

  5. LINQ 学习路程 -- 查询操作 Expression Tree

    表达式树就像是树形的数据结构,表达式树中的每一个节点都是表达式, 表达式树可以表示一个数学公式如:x<y.x.<.y都是一个表达式,并构成树形的数据结构 表达式树使lambda表达式的结构 ...

  6. Python--基础文件读写操作

    1,open(),对文件进行读写操作之前,要先打开文件,获取文件的句柄: 懒人专用方法,文件打开后不用关闭 with open(r'somefile.txt','r+',encoding='utf8' ...

  7. queryRuner如何获得bean对象,当这个bean对象中包含其他对象的时候

    我们知道我们可以使用dbutil的QueryRunner下的query方法使用BeanHandler得到bean对象 但是,当我们在一个表和另一个表关联的时候,往往喜欢将另一个表的关联字段变成另一个b ...

  8. mysql字符串的隐式转换导致查询异常

    如果mysql某个字段(name)类型为varchar, 加了索引,在执行where查询的时候,传入了int的值,这样就会全表扫描,把每一条的值都转换成int(会出现"中国"-&g ...

  9. QListWidget拖放

    setDragEnabled() 允许拖 setAcceptDrops()允许放 setDragDropMode(QAbstractItemView.DragDrop)设置拖拽模式 setSelect ...

  10. Struts2 - 通过实现 Aware 接口访问 Web 资源

    Action 类通过可以实现某些特定的接口, 让 Struts2 框架在运行时向 Action 实例注入 parameters, request, session 和 application 对应的 ...