前書き

ITインフラストラクチャ向けの高速でスケーラブルな構成管理ツールを探している場合は、CFEngineを試してみてください。 それが提供する機能は、PuppetやChefなどの他の一般的なツールが提供する機能と非常に似ていますが、CFEngineはメモリとCPU使用率の両方でフットプリントがはるかに小さく、Cで記述されて実行されるため一般的に高速ですOS上でネイティブ。

このチュートリアルでは、Ubuntu 14.04にCFEngine Community Edition 3.6.5をインストールして使用する方法を学習します。

前提条件

始める前に、以下にアクセスする必要があります。

  • Ubuntu 14.04を実行しているサーバー

  • non-root sudoユーザー

ステップ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 +`を使用してCFEngine Community Editionをインストールできるようになりました。

sudo apt-get update && sudo apt-get install cfengine-community

続行する前に、インストールを確認します。

cf-agent --version

次のような出力が表示されるはずです。

cf-agentの出力

CFEngine Core 3.6.5

ステップ4-ポリシーハブの開始

このチュートリアルでは単一のUbuntuサーバーを使用しているため、ポリシーハブとしてもクライアントとしても使用します。 CFEngineのポリシーハブを起動するには、サーバーのIPアドレスでブートストラップする必要があります。

sudo cf-agent --bootstrap

このコマンドが正常に完了すると、CFEngineが完全に構成され、サーバーで使用できるようになります。

ステップ5-最初のポリシーの作成

CFEngineを使用してシステム管理タスクを自動化するには、そのためのポリシーファイルを作成する必要があります。 ポリシーファイルは、CFEngine独自のDSL(ドメイン固有言語)で記述されています。 この言語にはかなり急な学習曲線がありますが、基本的なタスクの実行は簡単です。

簡単な「Hello World」ポリシーを作成することから始めましょう。 `+ nano `またはお気に入りのテキストエディターを使用して、 ` / tmp `ディレクトリに ` myPolicy.cf +`という新しいファイルを作成します。

nano /tmp/myPolicy.cf

CFEngineを使用して実行するコマンドは、_bundle_にグループ化する必要があります。 バンドルにはさまざまなタイプがあります。 今のところ、 + c&f-agent`が楽しめるバンドルを作成します。 コンソールにメッセージを出力するには、 `+ reports + promiseを使用する必要があります。 したがって、ファイルに次のコードを追加します。

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分ごとに実行されます。

次に、 `+ / tmp +`ディレクトリにファイルを作成するもう少し高度なポリシーを作成しましょう。

`+ nano `またはお気に入りのテキストエディターを使用して、 ` createFilePolicy.cf +`という新しいファイルを作成します。

nano /tmp/createFilePolicy.cf

このポリシーでは、 `+ files `約束を使用してファイルを作成し、 ` reports +`約束を使用してファイルが作成されたことを示すメッセージを表示します。

次のポリシーは、「+ / 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 `に追加する必要があります。 ` promises.cf `を編集するには、 ` nano +`を使用します。

sudo nano /var/cfengine/masterfiles/promises.cf

`+ inputs +`リストの最後にポリシーファイルの名前を追加します。 変更後、リストは次のようになります。

promises.cfの抜粋

inputs => {

   ...

 # List of services here
 "services/file_change.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),



};

行末のカンマも省略しないでください。 ファイルを保存して終了します。

これでポリシーがポリシーサーバーに追加され、5分ごとに実行されます。 つまり、 `+ / tmp / hello.txt +`を削除しても、CFEngineは5分後に自動的に再作成します。

ポリシーを削除する場合は、最初にバンドルの名前とポリシーファイルの名前を `+ promises.cf `から削除してから、ポリシーファイルを ` masterfiles +`ディレクトリから移動する必要があります。

結論

このチュートリアルでは、CFEngineのパッケージリポジトリを使用して、Ubuntu 14.04サーバーにCFEngine Community Editionの最新バージョンをインストールする方法を学びました。 また、簡単なポリシーを手動および自動で作成および実行する方法も学びました。 CFEngineを使用して、サーバーの構成を管理できるようになりました。

DSLの詳細については、https://docs.cfengine.com/latest/reference.html [CFEngine 3.6 Manual]を参照してください。