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
次の出力が表示されます。
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
が楽しめるバンドルを作成します。 コンソールにメッセージを出力するには、reports
promiseを使用する必要があります。 したがって、次のコードをファイルに追加します。
bundle agent SayHello {
reports:
"Hello!";
}
ファイルを保存して終了します。
これで、cf-agent
コマンドを使用してポリシーを実行できます。
- sudo cf-agent -b SayHello /tmp/myPolicy.cf
次の出力が表示されます。
R: Hello!
ステップ6—ポリシーサーバへのポリシーの追加
前の手順では、cf-agent
コマンドを使用してポリシーを手動で実行しました。 ポリシーを自動的に(さらに重要なことに、複数のマシンで)実行するには、ポリシーをポリシーサーバーに追加する必要があります。 デフォルトでは、サーバーに追加されたポリシーはcf-agent
によって5分ごとに1回実行されます。
ここで、/tmp
ディレクトリにファイルを作成するもう少し高度なポリシーを作成しましょう。
nano
またはお気に入りのテキストエディタを使用して、createFilePolicy.cf
という名前の新しいファイルを作成します。
- nano /tmp/createFilePolicy.cf
このポリシーでは、files
Promiseを使用してファイルを作成し、reports
Promiseを使用してファイルが作成されたことを示すメッセージを表示します。
次のポリシーは、/tmp
ディレクトリにhello.txt
という名前の空のファイルを作成します。 ポリシーに次のコードを追加します。
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
リストの最後にポリシーファイルの名前を追加します。 変更後、リストは次のようになります。
inputs => {
...
# List of services here
"services/file_change.cf",
"createFilePolicy.cf",
};
行末のコンマは省略しないでください。
さらに、ポリシーファイル内のバンドルの名前は、ファイルの上部にあるbundlesequence
リストに記載されている必要があります。 bundlesequence
の最後のアイテムとしてCreateHelloFile
を追加します。
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マニュアルを参照してください。