CentOS 6.3下CHEF环境部署

一.前言:

初识Chef,我们可以先了解一下DevOps运动 http://zh.wikipedia.org/wiki/DevOps,简单点说,就是传统的软件组织将开发、IT运营和质量保障设为各自分离的部门,而DevOps运动的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。
所以Chef简单点说,就是DevOps运动中的一项重要工具成员,是一个同时面向开发与运维的集中管理工具。

就服务器的集中管理工具而言,知名度与Chef平分天下的是叫“Puppet”的工具,它们是OSS知名度排名最前的2个

想像一下我们现在需要搭建一台MySQL Database Slave服务器,安装过程我们手动操作了没过多久,又需要第二台,这时候我们会想,如果之后安装第一台的时候把操作过程执行的命令写成脚本,现在安装第二台,运行一下脚本就行了,节约时间而且不容易出错。

Chef就相当于这样的一个脚本管理工具,但功能要强大得多,可定制性强,Chef将脚本命令代码化,定制时只需要修改代码,安装的过程就是执行代码的过程。
打个比方,Chef就像一个制作玩具的工厂,它可以把一些原材料做成漂亮的玩具, 它有一些模板,你把原材料放进去,选择一个模板(比如怪物史莱克),它就会制造出这个玩具,服务器的配置也是这样,一台还没有配置的服务器,你给它指定一个模板(role或recipe), Chef就会把它配置成你想要的线上服务器。

Chef使用服务器—客户端模式管理所有需要配置的机器,使用Chef涉及至少三台机器:
一台开发机器(Workstation),在上面编写大餐的做法;
一台Chef服务器(server),管理所有要配置的Chef客户端,给它们下发配置信息;
多台Chef客户端(Node),就是我将要烹调出的大餐。

操作系统:CentOS-6.3-x86-64
CHEF:   chef-server-11.0.12-1.el6.x86_64

Server :     10.107.91.251 (chef.example.com)
Workstation:     10.107.91.251 (chef.example.com)
node:         10.107.91.252 (node1.example.com)

二.安装前的准备:(chef.example.com,node1.example.com)
1.关闭iptables
# service iptables stop

2.关闭SELINUX
# setenforce 0
# vi /etc/sysconfig/selinux
---------------
SELINUX=disabled
---------------

3.同步时间(重要)
# ntpdate asia.pool.ntp.org
# hwclock -w

4.安装ruby环境:
详见: http://showerlee.blog.51cto.com/2047005/1393485

三.chef-server安装:(chef.example.com)

1.下载chef-server安装包
进入页面http://www.opscode.com/chef/install,点击Chef Server标签,选择要下载的版本
或在终端下用以下命令下载11.0.12版本:

# wget -c --no-check-certificate https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-server-11.0.12-1.el6.x86_64.rpm

2.安装chef-server
终端内进入chef-server软件包所在目录,执行以下命令:

# rpm -ivh chef-server-11.0.12-1.el6.x86_64.rpm
注:请使用下载的软件包名称替换上面命令中的软件包名称.

3.修改本地FQDN名:
1).首先修改主机的hostname
# vi /etc/sysconfig/network
———————-———————-———————-———————-
HOSTNAME=chef.example.com
———————-———————-———————-———————-

2).修改本地host,添加server与node的FNDN
# echo "10.107.91.251 chef.example.com" >> /etc/hosts
# echo "10.107.91.252 node1.example.com" >> /etc/hosts
重启系统. 登录后验证:
# hostname -f
———————-———————-———————-———————-
chef.example.com
———————-———————-———————-———————-

3.配置chef-server
执行以下命令配置chef-server
# chef-server-ctl reconfigure

注:chef-server 10.x版本默认监听4000端口,chef-server 11.x监听443端口
SO若线上开启防火墙,需执行以下命令防火墙开启443端口
# iptables -I INPUT -p tcp --dport 443 -j ACCEPT
# service iptables save

现在浏览器打开https://10.107.91.251
输入:
username: admin
password: [email protected]
即可访问chef-server web页面.

