puppet 入门

puppet 入门
puppet 入门

puppet入门huangmingyou@https://www.360docs.net/doc/7d17462250.html, September30,2010

目录

1puppet简介3

1.1puppet是什么 (3)

1.2Hello world (4)

2puppet安装5

2.1debian系发行版安装puppet (5)

2.2redhat系发行版安装puppet (5)

2.3源代码安装puppet (6)

2.4配置c/s模式的puppet试验环境 (6)

3puppet语法8

3.1资源 (8)

3.2类和函数 (10)

3.3节点 (11)

3.4变量和数组 (12)

3.5模块 (13)

4几个常用的资源14

4.1file资源 (14)

4.2package资源 (15)

4.3service资源 (15)

4.4exec资源 (16)

5puppet高级内容17 6FAQ18

第0章2

前言

随着数据中心服务器的增加,传统的系统维护方法有点捉襟见肘,于是出现了配置管理软件,利用配置管理,可以把整个数据中心的服务器的所有配置内容管理起来,方便大规模的管理以及快速的部署。配置管理软件有很多,最出名的是cfengine,但是cfengine的语法比较晦涩,于是出现了puppet。puppet 的语法简单,对管理内容的抽象很好,很容易理解代码,因此最近正迅速的流行开来。puppet是免费开源软件。可以自由使用,现在google正使用puppet管理超过6000台的mac桌面电脑。这还是07年的数据。另外很多世界知名的it企业也在使用puppet,开源社区的fedora也使用puppet。国内的大公司也在准备从cfengine转移到puppet上面。

撰写本文的目的是让初学者对puppet有一个简单的认识能快速的入门,因为是利用空余时间完成,时间和精力有限,因此只讲解了最基本的内容,高级的内容都没讲解,如果你需要深入学习可以参考国内的中文wiki以及官方的文档。

本文欢迎转载,但是请保留作者信息。

第1章puppet简介

滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。

青山依旧在,几度夕阳红。

白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。

古今多少事,都付笑谈中。1

1.1puppet是什么

puppet2是一个为实现数据库中心自动化管理而设计的配置管理软件。基于c/s 架构。puppet的服务器端保存着所有的对客户端服务器的配置代码,在puppet里面叫做manifest.客户端下载manifest之后,可以根据manifest对服务器进行配置,例如软件包管理,用户管理和文件管理等等。

这样就把日常的系统管理任务代码化了,代码化的好处是可以分享,保存,避免重复劳动,也可以快速恢复以及快速的大规模部署服务器。同时,manifest 可以的根据客户端服务器的配置情况(硬件和软件)来动态生成。

Figure1.1:puppet structure

1

puppet被认为是下一代的cfengine,cfengine是一个老牌的配置管理软件

2

最开始是由luke开发的开源软件,现在开始公司化运作,但是软件依然是开源和免费的

第1章puppet简介4

在Unix/Linux系统管理的内容上面,通常就是管理软件包,用户,文件内容以及crontab等。在puppet的世界里面,这些内容都被看作是”资源“,每种资源都有对应的属性,例如软件包有安装和不安装的属性,文件有权限属性。puppet 的代码主要就是由这些资源和资源的属性构成。

为了快速的开始入门,建议你手上有一个可以随时使用的debian或者ubuntu 系统,方便快速安装puppet软件。装一个虚拟机是一个不错的选择。

1.2Hello world

puppet有两种执行模式,一是直接运行puppetd file.manifest二是puppetd--server https://www.360docs.net/doc/7d17462250.html,;前面一种是直接读取file.mainfest文件进行配置,后一种是从服务端下载manifest进行配置。为了先对puppet的资源概念有一个简单的认识,下面将给出一个直接执行manifest的例子,看看manifest怎么去写。首先通过执行apt-get puppet在系统上面安装好puppet客户端软件。然后编写一个manifest文件/tmp/1.pp,内容如下:

f i l e{

"/tmp/t e s t":

content=>"hello\n",

mode=>0644;

}

然后执行puppetd/tmp/1.pp;执行完成以后,将会在/tmp目录下面生成一个文件test,文件内容是"hello";第一行的file表明是什么类型的资源,第二行的"/tmp/test"叫做这个资源的title;用来代表这个资源,后面两行设置这个资源的属性。

再来看一个例子:

package{

["gcc","make"]:

ensure=>i n s t a l l e d;

}

这是配置一个包资源,包是gcc和make,第三行是指定这两个包的属性,在这里是installed,表示要安装这两个软件包。再次提醒:不同的资源有不同的属性,但是又有一些属性是所有资源都共有的,例如tag,这种属性叫做元属性。

第2章puppet安装

兵马未动,粮草先行

本章介绍puppet在各个linux发行版的安装,puppet的安装可以从源代码安装,也可以从二进制发行包安装,还可以从ruby的gem安装。下面分别介绍各种linux系统上最便捷的安装方法。顺便说一句,ruby1是puppet的开发语言。

2.1debian系发行版安装puppet

debian或者ubuntu的软件仓库已经包含了puppet软件,(注:软件包的名字可能会因为系统升级而变化,请先用apt-cache搜索一下),在安装软件之前先设置好主机名,因为puppet要使用ssl证书,证书包含主机名,修改主机名2首先编辑/etc/hostname,然后执行hostname-F/etc/hostname;主机名修改后重新登录系统。用下面的命令安装puppet。

apt?get i n s t a l l puppet puppetmaster

这样就安装好了客户端和服务器端的软件。

2.2redhat系发行版安装puppet

centos的官方软件库里面不包含puppet包,但是在epel项目里面有包含puppet包.epel是一个对rhel软件仓库的扩展,把一些有用的,但是rhel库没包含的软件收集在一起做成的一个软件仓库.因此首先在centos上面安装epel,以32位的centos5举例,其他版本以此类推rpm?Uvh https://www.360docs.net/doc/7d17462250.html,/pub/epel/5/i386/epel ?release?5?3.noarch.rpm

安装好epel库以后,就可以用下面的命令安装puppet了

yum i n s t a l l puppet

因为rhel没有yum包管理系统,因此需要先安装yum软件,再按照上面的方法安装puppet,不在赘述.

1

puppet的作者说当初选择了很多种开发语言,最后选择ruby是因为可以快速的开发并且满足他的需求

2

其他linux系统修改的方法可能会不一样

2.3源代码安装puppet

首先从https://www.360docs.net/doc/7d17462250.html,/projects/puppet/wiki/Downloading_Puppet下载最新的puppet稳定(stable)版本和facter稳定版。同时安装下面的依赖包

base64

cgi

digest/md5

etc

f i l e u t i l s

ipaddr

openssl

strscan

syslog

u r i

webrick

webrick/https

xmlrpc

然后先安装facter

t a r zxf facter?1.5.7.t a r.gz

cd facter?1.5.7

ruby i n s t a l l.rb

再安装puppet

t a r zxf puppet?0.25.4.t a r.gz

cd puppet?0.25.4

ruby i n s t a l l.rb

2.4配置c/s模式的puppet试验环境

工欲善其事,必先利其器!本节讲解如何配置c/s结构的puppet测试环境,生产环境也这样配置。首先准备两台虚拟主机,安装debian或者ubuntu系统。两台主机的主机名分别设置成https://www.360docs.net/doc/7d17462250.html,和https://www.360docs.net/doc/7d17462250.html,,参考前面的方法设置好主机名以后再安装puppet软件。以后用https://www.360docs.net/doc/7d17462250.html,代表客户端,用https://www.360docs.net/doc/7d17462250.html,代表服务器端。

请参考下面的步骤操作,这里选用debian和规定好主机名,是尽量减少初学者的麻烦。debian版本是5.1。

首先,在客户端安装puppet软件

apt?get i n s t a l l puppet

然后在服务器端安装puppetmaster软件

apt?get i n s t a l l puppetmaster

在客户端的/etc/hosts里面添加服务器的解析,例如:

echo"192.168.0.10?https://www.360docs.net/doc/7d17462250.html,">>/etc/hosts

