開発者ドキュメント

フォアマンを使用してUbuntu14.04でPuppetノードを管理する方法

序章

Foremanは、タスクとアプリケーションのデプロイを自動化するためにPuppet(またはChef)と対話する簡単な方法を提供することにより、サーバーの管理を支援できるオープンソースツールです。 Foremanは、サーバーのプロビジョニング、構成、および監視に使用できる堅牢なWebユーザーインターフェイス、API、およびCLIを提供します。 あらゆるサイズのインフラストラクチャに適しており、Linuxのほとんどのディストリビューションで動作します。

このチュートリアルでは、ForemanとPuppetをインストールし、それを使用してサーバーを管理する方法を説明します。 Puppetの管理を容易にするために、レポート機能と外部ノード分類子(ENC)機能にForemanを使用します。

前提条件

このチュートリアルでは、Foremanを新しいサーバーにインストールすることを前提としています。このサーバーはPuppetマスターサーバーとしても機能します。 すでにPuppetマスターサーバーをお持ちの場合は、Foremanをインストールできますが、デフォルトのsite.ppが上書きされることに注意してください(既存のPuppetエージェントノードはアンマネージド状態のままになります)。また、既存のPuppetエージェントノードを管理するようにForemanを構成する必要があります。

Foremanはホストの構成管理をPuppetに依存しているため、Puppetエージェント/マスターのセットアップに必要なすべてのものが必要です。 次のリストは、このチュートリアルを開始する前に必要なものをカバーしています。

すべての前提条件を満たしたら、Foreman(およびPuppetマスター)サーバーの作成に移りましょう!

フォアマンサーバーを作成する

ホスト名として「foreman.nyc2.example.com 」を使用して、新しい Ubuntu 14.04x64サーバーを作成します。 次の詳細を使用して、プライベートネットワークをDNSに追加します。

ホスト名 役割 プライベートFQDN
フォアマン フォアマン/パペットマスター foreman.nyc2.example.com

DNSを設定したばかりで、ホストをDNSに追加する方法がわからない場合は、DNSチュートリアルのDNSレコードの保守セクションを参照してください。 基本的に、「A」および「PTR」レコードを追加し、新しいホストが再帰クエリを実行できるようにする必要があります。 また、サーバーが短いホスト名を使用して相互に検索できるように、検索ドメインを構成していることを確認してください。

ホスト名がFQDNに設定されていることを確認します

サーバーの完全なホスト名を確認するには、次のコマンドを入力します。

hostname -f

サーバー名の長いバージョンが表示されます。例: 「foreman.nyc2.example.com」。 ホスト名がFQDNに設定されている場合は、次のセクションに進むことができます。

それ以外の場合、短い名前が返される場合、たとえば 「フォアマン」、ホスト名をロングネームに設定する必要があります。 これを行うには、hostsファイルを編集します。

sudo vi /etc/hosts

短いホスト名の最初のエントリを見つけて、その前にFQDNを追加します。 例えば:

127.0.1.1       foreman

次のように変更する必要があります。

127.0.1.1       foreman.nyc2.example.com foreman

次に、保存して終了します。

次に、hostnameファイルを編集します。

sudo vi /etc/hostname

ファイルのエントリをサーバーのFQDNに変更します。例: 「foreman.nyc2.example.com」。 次に、保存して終了します。

次に、次のコマンドを実行して、行った構成変更をすぐに読み込みます。

sudo hostname --file /etc/hostname

長いホスト名が設定されました。 フォアマンのインストールを続けてください!

Foremanをインストールする

Foremanをインストールする最も簡単な方法は、Foremanインストーラーを使用することです。 Foremanインストーラーは、Foremanを実行するために必要なすべてのコンポーネントをインストールして構成します。これには、次のものが含まれます。

次のコマンドを使用してForemanインストーラーをダウンロードします。

sudo sh -c 'echo "deb http://deb.theforeman.org/ trusty 1.5" > /etc/apt/sources.list.d/foreman.list'
sudo sh -c 'echo "deb http://deb.theforeman.org/ plugins 1.5" >> /etc/apt/sources.list.d/foreman.list'
wget -q http://deb.theforeman.org/pubkey.gpg -O- | sudo apt-key add -
sudo apt-get update && sudo apt-get install foreman-installer

次に、次のコマンドを使用してForemanインストーラーを実行します。

sudo foreman-installer

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

 Your puppet version does not support progress bar
