精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

用Cfengine自動化基礎(chǔ)架構(gòu)進(jìn)行系統(tǒng)管理

運(yùn)維 系統(tǒng)運(yùn)維 自動化
Cfengine 是一個(gè)流行的數(shù)據(jù)中心自動化解決方案,被世界各地的組織廣泛采用。它可擴(kuò)展至成千上萬臺機(jī)器,從筆記本、臺式機(jī)、嵌入式設(shè)備到大型主機(jī)。在本文中,了解如何使用這個(gè)多功能的靈活技術(shù)來解決數(shù)據(jù)中心問題。

簡介

如今,IT 數(shù)據(jù)中心必須跨多個(gè)操作系統(tǒng)版本提供和維護(hù)穩(wěn)定性、安全性和可伸縮性服務(wù),這類服務(wù)可在多種服務(wù)器硬件和操作系統(tǒng)上運(yùn)行。效率很重要,管理員希望能夠最小化這些服務(wù)的支持,讓其成為全自動,就像自動熄燈一樣。在這個(gè)兩個(gè)部分系列文章 “用 Cfengine 自動化基礎(chǔ)架構(gòu)管理” 中,我們將探討一種用于系統(tǒng)管理和 IT 管理的自動框架:Cfengine。

本系列第 1 部分將為您提供一個(gè) Cfengine V3 Community Edition 概述,以及有關(guān)如何構(gòu)建及配置 Cfengine 策略/發(fā)布服務(wù)器和客戶機(jī)的信息。第 2 部分則會用示例說明如何使用 Cfengine 完成服務(wù)支持所涉及到的諸多日常任務(wù)。

本文假設(shè)您已經(jīng)安裝了基礎(chǔ)的 UNIX® 或 Linux® 操作系統(tǒng),并且非常熟悉 Cygwin 和 Linux 打包命令。

配置管理和 Cfengine

良好的配置管理可以建立和維護(hù) IT 平臺和產(chǎn)品及其環(huán)境的性能、功能以及物理屬性的一致性。它還可用來決定適當(dāng)?shù)陌踩蕴匦圆⒋_保這些特性的正確應(yīng)用。這是一項(xiàng)復(fù)雜的工作,有很多配置管理工具可用。

有些工具,比如 Arusha Project (ARK),可與 Cfengine 結(jié)合使用。其他工具雖然使用的是類似的系統(tǒng)管理概念,但以不同的編程語言編寫,比如 Puppet 是用 Ruby 編寫、REST 調(diào)用的,又比如 Synctool 是用 Python 編寫的,再比如 SmartFrog,是基于 Java™ 技術(shù)的。而類似 opsi (Open PC Server Integration) 這樣的工具則只面向 Windows® 編寫。IBM® Systems Director 以及最近收購的 IBM BigFix 也能提供配置管理。

Cfengine 是一種 GNU 開源配置管理框架,用于計(jì)算機(jī)系統(tǒng)自動化。此框架是輕量的,可針對幾乎所有平臺構(gòu)建。它能運(yùn)行在所有常見平臺上,其中包括 AIX、Linux、UNIX、Apple 和 Windows。

IT Infrastructure Library 是在全球應(yīng)用最為廣泛的一種 IT 服務(wù)管理方式,它定義了知識管理 作為交付服務(wù)的關(guān)鍵過程。知識管理確保一個(gè)人只要擁有這方面的知識就能夠交付并支持業(yè)務(wù)所需的服務(wù)。前提是高效提供服務(wù)時(shí),清晰地理解服務(wù)帶來的價(jià)值,并提供所需的相關(guān)可用信息。Cfengine V3 關(guān)注管理生命周期每個(gè)階段的知識管理。通過使用一個(gè)已定義配置,Cfengine 能夠確保您擁有恰當(dāng)?shù)陌?、配置文件、文件?quán)限,且進(jìn)程運(yùn)行在您的環(huán)境中。

Cfengine 有兩個(gè)版本:一個(gè)是存在已久的社區(qū)版,另一個(gè)是商業(yè)的企業(yè)版。對于商業(yè)版,亦有幾種形式:Nova、Constellation 和 Galaxy。

生命周期管理

Cfengine 遵循的是系統(tǒng)生命周期管理的 Build-Deploy-Manage-Audit (BDMA) 模式。BDMA 包含系統(tǒng)生命周期的四個(gè)階段:構(gòu)建、部署、管理和審計(jì)。在構(gòu)建階段,需要計(jì)劃策略更改、規(guī)劃想要的狀態(tài)承諾(promise)以及構(gòu)建所建議承諾的模板,這樣如果所有機(jī)器均能做出并兌現(xiàn)這些承諾,系統(tǒng)便可無縫地運(yùn)行。

在部署階段,需要向所有自主客戶端(autonomous clients)發(fā)布策略,并且每個(gè)客戶機(jī)都要運(yùn)行一個(gè)代理,無需協(xié)助即可實(shí)現(xiàn)并維護(hù)這些策略。

在管理階段,這個(gè)自主代理負(fù)責(zé)管理該系統(tǒng),您只需處理不能被自動處理的極少事件。

最后,在審計(jì)階段,對更改進(jìn)行本地審計(jì)和維護(hù)。決策結(jié)果由 Cfengine 內(nèi)的設(shè)計(jì)確保且可自動維護(hù)。