四.chef-workstation安装:(chef.example.com)
1.安装chef-Client
进入页面http://www.opscode.com/chef/install,点击Chef Client标签,选择要下载的版本.
本例使用11.12.4-1版本:

# wget -c --no-check-certificate https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.12.4-1.el6.x86_64.rpm
# rpm -ivh chef-11.12.4-1.el6.x86_64.rpm

2.安装配置git
1).yum安装git:
# yum -y install git

2).进入root主目录,git克隆chef repository
# su -
# cd ~
# git clone git://github.com/opscode/chef-repo.git
————————————————————————————————————————————————————————————
Initialized empty Git repository in /root/chef-repo/.git/
remote: Reusing existing pack: 223, done.
remote: Total 223 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (223/223), 45.77 KiB | 37 KiB/s, done.
Resolving deltas: 100% (57/57), done.
————————————————————————————————————————————————————————————

2.配置chef-workstation
运行命令 knife configure -i ,配置过程如下所示(只需填写chef repository一项:/root/chef-repo,其他项使用默认值):

# knife configure --initial
————————————————————————————————————————————————————————————
WARNING: No knife configuration file found
Where should I put the config file? [/root/.chef/knife.rb]
Please enter the chef server URL: [https://chef.example.com:443]
Please enter a name for the new user: [root]
Please enter the existing admin name: [admin]
Please enter the location of the existing admin‘s private key: [/etc/chef-server/admin.pem]
Please enter the validation clientname: [chef-validator]
Please enter the location of the validation key: [/etc/chef-server/chef-validator.pem]
Please enter the path to a chef repository (or leave blank): /root/chef-repo
Creating initial API user...
Please enter a password for the new user: 123456

注:这里输入API user密码(后面要使用)

Created user[root]
Configuration file written to /root/.chef/knife.rb
————————————————————————————————————————————————————————————
注: 没有出现Please enter a name for the new user: [root] 检查chef-server的443端口是否可以访问.

五.chef-workstation与chef-server不在同一服务器上的配置方法

(本例server与workstation在同一服务器,如无特殊需可略过这部分)

1.将chef-server的域名解析添加至chef-workstation的hosts文件
# echo "10.107.91.251 chef.example.com" >>/etc/hosts

2.在chef-workstation先创建/root/.chef目录,并将chef服务器上的/etc/chef-server/admin.pem和/etc/chef-server/chef-validator.pem文件拷贝到此目录
# mkdir ~/.chef
# scp chef.example.com:/etc/chef-server/admin.pem ~/.chef
# scp chef.example.com:/etc/chef-server/chef-validator.pem ~/.chef

3.执行knife configure -i命令进行初始化, 然后删除~/.chef/admin.pem
# knife configure --initial
# rm ~/.chef/admin.pem

4.knife configure配置过程:
1.server URL修改为chef服务器的地址https://chef.example.com:443,
2.admin‘s private key路径改为/root/.chef/admin.pem
3.validation key路径改为/root/.chef/chef-validation.pem
4.chef repository地址输入/root/chef-repo,其余项保持默认值.

# knife configure --initial
————————————————————————————————————————————————————————————
Overwrite /root/.chef/knife.rb? (Y/N) Y
Please enter the chef server URL: [https://workstation:443] https://chef.example.com:443
Please enter a name for the new user: [root]
Please enter the existing admin name: [admin]  
Please enter the location of the existing admin‘s private key: [/etc/chef-server/admin.pem] /root/.chef/admin.pem
Please enter the validation clientname: [chef-validator]
Please enter the location of the validation key: [/etc/chef-server/chef-validator.pem] /root/.chef/chef-validator.pem
Please enter the path to a chef repository (or leave blank): /root/chef-repo
Creating initial API user...
Please enter a password for the new user: 123456
注:这里输入API user密码(后面要使用)
Created user[root]
Configuration file written to /root/.chef/knife.rb
————————————————————————————————————————————————————————————

5.配置ruby路径
chef默认集成了一个ruby的稳定版本,需修改PATH变量,保证chef集成的ruby被优先使用.
# echo ‘export PATH="/opt/chef/embedded/bin:$PATH"‘ >> ~/.bash_profile && source ~/.bash_profile

六.验证chef-workstation
执行knife client list命令返回client列表则配置成功.
# knife client list
——————————————————
chef-validator
chef-webui
——————————————————

七.chef-node配置 (node1.example.com)

node即为被chef-server配置管理的服务器

1.修改本地FQDN名:

1).首先修改主机的hostname
# vi /etc/sysconfig/network
———————-———————-———————-———————-
HOSTNAME=node1.example.com
———————-———————-———————-———————-

2).修改本地host,添加本机和server的FNDN
# echo "10.107.91.251 chef.example.com" >> /etc/hosts
# echo "10.107.91.252 node1.example.com" >> /etc/hosts
重启系统. 登录后验证:
# hostname -f
———————-———————-———————-———————-
node1.example.com
———————-———————-———————-———————-