Preparing installation Done
  Success!
  * Foreman is running at https://foreman.nyc2.example.com
      Default credentials are 'admin:changeme'
  * Foreman Proxy is running at https://foreman.nyc2.example.com:8443
  * Puppetmaster is running at port 8140
  The full log is at /var/log/foreman-installer/foreman-installer.log

出力が上記のように見える場合は、Foremanとその必要なコンポーネントがインストールされています。

差分を有効にする

続行する前に、「差分」を有効にするためにわずかな構成変更を行います。 この変更により、差分を表示できるようになり、Foremanのレポートビュー内から構成ファイルの変更を確認できるようになります。

puppet.confを編集します:

sudo vi /etc/puppet/puppet.conf

show_diffを設定する行を見つけて、その値をtrueに変更します。

    show_diff     = true

保存して終了。

フォアマンホストをフォアマンのデータベースに追加する

次のようにpuppet agentコマンドを実行して、ForemanホストをForemanのデータベースに追加するには、次のようにします。

sudo puppet agent --test

これにより、Foremanが管理する最初のPuppetエージェントノードとしてForemanホストが追加されます。

ForemanWebインターフェイスにログインします

フォアマンにログインし、管理者パスワードを変更します。 Foreman Webインターフェイスには、VPSのパブリックネットワークインターフェイス(パブリックFQDNまたはパブリックIPアドレスのいずれか)からアクセスできます。 インフラストラクチャ->スマートプロキシを見てください。 自動的に作成されます(そして利用可能な機能が表示されます)。

デフォルトでは、ForemanはPuppet証明書を使用しますが、これはおそらくブラウザによって信頼されていません。 証明書に関する警告を受け入れて続行します。 または、証明書をドメイン名と一致し、信頼できるCA機関によって署名された証明書に置き換えることもできます。 証明書を受け入れて続行すると、次のログインページが表示されます。

foreman-installerを実行しているときに気付いたかもしれませんが、これらはデフォルトのクレデンシャルです。

フォアマンダッシュボード

最初にログインすると、Puppet環境の概要を示すForemanダッシュボードが表示されます。 ここに、Puppetエージェントノードの数とそれぞれのステータスを示す「ホスト構成ステータス」の概要が表示されます。 Foremanを最初に起動すると、「適切なホスト」セクションに単一のサーバーが表示されます。

この下に、最近のイベントの概要と、過去30分以内にPuppetジョブを実行した「クライアント」の数のグラフが表示されます。 この情報は、Puppetの全体的なセットアップがどのように機能しているかを知るのに役立ちます。

管理者パスワードの変更

他のことをする前に、adminユーザーパスワードを変更することをお勧めします。 これを行うには、右上隅にある管理者ユーザーアイテムの上にマウスを置き、マイアカウントをクリックします。

パスワードフォームを見つけます。 パスワードを安全なものに更新してから、[送信]をクリックします。

NTPモジュールをフォアマンに追加

Puppetは正確な時刻管理を必要とするため、Foremanを使用してForemanホスト(Puppetマスターでもある)でNTPサービスを管理します。

Webブラウザーで、https://forge.puppetlabs.com/にアクセスします。 NTPモジュールを検索します。 最初の結果はpuppetlabs/ntpになります。 モジュールをクリックして、モジュールの機能を確認してください。

次に、次のコマンドを使用して、PuppetマスターのProduction環境にインストールします。

sudo puppet module install -i /etc/puppet/environments/production/modules puppetlabs/ntp

次のような出力が表示されます。これは、モジュールが正しくインストールされたことを示しています。

Notice: Preparing to install into /etc/puppet/environments/production/modules ...
Notice: Downloading from https://forge.puppetlabs.com ...
Notice: Installing -- do not interrupt ...
/etc/puppet/environments/production/modules
└─┬ puppetlabs-ntp (v3.1.2)
  └── puppetlabs-stdlib (v4.3.2)

モジュールはPuppetマスターにインストールされていますが、使用する前にForemanに追加する必要があります。

Foreman Web UIで、 Configure にマウスを合わせ、 Puppetclassesをクリックします。

foreman.nyc2.example.comからインポートボタンをクリックします。 次に、次のような画面が表示されます。

アイテムの横にあるチェックボックスをオンにして、更新ボタンをクリックします。 これで、ntpモジュールがForemanにインポートされ、ホストで使用できるようになります。

デフォルトのNTPプールを上書きする

ここで、NTPモジュールのデフォルト設定を上書きし、デフォルトでUSNTPプールを使用するようにNTPモジュールを構成します。 NTPプールプロジェクトでお好みのNTPプールをお気軽に検索してください。