puppet的客户端和服务器是通过ssl链接的,在服务器有一个自签名的根证书,在安装软件的时候自动生成。注意:要在安装软件以前先设置主机名,因为生成证书的时候要把主机名写入证书,如果证书生成好了再改主机名,就连不上,这是很多初学者遇到的问题。每个客户端的证书要经过根证书签名才能和服务器连接。所以首先要在客户端执行下面的命令来请求服务器签名证书。

puppetd??t e s t??server https://www.360docs.net/doc/7d17462250.html,

执行上面的命令,客户端将生成证书,并且把证书签名请求发到服务器端。登录到服务器端,执行下面的命令查看是否有客户端的证书请求:

pupetca??l i s t

如果看到了客户端的证书请求,用下面的命令对所有证书请求签名:

pupetca?s?a

这样,客户端和服务器端就配置好了,可以在服务器端配置好测试manifest代码进行测试。puppetmaster的第一个执行的代码是在/etc/puppet/manifest/site.pp因此这个文件必须存在,而且其他的代码也要通过代码来调用.现在,建立一个最简单的site.pp文件,内容如下node default{

f i l e{"/tmp/temp1.t x t":

content=>"hello";}

}

上面的代码对默认连入的puppet客户端执行一个操作,在/tmp目录生成一个temp1.txt文件,内容是hello,first puppet manifest.回到客户端,执行下面的命令:

pupetd??t e s t??server https://www.360docs.net/doc/7d17462250.html,

这样,客户端将会从服务器下载默认的执行代码,在/tmp目录下生成叫做temp1.txt的文件。

第3章puppet语法

磨刀不误砍柴功

本章简单介绍puppet的语法,因为puppet是用ruby编写的,因此puppet的语法也和ruby类似,都是很简单的面对对象的高级语言。再次强调,puppet把需要管理的内容抽象成为资源,每种资源有不同的属性,因此puppet语言就是描述这些资源的属性以及资源之间关系的语言。

3.1资源

定义一个资源,需要指定资源的类型和资源的title。看一个例子:

f i l e{

"/etc/passwd":

name=>"/etc/passd",

owner=>root,

group=>root,

mode=>644;

}

上面的代码让/etc/passwd的权限保持644,并且属于root用户和root用户组,file是指定资源的类型是"file"类型,第二行的"/etc/passwd"是资源的title,title的作用是让puppet能唯一标识这个资源。第三行的name指定了要对那个文件操作,默认情况下,name都等于title,所以很多时候name是可以省略的。这点要注意。看下面的例子:

f i l e{

"sshdconfig":

name=>$operatingsystem?{

s o l a r i s=>"/usr/l o c a l/etc/ssh/sshd_config",

default=>"/etc/ssh/sshd_config",

},

owner=>root,

group=>root,

mode=>644,

}

资源的title是sshdconfig,但是name却可以通过判定操作系统自己选择合适的值。这样,当其他的资源要依赖sshdconfig的时候,只需要说明依赖sshdconfig就行,不需要关心文件到底在什么路径下面。例如下面的代码:

service{"sshd":

subscribe=>F i l e[sshdconfig],

}

指定了一个sshd的服务,这个服务如果发现文件资源sshdconfig有变动,就会自己reload 配置文件。是不是很方便呢?注意上面的subscribe后面的File,第一个字母要大写,定义资源关系的时候,这里的字母要大写。

通常,在puppet代码里面可能会定义很多相同的资源,可以用[]把所有资源的title写在一起,例如:

f i l e{

["/etc/passwd","/etc/hosts"]:

owner=>root,

group=>root,

mode=>644;

}

你可能已经发现了,每次定义文件的时候如果都输入mode,owner,group会很繁琐,因此你可以在puppet的site.pp的开头定义资源的默认值。定义资源的默认值需要把资源的第一个资源大写。例如下面的代码让所有的file资源的mode是644,owner是root。

F i l e{owner=>root,mode=>644;}

默认值可以被后面的设置覆盖。

在puppet里面可以定义资源之间的关系,例如前面提到的,如果sshdconfig文件如果有修改,sshd服务就重启。puppet里面还有另一个资源关系,依赖。例如资源A依赖资源B,如果资源B不存在,资源A就不被执行。定义资源依赖的属性是requre。例如:

f i l e{

"/etc/apache2/port.conf":

content=>"80",

require=>Package["apache2"];

}

package{

"apache2":

ensure=>i n s t a l l e d;

}

file资源设置port.conf的内容为80,但是在设置file资源之前,要求apache2这个软件包配置好了。

3.2类和函数

类的作用是把一组资源收集在一个盒子里面,一起使用,例如把sshd和他的配置文件做成一个ssh类,其他的地方要用到就直接包含ssh类就可以了,方便写出更简洁的代码,便于维护。类可以继承。看一个具体的例子:

c l a s s ssh{

f i l e{

"/etc/ssh/sshd_config":

source=>"puppet://$f i l e s e r v e r/ssh/sshd_config

.cfg";

}

package{

"ssh":

ensure=>i n s t a l l e d;

}

service{

"ssh":

ensure=>running;

}

}

这里,file/etc/ssh/sshd_config的内容是从puppet服务器上面下载的,file资源的内容可以从别的url得到,也可以erb模板生成,erb模板是很强大的工具,这个后面会说到。package 资源安装ssh软件,service资源保证ssh服务在运行状态。类的继承这里就不讲了,因为是入门手册,另外用的不多。

puppet的官方文档里面是没有puppet函数这一说法的,而是叫做define;这里我写做函数,是因为define实现的功能其实和函数一样,而且在ruby里面也是用define来定义一个函数。这里写做函数,便于理解。

具体来看一个例子:

define svn_repo($path){

exec{

"/usr/bin/svnadmin?create?$path/$t i t l e":

unless=>"/bin/t e s t??d?$path",

}

}

svn_repo{

puppet_repo:

path=>"/var/svn_puppet"}

svn_repo{

other_repo:

path=>"/var/svn_other"}

首先用define定义了一个svn_repo函数,并且带了一个参数1。这个参数可以在函数里面的资源使用,在这里,exec资源根据提供的参数创建svn仓库。函数定义好以后,后面的两行就用定义好的函数创建了两个svn库。相信聪明的你已经完全明白了类和函数怎么用了吧2,那就不在赘述。

3.3节点

puppet如何区分不同的客户端,并且给不同的服务端分配manifest呢?puppet使用叫做node的语法来做这个事情,node后面跟客户端的主机名3,例如下面的例子:

node'https://www.360docs.net/doc/7d17462250.html,'{

include ssh

}

node'https://www.360docs.net/doc/7d17462250.html,'{

include apache,mysql,php

}

当主机https://www.360docs.net/doc/7d17462250.html,来连服务端时,只会执行node'https://www.360docs.net/doc/7d17462250.html,'里面的代码,不会执行node https://www.360docs.net/doc/7d17462250.html,里面的代码。正如前面所说,可以定义一个default 结点。比如没有针对host3的node配置,host3就用default的配置了。在这里include的意思是include类。同样,节点也支持继承,同样,也不打算深入。

使用节点的时候,尽量把所有的配置写成类,节点里面定义好变量和包含相应的类就可以了。保证代码的简洁。例如:

1

因为可以带参数,所以我觉得翻译成函数更好

2

注意看函数的使用语法,是不是和使用资源一样,path可以看作是属性

3

主机名在puppet里面很重要

node'https://www.360docs.net/doc/7d17462250.html,'{

$networktype="t e l e"

$nagioscheckport="80,22,3306"

include ssh,apache,mysql

}

3.4变量和数组

puppet也和其他语言一样,支持变量和数组,puppet用$符号定义变量,变量的内容用双引号括起来。例如:

$test="hello,guys"

f i l e{

"/tmp/t e s t":

content=>$test;

}

puppet可以使用由facter提交的变量,facter在客户端收集系统信息整理成不同的变量提交给puppet服务器端,服务器端的代码可以使用这些变量实现高级的功能,例如不同的硬件配置生成不同的应用软件配置文件。运行facter命令可以看到很多变量的输出,这些变量可以在puppet代码里面直接使用。

puppet利用方括号来定义数组,数组的内容由逗号分割,例如下面的例子:["apache2","httpd","ssh"]

数组可以用在资源定义里面,例如前面提到的例子。也可以用在函数里面,例如:

