Your SlideShare is downloading. ×
0
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Cfengine培训文档 刘天斯
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cfengine培训文档 刘天斯

7,479

Published on

Cfengine培训文档-刘天斯

Cfengine培训文档-刘天斯

Published in: Self Improvement, Technology
3 Comments
5 Likes
Statistics
Notes
No Downloads
Views
Total Views
7,479
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
137
Comments
3
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cfengine V2 主讲人:刘天斯
  • 2. 什么是 Cfengine? Cfengine ( 配置引擎 ) 是一种 UNIX 分布式系统管理实用程序 ,其目的是使简单的管理的任务自动化,使困难的任务变得较容易。它的目标是使系统任何状态收敛到一种理想状态。它适用于所有基于 UNIX 或类 UNIX 的操作系统,并且它可以通过 UNIX 兼容的环境 / 库 Cygwin 在较新版本的 Windows 操作系统中运行。
  • 3. Cfengine 可以做什么 ? <ul><li>♦ 完成后期安装任务,例如配置网络界面信息。 </li></ul><ul><li>♦ 编辑系统配置文件以及其它文件。 </li></ul><ul><li>♦ 建立信号连接。 </li></ul><ul><li>♦ 检验、更正文件许可及所有权。 </li></ul><ul><li>♦ 删除无用文件。 </li></ul><ul><li>♦ 压缩被选文件。 </li></ul><ul><li>♦ 在网络中分发文件。 </li></ul><ul><li>♦ 自动挂载 NFS 文件系统。 </li></ul><ul><li>♦ 检查重要文件和文件系统是否存在及其完整性。 </li></ul><ul><li>♦ 执行命令及脚本。 </li></ul><ul><li>♦ 应用安全相关的补丁以及相似系统的修正。 </li></ul><ul><li>♦ 管理系统服务器进程。 </li></ul>
  • 4. Cfengine 安装 <ul><li>mkdir -p /home/setup </li></ul><ul><li>cd /home/setup </li></ul><ul><li>wget http://192.168.100.247/cfengine/cfengine-2.2.5.tar.gz </li></ul><ul><li>tar -zxvf cfengine-2.2.5.tar.gz &amp;&amp; cd cfengine-2.2.5 </li></ul><ul><li>./configure </li></ul><ul><li>make &amp;&amp; make install </li></ul><ul><li>/usr/local/sbin/cfagent -v </li></ul><ul><li>/usr/local/sbin/cfkey </li></ul><ul><li>/usr/local/sbin/cfexecd </li></ul><ul><li>/usr/local/sbin/cfservd </li></ul><ul><li>cp /usr/local/sbin/cfagent /var/cfengine/bin </li></ul><ul><li>cp /usr/local/sbin/cfenvd /var/cfengine/bin </li></ul><ul><li>cp /usr/local/sbin/cfexecd /var/cfengine/bin </li></ul><ul><li>cp /usr/local/sbin/cfservd /var/cfengine/bin </li></ul><ul><li>mkdir -p /var/cfengine/masterfile/inputs </li></ul><ul><li>echo &amp;quot;/var/cfengine/bin/cfservd&amp;quot; &gt;&gt; /etc/rc.local </li></ul><ul><li>echo &amp;quot;/var/cfengine/bin/cfenvd -H&amp;quot; &gt;&gt; /etc/rc.local </li></ul><ul><li>echo &amp;quot;iptables -A INPUT -s 192.168.0.0/16 -p tcp --dport 5308 -j ACCEPT&amp;quot; &gt;&gt; /etc/firewall.sh </li></ul><ul><li>/var/cfengine/bin/cfagent -v </li></ul>
  • 5. Cfengine 的组成部分 <ul><li>♦ Cfagent : 解释策略的承诺并且以收敛的方式执行它们。代理可使用由统计监测引擎 </li></ul><ul><li>Cfenvd 产生的数据,并且它能从运行于本地或远程主机上的 Cfenvd 中获取数据。 </li></ul><ul><li>♦ Cfexecd : 执行 Cfagent ,并且记录它的输出(可选择通过电子邮件寄出摘要)。它可 </li></ul><ul><li>以在一个后台程序( standalone )的模式下运行,或者可以通过 cron 在一个类似于 </li></ul><ul><li>Unix 的系统上运行。 </li></ul><ul><li>♦ Cfservd : 监控 Cfengine 的端口:提供文件数据,并在接收一个来自 cfrun 的连接的 </li></ul><ul><li>基础上启动 Cfagent 。请注意,没有数据可以通过这个后台程序。 </li></ul><ul><li>♦ Cfrun : 联接远程主机,并要求他们运行 cfagent 。 </li></ul><ul><li>♦ Cfenvd : 收集在每台主机上使用资源的统计数据,用于异常状况的检测。信息以 </li></ul><ul><li>cfengine 类的形式被代理获得,因此代理可以及时地对异常的动态状况进行检查并 </li></ul><ul><li>作出反应。 </li></ul><ul><li>♦ Cfkey : 在主机生成“公有 - 私有”密钥对。一般作为 Cfengine 软件安装过程中的一 </li></ul><ul><li>个步骤,你只需运行一次该程序。 </li></ul><ul><li>♦ Cfshow : 一旦你对它的内部存储感兴趣, cfshow 便将 cfagent 的数据库内容以 ASCII </li></ul><ul><li>的格式导入。 </li></ul><ul><li>♦ Cfenvgraph : 将 Cfenvd 的数据库内容导入为一种可用于图标格式显示一台主机在 </li></ul><ul><li>其环境中的一般行为。 </li></ul>
  • 6. Cfengine 组成部分之间的联系 <ul><li>1 )服务器上运行 cfrun,cfrun 会根据 cfrun.hosts 中的主机列表来连接到某个客户机的 cfservd 程序 </li></ul><ul><li>2 )客户机上 cfservd 调用本机的 cfagent 程序 </li></ul><ul><li>3 )客户机上 cfagent 程序执行 update.conf, 连接到中央机的 cfservd 复制下载策略文件 cafagent.conf </li></ul><ul><li>4 )客户机下载成功后执行最新版本的策略文件 , 不成功就执行旧版本的 . </li></ul>
  • 7. Cfengine 操作符 <ul><li>groups( 组合 ) </li></ul><ul><li>control( 控制 ) </li></ul><ul><li>homeservers( 主服务器 ) </li></ul><ul><li>binservers( 执行文件服务器 ) </li></ul><ul><li>mailserver( 邮件服务器 ) </li></ul><ul><li>mountables( 挂载表 ) </li></ul><ul><li>import( 导入 ) </li></ul><ul><li>broadcast( 广播 ) </li></ul><ul><li>resolve( 解析 ) </li></ul><ul><li>defaultroute( 默认路由 ) </li></ul><ul><li>directories( 目录 ) </li></ul><ul><li>miscmounts( 杂项挂载 ) </li></ul><ul><li>files( 文件 ) </li></ul><ul><li>ignore( 忽略 ) </li></ul><ul><li>tidy( 整理 ) </li></ul><ul><li>required( 必需 ) </li></ul><ul><li>links( 链接 ) </li></ul><ul><li>disable( 禁用 ) </li></ul><ul><li>shellcommands(shell 命令 ) </li></ul><ul><li>editfiles( 编辑文件 ) </li></ul><ul><li>processes( 过程 ) </li></ul>
  • 8. Cfengine 策略文件 cfservd.conf <ul><li>control: </li></ul><ul><li>domain = ( google.cn ) </li></ul><ul><li>#add by liuts </li></ul><ul><li>cfrunCommand = ( &amp;quot;/usr/local/sbin/cfagent&amp;quot; ) </li></ul><ul><li>DenyBadClocks = ( false ) </li></ul><ul><li>#add by liuts </li></ul><ul><li>MaxConnections = ( 1000 ) </li></ul><ul><li>AllowConnectionsFrom = ( 192.168.0.0/16 ) </li></ul><ul><li># AllowMultipleConnectionsFrom = ( 192.168.0 ) </li></ul><ul><li>TrustKeysFrom = ( 192.168.0.0/16 ) </li></ul><ul><li>AllowUsers = ( root ) </li></ul><ul><li>MultipleConnections = ( true ) </li></ul><ul><li>######################################################### </li></ul><ul><li>admit: # or grant: </li></ul><ul><li>#add by liuts </li></ul><ul><li>/var/cfengine/masterfile/inputs 192.168.0.0/16 </li></ul><ul><li>/usr/local/sbin 192.168.0.0/16 </li></ul><ul><li>/var/cfengine 192.168.0.0/16 </li></ul><ul><li>/bin 192.168.0.0/16 </li></ul><ul><li>/etc 192.168.0.0/16 </li></ul>
  • 9. Cfengine 策略文件 update.conf <ul><li># update.conf </li></ul><ul><li>control: </li></ul><ul><li>actionsequence = ( copy processes tidy ) </li></ul><ul><li>domain = ( google.cn ) </li></ul><ul><li>#policyhost = ( my_policy_host ) </li></ul><ul><li>policyhost = ( cfengine.server.com ) </li></ul><ul><li>master_cfinput = ( /var/cfengine/masterfile/inputs ) </li></ul><ul><li>workdir = ( /var/cfengine ) </li></ul><ul><li>copy: </li></ul><ul><li>$(master_cfinput) dest=$(workdir)/inputs </li></ul><ul><li>r=inf </li></ul><ul><li>mode=700 </li></ul><ul><li>type=binary </li></ul><ul><li>server=$(policyhost) </li></ul><ul><li>trustkey=true </li></ul><ul><li>processes: </li></ul><ul><li>&amp;quot;cfservd&amp;quot; restart /usr/local/sbin/cfservd </li></ul><ul><li>&amp;quot;cfenvd&amp;quot; restart &amp;quot;/usr/local/sbin/cfenvd -H&amp;quot; </li></ul><ul><li>tidy: </li></ul><ul><li>$(workdir)/outputs pattern=* age=7 </li></ul><ul><li># End </li></ul>
  • 10. Cfengine 策略文件 cfagent.conf ( 一 ) <ul><li>control: </li></ul><ul><li>access = ( root ) </li></ul><ul><li>actionsequence = ( resolve copy files editfiles shellcommands ) </li></ul><ul><li>domain = ( goolge.cn ) </li></ul><ul><li>timezone = ( CST ) </li></ul><ul><li>smtpserver = ( smtp.gmail.com ) # used by cfexecd </li></ul><ul><li>sysadm = ( liutiansi@gmail.com ) # where to mail output </li></ul><ul><li>EmptyResolvConf = ( true ) </li></ul><ul><li># listing = ( ExecResult(&amp;quot;/bin/date -s 2008-04-30&amp;quot;) ) </li></ul><ul><li>###################################################################### </li></ul><ul><li>resolve: </li></ul><ul><li>8.8.8.8 </li></ul><ul><li>###################################################################### </li></ul><ul><li>copy: </li></ul><ul><li>/etc/passwd dest=/etc/passwd </li></ul><ul><li>server=cfengine.server.com </li></ul><ul><li>trustkey=true </li></ul><ul><li>/etc/shadow dest=/etc/shadow </li></ul><ul><li>server=cfengine.server.com </li></ul><ul><li>trustkey=true </li></ul><ul><li>###################################################################### </li></ul>
  • 11. Cfengine 策略文件 cfagent.conf ( 二 ) <ul><li>files: </li></ul><ul><li>/etc/passwd </li></ul><ul><li>mode=644 </li></ul><ul><li>owner=root </li></ul><ul><li>action=fixall </li></ul><ul><li>checksum=md5 </li></ul><ul><li>/etc/shadow mode=600 owner=root action=fixall </li></ul><ul><li>###################################################################### </li></ul><ul><li>editfiles: </li></ul><ul><li>{ /home/config.txt </li></ul><ul><li>AutoCreate </li></ul><ul><li>AppendIfNoSuchLine </li></ul><ul><li>&amp;quot;welcome to tianya.cn&amp;quot; </li></ul><ul><li>} </li></ul><ul><li>###################################################################### </li></ul><ul><li>shellcommands: </li></ul><ul><li>&amp;quot;/bin/echo &apos;welcomesystem&apos; &gt; /var/cfengine/inputs/info.log&amp;quot; </li></ul><ul><li>&amp;quot;/bin/echo $(listing) $(listing1)&amp;quot; </li></ul><ul><li>###################################################################### </li></ul><ul><li>processes: </li></ul><ul><li>&amp;quot;inetd&amp;quot; signal=hup </li></ul><ul><li>&amp;quot;irc&amp;quot; signal=kill </li></ul>
  • 12. Cfengine 策略文件 (cfrun.hosts) <ul><li># </li></ul><ul><li># This is the host list for cfrun </li></ul><ul><li># </li></ul><ul><li># Only these hosts will be contacted by remote connection </li></ul><ul><li># </li></ul><ul><li>access=root </li></ul><ul><li>192.168.100.51 </li></ul><ul><li>192.168.100.52 </li></ul><ul><li>192.168.100.53 </li></ul><ul><li>192.168.100.54 </li></ul><ul><li>192.168.100.55 </li></ul><ul><li>192.168.100.60 </li></ul><ul><li>192.168.100.67 </li></ul><ul><li>192.168.100.109 </li></ul><ul><li>192.168.100.110 </li></ul><ul><li>192.168.100.111 </li></ul><ul><li>192.168.100.112 </li></ul><ul><li>192.168.100.113 </li></ul><ul><li>192.168.100.114 </li></ul>
  • 13. Cfengine 之 control ( 类、方法、变量、表达式 ) <ul><li>Hard class: </li></ul><ul><li>ultrix, sun4, sun3, hpux, hpux10, aix, solaris, osf, irix4, irix, irix64 sco, freebsd, netbsd, openbsd, bsd4_3, newsos, solarisx86, aos,nextstep, bsdos, linux, debian, cray,unix_sv, GnU, NT </li></ul><ul><li>Time class : </li></ul><ul><li>Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday </li></ul><ul><li>Hr00, Hr01, Hr02... Hr23 </li></ul><ul><li>Min00, Min17,Min45…Min60 </li></ul><ul><li>Min00_05, Min05_10 ... Min55_00 </li></ul><ul><li>Q1, Q2, Q3, Q4 </li></ul><ul><li>Hr00_Q1, Hr23_Q4 </li></ul><ul><li>Day1 ... Day31 </li></ul><ul><li>January, February, ... December </li></ul><ul><li>Yr1997, Yr2004 </li></ul><ul><li>ipv4_192_0_0_1, ipv4_192_0_0, ipv4_192_0, ipv4_192 </li></ul>
  • 14. Cfengine 之 control ( 类、方法、变量、表达式 ) <ul><li>类的格式: </li></ul><ul><li>action-type : </li></ul><ul><li>compound-class :: </li></ul><ul><li>declaration </li></ul><ul><li>逻辑操作符: </li></ul><ul><li>`()&apos; Parentheses override everything. </li></ul><ul><li>`!&apos; The NOT operator binds tightest. </li></ul><ul><li>`. &amp;&apos; The AND operator binds more tightly than OR. </li></ul><ul><li>`|&apos; OR is the weakest operator. </li></ul><ul><li>如: class1|!class2:: 、 !myhost:: </li></ul><ul><li>变量(系统变量、自定义变量、列表) </li></ul><ul><li>系统变量: AllClasses 、 arch 、 binserver 、 domain 、 sysadm 、 timezone 等等 </li></ul><ul><li>自定义变量: $(variable) 或 ${variable} </li></ul><ul><li>列表: listvar = ( one:two:three:four ) </li></ul>
  • 15. Cfengine 之 control ( 类、方法、变量、表达式 ) <ul><li>系统变量表: </li></ul>AbortClasses access actionsequence addclasses addinstallable AllowRedefinitionOf AutoDefine BinaryPaddingChar ChecksumDatabase BindToInterface(cfagent ) ChecksumPurge ChecksumUpdates childlibpath copylinks defaultcopytype defaultpkgmgr deletenonuserfiles deletenonownerfiles deletenonusermail deletenonownermail domain dpkginstallcommand repchar repository RPMcommand rpminstallcommand schedule secureinput sensiblecount sensiblesize showactions singlecopy site SkipIdentify Smtpserver SplayTime split spooldirectories suninstallcommand suspiciousnames sysadm Syslog SyslogFacility timezone TimeOut Verbose Warnings warnnonuserfiles warnnonownerfiles warnnonusermail warnnonownermail dryrun editbinaryfilesize editfilesize emptyresolvconf exclamation excludecopy excludelinks ExpireAfter FullEncryption homepattern HostnameKeys IfElapsed Inform interfacename lastseenexpireafter fileextension lastseen linkcopies LogDirectory LogTidyHomeFiles moduledirectory mountpattern netmask nonalphanumfiles nfstype PortageInstallCommand
  • 16. Cfengine 之 editfiles <ul><li>格式: </li></ul><ul><li>editfiles: </li></ul><ul><li>class:: { file-to-be-edited </li></ul><ul><li>action “quoted-string...&amp;quot; </li></ul><ul><li>} </li></ul><ul><li>例子: </li></ul><ul><li>editfiles: </li></ul><ul><li>linux:: </li></ul><ul><li>{ /etc/netmasks </li></ul><ul><li>IncrementPointer &amp;quot;-1&amp;quot; </li></ul><ul><li>InsertLine &amp;quot;$(myservice)&amp;quot; </li></ul><ul><li>DeleteLinesContaining &amp;quot;255.255.254.0&amp;quot; </li></ul><ul><li>AppendIfNoSuchLine “192.168 255.255.255.0&amp;quot; </li></ul><ul><li>} </li></ul>
  • 17. Cfengine 之 editfiles <ul><li>常用方法: </li></ul><ul><li>AutoCreate </li></ul><ul><li>IncrementPointer &amp;quot;-1“ </li></ul><ul><li>InsertLine string </li></ul><ul><li>AppendIfNoSuchLine string </li></ul><ul><li>详细方法见 Cfengine 之 editfile 域方法 .doc </li></ul>
  • 18. Cfengine 常用命令 <ul><li>cfservd -v 启动 cfservd 服务 ( 前台 ) </li></ul><ul><li>cfagent -v 如果不需要真正执行 , 可以加上 -n 参数 </li></ul><ul><li>cfexecd -F 执行 Cfagent( 后台 ) </li></ul><ul><li>cfrun -v 服务器端批量请求客户端代理,对单台服务器的请求 </li></ul><ul><li>cfrun –v 192.168.100.5 </li></ul>
  • 19. Cfengine 问题总结 <ul><li>1 、 安装之前检查服务器时间是否正确。 </li></ul><ul><li>2 、 Host authentication failed. Did you forget the domain name or IP/DNS address registration (for ipv4 or ipv6)?cfrun:tianyacaathe.: Couldn&apos;t recv </li></ul><ul><li>(1) 在服务器端运行 cfrun -v IP 出现以上信息:检查客户端 cfservd.conf 文 件 AllowMultipleConnectionsFrom 的参数 ; </li></ul><ul><li>(2) 在客户端运行 cfagent -v 出现以上信息,检查服务器端 cfservd.conf 文件 admit: 域的参数 ; </li></ul><ul><li>3 、 nothing to cfagent do…. </li></ul><ul><li>请隔 10 秒钟后再运行即可。 </li></ul>
  • 20. 谢谢大家! Q&amp;A http://blog.liuts.com

×