Puppetは、オープンソースの構成管理ツールおよびサーバー自動化フレームワークです。 Puppetは、UnixライクなオペレーティングシステムとMicrosoftWindowsシステムで実行できます。 1台のマスターサーバーから数百のシステムの管理タスクと構成を管理および実行できます。
このチュートリアルでは、CentOS 8にPuppetをインストールする方法を説明します。CentOS8サーバーをPuppetの「マスター」としてインストールし、もう1つのサーバーを「エージェント」として構成します。
前提条件
- 2台以上のCentOS8サーバー
- root権限
私たちが行うこと:
- 人形の事前インストール
- Puppetサーバーのインストールと構成
- PuppetAgentのインストールと構成
- Puppetエージェントの構成を確認する
- 最初の人形マニフェストを作成する
この最初のステップでは、パペットをインストールするためにマスターサーバーとエージェントサーバーの両方を準備します。サーバーのホストとFQDNを設定し、NTPサーバーを設定し、CentOS8サーバーのpuppetリポジトリを追加します。
ホスト名の設定
まず、両方のサーバーのホストとFQDNを設定します。パペットマスターには、FQDN「master.hakase-labs.io」を持つホスト名「master」があり、エージェントには、FQDN「agent01.hakase-labs.io」を持つホスト名「agent01」があります。
以下の「hostnamectl」コマンドを使用してホスト名を設定します。
hostnamectl set-hostname hostname
その後、「/ etc/hosts」ファイルを編集してFQDNサーバーを構成します。
vim /etc/hosts
IPアドレスとドメイン名を自分のものに変更して貼り付けます。
10.5.5.21 master.hakase-labs.io master
10.5.5.22 agent01.hakase-labs.io agent01
保存して閉じます。
次に、hostnamedサービスを再起動して、新しいホスト名とFQDNを適用します。
systemctl restart systemd-hostnamed
その後、次のコマンドを使用してホスト名とFQDNを確認します。
hostname
hostname -f
そして、新しいホスト名を取得し、FQDNが構成されてシステムに適用されます。
NTPサーバーのセットアップ
NTPサーバーの場合、サーバーには「chrony」を使用します。
以下のdnfコマンドを使用してchronyをインストールします。
dnf install chrony
その後、vimエディターを使用してchrony構成'/etc/chrony.conf'を編集します。
vim /etc/chrony.conf
次に、プールサーバーをお住まいの国で最も近いプールに変更します。 「https://www.pool.ntp.org/zone/COUNTRYID」を使用して、利用可能なプールNTPを確認できます。
お住まいの国で利用可能なすべてのNTPサーバーをコピーし、以下のように「chrony.conf」ファイルに貼り付けます。
server 0.id.pool.ntp.org iburst
server 1.id.pool.ntp.org iburst
server 2.id.pool.ntp.org iburst
server 3.id.pool.ntp.org iburst
保存して閉じます。
次に、chronydサービスを開始し、起動ブート時間に追加します。
systemctl start chronyd
systemctl enable chronyd
NTPサーバーの構成が完了しました。
CentOS8のPuppetリポジトリを追加
puppetリポジトリCentOS8サーバーの場合、以下のようにrpmコマンドを使用して手動でインストールできます。
sudo rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
その後、以下のdnfコマンドを使用して、システムで使用可能なすべてのリポジトリを確認します。
dnf repolist
そして、パペットリポジトリがCentOS8システムに追加されていることがわかります。
SELinuxを無効にする
SELinuxを無効にするには、vimエディターを使用して「/ etc / sysconfig/selinux」構成を編集できます。
vim /etc/sysconfig/selinux
次に、「SELINUX」値の構成を「無効」に変更します。
SELINUX=disabled
保存して閉じてから、サーバーを再起動します。
sudo reboot
再度ログインしたら、次のコマンドを使用してSELinuxのステータスを確認します。
sestatus
そして、SELinuxが無効な状態になります。
このステップでは、マスターノードにpuppetserverをインストールして構成します。
以下のdnfコマンドを使用してpuppetserverをインストールします。
sudo dnf install puppetserver
その後、puppetserverの「initsettings」を編集し、使用しているRAMに応じてメモリ割り当てを変更する必要があります。
vimエディターを使用して「/etc/ sysconfig/puppetserver」にあるpuppetserverinit設定を編集します。
vim /etc/sysconfig/puppetserver
次に、RAMに応じてメモリ割り当ての「JAVA_ARGS」構成を変更します。
JAVA_ARGS="-Xms1g -Xmx1g ...."
保存して閉じます。
次に、「/ etc / puppetlabs」ディレクトリに移動し、puppet構成ファイル「puppet.conf」を編集します。
cd /etc/puppetlabs/
vim puppet/puppet.conf
マスター構成で、マスターサーバーのFQDNを使用してDNS代替名を定義します。
[master]
....
dns_alt_names=master.hakase-labs.io,puppet
....
その後、パペットのメインサーバー構成を以下のように定義します。
[main]
certname = master.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
保存して閉じます。
次に、puppetserverサービスを起動ブート時間に追加し、サービスを開始します。
systemctl enable puppetserver
systemctl start puppetserver
puppetserverは、デフォルトのTCPポート「8140」を使用してCentOS8サーバーで稼働しています。
次のコマンドを使用して、puppetserverポート「8140」をfirewalldに追加します。
firewall-cmd --add-port=8140/tcp --permanent
firewall-cmd --reload
その結果、パペットマスターのインストールと構成は正常に完了しました。
Puppetマスターサーバー「master.hakase-labs.io」をインストールした後、「agent01」サーバーにPuppetエージェントをインストールします。
'agent01'サーバーにログインし、以下のdnfコマンドを使用してpuppet-agentパッケージをインストールします。
sudo dnf install puppet-agent
その後、「/ etc / puppetlabs」ディレクトリに移動し、vimエディターを使用して構成ファイル「puppet.conf」を編集します。
cd /etc/puppetlabs/
vim puppet/puppet.conf
「certname」と「server」の構成を独自の構成に変更し、構成に貼り付けます。
[main]
certname = agent01.hakase-labs.io
server = master.hakase-labs.io
environment = production
runinterval = 1h
保存して閉じます。
次に、puppetサービスを開始し、次のコマンドを使用してPuppetエージェントをマスターサーバーに登録します。
/opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true
そして、以下のような結果が得られます。
これで、パペットエージェントが稼働し、パペットマスターサーバーに登録しようとしています。
ここで、Puppetマスターサーバーに戻り、保留中の証明書要求を確認します。
/opt/puppetlabs/bin/puppetserver ca list
そして、リストにある「agent01.hakase-labs.io」証明書を取得します。
次に、以下のコマンドを使用して「agent01」証明書に署名します。
/opt/puppetlabs/bin/puppetserver ca sign --certname agent01.hakase-labs.io
これで、パペットエージェントがマスターサーバーに登録されました。
次に、Puppetエージェントの構成を確認し、次のコマンドを使用してPuppetエージェントとマスター間の接続をテストします。
/opt/puppetlabs/bin/puppet agent --test
そして、以下のような結果が得られます。
その結果、PuppetエージェントはPuppetマスターから構成をプルし、エラーなしでサーバーに適用しました。
この段階で、マスターとエージェント用のPuppetのインストールと構成が完了しました。
このステップでは、httpdパッケージをインストールするための最初のパペットマニフェストを作成して、セットアップをテストします。
'/etc/puppetlabs/code/environments/production/manifests'ディレクトリに移動し、最初のpuppetマニフェストファイル'httpd.pp'を作成します。
cd /etc/puppetlabs/code/
cd environments/production/manifests
vim httpd.pp
次の構成を貼り付けます。
node 'agent01.hakase-labs.io' {
package { 'httpd':
ensure => "installed",
}
service { 'httpd':
ensure => running,
enable => true
}
}
保存して閉じます。
次に、Puppetエージェントノード「agento01」に移動し、次のコマンドを実行します。
/opt/puppetlabs/bin/puppet agent --test
そして、以下のような結果が表示されます。
Puppetエージェントは、httpdパッケージをインストールしてhttpdサービスを開始するために、Puppetマスターから新しい構成をプルしました。
'agent01'ノードで、httpdサービスのステータスを確認し、HTTPポート'80'を確認します
systemctl status httpd
netstat -plntu
そして、デフォルトのHTTPポート「80」を使用して「agent01」サーバーでhttpdサービスが稼働していることを確認します。 httpdパッケージは、上部に作成したpuppetマニフェストを介してインストールされています。
その結果、CentOS8サーバーでのPuppetマスターとエージェントのインストールと構成が正常に完了しました。