define php::pear(){

package{"`php?${name}":ensure=>i n s t a l l e d}

}

php::pear{['ldap','mysql','ps','snmp','s q l i t e','tidy',' xmlrpc']:}

变量也有有效范围,同其他语言一样分为局部和全局变量,简单说来,就是在里面定义的变量的使用范围就限制在里面。同时,puppet还简单的支持if...eles语法,但是用的不多,不在深入。

3.5模块

简单来说,一个模块就是一个/etc/puppet/modues目录下面的一个目录和它的子目录,在puppet的主文件site.pp里面用import modulename可以插入模块。新版本的puppet可以自动插入/etc/puppet/modues目录下的模块。引入模块,可以结构化代码,便于分享和管理。例如关于apache的所有配置都写到apache模块下面。一个模块目录下面通常包括三个目录,files,manifests,templates。manifests里面必须要包括一个init.pp的文件,这是该模块的初始文件,导入一个模块的时候,会从init.pp开始执行。可以把所有的代码都写到init.pp里面,也可以分成多个pp文件,init再去包含其他文件。

files目录是该模块的文件发布目录,puppet提供一个文件分发机制,类似rsync的模块,后面详细介绍。templates目录包含erb模型文件,这个和file资源的template属性有关,后面详细介绍。

puppet安装好以后,modules目录是没有的,自己建立一个就行,然后在里面可以新增加你的模块。请养成使用模块的习惯。

第4章几个常用的资源

不入虎穴,焉得虎子

puppet提供了很多资源类型,但是常用的就那么几个。在讲解具体的内容之前,先了解一下provider这个概念,puppet管理不同的资源,是利用不同的provider来管理的。例如管理package资源,在debian上面是用的apt-get,在redhat上面是用的yum。在这里,apt,yum就是provider。在定义资源的时候,可以明确指定provider。但是通常都是由puppet自己探测。因为不同的provider功能不一样,所以在不同的操作系统上面,有些资源能实现的功能也不一样,例如在linux上面设置user资源的时候,不能设置密码(新的puppet或许已经支持),需要用其他辅助手段来完成,但是设置ldap用户的时候是可以设置密码的。

4.1file资源

file资源在puppet里面用的挺多,属性包括大家已经属性的owner,group,mode,content 等等。file还有两个重要的命令,。source和template.通常,一个文件的内容可以由content 属性来包含固定的内容,但是也可以用source命令来从其他url复制文件内容。目前puppet只支持puppet这个url,表示从puppet的fileserver去下载文件内容。例如:

source=>"puppet://${f i l e s e r v e r}/l v s/${corp}.${idc}.keepalived .conf"

其中fileserver后面的lvs表示是lvs模块的files目录这个路径。正如前面提到的一样。用source就可以把很多配置文件放到puppet服务器端统一管理。

file资源的另一个template命令是一个功能强大的命令。利用template,可以通过erb模板生成文件内容,erb模板可以使用变量。而且还可以对变量进行计算和操作。这是puppet 强大的地方,举一个例子,你配置两台squid服务器,两台服务器的内存不一样,那么在squid.conf里面有关内存的配置命令就要根据硬件配置来设置。在过去,你只能手工去判定和修改,现在puppet自己搞定。看下面的代码:

f i l e{

"/etc/squid/squid.conf":

mode=>0644,

content=>template("squid/squid.conf.erb");

}

这里的template里面的"squid/squid.conf.erb"表示的路径是squid模块下面templates目录下的squid.conf.erb这个路径。看看squid.conf.erb里面的部分内容1

cache_mem<%=Integer(vmx_memsize.t o_i*0.45)?%>M B

visible_hostname<%=fqdn%>

在这里,cache_mem设置成总内存的45%大小,visible_hostname设置成主机名。更多有趣的功能也可以实现。

4.2package资源

package资源管理系统的软件包安装,该资源的主要属性是ensure;设置该软件包应该在什么状态.installed表示要安装该软件,也可以写成present;absent表示反安装该软件,pureged表示干净的移除该软件,latest表示安装软件包的最新版本.例如:

package{

["vim","iproute","x?window?system"]:

ensure=>i n s t a l l e d;

["pppoe","pppoe?conf"]:

ensure=>absent;

}

安装vim等包,删除pppoe,pppoe-conf包。如果你的系统安装的是编译的软件包,建议你打包成操作系统的包格式,建立你自己的软件仓库。

4.3service资源

service资源表示保证/etc/init.d目录下的服务执行脚本执行什么命令,例如:

service{

"ssh":

ensure=>running;

"nfs":

ensure=>stoped;

1

vmx_memsize和fqdn是facter提交的变量,表示内存和主机名

}

puppet只保证服务会运行或者停止,但是不保证开机启动的服务的初始状态,既不会去管理/etc/rcX.d目录下的服务的链接。service可以通过start,retart,status命令来指定这些命令的路径。如果不指定restart路径,当执行重启的时候就是先stop再start服务。另外你还可以用pattern属性来设置搜索进程列表的匹配字符串,用于不支持init脚本的系统.当要停止一个服务的时候,通过查看进程运行列表来判断.

4.4exec资源

exec资源在不到万不得已的时候不要去用,简单说来exec资源就是在执行puppet的时候,调用shell执行一条shell语句,例如:

exec{

"delete?config":

path=>"/bin:/usr/bin",

command=>"rm?/etc/ssh/ssh_config";

}

exec可以用path指定命令执行的预搜索路径,create属性表明该exec将创建一个文件,当下一次puppet执行的时候,如果发现了这个文件,就不再执行这个exec资源。

exec资源是不太好掌控的资源,如果能用脚本实现,尽量写成脚本通过file资源分发到服务器上面。然后用其他的方式来调用脚本。例如crontab。说来crontab资源,罗嗦一句,虽然puppet提供了crontab资源,但是你完全可以用file资源来把crontab任务放到/etc/ cron.d目录下来实现crontab资源的管理。使用puppet的时候,尽量用最简单的语法,越是花哨的语法也越容易出错。

第5章puppet高级内容

欲穷千里目,更上一层楼

puppet在大规模的生成环境中,如果只有一台puppetmaster,会忙不过来的,因为puppet是用ruby写的,ruby是解析型语言,每个客户端来访问,都要解析一次,当客户端多了就忙不过来,所以需要扩展成一个服务器组。puppetmaster可以看作一个web服务器,实际上也是由ruby提供的web服务器模块来做的。因此可以利用web代理软件来配合puppetmaster做集群设置。这方面的资料在官方网站有详细介绍,例如puppet+nagix等等。

puppet后台运行的时候,默认是半小时执行一次,不是很方便修改。可以考虑让puppetd不运行在后台,而使用crontab来调用,执行完毕就退出,这样可以精确的控制所有的puppetd客户端的执行时间,分散执行时间也可以减轻puppetmaster服务器的压力。

puppet还支持外部资源,所谓外部资源,就是发布在客户端以外的资源,所有客户端都可以共享这些资源。

最后来看看puppet的工作细节,分为下面几个步骤:

一.客户端puppetd调用facter,facter探测出主机的一些变量,例如主机名,内存大小,ip地址等。pupppetd把这些信息通过ssl连接发送到服务器端。

二.服务器端的puppetmaster检测客户端的主机名,然后找到manifest里面对应的node 配置,然后对该部分内容进行解析,facter送过来的信息可以作为变量处理,node牵涉到的代码才解析,其他没牵涉的代码不解析。解析分为几个阶段,语法检查,如果语法错误就报错。

如果语法没错,就继续解析,解析的结果生成一个中间的“伪代码”,然后把伪代码发给客户端。

三.客户端接收到“伪代码”,并且执行,客户端把执行结果发送给服务器。

四.务器端把客户端的执行结果写入日志。

第6章FAQ

Q:puppet的证书机制

A:puppet证书问题是初学者最容易遇到的问题,这里讲一下怎么处理.puppet服务器端在安装或者首次启动的时候,会自动生成一个根证书和服务器证书,证书和主机名相关,因此如果证书生成后友改了主机名,那就会出问题.puppet客户端在首次启动的时候,也会自动生成证书;但是这个证书需要得到puppet服务器端的签名才行,因此;puppet客户端第一次连接服务器的时候,会发送一个证书请求;服务器端需要对这个证书进行签名.puppet客户端在下次连接服务器的时候就会下载签名好的证书.

