ウェブサイト検索

Debian 11にPuppetサーバーおよびエージェントをインストールする方法


Debian 11にPuppetサーバーおよびエージェントをインストールする方法

このページで

  1. 前提条件
  2. FQDNの設定
  3. Puppetリポジトリの追加
  4. Puppetサーバーのインストール
  5. Puppetサーバーの設定
  6. Puppetエージェントのインストールと設定
  7. PuppetサーバーにPuppetエージェントを登録する
  8. 最初のパペットマニフェストの作成
  9. Puppetマニフェストの検証と適用
  10. 結論

Puppetは中央集権型の構成管理および自動化ツールです。DevOpsはサーバーとアプリケーションをデプロイするために構成管理を作成し、自動化のためのすべての構成は中央の「Puppet Server」に保存されます。その後、「Agent」ノードは「Puppet Server」から新しい構成を取得し、定義された状態を適用します。

「Puppet Server」と「Agent」ノード間のすべての接続は、デフォルトでSSL/TLS証明書を使用して暗号化されています。Puppetはドメイン固有言語(DSL)を使用してシステム構成を記述し、Rubyの構文に似ています。

このガイドでは、Debian 11 Bullseye に Puppet サーバーとエージェントをインストールおよび構成します。サーバーのホスト名 'puppet-server' に Puppet サーバーをインストールし、ホスト名 'agent' のサーバーに Puppet エージェントをインストールします。最後に、'agent' ノードに基本的な LEMP スタックをインストールするための最初の Puppet マニフェストを作成します。

前提条件

  • Debian 11サーバーを2台用意する必要があります。

    • IPアドレス「192.168.5.100」とFQDN「puppet-server.localdomainl.lan」を持つ「puppet-server」.
    • IPアドレス「192.168.5.150」とFQDN「agent.localdomain.lan」を持つ「エージェント」ノード。
  • また、rootユーザーまたはroot/sudo権限を持つユーザーが必要です。

FQDNの設定

まず、'puppet-server'と'agent'の両方でFully Qualified Domain Name (FQDN)と'/etc/hosts'ファイルを設定します。これにより、両方のサーバーがローカルドメイン名で通信できるようになります。

FQDNを設定するには、以下の'hostnamectl'コマンドを実行してください。

次のコマンドを実行して、'puppet-server.localdomain.lan' を 'puppet-server' に設定します。

hostnamectl set-hostname puppet-server.localdomain.lan

次のコマンドを実行して、'agent.localdomain.lan' の FQDN を 'agent' ノードに設定します。

hostnamectl set-hostname agent.localdomain.lan

次に、以下のようにvimエディタを使って'/etc/hosts'ファイルを編集します。

sudo vim /etc/hosts

次の設定をコピーして貼り付けます。

192.168.5.100   puppet-server.localdomain.lan
192.168.5.150   agent.localdomain.lan

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

最後に、以下の「ping」コマンドを実行して、puppet-server と agent の間の接続を確認します。

ping puppet-server.localdomain.lan -c3
ping agent.localdomain.lan -c3

設定が正しければ、次の出力が表示されます。'puppet-server.localdomain.lan'はサーバー<strong>192.168.5.100</strong>に解決され、'agent.localdomain.lan'はエージェントノード<strong>192.168.5.150</strong>に解決されます。

Puppetリポジトリの追加

デフォルトで、Puppelabsは最新のDebian 11 Bullseyeを含む、さまざまなLinuxディストリビューションのリポジトリパッケージを提供しています。このステップでは、Puppetリポジトリを「puppet-server」と「agent」の両方に追加してインストールします。この記事を書いている時点で、Puppetの最新バージョンはv7.xです。

以下の 'wget' コマンドを使用してリポジトリパッケージをダウンロードします。

wget https://apt.puppet.com/puppet7-release-bullseye.deb

次に、以下の 'dpkg' コマンドを使用して、debファイル 'puppet7-release-bullseye.deb' をインストールしてください。

