序章

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コマンドを使用します。

  1. sudo add-apt-repository 'deb http://cfengine.com/pub/apt/packages stable main'

ステップ2—CFEngineの公開鍵を追加する

前の手順で追加したリポジトリは、CFEngineの公開鍵をAPTの信頼できる鍵のリストにも追加するまで使用できません。

wgetを使用してCFEngineの公開鍵をダウンロードします。

  1. wget http://cfengine.com/pub/gpg.key -O /tmp/gpg.key

apt-keyを使用して、信頼できるキーのリストに追加します。

  1. sudo apt-key add /tmp/gpg.key

ステップ3—CFEngineのインストール

これで、apt-getを使用してCFEngineCommunityEditionをインストールできます。

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

続行する前に、インストールを確認してください。

  1. cf-agent --version

次の出力が表示されます。

cf-agentの出力
CFEngine Core 3.6.5

ステップ4—ポリシーハブを起動する

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

  1. 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という名前の新しいファイルを作成します。

  1. nano /tmp/myPolicy.cf

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

myPolicy.cf
bundle agent SayHello {
    reports:
        "Hello!";
}

ファイルを保存して終了します。

これで、cf-agentコマンドを使用してポリシーを実行できます。

  1. sudo cf-agent -b SayHello /tmp/myPolicy.cf

次の出力が表示されます。

cf-agentの出力
R: Hello!

ステップ6—ポリシーサーバへのポリシーの追加

前の手順では、cf-agentコマンドを使用してポリシーを手動で実行しました。 ポリシーを自動的に(さらに重要なことに、複数のマシンで)実行するには、ポリシーをポリシーサーバーに追加する必要があります。 デフォルトでは、サーバーに追加されたポリシーはcf-agentによって5分ごとに1回実行されます。

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

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

  1. 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を終了します。

次のコマンドを入力して、ポリシーを実行します。

  1. sudo cf-agent -b CreateHelloFile /tmp/createFilePolicy.cf

完了したら、lsコマンドを実行して、hello.txt/tmpに作成されていることを確認できます。

  1. ls /tmp

ポリシーにエラーがなく、想定どおりの動作をしていることがわかったので、それをサーバーに追加しましょう。

ポリシーサーバーは、/var/cfengine/masterfiles/ディレクトリからポリシーを提供します。 したがって、createFilePolicy.cfmasterfilesにコピーします。

  1. sudo cp /tmp/createFilePolicy.cf /var/cfengine/masterfiles/

次に、CFEngineがポリシーファイルとその中のバンドルについて知るために、それらへの参照をCFEngineのメインポリシーファイルであるpromises.cfに追加する必要があります。 nanoを使用してpromises.cfを編集します。

  1. 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マニュアルを参照してください。