Q:debian下面的证书出错,怎么解决?

A:本方法是提供给初学者的测试环境,生成环境不建议这么做.首先在puppetmaster(服务器端)删除/var/lib/puppet/ssl目录;然后启动puppetmasterd;然后在客户端也删除/var/lib/ puppet/ssl目录.把puppetmaster机器的主机名和对应的ip地址写入客户端机器的/etc/hosts.然后执行

puppetd??t e s t??server https://www.360docs.net/doc/7d17462250.html,#发送证书请求

把https://www.360docs.net/doc/7d17462250.html,替换成你自己的服务器主机名.执行这个命令,会有提示信息,不用理会.

然后登录到puppetmaster服务器机器,执行

puppetca??l i s t#列出所有证书请求

命令,看看是否有客户端的证书请求;如果没有,请检查前面的步骤是执行正确,以及网络连接是否正常.如果puppetca--list能看到请求,那么执行

puppetca?s?a#签名所有证书

命令;对所有的证书请求签名.

最后回到puppet客户端机器,执行

puppetd??t e s t??server https://www.360docs.net/doc/7d17462250.html,#得到证书

就能建立连接了,如果你的site.pp写好了.就可以测试puppet了.

Q:redhat下面的证书问题如何解决?

A:同debian;ssl目录也是在/var/lib/puppet/ssl

Q:源代码安装的puppet如何解决证书问题?

A:同debian,但是ssl目录在/etc/puppet/ssl

第6章FAQ19

后记

本着学习tex,以及整理资料,推广puppet的目的,利用空余时间编写该入门文章,内容简单,水平有限,如果发现错误和错字请提醒我更改。

使用puppet也有点时间了,但是一直没有发现有好的中文资料,因此2010年年初建立了https://www.360docs.net/doc/7d17462250.html,的免费的wiki,翻译puppet的中文文档,还是因为英语水平有限,所以水准不高,所以有兴趣的朋友可以加入翻译。现在wiki已经列入了官方的wiki 目录。目前puppet的其他语言翻译只有中文和日文。本文可以自由转发,请不要用于商业目的,对于该行为我表示强烈抗议,并且保留动手的权利。

在翻译的过程中,下列网友也加入了翻译,排名不分先后(wiki加入时间)。

huangmingyou

houqp

frostynova

aaniao999

kuuyee

edison7500

min xu

270175100

douzl

Daniel Ho

unline

wtoppp

xw2014

chifeng

dywer

Liu Nan

F2812外部接口XINTF资料

F2812外部接口XINTF 什么是外部接口,外部接口有什么作用,怎么去配置和使用这一块。今天了解了这部分的知识,现将其详细的记录下来。先看一下什么是外部接口。外部接口是F2812与外部设备进行通信的重要接口,这些外部接口对应着CPU内部的某个存储空间,CPU通过对存储空间进行的读写操作间接控制外部接口。书本上抄下来的定义,很是官方啊,不好懂。再来看一下接的是一些什么,估计是不是会好理解一些呢?一般用于RAM,FLASH等。哦...估计是内部数据或者是程序存不下了,找一个外面的片子来做存储区扩展用的接口。 外部接口有哪一些线呢?有片选信号线、数据总线、地址总线、读写使能信号线、以及其他信号线。 F2812中外部接口被映射到5个固定的存储空间区域,每个区域都有一个片选信号。当系统使能片选信号后,数据自动存储到对应的存储空间内。嘻嘻!就喜欢这一句自动存储。 所有的数字芯片不能少的一条主线就是时钟,这个模块的时钟怎样呢?答:XINTF模块的时序都是参照F2812的内部时钟XTIMCLK。大小可以人为设定为系统时钟或系统时钟的一半。 F2812中XINTF的使用

想使用XINTF先要弄清楚里面有些什么,外面有些什么引 脚需要接线。 XINTF一共有5个空间,分别是Zone0、Zone1、Zone2、Zone6、Zone7,每个空间有相应的片选信号线连接到外面。其中1、2共用一根片选线,6、7共用一根片选线;2、6共用相同的外 部地址,外部首地址0x0 0000、尾地址0x7 ffff;1、2占用的 外部总线地址不同,0的为0x2000~0x3fff、1的为0x4000~0x5fff;空间7可以作为外部启动的存储空间,由于这个空间的特殊性,所以暂时不打算用,也就不放在这里讨论了。 观察了一下开发板,CPLD的接线为8根数据线,五根地址线,空间0、1共用的片选线,还有R/W读写信号线,WE写使能信号线,RD读使能信号线。 对XINTF空间的操作分为以下三个部分,引导、激活、跟踪。 引导:访问区域的片选信号为低,相应地址放在外设总线上,引导部分的周期通过XTIMCLK来配置时序。 激活:访问外部设备,由于我只进行读操作,所以将读使能信号线拉低,外部接口的数据被锁存到DSP中。暂不打算使 用XREADY信号采样。 跟踪:跟踪周期是指读写信号置成高电平之后片选信号仍然保持低电平一段时间。

page的用法总结大全

page的用法总结大全 page这个单词你知道是什么意思吗?page的用法是怎样的呢,快来了解一下吧,今天小编给大家带来了page的用法 ,希望能够帮助到大家,一起来学习吧。 page的意思 n. 页,(计算机的)页面,年史, vt. 标记…的页数,翻页,喊出名字以寻找,(在公共传呼系统上)呼叫 vi. 翻书页,浏览 变形:过去式: paged; 现在分词:paging; page用法 page可以用作名词 page的基本意思是“页”,指书刊、杂志等的一页或报纸等的一版,也可指纸的一张,还可指报纸的“专页”。 page也可指可写入书中的历史事件或时期。 page用作动词的意思是“标记…的页数”或“翻页”。 page用作名词的用法例句 There are several faults in the page of figures.那一页的数字中有几个差错。 Open your German readers at page 28.把德语课本翻到第28页。 The page number is shown at the foot of the page.在页脚处可以看到页码。 page可以用作动词 page用作动词的意思是“标记…的页数”或“翻页”。 page也可作“呼叫…”解,指在公共场所通过扩音器呼喊找人。 page是及物动词,接名词或代词作宾语。 page用作动词的用法例句 When the book is ready for printing,someone has to page it up.书在付印前,必须有人排好页码。 He tore the sheet in his hurry to turn over the page.他匆忙翻页的时候,把杂志都撕坏了。 Absorbed, she licked her index finger absently each time she turned a page.她读得出神,每次翻页就不自觉地舔一下食指。

Amanda安装配置

Amanda安装配置 一关于amanda Amanda本身并不是备份程序,它其实只是管理其他备份软件的封装软件。它使用系统上的dump和restore命令作为底层的备份软件,同时也能够使用tar命令,针对于windows计算机,Amanda还能够使用smbtar命令来实现备份。 Amanda 的整体策略是:在每次周期中完成一次数据的完全备份,并且确保在两次完全转储之间备份所有更改的数据。传统的做法是先执行完全备份,然后在此期间执行增量备份。而Amanda 的工作方式不同的是,每次运行Amanda 都对部分数据进行完全备份,确切地说,就是在一个完整的备份周期内备份全部数据所需备份的其中一部分。例如,如果周期为7 天,且一个周期内进行7次备份,则每天必须备份1/7 的数据,以便在7 天之内完成一次完全备份。除了这个“部分”完全备份外,Amanda 还对自最近一次完全备份后更改的数据进行增量备份。Amanda这种特有的备份策略,可以减少每次备份的数据量 amanda组件 Amanda系统包含如下组件: 1、客户端程序,是amandad 其中最重要的。此后台程序在备份运行时和Amanda 服务器进行通信。在/usr/lib/amanda目录下,还有其它的一些客户端程序:amandad 处理客户机和中央服务器之间的所有通信;运行所有其它的客户端程序;selfcheck 验证本地Amanda 配置;sendsize 估计备份大小;sendbackup 执行备份操作;这些程序是Amanda 客户 端系统的一部分。但是并不能通过手工去执行他们,是由客户端包的其他辅助程序来调用这些程序。 2、执行各阶段实际备份操作的服务器程序。amdump 程序启动Amanda ,并且常常使用cron 定期运行。它控制一些其他程序,包括:planner 决定备份哪些内容;driver 设备接口;dumper 与客户端amandad 进程进行通信;taper 把数据写入媒介;amreport 准 备Amanda 运行的报告; 3、执行相关任务的管理工具,包括:amcheck 验证Amanda 配置的有效性以及此工具是否准备运行;amlabel 在磁带上写入Amanda卷标,用于避免覆盖错磁带;amcleanup 在