sudo dpkg -i puppet7-release-bullseye.deb

インストールが完了したら、以下の「apt」コマンドを実行して、Debianパッケージインデックスを更新およびリフレッシュしてください。

sudo apt update

これでPuppetパッケージをインストールする準備が整いました。

Puppetサーバーのインストール

このステップでは、'puppet-server' に Puppet サーバーパッケージをインストールします。この記事の執筆時点では、Puppet の最新バージョンは v7 です。

Puppet Serverをインストールするには、以下のaptコマンドを実行します。このコマンドは、Java OpenJDKなどの他のパッケージも自動的にインストールします。

sudo apt install puppetserver

Yを入力してインストールを確認してください。

インストールが完了したら、Puppetサーバーのためにbash環境をロードする必要があります。

デフォルトでは、Puppetはそのバイナリファイルを「/opt/puppetlabs/bin」ディレクトリに保存します。Puppet Serverの新しい「` PATH」環境変数を適用するには、次のコマンドを実行してください。

source /etc/profile.d/puppet-agent.sh
echo $PATH

オプションとして、次のコマンドを実行することで '` PATH' 環境変数を適用することもできます。

echo "export PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc
source ~/.bashrc

以下のコマンドを使用して、'` PATH' 環境変数を確認してください。'/opt/puppetlabs/bin' ディレクトリが '` PATH' 環境変数のリストに含まれていることを確認してください。

echo $PATH

その後、通常通りに 'puppetserver' コマンドを実行できます。下記でPuppetのバージョンを確認できます。

puppetserver -v

以下のスクリーンショットに似た出力が得られるはずです。

次に、vimエディタを使用してPuppetサーバーの設定を'/etc/default/puppetserver'編集します。

sudo vim /etc/default/puppetserver

Puppetサーバーの最大メモリ割り当てを変更します。これは、システムのメモリに依存します。このガイドでは、2GBのメモリがあり、Puppetサーバーには1GBを割り当てます。そして、以下の設定を使用します。

JAVA_ARGS="-Xms1g -Xmx1g"

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

次に、新しいPuppetサービスファイルを適用するためにsystemdマネージャを再読み込みします。

sudo systemctl daemon-reload

次に、以下のコマンドを使用して「puppetserver」サービスを起動し、有効にします。

sudo systemctl start enable --now puppetserver

サービス「puppetserver」が動作しているはずです。以下のコマンドを実行して「puppetserver」を確認してください。

sudo systemctl status puppetserver

以下のスクリーンショットに似た出力が表示されるはずです。

さらに、システム上でUFWファイアウォールを使用している場合は、Puppet Serverが使用するポート「8140」を開放してください。

ローカルサブネット '192.168.5.0/24' からのすべての着信接続をポート '8140' のPuppetサーバーに許可するには、以下のコマンドを実行してください。

sudo ufw allow from 192.168.5.0/24 to any proto tcp port 8140
sudo ufw status

以下は現在のUFWファイアウォールルールです。

Puppetサーバーの設定

このステップでは、Puppet Serverの設定を編集します。これは、Puppetの設定を直接編集するか、<em>puppet</em>コマンドラインを使用して設定を生成することで行うことができます。

以下の「puppet」コマンドを実行して、Puppetサーバーをセットアップします。これにより、「main」セクションでデフォルトのPuppetサーバーのドメイン名と実行間隔が設定され、「server」セクションでenvironmentとdns_alt_namesが設定されます。

puppet config set server puppet-server.localdomain.lan --section main
puppet config set runinterval 1h --section main
puppet config set environment production --section server
puppet config set dns_alt_names puppet-server,puppet-server.localdomain.lan --section server

次に、以下のcatコマンドを使用して、Puppetサーバーの設定'/etc/puppetlabs/puppet/puppet.conf'を確認してください。

cat /etc/puppetlabs/puppet/puppet.conf

