序章

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 そうするためのコマンド:

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

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

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

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

  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 または、お気に入りのテキストエディタを使用して、という新しいファイルを作成します myPolicy.cf の中に /tmp ディレクトリ:

  1. nano /tmp/myPolicy.cf

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

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 指図。 ポリシーを自動的に(さらに重要なことに、複数のマシンで)実行するには、ポリシーをポリシーサーバーに追加する必要があります。 デフォルトでは、サーバーに追加されたポリシーは5分ごとに1回実行されます。 cf-agent.

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

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

  1. nano /tmp/createFilePolicy.cf

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

次のポリシーは、という名前の空のファイルを作成します hello.txt の中に /tmp ディレクトリ。 ポリシーに次のコードを追加します。

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がポリシーファイルとその中のバンドルについて知るために、それらへの参照をに追加する必要があります。 promises.cf、CFEngineのメインポリシーファイル。 使用する 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 ファイルの先頭に向かってリストします。 追加 CreateHelloFile の最後のアイテムとして bundlesequence:

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