RHEL6 下Cfengine V3 安裝測試1

kumu_linux發表於2012-05-22

Cfengine 是一種 GNU 開源配置管理框架,用於計算機系統自動化。此框架是輕量的,可針對幾乎所有平臺構建。它能執行在所有常見平臺上,其中包括 AIX、Linux、UNIX、Apple 和 Windows。

 

cf-promises  承諾的檢驗者和編譯者,在試圖執行一套配置承諾前預先檢測。

cf-agent     變化的發動者,代理是Cfengine 作業系統資源的部分。

cf-serverd     伺服器能夠共享檔案並且接受在一臺個體計算機上執行當前策略的請求。它不可能從外部傳送(推出)新資訊給 Cfengine .

cf-execd     這是一個安排日程的後臺程式(它能補充或取代cron)。它也可以作為包裝器,執行和收集cf-agent的輸出,並且傳送郵件給有必要的系統使用者。

cf-runagent  這是一個幫助者程式,它能夠對話cf-serverd 並要求執行cf-agent上的當前策略。如果代理機上的策略包含了檢驗更新,它因此模擬為一個發動者,對cfengine  的主機產生變化。

cf-report      它能得出總結和其他報告,以多種格式輸出或與其他系統整合。

cf-know       這個代理能夠從大量關於系統知識的承諾中產生一個ISO 標準主題圖。它可作為語義網顯示文件。

Cfengine 安裝

去Cfengine官網下載最新的Cfengine軟體,https://cfengine.com/downloads  最新版本是V3.3

# ls

cfengine-3.2.4.tar.gz

cfengine-community-3.3.0-1.i386.rpm

cfengine-community-3.3.0-1.x86_64.rpm

原始碼安裝

安裝cfengine前需要一下安裝一下三種軟體:

Ø  Openssl (openssl openssl-devel)

Ø  BerkeleyDB(db4、db4-devel)

Ø  pcre(pcre pcre-devel)

為安裝簡便,以上3種軟體直接使用yum安裝即可

# yum install openssl* pcre* db4* -y

 

安裝Cfengine

# tar xf /cfengine-3.2.4.tar.gz -C /usr/src/

# cd /usr/src/cfengine-3.2.4/

# ./configure

# make && make install

 

# /usr/local/sbin/cf-key  //生成一對金鑰,並且生成當前Cfengine的工作目錄

Making a key pair for cfengine,please wait, this could take a minute...

[root@server ~]# tree /var/cfengine/   //檢視此時目錄結構

/var/cfengine/

├── bin

├── inputs

├── lastseen

├── modules

├── outputs

├── ppkeys

│   ├── localhost.priv

│   └── localhost.pub

├── randseed

├── reports

└── state

    ├── cf_otherprocs

    ├── cf_procs

    ├── cf_rootprocs

    └── cf_state.db

 

8 directories, 7 files

 

Cfengine的相關目錄:

Ø  /var/cfengine/bin --> 具有Cfengine二進位制檔案的目錄

Ø  /var/cfengine/inputs --> 具有Cfengine配置檔案的目錄

Ø  /var/cfengine/outputs --> 具有Cfengine執行報告的目錄

Ø  /var/cfengine/ppkeys --> 具有身份驗證金鑰的目錄

Ø  /var/cfmasterfiles --> 具有策略伺服器上的主檔案的目錄

Ø  /var/cfengine/repository --> 包含了重要Cfengine 檔案備份以備恢復(name/location 可配置)的目錄

 

# mkdir -p /var/cfengine/masterfiles

# cp /usr/local/sbin/cf-* /var/cfengine/bin/  //拷貝命令檔案到/var/cfengine/bin/下

# cp /usr/local/share/cfengine/masterfiles/*.cf/var/cfengine/masterfiles/

# tree /var/cfengine/bin/

/var/cfengine/bin/

├── cf-agent

├── cf-execd

├── cf-key

├── cf-know

├── cf-monitord

├── cf-promises

├── cf-report

├── cf-runagent

└── cf-serverd

 

0 directories, 9 files

二進位制檔案:

Ø  /var/cfengine/bin/cf-promises --> 檢查承諾語法的命令

Ø  /var/cfengine/bin/cf-agent --> 維護共同做出的承諾及有關係統狀態的代理包命令

Ø  /var/cfengine/bin/cf-serverd --> 用來將策略或資料檔案釋出到客戶端並就來自cf-runagent 的請求進行響應的伺服器(守護程式)

Ø  /var/cfengine/bin/cf-execd --> 負責執行cf-agent的排程守護程式

Ø  /var/cfengine/bin/cf-runagent --> 在遠端機器上執行cf-agent的命令

Ø  /var/cfengine/bin/cf-monitord --> 負責收集有關係統狀態資訊的守護程式

Ø  /var/cfengine/bin/cf-report --> 從 Cfengine 嵌入資料庫生成摘要和其他報告的命令

Ø  /var/cfengine/bin/cf-know --> 從大量承諾(知識建模代理)生成一個ISO標準的 Topic Map的命令

Ø  /var/cfengine/bin/cf-key --> 在每個主機上執行一次來建立用於安全通訊的公共/私有金鑰對的金鑰生成工具

