运维神器Chef简单介绍和安装笔记
首先大概解释一下Chef
Chef有三个重要的概念:(如上图所示)
它们的合作关系大致是这样的,
Workstation把资源或者说是一些要被运行的命令上传到Chef-Server上,
Nodes自动通过Chef-Server拿到属于自己的执行任务到本地执行,这样可达到一个将军指挥千军万马的效果:smirk:。
- Chef Server
存放所有通过Workstation上传的资源,和用户等公共数据(用PostgreSQL)。
可以干脆叫它为资源服务器,大家都可以与它通讯(用RabbitMQ ),
本身提供一个在线管理工具叫chef-server-webui
(用Nginx,包括它的rest-api)。
Chef Server只能安装在linux系统上。 - Workstation
简单理解为管理员操作机,通过安装的工具knife远程操作Chef-Server上的资源,或者注册Nodes等
这个可以安装在任意系统上,包括windows - Nodes
一些客户端的机子,它们是内部装有一个工具叫做Chef-Client,这东西会自动到Chef-Server上获取自己的要执行命令清单
可以安装在任意系统上,包括windows
Chef安装
安装环境为3台Ubuntu13的虚拟机(应该看出来为什么是3台了吧)和Chef11。
注意,在开始之前先把所有机器的时间更新一下,sudo ntpdate ntp.ubuntu.com
,不然无法通过登录认证:worried:。
Chef提供两个安装包,一个是Server,一个是Client,其中Client包括Chef-Client和Workstation用到的knife,
也就是说Nodes和Workstation上的安装都是这个包。
下载Chef
Chef-11的安装特别简单,官方下载(传送门:http://www.getchef.com/chef/install/),里面包括Server和Client的下载,
注意Server在第二个选项卡里,选择相应的操作系统和版本就会出现下载链接。
安装命令:
//ChefServer安装//在第一台虚拟机上运行
dpkg -i chef-server_11.1.1-1_amd64.deb
//Chef-Client安装//在第二台和第三台虚拟机上运行,也就是Workstation和Node
dpkg -i chef_11.12.8-2_amd64.deb
Chef Server安装官方参考:http://docs.opscode.com/open_source/install_server.html
Chef-Client安装官方参考:http://docs.opscode.com/chef/install_workstation.html
运行和配置Chef
怎么让这三个东西一起工作起来呢,其实也很简单,只是开始有些概念上的东西比较模糊导致无从下手。
让Chef-Server跑起来
在第一台Ubuntu虚拟机上进行。
执行完上面的安装过程以后,运行一个配置初始化命令sudo chef-server-ctl reconfigure
,然后所有服务就会自动运行了,
所生成的配置文件,包括前面提到的postgresql
,rabbitmq
等,放在/etc/chef-server/chef-server-running.json
如果你需要自定义其中的某些配置,需要创建文件/etc/chef-server/chef-server.rb
,一个基于ruby语法的配置文件
官方参考:http://docs.opscode.com/open_source/config_rb_chef_server.html
所有配置说明和实例:http://docs.opscode.com/config_rb_chef_server_optional_settings.html
修改完成后通过sudo chef-server-ctl reconfigure
命令重新生成配置文件,并自动重启有变化的服务。
更多Chef-Server操作命令请运行chef-server-ctl -h
查看
官方参考:http://docs.opscode.com/open_source/ctl_chef_server.html。
现在可以通过这台机器的ip访问chef-server-webui
,用户名:admin
,密码:p@ssw0rd1
。
远程REST API请参考:http://docs.opscode.com/open_source/api_chef_server.html
运行Chef Workstation
在第二台Ubuntu虚拟机上进行。
克隆Workstation的目录结构:chef-repo
方法:git clone git://github.com/opscode/chef-repo.git
,当然你要安装git
sudo apt-get update && sudo apt-get install git
;
生成认证文件:
在chef-repo
目录下创建一个目录.chef
来存储workstation与server的交互认证和一些server的配置信息。
主要有三个文件:knife.rb
,validator.pem
USER.pem
,通过命令knife configure --initial
生成!
在chef-server机器的/etc/chef-server
目录下找到chef-validator.pem
和admin.pem
两个私钥拷贝到刚才创建的.chef
目录下,
然后在chef-repo
目录下执行knife configure --initial
,请参考以下交互信息:
admin1@localhost:~/chef-repo$ knife configure --initial
WARNING:No knife configuration file found
Where should I put the config file?[/home/admin1/.chef/knife.rb]/home/admin1/chef-repo/.chef/knife.rb
Please enter the chef server URL:[https://localhost:443] https://ubuntu:443Please enter a name for the new user:[admin1] chefuser5
Please enter the existing admin name:[admin]Please enter the location of the existing admin's private key: [/etc/chef-server/admin.pem] /home/admin1/chef-repo/.chef/admin.pem
Please enter the validation clientname: [chef-validator]
Please enter the location of the validation key: [/etc/chef-server/chef-validator.pem] /home/admin1/chef-repo/.chef/chef-validator.pem
Please enter the path to a chef repository (or leave blank): /home/admin1/chef-repo/cookbooks
Creating initial API user...
Please enter a password for the new user:
Created user[chefuser5]
Configuration file written to /home/admin1/chef-repo/.chef/knife.rb
没什么问题的话就成功了,通过命令knife client list
来测试是否安装成功:v:!
启动一个Chef Node
在第二台Ubuntu虚拟机也就是Workstation上进行,并假设第三台虚拟机的IP为192.168.0.3
。
通过Workstation注册这台Node,命令:(在chef-repo目录下)
knife bootstrap 192.168.0.3 -x username -P password --sudo
其中username
和 password
是虚拟机192.168.0.3
上SSH
登录的用户名及密码。
参考交互信息:
admin1@localhost:~/chef-repo$ knife bootstrap 192.168.0.3-x admin1 -P 111111--sudo
Connecting to 192.168.0.3192.168.0.3 knife sudo password:Enter your password:192.168.0.3192.168.0.3Starting first ChefClient run...192.168.0.3[2014-06-13T10:14:07+08:00] WARN:192.168.0.3****************************************192.168.0.3 SSL validation of HTTPS requests is disabled. HTTPS connections are still
192.168.0.3 encrypted, but chef is not able to detect forged replies or man in the middle
192.168.0.3 attacks.192.168.0.3192.168.0.3To fix this issue add an entry like this to your configuration file:192.168.0.3192.168.0.3```
192.168.0.3 # Verify all HTTPS connections (recommended)
192.168.0.3 ssl_verify_mode :verify_peer
192.168.0.3
192.168.0.3 # OR, Verify only connections to chef-server
192.168.0.3 verify_api_cert true
192.168.0.3 ```192.168.0.3192.168.0.3To check your SSL configuration, or troubleshoot errors, you can use the
192.168.0.3`knife ssl check` command like so:192.168.0.3192.168.0.3```
192.168.0.3 knife ssl check -c /etc/chef/client.rb
192.168.0.3 ```192.168.0.3192.168.0.3****************************************192.168.0.3192.168.0.3StartingChefClient, version 11.12.8192.168.0.3 resolving cookbooks for run list:[]192.168.0.3SynchronizingCookbooks:192.168.0.3CompilingCookbooks...192.168.0.3[2014-06-13T10:15:13+08:00] WARN:Node localhost has an empty run list.192.168.0.3Converging0 resources
192.168.0.3192.168.0.3Running handlers:192.168.0.3Running handlers complete
192.168.0.3192.168.0.3ChefClient finished,0/0 resources updated in66.508732206 seconds
官方参考:http://docs.opscode.com/open_source/knife_bootstrap.html
其它参考
官方资料:http://docs.opscode.com/open_source/
安装参考:https://www.digitalocean.com/community/tutorials/how-to-install-a-chef-server-workstation-and-client-on-ubuntu-vps-instances
第二个链接讲解了管理员私钥(admin.pem)和校验私钥(chef-validator.pem)是如何产生的。
运维神器Chef简单介绍和安装笔记的更多相关文章
- 自动化运维工具之 Ansible 介绍及安装使用
一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...
- 自动化运维工具ansible简单介绍
ansible架构图 ansible安装(centos7环境下) yum update yum install ansible 验证ansible是否成功安装 ansible --version an ...
- 【运维--系统】nacos介绍和安装
目录: 简介 安装java 安装mysql 安装nacos 附录 简介 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服 ...
- Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令
Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...
- 运维程序】简单的命令控制器(支持定时命令执行、重复定时任务命令和进程管理,开发这个小程序主要是为了方便管理服务进程)【个人github项目】
一.前言: command-controller 一个运维程序,简单的命令控制器(支持定时命令执行和重复定时命令,开发这个程序主要是为了方便管理服务进程) 本来是要用python做的,但是之前做ffm ...
- 【运维程序】简单的命令控制器(支持定时命令执行、重复定时任务命令和进程管理,开发这个小程序主要是为了方便管理服务进程)【个人github项目】
一.前言: command-controller 一个运维程序,简单的命令控制器(支持定时命令执行和重复定时命令,开发这个程序主要是为了方便管理服务进程) 本来是要用python做的,但是之前做ffm ...
- CocoaPods的简单介绍及安装和使用
CocoaPods的简单介绍及安装和使用 一.CocoaPods是什么? 当你开发iOS应用时,会常常使用到非常多第三方开源类库.比方JSONKit.AFNetWorking等等. 可能某个类库又 ...
- docker 简单介绍与安装
主机虚拟化(vmware,visual box等) type-Ⅰ type=Ⅱ 主机虚拟化是隔离最彻底的,但是由于多隔了一个虚拟的操作系统,性能会慢一些. 容器虚拟化(docker等) 隔离没有主机虚 ...
- openresty开发系列10--openresty的简单介绍及安装
openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...
随机推荐
- Windows内核 内存管理基本概念
内存管理概念: 1)物理内存 PC上有三条总线:数据总线.地址总线和控制总线.32位CPU的寻址能力是4GB个字节,用户最多可以使用4GB的真实物理内存.PC中很多设备都提供了自己的设备内存,例如显卡 ...
- 【iCore3 双核心板】iCore3封装库及使用说明V1.0
iCore3封装库及使用说明下载链接: http://pan.baidu.com/s/1pLq23Qb iCore3 购买链接: https://item.taobao.com/item.htm?id ...
- zepto源码--核心方法(类数组相关)--学习笔记
从这篇起,在没有介绍到各类插件之前,后面将陆续介绍zepto对外暴露的核心方法.即$.fn={}里面的所有方法的介绍.会配合zepto的API进行介绍. 其实前面已经介绍了几个,如width,heig ...
- ionic下拉加载自动触发
ionic提供的下拉加载,是要滑动去下拉加载,没有提供api自动触发下拉加载,比如刚进页面,或者切换tab时想触发一次下拉加载. 添加如下service: angular.module('YourAp ...
- LUA脚本调用C场景,使用C API访问脚本构造的表
LUA调用C lua解析中集成了一些系统服务, 故脚本中可以访问系统资源, 例如, lua脚本可以调用文件系统接口, 可以调用数学库, 但是总存在一些lua脚本中访问不到的系统服务或者扩展功能, 如果 ...
- eclipse远程debug
由于一般比较正规项目,都会有好几个版本,有时候在测试版本的时候,一切都好好的,然后提交到其他版本之后会有各种各样的问题,这个时候如果不能快速准确的定位到问题,那么我们就需要用 eclipse远程deb ...
- MFC 框架技术简单研讨
引用:http://www.cnblogs.com/chinazhangjie/archive/2011/09/20/2181986.html 正文: 第一讲 Win32 App 和 MFC Fr ...
- html5,导航
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- php递归无限极分类实例
无限级分类原理简介 无限分类看似"高大上",实际上原理是非常简单的 .无限分类不仅仅需要代码的巧妙性,也要依托数据库设计的合理性.要满足无限级分类,数据库需要有两个必须的字段,id ...
- C语言回顾-函数和位运算
1.函数的概述 功能独立的代码块 C语言由若干函数组成 1)从定义分,库函数和用户定义函数两种 2)从返回值分,有返回值函数和无返回值函数 3)从参数分,无参函数和有参函数 2.形参和实参 1)形参定 ...