2.在chef-worksation执行下面命令添加并配置node
# knife bootstrap node1.example.com -x root -P 123456
注:
chef-workstation通过ssh连接到node1(10.107.91.252)上执行bootstrap脚本(chef-workstation /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.6.0/lib/chef/knife/bootstrap/chef-full.erb)可以使用自定义的bootstrap脚本对node进行初始化配置.

node1会下载https://www.opscode.com/chef/install.sh脚本. 脚本检查操作系统类型并在网络上下载符合此系统的chef版本进行安装(下载安装较慢). 可以在node上预先安装chef(见workstation安装chef部分)跳过此脚本.
———————-———————-———————-———————-—-———————-—-———————-
Connecting to node1.example.com
node1.example.com Starting first Chef Client run...
node1.example.com [2014-05-08T15:53:22+08:00] WARN:
node1.example.com * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
node1.example.com SSL validation of HTTPS requests is disabled. HTTPS connections are still
node1.example.com encrypted, but chef is not able to detect forged replies or man in the middle
node1.example.com attacks.
node1.example.com
node1.example.com To fix this issue add an entry like this to your configuration file:
node1.example.com
node1.example.com ```
node1.example.com   # Verify all HTTPS connections (recommended)
node1.example.com   ssl_verify_mode :verify_peer
node1.example.com
node1.example.com   # OR, Verify only connections to chef-server
node1.example.com   verify_api_cert true
node1.example.com ```
node1.example.com
node1.example.com To check your SSL configuration, or troubleshoot errors, you can use the
node1.example.com `knife ssl check` command like so:
node1.example.com
node1.example.com ```
node1.example.com   knife ssl check -c /etc/chef/client.rb
node1.example.com ```
node1.example.com
node1.example.com * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
node1.example.com
node1.example.com Starting Chef Client, version 11.12.4
node1.example.com Creating a new client identity for node1.example.com using the validator key.
node1.example.com resolving cookbooks for run list: []
node1.example.com Synchronizing Cookbooks:
node1.example.com Compiling Cookbooks...
node1.example.com [2014-05-08T15:53:25+08:00] WARN: Node node1.example.com has an empty run list.
node1.example.com Converging 0 resources
node1.example.com
node1.example.com Running handlers:
node1.example.com Running handlers complete
node1.example.com
node1.example.com Chef Client finished, 0/0 resources updated in 2.393659851 seconds
———————-———————-———————-———————-—-———————-—-———————-

查看是否连接node1成功:
# knife node list
———————-———————-———————
node1
———————-———————-———————

从上面可以看出node1已经成功注册到了chef-server中,整个环境 chef-workstation => chef-server => chef-client-1 已经搭建成功。

八.登陆server web后台
1.修改浏览器本机HOST,这里笔者使用的是MAC系统
# vi /etc/hosts
———————-———————-———————
10.107.91.251 chef.example.com
10.107.91.252 node1.example.com
———————-———————-———————

2.访问https://chef.example.com

如图:

大功告成.......

CentOS 6.3下CHEF环境部署

时间: 2024-11-07 00:53:51

CentOS 6.3下CHEF环境部署的相关文章

CentOS 6.3下CHEF批量部署APACHE