TMS320F28335外部中断总结

TMS320F28335外部中断总结 作者:Free 文章来源:Free 点击数:93 更新时间:2010-8-26 在这里我们要十分清楚DSP的中断系统。C28XX一共有16个中断源,其中有2个不可屏蔽的中断RESET和NMI、定时器1和定时器2分别使用中断13 和14。这样还有12个中断都直接连接到外设中断扩展模块PIE上。说的简单一点就是PIE 通过12根线与28335核的12个中断线相连。而PIE的另外 一侧有12*8根线分别连接到外设,如AD、SPI、EXINT等等。这样PIE共管理12*8=96个外部中断。这12组大中断由28335核的中断寄存器IER来控 制,即IER确定每个中断到底属于哪一组大中断(如IER |= M_INT12;说明我们要用第12组的中断,但是第12组里面的什么中断CPU并不知道需 要再由PIEIER确定)。接下来再由PIE模块中的寄存器PIEIER中的低8确定该中断是这一组的第几个中断,这些配置都要告诉CPU(我们不难想 象到PIEIER共有12总即从PIEIER1-PIEIER12)。另外,PIE模块还有中断标志寄存器PIEIFR,同样它的低8位是来自外部中断的8个标志位,同 样CPU的IFR寄存器是中断组的标志寄存器。由此看来,CPU的所有中断寄存器控制12组的中断,PIE的所有中断寄存器控制每组内8个的中断。 除此之外,我们用到哪一个外部中断,相应的还有外部中断的寄存器,需要注意的就是外部中断的标志要自己通过软件来清零。而PIE和CPU的 中断标志寄存器由硬件来清零。 EALLOW; // This is needed to write to EALLOW protected registers PieVectTable.XINT2 = &ISRExint; //告诉中断入口地址 EDIS; // This is needed to disable write to EALLOW protected registers PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block使能PIE PieCtrlRegs.PIEIER1.bit.INTx5= 1; //使能第一组中的中断5 IER |= M_INT1; // Enable CPU 第一组中断

网络分析仪使用方法总结

如何使用网络分析仪 德力网络分析仪NA7682A NA7682A矢量网络分析仪吸取了前几代和国内外各款网络分析仪使用的经验,结合了最新国际仪器发展的技术和态势,是Deviser德力仪器最新推出的第四代矢量网络分析仪,作为国内主流的网络分析仪,下面介绍网络分析仪的使用技巧如下。 频率范围从100kHz到8.5GHz频段,为无线通信、广播电视、汽车电子、半导体和医疗器件等行业射频器件、组件的研发和生产的使用提供了高效、灵活的测试手段,进入了民品、工业、科研教育和军工等领域。其主要的特点是和主流网络分析仪是德的E507X系列指标和指令上做到兼容,在客户使用的性价比上非常优秀的选择。 在射频器件、基站天线、手机天线、GPS天线等、通信系统模块分析等领域成功的测试经验使越来越多的客户开始使用这款网络分析仪,在低频、800/900M、1800/1900M、2100M、5G/5.8G等的产品频率使用领域内广泛使用。 深圳市良源通科技有限公司专业服务和销售射频和通信仪表多年,是德力仪器国内最重要的合作伙伴和一级代理商,结合自己多年的技术积累和客户使用的配合测试,得到丰富经验。在仪器的售前和售后服务上面具有自己的优势。提供大量仪器试用和使用方案的设计,给客户在设备开发、产品研制和批量生产上都提供方便和最有优势的选择。 产品特点: 1、12.1英寸1280*800 TFT触摸屏 2、频率覆盖范围: 100 kHz 至 8.5 GHz 3、阻抗:50Ω 4、动态范围: >125 dB (比E5071C宽7-12dB) 5、极低的迹线噪声: <0.005 dBrms (在 3 kHz IFBW) 6、快速的测量速度: 80usec/点 7、分析和误差修正和校准功能 8、通过USB、LAN 和 GPIB 接口进行系统互联 9、时域分析(选件):时域传输、反射特性分析;距离上的故障定位。 10、数据变换:涉及多种形式的阻抗、导纳变换。 11、滤波器分析:自动分析出:插损、3dB带宽、6dB带宽、带内纹波、带外抑制、Q值、矩形系数

开源自动化配置管理工具Puppet入门教程

开源自动化配置管理工具P u p p e t入门教程 系统管理员经常陷入一系列的重复任务中:如升级软件包、管理配置文件、系统服务、cron任务以及添加新的配置、修复错误等。这些任务通常是重复低效的,解决这类任务的第一反应是让他们自动化,于是出现了定制脚本。由于环境复杂,定制脚本和应用程序一再被重复开发,并且很难适合多种平台,灵活性和功能也很难保证,于是像Puppet这样的 自动化配置管理工具便出现了。 在开源世界里,有很多配置工具可供选择,这个领域一些关键的产品有: Puppet(): Ruby写成的配置管理工具,使用C/S架构,使用declarative language配置客户端。 Cfengine(): 最先发布的开源配置工具之一,1993年发布,同样是C/S架构,通常应用于教育机构。 LCFG(): C/S架构的配置管理工具,使用XML定义配置。 Bcfg2 Python编写的C/S架构的配置管理工具,使用规格书和客户机响应配置目标主机。 本文档致力于描述使用Puppet管理你的主机、应用程序、后台程序和各种服务。 Puppet简介: 1. Puppet的用途 Puppet是开源的基于Ruby的系统配置管理工具,依赖于C/S的部署架构。主要开发者是Luke Kanies,遵循GPLv2版权协议。从1997年开始Kanies参与UNIX的系统管理工作,Puppet的开发源于这些经验。因为对已有的配置工具不甚满意,从2001年到2005年间,Kanies开始在Reductive实验室从事工具的开发。很快,Reductive实验室发布了他们的 旗舰产品——Puppet。 2. Pupput的特性 许多系统配置管理工具工作的方式非常类似,如cfengine。是什么让Puppet与众不同Puppet的语法允许你创建一个单独脚本,用来在你所有的目标主机上建立一个用户。所有的目标主机会依次使用适用于本地系统的语法解释和执行这个模块。举例:如果这个配置是在Red Hat服务器上执行,建立用户使用useradd命令;如果这个配置是在FreeBSD 主机上执行,使用的是adduser命令。 Puppet另一个卓越的地方是它的灵活性。源于开源软件的天性,你可以自由的获得Puppet的源码,如果你遇到问题并且有能力的话,你可以修改或者加强Puppet的代码去适用于你的环境。另外,社区开发者和捐献者还在不断增强Puppet的功能。一个大的开发者和用户社区也致力于提供Puppet的文档和技术支持。 Puppet也是易于扩展的。定制软件包的支持功能和特殊的系统环境配置能够快速简单 的添加进Puppet的安装程序中。

Seated的用法小结

Seated的用法小结 seated是一个比较特别的过去分词,说它特殊一是因为它的词性尚有不确定性——它有时是过去分词,有时又具有形容词的性质,像是一个形容词;二是因为这样一个很少引人注意的过去分词,在近几年的高考英语考题中经常“露脸”,一下子变成了一个热点词汇。下面我们先来看几道高考题: 1. Please remain __________ until the plane has come to a complete stop. (山东卷) A. to seat B. to be seated C. seating D. seated 2. Please remain __________; the winner of the prize will be announced soon. (辽宁卷) A. seating B. seated C. to seat D. to be seated 3. Can those _________ at the back of the classroom hear me? (福建卷) A. seat B. sit C. seated D. sat 对于seated的用法,首先要从动词seat说起。 同学们可能只知道seat的名词用法,即只知道它表示“座位”。 其实,seat还可用作动词,且是一个典型的及物动词,其意为“给某人座位”“让人坐”或“能容纳……”句式:sb be seated 或seat sb / oneself 。 如: Seat the boy next to his brother. 让那个孩子坐在他哥哥旁边。 We can seat 300 in the auditorium. 我们这个礼堂可容纳300人。

