前書き
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モジュールを自由に参照するか、独自のモジュールを作成して(このシリーズの前のチュートリアルを参照)、環境を管理してください。
がんばろう!