歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> RHEL6 下Cfengine V3 安裝測試

RHEL6 下Cfengine V3 安裝測試

日期:2017/2/27 16:00:00   编辑:Linux教程
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%]
Copyright © Linux教程網 All Rights Reserved