之前的博文我介绍了如何搭建CHEF环境以及创建编写cookbook,resipes用来批量将cookbook下发到客户端执行相应的部署操作. NOW,本篇文档我们会详细介绍如何利用CHEF独有的框架语言来批量部署安装APACHE,并加载其HTTPS模块等功能. 相信如果你看了本篇文档,利用CHEF实现一个批量自动化部署将不是什么难事. CHEF环境部署详见: http://showerlee.blog.51cto.com/2047005/1408467 操作系统:CentOS-6.3-x86-6

Linux系统下Jsp环境部署

-------本文大纲 简介 Jsp环境部署 Tomcat目录结构 SHOP++网上商城系统安装 --------------- 一.简介 JSP JSP(Java Server Pages)是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动态网页技术标准.在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp).简单地说,jsp就是可能包含了java程序段的html文件(由ja

CentOS 6.5下JIRA安装部署

JIRA简介: JIRA:专业的缺陷跟踪和项目管理软件 JIRA是一个项目跟踪管理工具,帮助团队创建计划任务.构建并发布优秀的产品.全球成千上万的团队选择JIRA,用JIRA来捕获.组织管理缺陷.分配任务,跟踪团队的活动.不论在桌面PC还是移动终端设备上,JIRA都能完美的运行,帮助团队完成工作. 更多的介绍这里就不详细列出了:http://www.unlimax.com/jira.html及http://www.confluence.cn CentOS 6.5安装配置Jira.Confluen

Docker下lamp环境部署!!!

项目背景: 在我们的web项目开发过程.软件测试环境.项目上线环境中我们经常需要搭建lamp环境,你可能不想每个应用场景都去搭建一个lamp环境,这个时候我们可以利用docker(容器)去把我们从繁琐的环境中解放出来,让我们更倾向于业务本身. 实验环境: vmware workstation 11 centos7.0的系统下 服务器:ip:192.168.0.33 SecureCRT (ssh远程连接软件) docker-1.8.2-10.el7.centos.x86_64 软件介绍: 下面是两

windows下Nodejs环境部署

前言 Nodejs是基于v8引擎的轻量级框架,其特点为事件驱动.非阻塞.单线程.异步回调等. Nodejs相对于其他运行在服务器端的语言,使用方便. 本文将介绍windows下Nodejs的环境搭建. 下载 nodejs下载地址:https://nodejs.org/download/ mongodb下载地址:http://www.mongodb.org/downloads 安装 将下载的文件分别安装即可. 安装完成后,可通过: node -v:查看nodejs版本. npm -v:查看npm版

centos 6.5下KVM环境搭建

一.操作系统配置 1. 使用root权限登录 2. 修改内核模式为兼容内核启动 vim /boot/grub/grub.conf 主要修改default=1 3. 关闭selinux 两种方式:1.使用setenforce 0命令:立即生效,重启后失效. 2.修改配置文件,vim /etc/selinux/config:重启后生效. 主要修改SELINUX=disabled 注:可以使用getenforce命令查看selinux状态 4.关闭防火墙 service iptables stop c

Centos7下SVN环境部署及使用记录

1)SVN简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库(repository) 中. 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动. 这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史. 1.1 SVN相关概念 repository:源代码库,源代码统一存放的位置 Checkout:提取,当你手上没有源代码的时候,你需要从repository checko

Centos 不影响原来python环境部署python3.5

1.下载python3.5 源码包 wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz 2.解压配置编译安装 tar -zxvf Python-3.5.1.tgz ./configure --prefix=/usr/local make -j 2  # -j 指定用几个CPU内核来编译,可以提高编译的效率,节约时间,我机器是双核 make altinstall  #这句的关键作用就是不影响之前的版本,安装好后,使用pytho

CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器

一.简介 LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端.它提供了对日志的简单浏览.搜索.基本分析和一些图表报告的功能.数据可以从数据库或一般的syslog文本文件中获取,所以LogAnalyzer不需要改变现有的记录架构.基于当前的日志数据,它可以处理syslog日志消息,Windows事件日志记录,支持故障排除,使用户能够快速查找日志数据中看出问题的解决方案. LogAnalyzer 获取客户端日志会有两种保存模式,一种是直接读取客户端/var/log/目录下的