Cfengine 不應(yīng)被視作一種轉(zhuǎn)出(rollout)系統(tǒng),其中人們試圖剔除絕對更改并在出現(xiàn)錯(cuò)誤時(shí)反轉(zhuǎn) Cfengine,需發(fā)布策略修訂序列,然后繼續(xù)。這些狀態(tài)更改由各個(gè)客戶端本地管理且不斷修護(hù)以便符合策略。

依賴項(xiàng)

Cfengine 需要 OpenSSL 和 BerkeleyDB V3.2 或更高版本。您還可選擇為支持 Perl Compatible Regular Expression library (PCRE)、OpenLDAP 和 PostgreSQL 或 MySQL 而構(gòu)建。有些數(shù)據(jù)庫特性只在商業(yè)版本可用。在 Windows 上,Cfengine 需要 Cygwin 環(huán)境。而且,像 Subversion (SVN) 這樣的版本控制軟件可用來控制對配置文件的更改。

術(shù)語

  • 承諾 — 定義的動作或規(guī)則,以便系統(tǒng)遵循。
  • 包 — 承諾組。
  • 策略 — 定義我們所能管理的實(shí)際知識包。
  • 類 — 定義為 "on" 或 "off" 的屬性/變量。
  • 策略包含承諾包。
  • 密鑰 — 可以是公共或私有的,用來對可以訪問服務(wù)器進(jìn)行身份驗(yàn)證,在每個(gè)客戶機(jī)上使用 cf-key 生成,然后再復(fù)制到服務(wù)器上的密鑰倉庫。在 IBM ,只使用服務(wù)器密鑰就足以提供安全性。

準(zhǔn)備開始

Cfengine 可運(yùn)行于任何 UNIX 服務(wù)器上,若有 Cygwin 環(huán)境,也可運(yùn)行在 Windows 上。在一個(gè) UNIX 服務(wù)器上,先安裝 OpenSSL、BerkeleyDB 以及上述討論的所有附加包。Cfengine 通常從一個(gè)分布包(比如 rpm 或 deb)安裝,或者,源代碼也可下載和編譯。

如果計(jì)劃從源代碼構(gòu)建 Cfengine,還將需要在 UNIX/Linux 服務(wù)器上安裝額外的工具,比如 gcc、flex 和 bison。在一個(gè) Windows 服務(wù)器上,先安裝 Cygwin,然后安裝 gcc、flex 和 bison 工具來編譯并安裝代碼。

這些基本 Cfengine 文件安裝在 Cfengine 工作目錄 /var/cfengine 的子目錄內(nèi)。這個(gè)工作目錄為 Cfengine 自己所用,且在構(gòu)建時(shí)定義。這個(gè)路徑可視為是一個(gè)安全的本地文件系統(tǒng)。配置文件編碼后,可將其放置于所有 Cfengine 服務(wù)器上的配置分布點(diǎn)內(nèi)(比如 /var/cfmasterfiles)。這個(gè)路徑通常置于版本控制目錄下。

從源代碼構(gòu)建 Cfengine

從 Cfengine 存儲庫下載源代碼。作為一個(gè)非 root 用戶登錄到此系統(tǒng)并運(yùn)行如下命令。

tar –zxf cfengine-x.x.x.tar.gz
cd cfengine-x.x.x
./configure --prefix=/var/cfengine
--sbindir=/var/cfengine/bin --localstatedir=/var/cfengine
--with-workdir=/var/cfengine --with-openssl=/usr make

現(xiàn)在轉(zhuǎn)到 root 用戶并運(yùn)行如下命令(二進(jìn)制文件置于 /var/cfengine/bin 內(nèi))。

make install
make installcheck

在 Policy/Distribution Server 上安裝 Cfengine

作為 root 用戶登錄到系統(tǒng)并執(zhí)行如下命令:

mkdir –p /var/cfengine/masterfiles
cp cfengine-x.x.x/inputs/update.cf to /var/cfengine/masterfiles
cp cfengine-x.x.x/inputs/promises.cf to /var/cfengine/masterfiles

用適當(dāng)?shù)碾娮余]件地址更新文件 promises.cf 內(nèi)的 "mailto" 選項(xiàng)。在 promise.cf 的 "body server control" 部分添加服務(wù)器應(yīng)該接受其連接的網(wǎng)絡(luò):

allowconnects => { "192.", "10.", "127.0.0.1" , "::1" };
allowallconnects => { "192.", "10.", "127.0.0.1" , "::1" };
trustkeysfrom => { "192.", "10.", "127.0.0.1" , "::1" };

在所有配置文件內(nèi)將策略服務(wù)器更新為這個(gè)新的服務(wù)器環(huán)境:

cp cfengine-x.x.x/inputs/failsafe.cf to /var/cfengine/masterfiles
cp cfengine-x.x.x/inputs/cfengine_stdlib.cf to /var/cfengine/masterfiles

Cfengine 組件

以下列出的是 Cfengine 安裝中需要注意的組件。 (注意:如果您是從一個(gè)二進(jìn)制包安裝的 Cfengine,或是在編譯安裝過程中做過定制,那么這些基礎(chǔ)目錄有可能不同。)

目錄

  • /var/cfengine/bin — 具有 Cfengine 二進(jìn)制文件的目錄
  • /var/cfengine/inputs — 具有 Cfengine 配置文件的目錄
  • /var/cfengine/outputs — 具有 Cfengine 運(yùn)行報(bào)告的目錄
  • /var/cfengine/ppkeys — 具有身份驗(yàn)證密鑰的目錄
  • /var/cfmasterfiles — 具有策略服務(wù)器上的主文件的目錄
  • /var/cfengine/repository — 包含了重要 Cfengine 文件備份以備恢復(fù)(name/location 可配置)的目錄

