Puppetは、一元化された構成管理および自動化ツールです。 DevOpsは、サーバーとアプリケーションをデプロイするための構成管理を作成し、自動化のためのすべての構成は中央の「Puppetサーバー」に保存されます。その後、「Agent」ノードは「Puppet Server」から新しい構成をプルし、定義された状態を適用します。
「PuppetServer」ノードと「Agent」ノード間のすべての接続は、デフォルトでSSLを使用して暗号化されます/TLS証明書。 Puppetはドメイン固有言語(DSL)を使用してシステム構成を記述し、Ruby構文に似ています。
このガイドでは、Debian11BullseyeにPuppetサーバーとエージェントをインストールして設定します。 Puppetサーバーをサーバーのホスト名「puppet-server」にインストールし、Puppetエージェントをホスト名「agent」でサーバーにインストールします。最後に、「エージェント」ノードに基本的なLEMPスタックをインストールするための最初のパペットマニフェストを作成します。
- 2つの異なるDebian11サーバーが必要になります。
- 'puppet-server 'IPアドレス付き'192.168.5.100 'およびfqdn'puppet-server.localdomainl.lan '。
- 'エージェント 'IPアドレスを持つノード'192.168.5.150 'およびfqdn'agent.localdomain.lan '。
- また、rootユーザーまたはroot/sudo権限を持つユーザーが必要になります。
まず、完全修飾ドメイン名(FQDN)と「/ etc/hosts」ファイルを「puppet-server」と「agent」の両方に設定します。これにより、両方のサーバーがローカルドメイン名と通信できるようになります。
FQDNを設定するには、' hostnamectlを実行します '以下のコマンド。
次のコマンドを実行して、fqdn' puppet-server.localdomain.lanを設定します 'puppet-serverの' '。
hostnamectl set-hostname puppet-server.localdomain.lan
次のコマンドを実行して、fqdn' agent.localdomain.lanを設定します 'エージェントの' 'ノード。
hostnamectl set-hostname agent.localdomain.lan
次に、' / etc / hostsを編集します '以下のvimエディターを使用したファイル。
sudo vim /etc/hosts
次の構成をコピーして貼り付けます。
192.168.5.100 puppet-server.localdomain.lan
192.168.5.150 agent.localdomain.lan
ファイルを保存して終了します。
最後に、' pingを実行します ' puppet-server 間の接続を確認するには、以下のコマンド 'および'エージェント '。
ping puppet-server.localdomain.lan -c3
ping agent.localdomain.lan -c3
構成が正しい場合は、次の出力が表示されます。 ' puppet-server.localdomain.lan 'サーバーに解決されます'192.168.5.100 '、および' agent.localdomain.lan 'はエージェントノードに解決されます'192.168.5.150 '。
デフォルトでは、Puppelabsは、最新のDebian 11 Bullseyeを含む、さまざまなLinuxディストリビューション用のリポジトリパッケージを提供します。このステップでは、Puppetリポジトリを「puppet-server」と「agent」の両方に追加してインストールします。この記事の執筆時点では、Puppetの最新バージョンはv7.xです。
' wgetを使用してリポジトリパッケージをダウンロードします '以下のコマンド。
wget https://apt.puppet.com/puppet7-release-bullseye.deb
次に、debファイル' puppet7-release-bullseye.debをインストールします。 ' dpkgを使用する '以下のコマンド。
sudo dpkg -i puppet7-release-bullseye.deb
インストールが完了したら、' aptを実行します 'Debianパッケージインデックスを更新および更新するには、以下のコマンドを使用してください。
sudo apt update
これで、Puppetパッケージをインストールする準備が整いました。
Puppetサーバーのインストール
このステップでは、「puppet-server」にPuppetサーバーパッケージをインストールします。この記事の執筆時点では、Puppetの最新バージョンはv7です。
Puppet Serverをインストールするには、以下のaptコマンドを実行します。このコマンドは、JavaOpenJDKなどの他のパッケージも自動的にインストールしました。
sudo apt install puppetserver
' Yと入力します 'インストールを確認します。
インストールが完了したら、Puppetサーバーのbash環境をロードする必要があります。
デフォルトでは、Puppetはバイナリファイルを' / opt / puppetlabs / binに保存します。 'ディレクトリ。次のコマンドを実行して、新しい' $ PATHを適用します 'PuppetServerの環境変数。
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を実行できます 'コマンドは正常に。以下でパペットのバージョンを確認できます。
puppetserver -v
以下のスクリーンショットのような出力が得られるはずです。
次に、Puppetサーバーの構成を編集します'/ etc / default / puppetserver' vimエディターを使用します。
sudo vim /etc/default/puppetserver
Puppetサーバーの最大メモリ割り当てを変更します。システムメモリによって異なります。このガイドでは、2GBのメモリがあり、Puppetサーバーに1GBを割り当てます。そして、以下の構成を使用します。
JAVA_ARGS="-Xms1g -Xmx1g"
構成ファイルを保存して終了します。
次に、systemdマネージャーをリロードして、新しいPuppetサービスファイルを適用します。
sudo systemctl daemon-reload
次に、' puppetserverを起動して有効にします '以下のコマンドを使用したサービス。
sudo systemctl start enable --now puppetserver
サービス'puppetserver 'が稼働している必要があります。以下のコマンドを実行して、' puppetserverを確認します '。
sudo systemctl status puppetserver
以下のスクリーンショットのような出力が表示されます。
さらに、システムでUFWファイアウォールを使用している場合は、必ずポート' 8140を開いてください。 'PuppetServerによって使用されます。
以下のコマンドを実行して、ローカルサブネットからの着信接続をすべて同盟します' 192.168.5.0/24 'ポート上のPuppetサーバーへ'8140 '。
sudo ufw allow from 192.168.5.0/24 to any proto tcp port 8140
sudo ufw status
以下は、表示する必要がある現在のUFWファイアウォールルールです。
Puppetサーバーの構成
このステップでは、Puppetサーバーの構成を編集します。これは、Puppet構成を直接編集するか、' puppetを使用して構成を生成することで実行できます。 'コマンドライン。
以下の「puppet」コマンドを実行して、Puppetサーバーをセットアップします。これにより、デフォルトのPuppetServerドメイン名が設定されます。 および実行間隔 'メイン 'セクション、および環境 および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
次に、Puppetサーバーの構成を確認します' /etc/puppetlabs/puppet/puppet.conf ' catを使用する '以下のコマンド。
cat /etc/puppetlabs/puppet/puppet.conf
以下のようにPuppetサーバーの構成が表示されます。
最後に、サービスを再起動します' puppetserver ' systemctl を実行して、新しい構成を適用します。 '以下のコマンド。
sudo systemctl restart puppetserver
この時点で、PuppetServerのインストールと構成は完了です。
このステップでは、クライアントマシンのエージェントにPuppetAgentをインストールして構成します。 '。
Puppet Agentをインストールする前に、FQDN構成を完了し、Puppetリポジトリを追加したことを確認してください。
それでは、PuppetAgentをインストールして構成しましょう。
パッケージをインストールします'puppet-agent '以下のaptコマンドを使用します。
sudo apt install puppet-agent
インストールが完了したら、以下のコマンドを実行してPuppetサービスを開始して有効にします。
sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
以下のスクリーンショットのような出力が表示されます。
次に、' $ PATHを設定します 'Puppetバイナリパスを追加するための環境変数'/opt / puppetlabs / bin / '。これを行うと、'人形を実行できます 'バイナリファイルのフルパスなしで直接コマンドを実行します。
source /etc/profile.d/puppet-agent.sh
echo $PATH
これを行う別の方法は、新しい' $ PATHを追加することです。 '環境変数から'〜/ .bashrc '次のコマンドを使用した構成。
echo "export PATH=$PATH:/opt/puppetlabs/bin/" | tee -a ~/.bashrc
source ~/.bashrc
次に、' $ PATHを確認します '次のコマンドを使用した環境変数の構成。
echo $PATH
Puppetバイナリパス'/ opt / puppetlabs / binが表示されます。 'が'$PATHに追加されます '環境変数。
PuppetエージェントをPuppetサーバーに登録する
Puppet Agentをインストールしたら、PuppetAgentをセットアップしてメインのPuppetサーバーに登録します。
まず、PuppetServerのfqdnが'エージェントから到達可能であることを確認します ' マシーン。 ' pingを使用してテストします '以下のコマンド。
ping puppet-server.localdomain.lan -c3
次に、以下のコマンドを実行してPuppetAgentを構成します。これにより、PuppetServerドメイン名が定義されます およびca_server 'エージェント 'セクション。
puppet config set server puppet-server.localdomain.lan --section agent
puppet config set ca_server puppet-server.localdomain.lan --section agent
ファイル'/etc/puppetlabs/puppet/puppet.conf'で生成されたPuppet構成を確認します。
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 Serverターミナルに移動し、以下のコマンドを実行して証明書署名要求を確認してから、Puppet Agent' agent.localdomain.lanの証明書署名を確認します。 '。
puppetserver ca list --all
puppetserver ca sign --certname agent.localdomain.lan
'正常に署名された証明書要求....などのメッセージが表示されます。 '。
次に、以下のコマンドを実行して、Puppetサーバー上の証明書のリストを確認します。
puppetserver ca list-all
PuppetServerとPuppetAgentの2つの異なる証明書が表示されます。
ここで再びPuppetAgentターミナルに移動すると、「通知:SSL初期化が完了しました」などのメッセージが表示されます。 '、これは証明書署名要求が正常に完了したことを意味します。
この時点で、新しい最初のPuppetマニフェストを作成する準備が整いました。
このステップでは、LEMPスタック(Nginx、MariaDB、およびPHP-FPM)をインストールするための新しい最初のパペットマニフェストを作成します。本番環境のすべてのマニフェストは、PuppetServerディレクトリに保存する必要があります' / etc / puppetlabs / code / environment / product / '。
現在の作業ディレクトリを'/ etc / puppetlabs / code / environment / product /に変更します。 '。
cd /etc/puppetlabs/code/environments/production/
次に、'モジュールの下にLEMPスタックの新しいマニフェストレイアウトディレクトリを作成します。 'ディレクトリ。
mkdir -p modules/lemp/{manifests,files}
' modules / lempに移動します 'ディレクトリを作成し、新しいPuppetマニフェストファイルを作成します' manifests / init.pp 'vim/nanoエディターを使用します。
cd modules/lemp/
nano manifests/init.pp
LEMP Stackをインストールするための次のpuppet構文言語をコピーして貼り付け、各LEMP Stackサービスが稼働していることを確認して、新しいカスタム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
出力メッセージが表示されない場合、構成は正しいです。
次に、別の構成を作成します' manifests / site.pp 'vim/nanoエディターを使用します。
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
これで、LEMPStackをデプロイするための新しい最初のPuppetマニフェストが作成されました。この時点で、PuppetAgentノードはすべてのマニフェストをPuppetServerに自動的に同期し、新しいマニフェスト構成を適用します。
ただし、PuppetAgentマシンから手動でPuppetマニフェストを適用することもできます。
ターミナルサーバーの「エージェント」に戻り、以下のコマンドを実行してPuppetマニフェストを手動で適用します。
puppet agent -t
これにより、Puppet AgentマシンでPuppetマニフェストが実行され、Puppetマニフェストの' lempを介してLEMPスタックがインストールされます。 '。
以下は、取得する出力です。
次に、以下のコマンドを実行して、各サービスNginx、MariaDB、およびPHP-FPMを確認します。
sudo systemctl status nginx
sudo systemctl status mariadb
sudo systemctl status php7.4-fpm
各サービスがアクティブで実行されていることを確認する必要があります。
次に、Webブラウザーを開き、アドレスバーにエージェントノードのIPアドレスを入力します。そして、以下のカスタムindex.htmlファイルが表示されます。
これで、Puppetマニフェストを使用してLEMPスタックデプロイメントをエージェントマシンに正常に適用できました。
おめでとうございます!これで、PuppetサーバーとエージェントがDebian11Bullseyeに正常にインストールされました。また、LEMPスタックをインストールするための最初のPuppetマニフェストを作成する方法を学びました。
O次のステップでは、別のノードをセットアップして、デプロイメント用のより複雑なPuppetマニフェストを作成することをお勧めします。