前書き

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

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

前提条件

このチュートリアルでは、Puppetマスターサーバーとしても機能する新しいサーバーにForemanをインストールすることを想定しています。 すでにPuppetマスターサーバーがある場合、Foremanをインストールできますが、デフォルトの `+ site.pp +`が上書きされることに注意してください(既存のPuppetエージェントノードを_unmanaged_状態のままにする)。設定する必要があります。 Foremanが既存のPuppetエージェントノードを管理します。

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

  • *ルートアクセス:*管理するすべてのサーバーへの `+ sudo +`アクセス

  • *プライベートネットワークDNS:*フォワードDNSおよびリバースDNSを構成する必要があり、すべてのサーバーに一意のホスト名が必要です。 https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-ubuntu-14-04へのチュートリアルはこちらです。プライベートネットワークDNSサーバー]。 DNSが構成されていない場合は、名前解決にhostsファイルを使用する必要があります。 インフラストラクチャ内の通信にプライベートネットワークを使用すると想定します。

  • * Firewall Open Ports:* Puppetマスターはポート8140で到達可能でなければなりません。 ファイアウォールの制限が厳しすぎる場合は、https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-をご覧ください。ポート8140で着信要求を許可する方法については、server [UFW Tutorial]を参照してください。

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

Foremanサーバーを作成する

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

Hostname Role Private FQDN

foreman

Foreman / Puppet Master

foreman.nyc2.example.com

DNSをセットアップしたばかりで、ホストをDNSに追加する方法がわからない場合は、https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-networkを参照してくださいDNSチュートリアルの-dns-server-on-ubuntu-14-04#MaintainingDNSRecords [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

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

次に、 `+ hostname +`ファイルを編集します:

sudo vi /etc/hostname

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

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

sudo hostname --file /etc/hostname

長いホスト名が設定されました。 Foremanのインストールを続けます!

Foremanをインストールする

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

  • フォアマン

  • Puppetマスターとエージェント

  • SSLおよびPassengerモジュールを備えたApache Webサーバー

次のコマンドを使用して、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とその必要なコンポーネントがインストールされています!

差分を有効にする

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

`+ puppet.conf +`を編集します:

sudo vi /etc/puppet/puppet.conf

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

   show_diff     = true

保存して終了。

職長のホストを職長のデータベースに追加する

`+ puppet agent`コマンドラインを実行してForemanのデータベースにForemanホストを追加するには:

sudo puppet agent --test

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

Foreman Webインターフェイスへのログイン

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

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

image:https://assets.digitalocean.com/articles/foreman/foreman_login.png [Foremanログインページ]

`+ foreman-installer +`の実行時に気づいたかもしれませんが、これらはデフォルトの認証情報です:

  • ユーザー名:admin

  • パスワード:changeme

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

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

image:https://assets.digitalocean.com/articles/foreman/dashboard.png [ホスト構成ステータス]

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

管理者パスワードの変更

他のことを行う前に、 `+ admin +`ユーザーのパスワードを変更する必要があります。 これを行うには、右上隅の_Admin User_アイテムの上にマウスを置き、_My Account_をクリックします。

image:https://assets.digitalocean.com/articles/foreman/account.png [マイアカウント]

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

Foremanへの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_の上にマウスを置き、_Puppet classes_をクリックします。

画像:https://assets.digitalocean.com/articles/foreman/puppet_classes.png [パペットクラス]

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

image:https://assets.digitalocean.com/articles/foreman/import_ntp_class.png [NTPクラスのインポート]

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

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

ここで、NTPモジュールのデフォルト設定をオーバーライドし、デフォルトでUS NTPプールを使用するようにNTPモジュールを構成します。 NTP Pool Projectでお好みのNTPプールを検索してください。

「Puppet Classes」画面にいるはずです。 「ntp」クラスをクリックして、編集モードに入ります。 次に、「Smart Class Parameter」タブをクリックします。

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

image:https://assets.digitalocean.com/articles/foreman/ntp_servers.png [NTPサーバー]

「上書き」チェックボックスを見つけてチェックします。 _Parameter type_ドロップダウンを「配列」に変更します。 次に、「デフォルト値」をデフォルトのNTPプールから選択した配列の形式に変更します。 米国のNTPプールを使用します。

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

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

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

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

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

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

image:https://assets.digitalocean.com/articles/foreman/available_classes.png [利用可能なクラス]

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

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

Puppet設定の表示

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

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

image:https://assets.digitalocean.com/articles/foreman/yaml.png [YAML Button]

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

---
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: [email protected]
environment: production

Puppet Agentを実行する

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

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

sudo puppet agent --test

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

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

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

Foremanへの新しいホストの追加

Foremanサーバーがセットアップされたので、おそらく、それによって管理されるホストをさらに追加する必要があります。 ホストを追加するプロセスは、Puppet agentノードをマスターに追加するのと同じです。 これを行うための詳細な手順は、https://www.digitalocean.com/community/tutorials/how-to-install-puppet-to-manage-your-server-infrastructure#install-puppet-agent [最初のチュートリアルで見つけることができますこのシリーズで]。 Puppet master(Foreman)サーバーを指すようにエージェントを構成してください。

エージェントをインストールして実行した後、Foremanサーバーでその証明書に署名する必要があります。 証明書に署名できますhttps://www.digitalocean.com/community/tutorials/how-to-install-puppet-to-manage-your-server-infrastructure#sign-request-on-master [コマンドライン経由] 、通常のPuppetセットアップと同様に、Foreman Webインターフェースを使用できます。

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

image:https://assets.digitalocean.com/articles/foreman/certificates.png [証明書]

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

新しいホストをForemanで管理する準備ができました!

結論

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

がんばろう!