「人形教室」画面が表示されます。 「ntp」クラスをクリックして、編集モードに入ります。 次に、「スマートクラスパラメータ」タブをクリックします。

下にスクロールして、左側のサイドバーで「サーバー」項目を見つけ、それを選択します。

「上書き」チェックボックスを見つけてチェックします。 パラメータタイプドロップダウンを「アレイ」に変更します。 次に、「デフォルト値」をデフォルトのNTPプールから選択したものに配列形式で変更します。 USNTPプールを使用します。

["0.us.pool.ntp.org","1.us.pool.ntp.org","2.us.pool.ntp.org","3.us.pool.ntp.org"]

一番下までスクロールして、緑色の[送信]ボタンをクリックします。 これで、このモジュールを使用するホストまたはホストグループは、デフォルトでUSNTPプールを使用します。

NTPモジュールを使用するようにForemanホストを構成する

これで、NTPモジュールを使用してForemanホストでNTPを管理する準備が整いました。

[ホスト]画面に移動します(ホストの上にマウスを置き、すべてのホストをクリックします)。 Foremanホストの右端にある[編集]ボタンをクリックします。

[パペットクラス]タブをクリックします。 Available Classes の下で、 ntp クラスをクリックして展開し、「ntp」の横のプラス記号をクリックします。

これにより、ntpクラスがIncludedClassesセクションに移動します。 これは、次にForemanホストのPuppetエージェントがチェックインするときに、このPuppetモジュールが適用されることを意味します。

送信ボタンをクリックして変更を適用します。

人形の構成を表示

Foremanホストの構成を編集すると、Foremanホストの概要ページに移動します。

エージェントノードがチェックインしたときにPuppetに提供される情報を表示するには、[YAML]ボタンをクリックします。

次のような出力のページが表示されます。

---
classes:
  ntp:
    server_list:
    - 0.us.pool.ntp.org
    - 1.us.pool.ntp.org
    - 2.us.pool.ntp.org
    - 3.us.pool.ntp.org
parameters:
  puppetmaster: foreman.nyc2.example.com
  root_pw: 
  foreman_env: production
  owner_name: Admin User
  owner_email: root@nyc2.example.com
environment: production

PuppetAgentを実行する

この変更を今すぐ適用して、それが何をするかを見てみましょう。

Foremanサーバーで、Puppetエージェントを実行します。

sudo puppet agent --test

Web UIで、Foremanホストに戻り、レポートボタン( YAML ボタンの横)をクリックします。 いくつかの変更が適用され、サービスが再起動されたことを示す新しいレポートエントリが表示されます。 レポートをクリックします。 ここに、NTPパッケージがインストール、構成、および再起動されたことを示すいくつかの通知が表示されます。

Foremanを使用してForemanサーバーを構成したことに注意してください。 他のホストの管理も同じように機能します。

必要に応じて、ntp.conf/contentアイテムの横にある[差分の表示]リンクをクリックします。 これは、Puppetが管理する構成ファイルをどのように変更しているかを確認する場合に役立ちます。

フォアマンに新しいホストを追加する

Foremanサーバーをセットアップしたので、Foremanサーバーで管理するホストをさらに追加することをお勧めします。 ホストを追加するプロセスは、マスターにPuppetエージェントノードを追加するのと同じです。 これを行うための詳細な手順は、このシリーズの最初のチュートリアルにあります。 Puppetマスター(フォアマン)サーバーを指すようにエージェントを構成してください。

エージェントをインストールして実行した後、Foremanサーバーでその証明書に署名する必要があります。 通常のPuppetセットアップと同様に、コマンドラインを介して証明書に署名するか、ForemanWebインターフェイスを使用できます。

Webインターフェイスを使用して証明書に署名するには、[インフラストラクチャ]に移動し、[スマートプロキシ]をクリックして、[証明書]ボタンをクリックします。

ここに、PuppetCAのすべての証明書が表示されます。 このPuppetマスターを使用するように設定した新しいホストの横にある[署名]ボタン(右端)をクリックします。

新しいホストは、フォアマンが管理する準備ができています。

結論

Foremanインスタンスが機能するようになったので、Puppetモジュールを活用してサーバーインフラストラクチャを管理する簡単な方法があります。 公開されているPuppetモジュールを自由に閲覧するか、独自のモジュールを作成して(このシリーズの前のチュートリアルを参照)、環境を管理してください。

幸運を!

モバイルバージョンを終了