以下のようにPuppetサーバーの設定を確認してください。

最後に、以下の 'systemctl' コマンドを実行して、新しい設定を適用するためにサービス 'puppetserver' を再起動します。

sudo systemctl restart puppetserver

この時点で、あなたはPuppetサーバーのインストールと構成を完了しました。

Puppetエージェントのインストールと設定

このステップでは、クライアントマシン「エージェント」にPuppetエージェントをインストールおよび設定します。

Puppet Agentをインストールする前に、FQDNの設定を完了し、Puppetリポジトリを追加していることを確認してください。

それでは、Puppetエージェントをインストールして構成しましょう。

puppet-agentパッケージを以下のaptコマンドを使用してインストールしてください。

sudo apt install puppet-agent

インストールが完了したら、以下のコマンドを実行してPuppetサービスを開始し、有効にします。

sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

以下のスクリーンショットに似た出力が表示されるはずです。

次に、Puppetバイナリパス「/opt/puppetlabs/bin/」を追加するために「PATH」環境変数を設定します。これにより、バイナリファイルのフルパスを必要とせずに、「puppet」コマンドを直接実行できるようになります。

source /etc/profile.d/puppet-agent.sh
echo $PATH

それを行う別の方法は、次のコマンドを使用して「~/.bashrc」設定に新しい「` PATH」環境変数を追加することです。

echo "export PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc
source ~/.bashrc

次のコマンドを使用して、'` PATH' 環境変数の設定を確認してください。

echo $PATH

Puppetのバイナリパス『/opt/puppetlabs/bin』が『'` PATH』環境変数に追加されているはずです。

PuppetサーバーにPuppetエージェントを登録する

Puppet Agentをインストールした後、Puppet Agentを設定してメインPuppet Serverに登録します。

まず、Puppet Serverのfqdnが「agent」マシンからアクセス可能であることを確認してください。以下の「ping」コマンドを使用してテストします。

ping puppet-server.localdomain.lan -c3

次に、Puppetエージェントを構成するために以下のコマンドを実行します。これにより、Puppetサーバーのドメイン名とca_serverがエージェントセクションで定義されます。

puppet config set server puppet-server.localdomain.lan --section agent
puppet config set ca_server puppet-server.localdomain.lan --section agent

生成されたPuppet設定をファイル'/etc/puppetlabs/puppet/puppet.conf'で確認してください。

cat /etc/puppetlabs/puppet/puppet.conf

以下のスクリーンショットに似た出力が表示されるはずです。

次に、以下のコマンドを実行してPuppetサービスを再起動し、新しい変更を適用します。その後、Puppetサービスを確認し、アクティブで実行中であることを確認してください。

sudo systemctl restart puppet
sudo systemctl status puppet

以下はPuppetサービスのステータス出力です。

次に、以下のコマンドを実行してPuppetエージェントをPuppetサーバーに登録します。このコマンドは新しいTLS証明書を生成し、Puppetサーバーへの新しい証明書署名要求を作成します。

puppet ssl bootstrap

次にPuppetサーバーのターミナルに移動し、以下のコマンドを実行して証明書署名要求を確認し、Puppetエージェント「agent.localdomain.lan」の証明書署名を確認します。

puppetserver ca list --all
puppetserver ca sign --certname agent.localdomain.lan

'成功裏に証明書要求が署名されました ....'のようなメッセージが表示されるはずです。

次に、Puppetサーバー上の証明書のリストを確認するために、以下のコマンドを実行してください。

puppetserver ca list-all

2つの異なる証明書、Puppet サーバー用の証明書と Puppet エージェント用の証明書が表示されるはずです。

今再びPuppet Agentのターミナルに移動すると、「通知: SSL初期化完了」のようなメッセージが表示されるはずです。これは、証明書署名要求が正常に完了したことを意味します。

この時点で、新しい最初のPuppetマニフェストを作成する準備ができました。

最初のパペットマニフェストの作成