配置檔案:

Ø  /var/cfengine/inputs/promises.cf --> cf-agent 所使用的主要配置檔案

 

# /var/cfengine/bin/cf-agent --bootstrap   //測試是否可以執行

** CFEngine BOOTSTRAP probe initiated

 

   @@@     

   @@@     CFEngine

           

 @ @@@ @   CFEngine Core 3.2.4

 @ @@@ @   

 @ @@@ @   

 @    @   

   @@@     

   @ @     

   @ @     

   @ @     

 

Copyright (C) CFEngine AS2008-2012

See Licensing athttp://cfengine.com/3rdpartylicenses

 

 -> This host is: server.sxkj.com

 -> Operating System Type is linux

 -> Operating System Release is2.6.32-131.0.15.el6.i686

 -> Architecture = i686

 -> Internal soft-class is linux

 -> An existing policy was cached on thishost in /var/cfengine/inputs

 -> Assuming the policy distribution pointat: 10.1.1.187:/var/cfengine/masterfiles

 -> Attempting to initiate promisedautonomous services...

 

 ** This host recognizes itself as a CFEnginePolicy Hub, with policy distribution and knowledge base.

 -> The system is now converging. Fullinitialisation and self-analysis could take up to 30 minutes

 

-> Bootstrapto 10.1.1.187 completed successfully

# ps -e | grep cf   //進一步檢測cfengine的相關程式是否開啟

12384 ?        00:00:00 cf-execd

12387 ?        00:00:00 cf-serverd

12398 ?        00:00:00 cf-monitord

 

簡單策略執行測試

root使用者測試

Cfengine有一個可以使用的工作空間目錄。當以root身份執行,它的預設位置在`/var/cfengine' ,而目錄~/.cfagent 是留給其他使用者使用的。

# cat test.cf   //編輯一個策略檔案

bodycommon control

{

bundlesequence=> { "test" };

}

#

bundleagent test

{

reports:                     #這個是承諾型別  Thisis a promise type

cfengine_3::                  #這個是類環境(這個承諾只能在cfengine3系統實行)

"Helloworld";                 #這是一個簡單的承諾(它產生了一個寫有"Hello world"的報告)

}

# /var/cfengine/bin/cf-promises  -f  /root/test.cf

# /var/cfengine/bin/cf-agent  -f  /root/test.cf

R: Hello world

//這個‘R’:告訴你這是個來自於一個報告的輸出

//如果你立即重複相同的命令(/var/cfengine/bin/cf-agent -f  /root/test.cf),將什麼也不會發生。但如果你等上1分鐘,它將會再次的工作。cfengine認為重複指令的時間太短了而不需要再次保持承諾

# /var/cfengine/bin/cf-agent -v -f /root/test.cf  | grep lock 

//-v或者--verbose以詳細的模式列出執行過程

cf3> Making sure that locksare private...

cf3>  XX Nothing promised here [lock.test.reports.-server.Hello_world_10] (0/1 minuteselapsed)

cf3>  -> No lock purging scheduled

#

 

# cat /root/test1.cf

bodycommon control

{

         bundlesequence => {"edit_motd" };

}

 

bundleagent edit_motd

{

vars:  

      "motd" string =>"/etc/motd";

files:  

"$(motd)"

create=> "true",

edit_line=> addmessage;

reports:

cfengine::

         "Hello world!";

}

 

bundleedit_line addmessage

{

insert_lines:

         "This system is managed byCFEngine 3";

}

# /var/cfengine/bin/cf-agent -KI -f ~/test1.cf   //-K忽略鎖狀態,-I選項是有變化就顯示

 -> Edited file /etc/motd

R: Hello world!

# cat /etc/motd

This system is managed byCFEngine 3

//如果檔案中已經有編輯的資訊存在了,就不再編輯了

 

普通使用者測試

你不需要超級使用者的許可權來使用cfengine。以普通使用者可以安全地測試大多數的試驗。你應該在準備開始配置系統以前花一些時間來試驗小的例子。為了這麼做你應該以常規無特權的使用者登入到你的系統並開始配置:

$ /usr/local/sbin/cf-key

$ cp /usr/local/sbin/cf-* ~/.cfagent/bin

 

$ cat test.cf

body common control

{

bundlesequence=> { "test" };

}

#

bundle agent test

{

reports:             #這個是承諾型別  This is a promise type

cfengine_3::           #這個是類環境(這個承諾只能在cfengine3系統實行)

"Helloworld";        #這是一個簡單的承諾(它產生了一個寫有"Hello world"的報告)

}

$ ~/.cfagent/bin/cf-promises  -f  ~/test.cf

$ ~/.cfagent/bin/cf-agent  -f  ~/test.cf

R: Hello world

 

rpm安裝

這裡以32位的rpm軟體作為安裝示例

# rpm -ivh cfengine-community-3.3.0-1.i386.rpm

Preparing...               ########################################### [100%]

  1:cfengine-community     warning:user build does not exist - using root

warning: group build does notexist - using root

warning: user build does notexist - using root

warning: group build does notexist - using root

###########################################[100%]

#

本文件主要介紹Cfengine的原始碼安裝配置,rpm不作過多介紹

相關文章