二進(jìn)制文件

  • /var/cfengine/bin/cf-promises — 檢查承諾語法的命令
  • /var/cfengine/bin/cf-agent — 維護(hù)共同做出的承諾及有關(guān)系統(tǒng)狀態(tài)的代理包的命令
  • /var/cfengine/bin/cf-serverd — 用來將策略或數(shù)據(jù)文件發(fā)布到客戶端并就來自 cf-runagent 的請求進(jìn)行響應(yīng)的服務(wù)器(守護(hù)進(jìn)程)
  • /var/cfengine/bin/cf-execd — 負(fù)責(zé)運(yùn)行 cf-agent 的調(diào)度守護(hù)進(jìn)程
  • /var/cfengine/bin/cf-runagent — 在遠(yuǎn)端機(jī)器上運(yùn)行 cf-agent 的命令
  • /var/cfengine/bin/cf-monitord — 負(fù)責(zé)收集有關(guān)系統(tǒng)狀態(tài)信息的守護(hù)進(jìn)程
  • /var/cfengine/bin/cf-report — 從 Cfengine 嵌入數(shù)據(jù)庫生成摘要和其他報(bào)告的命令
  • /var/cfengine/bin/cf-know — 從大量承諾(知識建模代理)生成一個(gè) ISO 標(biāo)準(zhǔn)的 Topic Map 的命令
  • /var/cfengine/bin/cf-key — 在每個(gè)主機(jī)上運(yùn)行一次來創(chuàng)建用于安全通信的公共/私有密鑰對的密鑰生成工具

配置文件

  • /var/cfengine/inputs/promises.cf — cf-agent 所使用的主要配置文件
  • /var/cfengine/inputs/library.cf — 包含了可重用代碼集的社區(qū)庫;對于 V3.1.x 發(fā)布版,最好使用這個(gè)社區(qū)庫

首次啟動 Cfengine Policy Server

在該服務(wù)器上運(yùn)行如下命令:

/var/cfengine/bin/cf-key
mkdir /var/cfmasterfiles/ppkeys
cp /var/cfengine/ppkey/localhost.pub /var/cfmasterfiles/ppkeys/root-.pub
cp /var/cfengine/ppkey/localhost.priv \
/var/cfmasterfiles/ppkeys/root-.priv
cp /var/cfmasterfiles/inputs/update.cf /var/cfengine/inputs/
cp /var/cfmasterfiles/inputs/failsafe.cf /var/cfengine/inputs/
/var/cfengine/bin/cf-agent –bootstrap

Cfengine Policy 服務(wù)器現(xiàn)已配置。為了準(zhǔn)備 Cfengine 來充當(dāng)遠(yuǎn)端客戶機(jī),執(zhí)行如下命令: start cf-server。

在大多數(shù)環(huán)境內(nèi),可以通過配置運(yùn)行 cf-serverd。其他時(shí)候,最好是為服務(wù)器配置準(zhǔn)備一個(gè)獨(dú)立的配置文件。如果進(jìn)程意外終止,這可以提供一個(gè)位置供外部進(jìn)程重新啟動 cf-serverd。我們還可以用一個(gè) watchdog 腳本來重新啟用 cf-serverd。要從命令行運(yùn)行它:

/var/cfengine/bin/cf-serverd
/var/Cfengine/bin/cf-serverd –f
/var/cfmasterfiles/prod/server/server.cf

客戶端的初始設(shè)置

  1. /var/cfengine/inputs/failsafe.cf
  2. /var/cfengine/inputs/update.cf
  3. /var/cfengine/ppkeys/root-.pub

通過執(zhí)行如下命令首次啟動 Cfengine 客戶端:

/var/cfengine/bin/cf-key
/var/cfengine/bin/cf-agent –K –bootstrap

為您的環(huán)境創(chuàng)建一個(gè)二進(jìn)制包

此時(shí),您可能會想要?jiǎng)?chuàng)建 APT 或 RPM 包用來配置您的客戶端。其中的一個(gè)包包含 Cfengine 二進(jìn)制文件,而另外一個(gè)包則包含了最低限度的 Cfengine 配置文件及服務(wù)器公鑰來引導(dǎo) Cfengine,此外,還有 cf-key 以及如上所列的 cf-agent 命令。構(gòu)建了這兩個(gè)包后,通過安裝這些包來配置 Cfengine 的客戶機(jī)就顯得十分簡單了。

我們接下來將會展示如何針對 Red Hat 環(huán)境創(chuàng)建二進(jìn)制包。(要?jiǎng)?chuàng)建一個(gè) Debian 包,請參考 UbuntuForums.org。)不同發(fā)布版對創(chuàng)建二進(jìn)制包有不同的要求。查閱您環(huán)境的參考文檔,了解如何適當(dāng)準(zhǔn)備此信息。#p#

準(zhǔn)備一個(gè) RPM

RPM 以一個(gè) spec 文件開始,內(nèi)含有關(guān)此包的信息。清單 1 顯示了 Red Hat RPM Spec 文件的一個(gè)例子。

清單 1. Cfengine V3 Red Hat RPM spec 文件