このステップでは、LEMPスタック(Nginx、MariaDB、PHP-FPM)をインストールするための新しい最初のPuppetマニフェストを作成します。プロダクション環境のすべてのマニフェストは、Puppetサーバーディレクトリ「/etc/puppetlabs/code/environments/production/」に保存する必要があります。

/etc/puppetlabs/code/environments/production/ に現在の作業ディレクトリを変更してください。

cd /etc/puppetlabs/code/environments/production/

次に、"modules"ディレクトリの下にLEMPスタック用の新しいマニフェストレイアウトディレクトリを作成します。

mkdir -p modules/lemp/{manifests,files}

modules/lemp ディレクトリに移動し、vim/nano エディタを使用して新しい Puppet マニフェストファイル manifests/init.pp を作成します。

cd modules/lemp/
nano manifests/init.pp

LEMPスタックをインストールするための以下のPuppet構文言語をコピーして貼り付け、各LEMPスタックサービスが稼働していることを確認し、新しいカスタムindex.htmlファイルを作成します。

class lemp {
    Package { ensure => 'installed' }
    $lemppackages = [ 'nginx', 'mariadb-server', 'php-fpm' ]
    package { $lemppackages: }
    Service { ensure => 'running', enable => 'true'}
    $lempsvc = [ 'nginx', 'mariadb', 'php7.4-fpm' ]
    service { $lempsvc: }
    file { '/var/www/html/index.html':
     ensure  => file,
     content => "<h1><center>Welcome to Nginx - Managed by Puppet</center></h1>",
     mode    => '0644',
   }
}

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

次に、Puppetマニフェストファイル 'init.pp' を検証するために、以下のコマンドを実行します。

puppet parser validate init.pp

出力メッセージが表示されていない場合、設定は正しいです。

今、vim/nanoエディタを使用して'manifests/site.pp'という別の設定を作成してください。

cd /etc/puppetlabs/code/environments/production/
vim manifests/sites.pp

ターゲットホストを「agent.localdomain.lan」に定義し、新しいPuppetマニフェスト「lemp」を適用します。

node 'agent.localdomain.lan' {
    include lemp
}

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

次のコマンドを使用してPuppetマニフェストの設定を再確認してください。

puppet parser validate site.pp

Puppetマニフェストの検証と適用

あなたは今、LEMPスタックをデプロイするための新しい最初のPuppetマニフェストを作成しました。この時点で、Puppetエージェントノードは自動的にすべてのマニフェストをPuppetサーバーと同期し、新しいマニフェスト構成を適用します。

しかし、PuppetエージェントマシンからPuppetマニフェストを手動で適用することもできます。

ターミナルサーバー「エージェント」に戻り、以下のコマンドを実行してPuppetマニフェストを手動で適用します。

puppet agent -t

これにより、Puppetエージェントマシン上でPuppetマニフェストが実行され、Puppetマニフェスト「lemp」を通じてLEMPスタックがインストールされます。

以下が得られる出力です。

以下のコマンドを実行して、Nginx、MariaDB、およびPHP-FPMの各サービスを確認してください。

sudo systemctl status nginx
sudo systemctl status mariadb
sudo systemctl status php7.4-fpm

各サービスがアクティブで稼働していることが確認できるはずです。

今、ウェブブラウザを開いて、アドレスバーにエージェントノードのIPアドレスを入力してください。そして、下にカスタムindex.htmlファイルが表示されるはずです。

あなたは今、Puppetマニフェストを使用してエージェントマシンにLEMPスタックのデプロイメントを成功裏に適用しました。

結論

おめでとうございます! デビアン 11 ブルズアイに Puppet サーバーとエージェントを正常にインストールしました。また、LEMP スタックをインストールするための最初の Puppet マニフェストを作成する方法を学びました。

次のステップでは、別のノードを設定し、デプロイメント用のより複雑な Puppet マニフェストを作成することに興味があるかもしれません。

関連記事: