首先大概解释一下Chef

Chef有三个重要的概念:(如上图所示)
它们的合作关系大致是这样的,
Workstation把资源或者说是一些要被运行的命令上传到Chef-Server上,
Nodes自动通过Chef-Server拿到属于自己的执行任务到本地执行,这样可达到一个将军指挥千军万马的效果:smirk:。

  1. Chef Server
    存放所有通过Workstation上传的资源,和用户等公共数据(用PostgreSQL)。
    可以干脆叫它为资源服务器,大家都可以与它通讯(用RabbitMQ ),
    本身提供一个在线管理工具叫chef-server-webui(用Nginx,包括它的rest-api)。
    Chef Server只能安装在linux系统上。
  2. Workstation
    简单理解为管理员操作机,通过安装的工具knife远程操作Chef-Server上的资源,或者注册Nodes等
    这个可以安装在任意系统上,包括windows
  3. 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,然后所有服务就会自动运行了,
所生成的配置文件,包括前面提到的postgresqlrabbitmq等,放在/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.rbvalidator.pem USER.pem,通过命令knife configure --initial生成!

在chef-server机器的/etc/chef-server目录下找到chef-validator.pemadmin.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
其中usernamepassword是虚拟机192.168.0.3SSH登录的用户名及密码。
参考交互信息:

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简单介绍和安装笔记的更多相关文章

  1. 自动化运维工具之 Ansible 介绍及安装使用

    一.初识Ansible 介绍: Absible 使用 模块(Modules)来定义配置任务.模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等.A ...

  2. 自动化运维工具ansible简单介绍

    ansible架构图 ansible安装(centos7环境下) yum update yum install ansible 验证ansible是否成功安装 ansible --version an ...

  3. 【运维--系统】nacos介绍和安装

    目录: 简介 安装java 安装mysql 安装nacos 附录 简介 Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服 ...

  4. Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令

    Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...

  5. 运维程序】简单的命令控制器(支持定时命令执行、重复定时任务命令和进程管理,开发这个小程序主要是为了方便管理服务进程)【个人github项目】

    一.前言: command-controller 一个运维程序,简单的命令控制器(支持定时命令执行和重复定时命令,开发这个程序主要是为了方便管理服务进程) 本来是要用python做的,但是之前做ffm ...

  6. 【运维程序】简单的命令控制器(支持定时命令执行、重复定时任务命令和进程管理,开发这个小程序主要是为了方便管理服务进程)【个人github项目】

    一.前言: command-controller 一个运维程序,简单的命令控制器(支持定时命令执行和重复定时命令,开发这个程序主要是为了方便管理服务进程) 本来是要用python做的,但是之前做ffm ...

  7. CocoaPods的简单介绍及安装和使用

    CocoaPods的简单介绍及安装和使用   一.CocoaPods是什么? 当你开发iOS应用时,会常常使用到非常多第三方开源类库.比方JSONKit.AFNetWorking等等. 可能某个类库又 ...

  8. docker 简单介绍与安装

    主机虚拟化(vmware,visual box等) type-Ⅰ type=Ⅱ 主机虚拟化是隔离最彻底的,但是由于多隔了一个虚拟的操作系统,性能会慢一些. 容器虚拟化(docker等) 隔离没有主机虚 ...

  9. openresty开发系列10--openresty的简单介绍及安装

    openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...

随机推荐

  1. java环境搭建系列:JDK从下载安装到简单使用

    最近,问的比较多的问题居然是jdk的问题,对于新手来说这确实有点难度,毕竟一个人经常上网浏览新闻和观看视频的人,一下子开始一门编程语言的环境搭建.这中间需要一个慢慢适应的过程.回想当初我在这个阶段也很 ...

  2. html5:地理信息 LBS基于地理的服务和百度地图API的使用

    地理位置请求 单次定位请求getCurrentPosition(请求成功函数,请求失败函数,数据收集方式) 多次定位请求watchPosition(请求成功函数,请求失败函数,数据收集方式) 关闭更新 ...

  3. P1038 神经网络

    #include <bits/stdc++.h> using namespace std; const int maxn = 105; struct node { int situatio ...

  4. ArcGIS Server 增加缓存路径

    Server缓存服务,由于缓存文件经常比较大,默认放在C盘下容易导致磁盘空间不够,因此Server提供了增加缓存路径的方法来解决该问题. 增加的路径有两种,一种是Server所在服务器增加一个和原缓存 ...

  5. MVC下载文件方式

    MVC下载文件方式 http://www.cnblogs.com/liang--liang/archive/2012/10/20/2732745.html 方式一: public FileStream ...

  6. 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...

  7. 用"僵尸对象"调试内存管理问题

    Cocoa提供了"僵尸对象"(Zombie Object)这个功能.启用这项调试功能之后,运行时系统会把所有已经回收的实例转化成特殊的"僵尸对象",而不会真正回 ...

  8. leetcode 111

    题目描述: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along th ...

  9. Java基础之扩展GUI——高亮元素、上下文菜单、移动旋转元素、自定义颜色(Sketcher 10)

    窗口应用程序. 本例在上一版的基础上实现了高亮元素.移动元素.上下文菜单.旋转元素.设置自定义颜色. 1.自定义常量包: // Defines application wide constants p ...

  10. Java Servlet(四):Servlet接口service工作(ServletRequest,ServletResponse对象)(jdk7+tomcat7+eclipse)

    本篇将会记录,Servlet接收客户端传递来的参数信息,并返回信息使用的对象,及这些对象的函数相关用法. 还是在java ee工程中进行操作,在WebContent目录下创建一个login.jsp文件 ...