序章
ITインフラストラクチャ用の高速で拡張性の高い構成管理ツールをお探しの場合は、CFEngineを試してみてください。 提供する機能は、PuppetやChefなどの他の一般的なツールが提供する機能と非常に似ていますが、CFEngineは、メモリとCPU使用率の両方の点でフットプリントがはるかに小さく、Cで記述されているため、実行されるため、一般的に高速です。 OS上でネイティブに。
このチュートリアルでは、Ubuntu14.04にCFEngineCommunityEdition3.6.5をインストールして使用する方法を学習します。
前提条件
始める前に、以下にアクセスできる必要があります。
- Ubuntu14.04を実行しているサーバー
- 非rootsudoユーザー
ステップ1—CFEngineのパッケージリポジトリを追加する
を使用してCFEngineの最新バージョンをインストールするには apt-get
、CFEngineのパッケージリポジトリをサーバーのリポジトリリストに追加する必要があります。 使用 add-apt-repository
そうするためのコマンド:
- sudo add-apt-repository 'deb http://cfengine.com/pub/apt/packages stable main'
ステップ2—CFEngineの公開鍵を追加する
前の手順で追加したリポジトリは、CFEngineの公開鍵をAPTの信頼できる鍵のリストにも追加するまで使用できません。
を使用してCFEngineの公開鍵をダウンロードします wget
.
- 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
次の出力が表示されます。
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
または、お気に入りのテキストエディタを使用して、という新しいファイルを作成します myPolicy.cf
の中に /tmp
ディレクトリ:
- nano /tmp/myPolicy.cf
CFEngineを使用して実行するコマンドは、バンドルにグループ化する必要があります。 バンドルにはさまざまなタイプがあります。 今のところ、次のようなバンドルを作成します cf-agent
楽しむことができます。 コンソールにメッセージを印刷するには、 reports
promiseを使用する必要があります。 したがって、次のコードをファイルに追加します。
bundle agent SayHello {
reports:
"Hello!";
}
ファイルを保存して終了します。
これで、を使用してポリシーを実行できます。 cf-agent
指図。
- sudo cf-agent -b SayHello /tmp/myPolicy.cf
次の出力が表示されます。
R: Hello!
ステップ6—ポリシーサーバへのポリシーの追加
前の手順では、を使用してポリシーを手動で実行しました cf-agent
指図。 ポリシーを自動的に(さらに重要なことに、複数のマシンで)実行するには、ポリシーをポリシーサーバーに追加する必要があります。 デフォルトでは、サーバーに追加されたポリシーは5分ごとに1回実行されます。 cf-agent
.
ここで、ファイルを作成するもう少し高度なポリシーを作成しましょう。 /tmp
ディレクトリ。
使用する nano
または、お気に入りのテキストエディタを使用して、という新しいファイルを作成します createFilePolicy.cf
:
- nano /tmp/createFilePolicy.cf
このポリシーでは、 files
ファイルを作成することを約束し、 reports
ファイルが作成されたことを示すメッセージを表示することを約束します。
次のポリシーは、という名前の空のファイルを作成します hello.txt
の中に /tmp
ディレクトリ。 ポリシーに次のコードを追加します。
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がポリシーファイルとその中のバンドルについて知るために、それらへの参照をに追加する必要があります。 promises.cf
、CFEngineのメインポリシーファイル。 使用する nano
編集する promises.cf
:
- sudo nano /var/cfengine/masterfiles/promises.cf
ポリシーファイルの名前を最後に追加します inputs
リスト。 変更後、リストは次のようになります。
inputs => {
...
# List of services here
"services/file_change.cf",
"createFilePolicy.cf",
};
行末のコンマは省略しないでください。
さらに、ポリシーファイル内のバンドルの名前を bundlesequence
ファイルの先頭に向かってリストします。 追加 CreateHelloFile
の最後のアイテムとして bundlesequence
:
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マニュアルを参照してください。