%define debug_package %{nil}
%define bin_path \
"/bin:/usr/bin:/usr/sbin:/usr/bin/X11:/sbin:\
/opt/cfengine/bin:/
opt/cfengine/bin:/opt/freeware/bin/:/usr/gnu/bin"
Name : cfengine
Summary : A tool to maintain complicated networks
Version : 3.1.4
Release : 1
URL : http://www.cfengine.org
Vendor : %{__spec_vendor}
License : GPL
Group : System Environment/Client Management
Packager :
Distribution : %{__spec_distribution}
Source : %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%ifos linux
Requires : db4 openssl coreutils pcre
#libacl zlib libattr e2fsprogs-libs keyutils-libs
BuildRequires : db4 db4-devel openssl openssl-devel pcre-devel
#libacl libacl-devel openssl openssl-devel pcre-devel zlib zlib-devel
libattr libattr-devel e2fsprogs-libs keyutils-libs libselinux libsepol
ExclusiveArch : i386 x86_64 ppc ppc64
%endif
%descriptionCfengine is the standalone, open-source datacenter
management platform run by leading enterprises since 1993.
Customize your IT systems, align to network, business and
regulatory needs, monitor problems, automatically repair
and maintain systems more effectively than with proprietary
software. Cope with new and legacy systems and adopt on a
phased basis. Cfengine yields reduced costs, improved
efficiency and higher return on investment for the lowest
cost of adoption in the industry!
Authors:
--------
Mark Burgess
%prep
[ -d %{buildroot} -a "%{buildroot}" != "" ] && rm -rf %{buildroot}
mkdir -p %{buildroot}
%setup -q
%build
export CFLAGS="-g -O2 -D_FORTIFY_SOURCE=0"
%configure \
--prefix=/var/cfengine \
--sbindir=/var/cfengine/bin \
--localstatedir=/var/cfengine \
--with-workdir=/var/cfengine \
--libdir=%{_libdir} \
--with-berkeleydb=%{_libdir} \
--with-openssl=/usr \
--with-pcre
make
make DESTDIR=${RPM_BUILD_ROOT} install
%files
%defattr(-,root,root)
%{_mandir}/man?/*
/var/cfengine/*
%{_libdir}/libpromises.la
%{_libdir}/libpromises.so*
%pre
export PATH=$PATH:%bin_path
%post
export PATH=$PATH:%bin_path

RPM 構(gòu)建過程

  1. 將源代碼下載到 /usr/src/redhat/SOURCES/ 文件夾。
  2. 將此 spec 文件放置于 /usr/src/redhat/SPECS/ 文件夾。
  3. 運(yùn)行命令 rpmbuild –ba /usr/src/redhat/SPECS/cfengine.spec 來構(gòu)建二進(jìn)制 RPM 和源 RPM。
  4. 通過運(yùn)行 rpm –ivh 安裝并測試這個(gè)新的 RPM。通過運(yùn)行 rpm –e 測試 RPM 的刪除。

Cfengine 的第一步

初始化后,cf-agent 可自動識別主機(jī)上的很多屬性。從這些屬性,定義了 “硬類”。隨著過程的運(yùn)行,其他要定義的類就是所謂的 “軟類”。最初的執(zhí)行開始于從 cron 或命令行調(diào)用 cf-execd –F。cf-execd 讀取 cf-promise 文件,由它進(jìn)行語法檢查。如果發(fā)現(xiàn)錯(cuò)誤, cf-agent 就會中止當(dāng)前的配置,并轉(zhuǎn)而運(yùn)行 /var/cfengine/inputs/failsafe.cf 配置。

圖 1 以圖解的方式解釋了 Cfengine 過程。

 

此圖顯示了沒有問題時(shí) promise.cf 的流程以及檢測到錯(cuò)誤時(shí)退到 failsafe.cf

 

圖 1. Cfengine 過程

示例配置

為了方便您熟悉 Cfengine,清單 2-6 顯示了將要放置于 /var/cfengine/inputs 內(nèi)的示例配置文件。要驗(yàn)證語法是否正確,運(yùn)行 cf-promises –f ./test.cf。若要使用此配置執(zhí)行,運(yùn)行 cf-agent –Kiv -f ./test .cf。

清單 2. 示例 failsafe.cf

########################################################
# failsafe.cf
########################################################
body common control
{
bundlesequence => { "update" };
inputs => { "update.cf" };
version => "1.2.3";
}
bundle agent failsafe
{
classes:
"failsafe" not => "bootstrap_mode";
}

清單 3. 示例 promises.cf

#######################################################
# Copyright (C) Cfengine AS
# This file is part of Cfengine 3 - written and maintained by Cfengine AS.
#######################################################
# promises.cf
#######################################################
body common control
{
bundlesequence => {
"update",
"garbage_collection",
"main"
};
inputs => {
"update.cf",
"site.cf"
};
}
#######################################################
body agent control
{
ifelapsed => "15";
}
#######################################################
body executor control
{
splaytime => "1";
mailto => "username@localhost.localdomain";
smtpserver => "localhost";
mailmaxlines => "30";
# Instead of a separate update script, now do this
exec_command => "$(sys.workdir)/bin/cf-agent -f failsafe.cf &&
$(sys.workdir)/bin/cf-agent";
}
#######################################################
body reporter control
{
reports => { "performance", "last_seen", "monitor_history" };
build_directory => "$(sys.workdir)/reports";
report_output => "html
}
#######################################################
body server control
{
allowconnects => { "192.", "10.", "127.0.0.1" , "::1" };
allowallconnects => { "192.", "10.", "127.0.0.1" , "::1" };
trustkeysfrom => { "192.", "10.", "127.0.0.1" , "::1" };
# Makes updates and runs happen in one
cfruncommand => "$(sys.workdir)/bin/cf-agent -f failsafe.cf &&
$(sys.workdir)/bin/cf-agent";
allowusers => { "root" };
}
#######################################################
# Server configuration
#######################################################
bundle server access_rules()
{
access:
"/var/cfmasterfiles"
admit => { "192.", "10.", "127.0.0.1" , "::1" };
roles:
".*" authorize => { "root" };
}
body action local_immediate
{
ifelapsed => "0";
action_policy => "fix";
}
#######################################################
## To avoid namespace conflict and reduce file footprint
#######################################################
body depth_search local_recurse(d)
{
depth => "$(d)";
xdev => "true";
}
body delete local_tidy
{
dirlinks => "delete";
rmdirs => "true";
}
body file_select local_days_old(days)
{
mtime => irange(0,ago(0,0,"$(days)",0,0,0));
file_result => "mtime";
}
body classes local_define(class,alert)
{
promise_repaired => { "$(class)" };
repair_failed => { "$(alert)" };
} 

#p#

清單 4. 示例 update.cf

#######################################################
### update.cf – config file used by the base delivery system
#######################################################
bundle agent update
{
vars:
"master_inputs" string => "/var/cfmasterfiles/inputs";
"master_scripts" string => "/var/cfmasterfiles/scripts";
"master_ppkeys" string => "/var/cfmasterfiles/ppkeys";
"master_server" slist => { "localhost" };
redhat|centos::
"update_crontab" string => "/var/spool/cron/root";
SuSE::
"update_crontab" string => "/var/spool/cron/tabs/root";
#define others as needed (darwin, macOSX should support below)
(!SuSE).(!redhat)::
"update_crontab" string => "/var/spool/cron/crontabs/root";
classes:
"exec_fix" not => regline(".*cf-execd.*","$(update_crontab)");
files:
"/var/cfengine/inputs"
handle => "update_inputs",
comment => "Update the base inputs directory for client",
perms => u_p("600"),
copy_from => update_scp("$(master_inputs)","$(master_server)"),
depth_search => recurse_svn("inf"),
file_select => cf3_config,
action => update_immediate;
"/var/cfengine/scripts"
handle => "update_scripts",
comment => "Update the base scripts directory for client",
perms => u_p("750"),
copy_from => update_scp("$(master_scripts)","$(master_server)"),
depth_search => recurse_svn("inf"),
file_select => cf3_scripts,
action => update_immediate; "/var/cfengine/ppkeys"
handle => "update_ppkeys",
comment => "Update the base ppkeys directory for client",
perms => u_p("600"),
copy_from => update_scppubs("$(master_ppkeys)","$(master_server)"),
depth_search => recurse_svn("inf"),
file_select => cf3_pub,
action => update_immediate;
exec_fix::
"$(update_crontab)"
handle => "update_cron",
comment => "Ensure that cron entry exists",
create => "true",
action => update_immediate,
edit_line => update_add2cron,
classes => update_repaired("updated_cron");
commands:
bootstrap_mode::
"/bin/echo"
args => "Running Bootstrap, version: $(sys.cf_version) Workdir is: $(sys.workdir) ",
handle => "callback_bootstrap",
comment => "Callback Bootstrap happened",
action => update_immediate;
failsafe::
"/bin/echo"
args => "Running Failsafe, version: $(sys.cf_version) Workdir is: $(sys.workdir) ",
handle => "callback_failsafe",
comment => "Callback Failsafe happened",
action => update_immediate;
!bootstap.!failsafe::
"/bin/echo"
args => "Running Normal, version: $(sys.cf_version) Workdir is: $(sys.workdir)",
handle => "callback_normalrun",
comment => "Callback Normal Run Happened",
contain => update_root,
action => update_immediate;
}
############################################
body perms u_p(p)
{
mode => "$(p)";
}
body depth_search recurse_svn(d)
{
depth => "$(d)";
exclude_dirs => { "\.svn" };
}
############################################
add_cron::
"Added a 15 minute schedule to crontab";
}
body file_select cf3_config
{
leaf_name => { "^.svn", ".*\.cf" , ".*\.sh" };
file_result => "leaf_name";
}
body file_select cf3_scripts
{
leaf_name => { ".*\.sh", ".*.py" };
file_result => "leaf_name";
}
body file_select cf3_pub
{
leaf_name => { "^localhost*", ".*\.pub" };
file_result => "leaf_name";
}
#########################################################
body copy_from update_scp(from,server)
{
source => "$(from)";
servers => { "$(server)" };
compare => "digest";
verify => "true";
purge => "true";
trustkey => "true";
}
body copy_from update_scppubs(from,server)
{
source => "$(from)";
servers => { "$(server)" };
compare => "digest";
verify => "true";
purge => "false";
trustkey => "true";
} body action update_immediate
{
ifelapsed => "0";
}
body classes update_repaired(class)
{
promise_repaired => { "$(class)" };
}
body action update_background
{
ifelapsed => "0";
action_policy => "fix";
}
body contain update_root
{
exec_owner => "root";
useshell => "true";
}
#########################################################
# bundle for bodies
#########################################################
bundle edit_line update_add2cron {
classes:
"add_cron" not => regline("^#*[CF3 normal run]","$(edit.filename)");
insert_lines:
add_cron::
"5,15,30,45 * * * * /var/cfengine/bin/cf-execd -F #CF3 normal run";
reports:
add_cron::
"Added a 15 minute schedule to crontab";
}

清單 5. 示例 site.cf

#######################################################
# Copyright (C) Cfengine AS
# This file is part of Cfengine 3 # site.cf - Site specific promises
#######################################################
bundle common g
{
vars:
!failsafe||!bootstrap::
"message" string => "All Looks good";
bootstrap::
"message" string => "Running bootstrap";
failsafe::
"message" string => "Running Failsafe";
}
#######################################################
# General site issues can be in bundles like this one
#######################################################
bundle agent main
{
### This would be a place to add something new!
commands:
cfengine_3_1_4::
"/bin/echo"
args => "Example Command with message param: '$(g.message)'",
handle => "echo_command",
comment => "Example of the echo command",
action => local_immediate,
classes => local_define("cmd_1","life");
}
#######################################################
# Garbage collection issues
#######################################################
bundle agent garbage_collection
{
files:
"$(sys.workdir)/outputs"
delete => local_tidy,
file_select => local_days_old("5"),
depth_search => local_recurse("inf");
}

清單 6. 示例測試執(zhí)行

 

############################################################
#
# Simple test execution – test.cf
#
###########################################################
body common control
{
bundlesequence => { "testbundle" };
}
###########################################################
bundle agent testbundle
{
vars:
"size" int => "46k";
"rand" int => randomint("33","$(size)");
commands:
"/bin/echo"
args => "Hello world - $(size)/$(rand)",
contain => standard,
classes => cdefine("followup","alert");
followup::
"/bin/ls"
contain => standard;
reports:
alert::
"What happened?";
}
###########################################################
body contain standard
{
exec_owner => "mark";
useshell => "true";
}
###########################################################
body classes cdefine(class,alert)
{
promise_repaired => { "$(class)" };
repair_failed => { "$(alert)" };
}

 結(jié)束語

在本文中,您了解了如何初始化一個(gè) Cfengine V3 策略/發(fā)布服務(wù)器以及 Cfengine V3 客戶端。您可以安裝二進(jìn)制包,也可以從源代碼編譯。您還了解了如何使用下載的代碼為您的環(huán)境構(gòu)建二進(jìn)制包。另外,您也了解了一些樣例配置文件來運(yùn)行 Cfengine,也學(xué)習(xí)了如何檢查它們的準(zhǔn)確性以及如何將它們應(yīng)用到您的運(yùn)行環(huán)境。

原文:http://www.ibm.com/developerworks/cn/os-cfengine1/index.html?ca=drs-

【編輯推薦】

  1. 資深系統(tǒng)管理員十年感悟:閑談IDC【新概念運(yùn)維】
  2. 面向系統(tǒng)管理員的iPad應(yīng)用推薦
  3. 讓Linux系統(tǒng)管理更輕松的技巧

 

責(zé)任編輯:黃丹 來源: IBMDW
相關(guān)推薦

2011-09-29 10:58:51

rBuilderLinux

2022-07-11 10:08:19

系統(tǒng)管理任務(wù)自動化

2018-02-10 18:35:09

LinuxAnsible系統(tǒng)管理

2010-12-24 14:46:31

Perl腳本

2011-10-19 10:49:07

系統(tǒng)管理備份自動化

2020-12-01 12:06:22

系統(tǒng)管理基礎(chǔ)架構(gòu)自動化工具

2021-04-01 06:13:50

Ansible系統(tǒng)運(yùn)維

2011-10-10 14:21:18

系統(tǒng)管理自動化

2011-10-10 13:45:32

系統(tǒng)管理自動化

2011-11-17 16:06:45

IT系統(tǒng)管理

2011-07-04 14:16:03

2013-09-18 10:57:09

虛擬化應(yīng)用

2010-10-21 16:18:18

2010-05-05 15:56:37

Unix系統(tǒng)

2009-10-23 16:03:40

Oracle 10g系內(nèi)存管理

2014-01-13 10:02:11

虛擬化系統(tǒng)管理

2015-07-06 09:16:51

2019-09-09 15:27:39

戴爾

2020-07-28 08:41:21

Kubernetes自動化測試軟件開發(fā)

2011-09-01 13:42:15

優(yōu)化布線系統(tǒng)管理布線系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

99精品欧美| 欧美另类激情| 久久精品一区八戒影视| 国产精品久久91| 亚洲不卡在线播放| 国产一区福利| 日韩av不卡在线观看| 中文字幕免费精品一区高清| 日韩高清在线一区二区| 三级在线看中文字幕完整版| 中文字幕av不卡| 国产精品日本一区二区| 一区二区自拍偷拍| 日韩一级大片| 久久精品视频在线观看| 少妇饥渴放荡91麻豆| 亚洲人成777| 欧美日韩亚洲激情| 99久热在线精品视频| 国内精品一区视频| 99久久国产综合色|国产精品| 国产欧美一区二区三区在线| 国产中文字幕一区二区| 日本中文字幕视频一区| 精品日韩中文字幕| 免费观看黄色的网站| 蜜桃视频在线免费| thepron国产精品| 91视频国产一区| 中文字幕av资源| 久久一区亚洲| 97超级碰碰碰久久久| 亚洲精品乱码久久| 国产精品2区| 欧美日韩一级片在线观看| 91视频最新入口| 成人超碰在线| 亚洲美腿欧美偷拍| 一区二区在线不卡| 中文字幕日本在线观看| 国产视频亚洲色图| 欧美国产视频在线观看| 亚欧在线观看视频| 成人久久久精品乱码一区二区三区 | 欧美性大战久久| 男女激情无遮挡| 欧美aa在线| 精品久久久久久久久久久| aa视频在线播放| 丁香花在线电影小说观看| 一区二区三区高清| 久久这里只有精品8| 污视频网站在线免费| 亚洲精品精品亚洲| 成年在线观看视频| 蜜乳av一区| 亚洲电影在线播放| 日韩欧美视频网站| 成人av观看| 色激情天天射综合网| 99精品免费在线观看| 97欧美成人| 精品视频1区2区| 久国产精品视频| 国产剧情一区二区在线观看| 日韩你懂的在线播放| 中文字幕一二三| av自拍一区| 亚洲精品大尺度| 蜜桃无码一区二区三区| 精品大片一区二区| xxav国产精品美女主播| 久久久久久久久久网站| 国内揄拍国内精品久久| 91精品国产91久久久久| 无码人妻丰满熟妇区五十路| 日本美女一区二区三区| 91久久精品国产| 亚洲精品一区二区三区新线路| www.亚洲色图.com| 日韩视频精品| 91精品久久久久久粉嫩| 五月婷婷久久综合| 日韩肉感妇bbwbbwbbw| 国产精选久久| 亚洲精品视频中文字幕| 久久久久久久毛片| 欧美一区91| 奇米成人av国产一区二区三区| 国产精品露脸视频| 国产成人午夜99999| 久久资源亚洲| 国产原创在线观看| 色综合天天狠狠| 在线免费观看av网| 亚洲第一福利社区| 美女视频久久黄| 久久中文字幕免费| 国产在线播放一区二区三区| 精品国产乱码久久久久软件 | 一区二区中文视频| 黄色国产一级视频| 中文字幕综合| 亚洲免费精彩视频| 九九热只有精品| 日本成人在线视频网站| 国产欧美日韩伦理| 日本高清中文字幕在线| 欧美日韩日本国产| 亚洲天堂一区二区在线观看| 日韩有码中文字幕在线| 久久亚洲成人精品| 国产真人无遮挡作爱免费视频| 国产精品一区二区无线| 日韩欧美一区二区三区四区五区| 牛牛在线精品视频| 3atv一区二区三区| youjizz亚洲女人| 亚洲深夜激情| 国产精品yjizz| av在线播放国产| 欧美日韩在线三区| www.久久国产| 99视频+国产日韩欧美| av成人综合网| 顶级网黄在线播放| 欧美色国产精品| 国产黄片一区二区三区| 日韩一级大片| 国产二区一区| √天堂8在线网| 91精品国产综合久久精品麻豆| av电影在线不卡| 美女久久网站| 久久伊人一区| 美女福利一区二区三区| 日韩精品亚洲精品| 国产精品xxxx喷水欧美| 成人v精品蜜桃久久一区| www.国产二区| **爰片久久毛片| 欧美黑人xxxⅹ高潮交| 一区二区三区黄| 国产精品国产精品国产专区不片 | 免费在线观看一级片| 日韩激情视频在线观看| 欧美日韩一区在线播放| 美女av在线免费看| 日韩国产在线看| 国产www在线| 久久亚洲春色中文字幕久久久| 成人毛片一区二区| 亚洲va久久久噜噜噜久久| 欧美有码在线视频| 国产在线免费观看| 欧美日韩国产三级| 黄色录像一级片| 国产大陆a不卡| 黄色激情在线视频| 欧美自拍视频| 国产精品99一区| 人人草在线观看| 久久精品一区二区三区不卡 | 亚洲图片小说区| 久久香蕉频线观| 亚洲精品成av人片天堂无码| 亚洲午夜私人影院| 国产传媒第一页| 热久久久久久久| 男人天堂成人网| 国内视频在线精品| 国产精品www网站| 黄色网址在线免费| 精品播放一区二区| 久久久久久在线观看| 中文字幕一区二区三| 精产国品一区二区三区| 亚洲一区免费| 亚洲永久一区二区三区在线| 日韩免费一级| 人体精品一二三区| 国产激情在线视频| 亚洲精品久久久久久下一站| 无码视频一区二区三区| 亚洲少妇30p| 人妻无码一区二区三区| 老司机免费视频一区二区| 又大又硬又爽免费视频| 经典一区二区| 亚洲va男人天堂| 在线亚洲人成| 欧美成人午夜剧场免费观看| 清纯唯美亚洲色图| 日韩一区二区三区四区| 国产精品免费精品一区| 亚洲日穴在线视频| 精品国产av无码| 国产精品一二三四区| 成人在线观看黄| 欧美午夜在线| 亚洲欧美日韩精品综合在线观看| 福利欧美精品在线| 91精品久久久久久久久中文字幕| 蜜桃麻豆影像在线观看| 久久精品视频在线观看| 欧美777四色影视在线| 日韩欧美在线综合网| 中文字幕精品视频在线观看| 亚洲第一福利一区| 成人在线观看小视频| 国产三级欧美三级日产三级99| 国产又粗又猛又爽又黄| 男男成人高潮片免费网站| 少妇高潮毛片色欲ava片| 亚洲网色网站| 亚洲精品一区二区三区av| 台湾色综合娱乐中文网| 97超碰人人看人人 | 午夜影院日韩| 欧美黄色免费网址| 天天综合国产| 亚洲国产精品久久久久婷婷老年 | 欧美精品一区二区三区在线播放 | 深田咏美在线x99av| 日韩激情网站| 国产一区不卡在线观看| 中文字幕亚洲在线观看| 成人在线激情视频| 欧美高清你懂的| 欧美中文字幕在线观看| 欧美日韩在线观看首页| 欧美激情亚洲一区| av片在线观看永久免费| 久久九九国产精品怡红院| 高清福利在线观看| 欧美中文字幕一区二区三区| 亚洲激情视频一区| 亚洲香蕉伊在人在线观| 免费一级a毛片夜夜看 | 成人小视频免费在线观看| 91小视频在线播放| 激情欧美一区二区三区在线观看| 91国产精品视频在线观看| 日本怡春院一区二区| 免费男同深夜夜行网站| 日韩精品五月天| 成人中文字幕av| 日本女人一区二区三区| 日本超碰在线观看| 九九视频精品免费| 亚洲黄色片免费看| 国产成人在线视频网址| 亚洲成a人片在线www| 成人午夜电影久久影院| 亚州av综合色区无码一区| 久久香蕉国产线看观看99| 免费看黄色的视频| 中文字幕在线一区免费| 一级片一级片一级片| 亚洲精品日韩一| 精品少妇一二三区| 欧美日韩免费区域视频在线观看| 精品无码人妻一区二区三区品| 偷窥少妇高潮呻吟av久久免费| 成人免费视频毛片| 在线免费观看不卡av| 夜夜躁狠狠躁日日躁av| 日韩视频一区二区在线观看| 蜜桃久久一区二区三区| 亚洲精品中文字幕有码专区| 国产乱视频在线观看| 日韩视频亚洲视频| 欧美韩日亚洲| 青草成人免费视频| 亚洲视频自拍| 久久精品日韩精品| 91嫩草亚洲精品| av无码久久久久久不卡网站| 噜噜噜久久亚洲精品国产品小说| 国产野外作爱视频播放| 国产一区二三区好的| 一级特黄a大片免费| 国产精品蜜臀av| 久久久久成人片免费观看蜜芽| 岛国av一区二区| 国产精品高潮呻吟av| 亚洲成成品网站| 懂色av中文在线| 久久91亚洲精品中文字幕| 中文字幕在线直播| 成人写真视频福利网| 欧美日韩导航| 国产精品美女在线播放| 亚洲尤物在线| 天堂在线精品视频| 国产视频911| 国产在线视频99| 欧美日韩高清影院| 亚洲aⅴ在线观看| 美日韩精品免费观看视频| 亚洲人体视频| 国产99在线免费| 99久久精品费精品国产| 116极品美女午夜一级| 国产精品18久久久久| 中文字幕在线观看免费高清| 亚洲成人自拍偷拍| 国产欧美久久久| 中文字幕日本精品| 亚洲最大网站| 国产视频一区二区三区四区| 91精品一区二区三区综合| www黄色在线| 99国产精品久| 国产亚洲精品av| 日韩欧美高清在线| 日本精品在线| 国产精品久久久久久久久久尿 | 亚洲国内精品在线| yellow91字幕网在线| 国产精品爽爽爽爽爽爽在线观看| 乱中年女人伦av一区二区| 成人在线观看毛片| 精品一区中文字幕| 日本综合在线观看| 日本韩国精品在线| 欧美日韩激情视频一区二区三区| 欧美精品18videos性欧美| 免费欧美网站| 香蕉精品视频在线| 麻豆国产91在线播放| 特级西西www444人体聚色| 日韩欧美在线国产| 五月婷婷狠狠干| 韩国精品美女www爽爽爽视频| 视频一区视频二区欧美| 亚洲天堂第一区| 国产一区二区三区免费看| 麻豆精品国产免费| 欧美一区午夜视频在线观看| aaa在线观看| 国产精品综合久久久| 四虎成人精品永久免费av九九| 91淫黄看大片| 国产日韩欧美在线一区| 久久精品99北条麻妃| 一区二区三区天堂av| 超薄肉色丝袜脚交一区二区| 色大师av一区二区三区| 久久99精品久久久| 黄色一级片中国| 日韩久久久精品| 9999热视频在线观看| 农村寡妇一区二区三区| 老司机精品福利视频| 国产91丝袜美女在线播放| 欧美亚洲国产怡红院影院| 日本中文字幕在线播放| 91久久精品美女高潮| 欧美午夜不卡影院在线观看完整版免费 | 校园春色亚洲色图| 亚洲精品国产系列| 精品一区二区三区免费| 久久成人在线观看| 日韩精品在线影院| 成人精品动漫| 黄黄视频在线观看| 成人激情黄色小说| 男人天堂视频在线| 久久电影一区二区| 欧美有码在线| 中文字幕第17页| 亚洲午夜在线电影| 国产在线观看免费网站| 成人免费看片视频| 99精品视频免费观看视频| 亚洲精品午夜视频| 日韩一级免费观看| 亚洲人成在线网站| 伊人久久大香线蕉精品| 成人毛片视频在线观看| 日本一本在线观看| 久久精品精品电影网| 天堂综合网久久| 男人午夜视频在线观看| 偷窥国产亚洲免费视频| 欧美日本一道| 久久99精品久久久久子伦 | yjizz视频| 欧美性色黄大片| www.综合网.com| 亚洲天堂电影网| a级高清视频欧美日韩| 91国内精品久久久| 97碰碰碰免费色视频| 色综合久久网| 日韩av一二区| 欧美成人一区二区三区| 欧美日韩电影免费看| 免费网站永久免费观看|