Puppet利用Nginx多端口实现负载均衡

随着公司应用需求的增加,需要不断的扩展,服务器数量也随之增加,当服务器数量不断增加,我们会发现一台puppetmaster压力大,解析缓慢,而且时不时出现“time out”之类的报错,那这时有什么优化的办法吗?我们在Puppet官网上找寻解决方案,发现puppetmaster可以配置多端口,结合WEB代理(推荐Nginx),这样puppetmaster承受能力至少可以提升数倍以上,相当于在很大程度上优化了puppet的处理能力。 1.遵循前面的环境设定,我们这里的服务器环境及软件版本分别为: 服务器系统:CentOS5.8 x86_64 Ruby版本:ruby-1.8.5 Puppet版本:puppet-2.7.9 Nginx版本:nginx-0.8.46 2.Mongrel安装 要使用puppet多端口配置,需要指定mongrel类型,默认没有安装,需要安装: yum install -y rubygem-mongrel 3.配置puppetmaster 在/etc/sysconfig/puppetmaster文件末尾添加如下两行,分别代表多端口、mongrel类型,内容如下所示: PUPPETMASTER_PORTS=(8141 8142 8143 8144 8145) PUPPETMASTER_EXTRA_OPTS="--servertype=mongrel --ssl_client_header=HTTP _X_SSL_SUBJECT" 4.安装Nginx服务 安装之前请确保系统已经安装pcre-devel正则库,然后再编译安装Nginx,需要添加SSL 模块参数支持,Nginx的安装过程如下所示: yum -y install pcre-devel cd /usr/local/src wget https://www.360docs.net/doc/7d17462250.html,/download/nginx-0.8.46.tar.gz tar zxvf nginx-0.8.46.tar.gz cd nginx-0.8.46 ./configure --prefix=/usr/local/nginx --with-http_ssl_module make && make install && cd ../ 添加www用户组及用户,命令如下所示: groupadd www useradd -g www www 5.我们依据puppet需求来修改配置文件nginx.conf,内容如下所示: user www;

C语言extern使用方法总结

extern使用方法总结! 作者:VIP用户提交日期:2007-5-16 20:53:00 Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义。 谨记:声明可以多次,定义只能一次。 函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern的。但是引用的时候一样是需要声明的。 而全局变量在外部使用声明时,extern关键词是必须的,如果变量无extern修饰且没有显式的初始化,同样成为变量的定义,因此此时必须加extern,而编译器在此标记存储空间在执行时加载如内存并初始化为0。而局部变量的声明不能有extern的修饰,且局部变量在运行时才在堆栈部分分配内存。 引用性声明、定义性声明 强符号、弱符号 出现在linux的gcc链接分析中,可以加深链接的理解。 全局变量或函数本质上讲没有区别,函数名是指向函数二进制块开头处的指针。而全局变量是在函数外部声明的变量。函数名也在函数外,因此函数也是全局的。 在使用中,要形成一种风格。 头文件 首先说下头文件,其实头文件对计算机而言没什么作用,她只是在预编译时在#include的地方展开一下,没别的意义了,其实头文件主要是给别人看的。 我做过一个实验,将头文件的后缀改成xxx.txt,然后在引用该头文件的地方用 #include"xxx.txt" 编译,链接都很顺利的过去了,由此可知,头文件仅仅为阅读代码作用,没其他的作用了!

不管是C还是C++,你把你的函数,变量或者结构体,类啥的放在你的.c或者.cpp文件里。然后编译成lib,dll,obj,.o等等,然后别人用的时候最基本的gcc hisfile.cpp yourfile.o|obj|dll|lib 等等。 但对于我们程序员而言,他们怎么知道你的lib,dll...里面到底有什么东西?要看你的头文件。你的头文件就是对用户的说明。函数,参数,各种各样的接口的说明。 那既然是说明,那么头文件里面放的自然就是关于函数,变量,类的“声明”了。记着,是“声明”,不是“定义”。 那么,我假设大家知道声明和定义的区别。所以,最好不要傻嘻嘻的在头文件里定义什么东西。比如全局变量: #ifndef _XX_头文件.H #define _XX_头文件.H int A; #endif 那么,很糟糕的是,这里的int A是个全局变量的定义,所以如果这个头文件被多次引用的话,你的A会被重复定义 显然语法上错了。只不过有了这个#ifndef的条件编译,所以能保证你的头文件只被引用一次,不过也许还是会岔子,但若多个c文件包含这个头文件时还是会出错的,因为宏名有效范围仅限于本c源文件,所以在这多个c文件编译时是不会出错的,但在链接时就会报错,说你多处定义了同一个变量, Linking... incl2.obj : error LNK2005: "int glb" (?glb@@3HA) already defined in incl1.obj Debug/incl.exe : fatal error LNK1169: one or more multiply defined symbols found 注意!!! extern

软件使用手册总结

1测控系统简介 本测控系统专为拉力机、压力机、电子万能材料试验机而研制。适用于测定各种材料在拉伸、压缩、弯曲、剪切、撕裂、剥离、穿刺等状态下的力学性能及有关物理参数。可做拉伸、压缩、三点抗弯、四点抗弯、剪切、撕裂、剥离、成品鞋穿刺、纸箱持压、泡棉循环压缩、弹簧拉压及各种动静态循环测试。 1.1主要功能特性 1. 硬件 主控制器采用21世纪最先进的32位ARM处理器, 处理速度达到奔腾级通用计算机的水平,相比传统的8位单片机测控系统整体性能大大提高,运算速度更快,控制精度更高. 数据采集核心器件采用美国最新型超高精度24位AD,采样速率可达2000次/秒,可捕捉到力量的瞬间变化过程,全程不分档分辨力最高达500000分度。并采用独创的6点校准技术进一步提高精度,力量测量精度优于国家0.5级(最高级)标准。 位移编码器计数采用4倍频技术,使位移分辨力提高4倍,最高可达0.0005mm。 脉冲和电压两种输出控制方式,可控制具有脉冲或电压控制接口的任意伺服马达、变频马达或直流马达实现平滑无级调速,另还有上升、下降及停止等开关量信号输出可用于直接驱动外部继电器或电磁阀,可用于控制直流电机或气动、液压等动力装置。 先进的速度、位移、力量三闭环技术,可以实现精确的任意波形控制。 丰富的接口扩展能力:多达4路24位模拟量输入,3路16位模拟量输出,3路脉冲输出,3路AB相光电编码器输入,9路开关量输入,8路开关量输出,1路USB接口,1路RS232接口,1路RS485接口,4种LCD接口,1个并口微型打印机接口,1个串口微型打印机接口,1个8×4矩阵键盘接口。 所有输入输出接口均采用高速光电隔离技术,具备强大的抗干扰能力。 2. 软件 Windows标准风格,层次分明的操作方式加上详尽的帮助文档和提示使之成为目前试验机行业最简单易用的软件,您的调试和软件培训效率将显著提高。 采用多线程并行处理技术,测试过程中实时同时显示力量-位移、力量-时间、位移-时间、应力-应变等曲线,可随意切换到想看的曲线画面,并可查看用户设置等。 标准化的测试过程控制和报表输出模版,使可以定义任意多个测试标准供用户调用,范围涵盖GB、ASTM、DIN、JIS、BS…等几乎所有测试标准。灵活强大的测试方法自定义方式,具备定速速、定位移、定力量、定力量速率、定应力、定应力速率、定应变、定应变速率等各种控制模式,可实现复杂的多步嵌套循环控制.可设置自动返回、自动判断断裂、自动归零等功能。 强大的数据分析统计和曲线图形分析辅助工具,具备放大、缩小、平移、十字光标、取点等功能。多次历史测试数据可调入图形同时显示做对比分析。多达7个区间设置、40个手动取点、120个自动取点功能。具备最大值、最小值、平均值、去高低平均值、中位数、标准差、总体标准差、CPK值等多种统计功能。 完全开放的测试结果编辑方法,用户可得到任何想要的测试结果。最大力、断裂力、剥离力、拉伸强度、剪切强度、撕裂强度、最大变形、屈服力、伸长率、弹性模量、环刚度、非比例延伸率、区间最小力、区间平均力、定伸长取力、定力量取伸长等多达400多个计算结果均由计算机自动算出,供用户选择调用。 业界创新的Microsoft Word报表格式,简单易用,只要您会使用Word,就可编辑出您想要的精美报表。 权限管理系统使您可以锁定软件的任意功能模块,将软件操作分为多个权限级别,没被授权的操作人员无法触及没被授权的模块,软件操作更加安全可靠。 全数字化的校准系统,校准过程简单高效,校准数据上下位机双重保护。 功能强大的单位系统,可以适应世界上任何单位制,如力值单位有gf、kgf、N、kN、tf、lbf、ozf、tf(SI)、tf (long)、tf(short)等供选择,更可扩展任意多种单位。 更多重的保护机制:力量、行程、位移超量程保护设定,上下限位行程开关硬件保护设定。 测试数据管理简单直观高效:单次测试数据以Windows标准的文档形式存储,自由设置储存路径和文件名。避免了传统测控软件以数据库格式储存测试数据时数据库文件会越来越大而导致软件运行越来越慢的缺点。只要您的硬盘足够大,测试数据可以无限量保存。 所有操作均具有快捷键,并可连接外部手动控制盒,可外接快上、快下、中上、中下、慢上、慢下、置零、回位、测试、暂停、结束等全部常用按健. 多国语言一键切换:简体中文、繁体中文、英文,十国语言版更有日文、韩文、俄文、德语、法语、西班牙文、葡萄牙文等即将推出。 绿色软件,无需安装,直接拷贝到计算机即可使用(需先安装串口驱动),维护升级更加简单。

