Ubuntu14.04にCFEngineCommunityEditionをインストールして使用する方法
序章
ITインフラストラクチャ用の高速で拡張性の高い構成管理ツールをお探しの場合は、CFEngineを試してみてください。 提供する機能は、PuppetやChefなどの他の一般的なツールが提供する機能と非常に似ていますが、CFEngineは、メモリとCPU使用率の両方の点でフットプリントがはるかに小さく、Cで記述されているため、実行されるため、一般的に高速です。 OS上でネイティブに。
このチュートリアルでは、Ubuntu14.04にCFEngineCommunityEdition3.6.5をインストールして使用する方法を学習します。
前提条件
始める前に、以下にアクセスできる必要があります。
- Ubuntu14.04を実行しているサーバー
- 非rootsudoユーザー
ステップ1—CFEngineのパッケージリポジトリを追加する
apt-getを使用してCFEngineの最新バージョンをインストールするには、CFEngineのパッケージリポジトリをサーバーのリポジトリリストに追加する必要があります。 これを行うには、add-apt-repositoryコマンドを使用します。
sudo add-apt-repository 'deb http://cfengine.com/pub/apt/packages stable main'
ステップ2—CFEngineの公開鍵を追加する
前の手順で追加したリポジトリは、CFEngineの公開鍵をAPTの信頼できる鍵のリストにも追加するまで使用できません。
wgetを使用してCFEngineの公開鍵をダウンロードします。
wget http://cfengine.com/pub/gpg.key -O /tmp/gpg.key
apt-keyを使用して、信頼できるキーのリストに追加します。
sudo apt-key add /tmp/gpg.key
ステップ3—CFEngineのインストール
これで、apt-getを使用してCFEngineCommunityEditionをインストールできます。
sudo apt-get update && sudo apt-get install cfengine-community
続行する前に、インストールを確認してください。
cf-agent --version
次の出力が表示されます。
cf-agentの出力
CFEngine Core 3.6.5
ステップ4—ポリシーハブを起動する
このチュートリアルでは単一のUbuntuサーバーを使用しているため、ポリシーハブとクライアントの両方として使用します。 CFEngineのポリシーハブを起動するには、サーバーのIPアドレスを使用してCFEngineをブートストラップする必要があります。
sudo cf-agent --bootstrap your_server_ip
このコマンドが正常に完了すると、CFEngineが完全に構成され、サーバーで使用できるようになります。
注: Ubuntuサーバーを使用して複数のマシンを管理する場合は、各マシンで手順1、2、および3を繰り返す必要があります。 ただし、ステップ4で、マシンを単なるクライアントとして構成するには、現在のUbuntuサーバーのIPアドレス(つまり、ポリシーハブのIPアドレス)を使用してマシンをブートストラップする必要があります。
ステップ5—最初のポリシーを作成する
CFEngineを使用してシステム管理タスクを自動化するには、そのポリシーファイルを作成する必要があります。 ポリシーファイルはCFEngine独自のDSL(ドメイン固有言語)で書かれています。 この言語の学習曲線はかなり急ですが、基本的なタスクを簡単に実行できます。
簡単な「HelloWorld」ポリシーを作成することから始めましょう。 nanoまたはお気に入りのテキストエディタを使用して、/tmpディレクトリにmyPolicy.cfという名前の新しいファイルを作成します。
nano /tmp/myPolicy.cf
CFEngineを使用して実行するコマンドは、バンドルにグループ化する必要があります。 バンドルにはさまざまなタイプがあります。 今のところ、cf-agentが楽しめるバンドルを作成します。 コンソールにメッセージを出力するには、reportspromiseを使用する必要があります。 したがって、次のコードをファイルに追加します。
myPolicy.cf
bundle agent SayHello {
reports:
"Hello!";
}
ファイルを保存して終了します。
これで、cf-agentコマンドを使用してポリシーを実行できます。
sudo cf-agent -b SayHello /tmp/myPolicy.cf
次の出力が表示されます。
cf-agentの出力
R: Hello!
ステップ6—ポリシーサーバへのポリシーの追加
前の手順では、cf-agentコマンドを使用してポリシーを手動で実行しました。 ポリシーを自動的に(さらに重要なことに、複数のマシンで)実行するには、ポリシーをポリシーサーバーに追加する必要があります。 デフォルトでは、サーバーに追加されたポリシーはcf-agentによって5分ごとに1回実行されます。
ここで、/tmpディレクトリにファイルを作成するもう少し高度なポリシーを作成しましょう。
nanoまたはお気に入りのテキストエディタを使用して、createFilePolicy.cfという名前の新しいファイルを作成します。
nano /tmp/createFilePolicy.cf
このポリシーでは、files Promiseを使用してファイルを作成し、reportsPromiseを使用してファイルが作成されたことを示すメッセージを表示します。
次のポリシーは、/tmpディレクトリにhello.txtという名前の空のファイルを作成します。 ポリシーに次のコードを追加します。
createFilePolicy.cf
bundle agent CreateHelloFile {
files:
"/tmp/hello.txt"
create => "true";
reports:
"File created";
}
ファイルを保存してnanoを終了します。
次のコマンドを入力して、ポリシーを実行します。
sudo cf-agent -b CreateHelloFile /tmp/createFilePolicy.cf
完了したら、lsコマンドを実行して、hello.txtが/tmpに作成されていることを確認できます。
ls /tmp
ポリシーにエラーがなく、想定どおりの動作をしていることがわかったので、それをサーバーに追加しましょう。
ポリシーサーバーは、/var/cfengine/masterfiles/ディレクトリからポリシーを提供します。 したがって、createFilePolicy.cfをmasterfilesにコピーします。
sudo cp /tmp/createFilePolicy.cf /var/cfengine/masterfiles/
次に、CFEngineがポリシーファイルとその中のバンドルについて知るために、それらへの参照をCFEngineのメインポリシーファイルであるpromises.cfに追加する必要があります。 nanoを使用してpromises.cfを編集します。
sudo nano /var/cfengine/masterfiles/promises.cf
inputsリストの最後にポリシーファイルの名前を追加します。 変更後、リストは次のようになります。
promises.cfの抜粋
inputs => {
...
# List of services here
"services/file_change.cf",
"createFilePolicy.cf",
};
行末のコンマは省略しないでください。
さらに、ポリシーファイル内のバンドルの名前は、ファイルの上部にあるbundlesequenceリストに記載されている必要があります。 bundlesequenceの最後のアイテムとしてCreateHelloFileを追加します。
promises.cfの抜粋
bundlesequence => {
...
# Agent bundle
cfe_internal_management, # See cfe_internal/CFE_cfengine.cf
service_catalogue,
@(cfengine_enterprise_hub_ha.management_bundles),
CreateHelloFile,
};
行末のコンマも省略しないでください。 ファイルを保存して終了します。
これで、ポリシーがポリシーサーバーに追加され、5分ごとに実行されます。 つまり、/tmp/hello.txtを削除しても、CFEngineは5分後に自動的に再作成します。
ポリシーを削除する場合は、まずバンドルの名前とポリシーファイルの名前をpromises.cfから削除してから、ポリシーファイルをmasterfilesディレクトリから移動する必要があります。
結論
このチュートリアルでは、CFEngineのパッケージリポジトリを使用して、最新バージョンのCFEngineCommunityEditionをUbuntu14.04サーバーにインストールする方法を学習しました。 また、手動と自動の両方で、簡単なポリシーを作成して実行する方法も学びました。 これで、CFEngineを使用してサーバーの構成を管理できます。
DSLの詳細については、CFEngine3.6マニュアルを参照してください。