openstack部署与管理-fuel介绍

OpenStack部署与管理之 Fuel介绍 成胜 汉柏科技有限公司

内容 Fuel简介 Fuel架构 Fuel功能 Fuel扩展 2

OpenStack部署 OpenStack发展很猛,很多朋友都很认同,为了解决OpenStack部署的问题,让安装,配置变得更加简单易用,很多公司都投入人力去做这个。说到部署,肯定和OS有关,对于OpenStack来说,无非就是Ubuntu还是CentOS,当然也会和OpenStack版本有关。 其实部署工具,最麻烦的地方,不是软件的配置和安装,而是网络。用户的网络情况太多,还有OpenStack本身的网络也很复杂。

部署工具: RDO: REDHAT出品,支持Redhat、CentOS等系统。RDO基于puppet部署各个组件,支持单节点或多节点部署,在Redhat系操作系统上使用非常方便。 devstack: 这个应该是最老的Fuel简介了,可以用来快速部署一个OpenStack测试环境,基于git最新代码部署服务,并将所有服务都起在screen中,不适合生产环境直接使用。 Fuel: Mirantis出品,支持在ubuntu和centos上通过web界面配置并部署OpenStack,应该是目前最为直观的Fuel简介。支持自动发现部署节点,并部署 OpenStackHA,对OpenStack作健康检查等。

Mirantis 一家很牛逼的OpenStack服务集成商,他是社区贡献排名前5名中唯一一个靠软件和服务吃饭的公司(其他分别是Red Hat, HP, IBM, Rackspace)。相对于其他几个社区发行版,Fuel的版本节奏很快,平均每两个月就能提供一个相对稳定的社区版。

const,static,extern用法总结

--------------------------CONST--------------------------------------- const应用: 一、对于基本声明 const int r=100;//标准const变量声明加初始化,编译器经过类型检查后直接用100在编译时替换。 二、对于指针 1. int x=10; const int *r=&x; //指针指向的内容是常量,r指向的内容不能够通过r改变,但如果是非const,内容可以通过自己改变,而且r指针可以改变,可以指向其它的整形. //*r=*r+1;NO //x++;YES //r=&y;YES 2. int const *r=&x; 与1完全相同 3. int * const r=&x; //指针指向是常量,不能修改去指向其它内容,但指向的内容可以修改 //r=&y;NO //*r=*r+1;YES //x++;YES 4.const int * const r=&x; //综合1、3用法,r是一个指向常量的常量型指针,指针指向不能改变,指针内容不能改变,内容可以自身改变 //r=&y;NO //*r=*r+1;NO //x++;YES 三、对于类型检查 可以把非const对象赋予const指针,这样就不能改变.但是不能把const赋给非const,除非先强制转换 const int x=100; int *p=(int*)&x; *p++; 四、对于函数 1.void Fuction1(const int r); //此处为参数传递const值,意义是变量初值不能被函数改变 2.const int Fuction1 (int); //此处返回const值,意思指返回的原函数里的变量的初值不能被修改,但是函数按值返回的这个变量被制成副本,能不能被修改就没有了意义,它可以被赋给任何的const或非const类型变量,完全不需要加上这个const关键字。 3.Class CX; //内部有构造函数,声明如CX(int r =0) CX Fuction1 () { return CX(); } const CX Fuction2 () { return CX(); } Fuction1() = CX(1); //没有问题,可以作为左值调用 Fuction2() = CX(1); //编译错误,const返回值禁止作为左值调用。 4.函数中指针的const传递和返回: int F1 (const char *pstr); //作为传递的时候使用const修饰可以保证不会通过这个指针来修改传递参数的初值 const char *F2();//意义是函数返回的指针指向的对象是一个const对象,它必须赋给一个同样是指向const对象的指针 const char * const F3(); //比上面多了一个const,这个const的意义只是在他被用作左值时有效,它表明了这个指针除了指向const对象外,它本身也不能被修改,所以就不能当作左值来处理。 五、对于类 1.首先,对于const的成员变量,只能在构造函数里使用初始化成员列表来初始化,试图在构造函数体内进行初始化const成员变量会引起编译错误。初始化成员列表形如:X:: X ( int ir ): r(ir) {} //假设r是类X的const成员变量 注意:类的构造和析构函数都不能是const函数。 2.建立了一个const成员函数,但仍然想用这个函数改变对象内部的数据。(函数不能修改类的数据成员)

puppet安装以及遇到的问题

Puppet安装以及遇到的问题 主机名需要能够解析,相互之间能够解析。 1、puppet master的安装puppet 1)通过源代码安装 2)通过二进制的安装(yum apt-get...) # wget -r ftp://192.168.0.254/notes/softwares/puppet # tar xf puppet-2.7.23.tar.bz2 # cd puppet-2.7.23 # yum -y localinstall puppet-server-2.7.23-1.el6.noarch.rpm puppet-2.7.23-1.el6.noarch.rpm facter-1.6.18-3.el6.x86_64.rpm ruby-augeas-0.4.1-1.el6.x86_64.rpm ruby-shadow-1.4.1-13.el6.x86_64.rpm 2、在两个agnet上安装agent # cd /root/puppet-2.7.23/ # yum -y localinstall puppet-2.7.23-1.el6.noarch.rpm facter-1.6.18-3.el6.x86_64.rpm ruby-augeas-0.4.1-1.el6.x86_64.rpm ruby-shadow-1.4.1-13.el6.x86_64.rpm 3、配置puppet master端 # rpm -ql puppet-server /etc/puppet/fileserver.conf --puppet内置的文件服务器 /etc/puppet/manifests --全局的资源清单所在的目录 /etc/puppet/puppetmasterd.conf --主配置文件

confident的详细用法总结大全

confident的详细用法总结大全 你知道confident的用法吗?快来一起学习吧,下面就和大家分享,来欣赏一下吧。 confident的用法总结大全 confident的意思 adj. 确信的,深信的;有信心的,沉着的;大胆的,过分自信的;厚颜无耻的 n. 知己;心腹朋友; confident的用法 用作形容词(adj.) 用作定语 ~+n. We need a confident leader to overcome these difficulties. 我们需要一个有信心的领导者来克服这些困难。 He noticed her confident smile.

他注意到她充满自信的微笑。 用作表语 S+be+~+prep.-phrase I feel confident about the future of rock-and-roll music in China. 我对摇滚乐在中国的前景充满信心。 I am confident in him. 我对他充满信心。 He is confident in his ability to achieve success. 他坚信自己有能力取得成功。 We are confident in saying that the new record will be broken soon. 我们充满信心地说新的纪录很快会被打破。 S+be+~+that-clause I feel confident that we will win. 我确信我们将胜利。 confident的用法例句

1. He was confident the allies would make good on their pledges. 他相信盟友们会履行他们的承诺。 2. She has now changed into a happy, self-confident woman. 如今她已经变成一个快乐、自信的女人。 3. If there has to be a replay we are confident of victory. 如果重新比赛,我们有信心取得胜利。 4. Management is confident about the way business is progressing. 管理层对业务发展的态势充满信心。 5. Hes very forward and confident and chats happily to other people. 他很自以为是,喜欢和别人攀谈。 6. Police say they are confident of catching the gunman. 警方说他们有信心抓住那个持枪歹徒。 on holiday 还是on holidays

公司战略流程内外部信息收集流程

内外部信息收集流程 1范围 适用于神马集团所有战略相关信息的收集和汇总活动过程,包括内部(财务资源、市场与销售、研发、生产运作、供应链、人力资源和组织资产等)和外部(行业趋势及市场竞争分析、买方行为、供应商及宏观政治/经济/法律环境等)方面的相关信息

2控制目标 -确保企业内、外部信息收集过程的规范化和程序化 -确保企业内、外部信息收集的时效性、完整性和准确性 -确保企业内所有的相关人员能及时参与收集信息并共享所需信息 3主要控制点 -战略分析员对内、外部信息进行实时收集,判断信息收集是否完整并取得了战略分析所需的关键信息 -战略分析员对原始信息进行分类筛选,判断原始信息是否准确、可量化和有价值 -战略管理部经理审阅经战略分析员每月筛选出对战略规划决策有用的信息及附件 -战略分析员每季对信息提供部门提供的原始信息进行评估,并将评估结果反馈给信息收集部门 4特定政策 -信息收集人员每月必须收集相应的内、外部信息;对竞争对手和重要客户的信息必须每日跟踪,每周总结;对于所有行业重大事件和信息要做到即时跟踪和收集,如政府部门的会议,行业重大会议,重大新闻发布会等-内部信息收集主要内容: -切片、工程塑料等各主要产品的成本信息 -各部门预算执行情况分析 -切片、工程塑料等各主要产品在不同区域的销售价格,销售量和价格浮动范围 -对切片、工程塑料等主要产品开展的市场调研报告 -神马集团产品的市场占有率,在同类产品中的优劣势信息 -神马集团开发的新产品的定价基础,依据和最终定价情况

-神马集团开发的新产品的上市计划 -各部门信息简报,各部门信息专题分析报告 -公司经营业绩(包括集团财务报表、管理报表、相关销售数据统计等) -各部门战略计划的实施情况 -外部信息收集主要内容: -国际国内相关政策、经济形势、技术发展趋势及法律环境 -国际国内市场需求动态 -竞争对手的新产品信息,研发信息、重大经营举措信息(如兼并和收购项目,重大项目的引进和谈判等) -重要客户的经营举措和财务状况等重要信息 -供应商经营举措等相关信息,及潜在供应商信息 -外部信息中相关市场信息可以来自市场部的市场调研报告,同时战略管理部还可以从以下基本来源收集信息: -产业研究、商会、商业杂志、报刊、专业杂志(如PCI等)、相关专业调研机构和行业协会(如中国工程塑料协会等)、相关网站(包括行业协会网站、客户网站、供应商网站等) -其他公司的招股说明书、公司指南和统计资料、新闻剪报、政府会议纪要、网站、政府各部门资料源 -对于通过上述方法仍无法获得所需信息时可以由战略管理部组织跨部门的项目小组开展针对性的问卷调查、客户访谈等 -针对不同的信息和对象可以采用不同的收集方法,亦可以同时进行,互相补充 -在进行资料查找的过程中进行原始资料整理,记下资料源的详细的引文有助于在研究末期节省编辑资料目录的时间,也可避免调查组成员的重复工作

干货site的使用方法总结

语法格式: site : 网址关键词 或者关键词site : 网址 注意事项: 1、site:后边跟的冒号必须是英文的“:”,中文的全角冒号“:”无用 2、url前不能带http:// 3、url后边不能带斜杠“/”,其实是哪里都不能带/ 4、url中不要用www,除非你有特别目的,用www会导致错过网站内的内容,因为很多网站的频道是没有www的,也就是二级域名。 其他说明: 1、关键词既可以在“site:”前,也可以在“site:”后,搜索结果是一样的,但是不管谁前谁后,关键词和“site:”之间必须空一格。 2、对于“site:”搜索,关键词一样可以是多个,多个关键词之间以空格隔开。 3、支持与其他复杂搜索语法混用,各语法和关键词之间空一格 4、除了网站,还可以搜索网站的频道,但仅限于不用“/”的。 5、一个网站可能有多种语言,所以选择“搜索所有网站”和“搜索中文(简体)网页”是有差别的 当然,如果指定的网站只有一种语言,怎么选择就都一样了 用途: 1、可用于限制网站类型,学术资料在edu、org中会更精练,政府相关的在gov中也许更容易找。 2、用了edu、org、net、gov之类的域名后缀,并不会搜索所有含这个后缀的网站。只会搜索以这个后缀结尾的网站,带cn、us、si等各国家和地区域名后缀的edu.jp、https://www.360docs.net/doc/7d17462250.html,、org.it 等是不搜的,所以你要另外搜 3、搜索某种语言或某个关键词在指定国家的网站。 4、有的网站没有提供站内搜索,或者它的信息结构混乱,内容又多,不好找东西,那么可以用“site:”对这个网站进行检索。 google的“site:”功能比多数网站自己的站内检索还要好用,如果你查的不是动态数据库,而且对时效性要求不高的话。 5、搜索不欢迎你搜索和免费使用的网站、数据库的部分内容。 6、用“site:”搜索死链接网站、已关闭网站内的信息。

NOVA安装手册

NOV A安装手册目录 chapter1 System Requirements chapter2 NOV A手动安装步骤 2.1安装nova 相关软件包 2.2 安装MySQL数据库 2.3 进行网络环境配置 2.4 创建工程并配置环境 2.5 上传镜像并运行一个实例 chapter3 配置Glance镜像服务器chapter4 安装Dashboard远程操作界面chapter5 使用Puppet部署OpenStack环境chapter6 FAQ 常见问题及解决办法

chapter1 System Requirements y硬件: x86系列机器,AMD处理器 y操作系统:: 安装Ubuntu 10.04(LTS)版本 y网络: 官网推荐1000 Mbps,提供nova-network服务的节点需要配置两块网卡。 OpenStack支持以下三种网络架构:flat,DHCP,VLAN&DHCP y数据库: 采用MySQL数据库 y权限: 需要使用root权限进行安装

chapter2 NOV A手动安装步骤 2.1安装nova 相关软件包 y下载python软件包,完成后需要run update: sudo apt-get install python-software-properties sudo add-apt-repository ppa:nova-core/release sudo apt-get update y安装Message Queue Server,Rabbit MQ及python dependencies: sudo apt-get install -y rabbitmq-server sudo apt-get install –y python-greenlet python-mysqldb y根据节点的不同类型,选择安装所需要的nova-packages和dependencies:sudo apt-get install -y nova-common nova-doc python-nova nova-api nova- network nova-objectstore nova-scheduler nova-compute y安装euca2ools 工具包: sudo apt-get install –y euca2ools unzip 2.2 安装MySQL数据库 OpenStack Nova的数据库有多种选择如MySQL 和 PostgreSQL,参照官方手册这里选用 MySQL。另外,数据库需要安装在controller节点上。 y安装mysql-server : bash MYSQL_PASS=nova NOV A_PASS=notnova cat <

相关文档
最新文档