Puppetは、プロビジョニング、構成管理、中央の場所からの数百のクライアントシステムへのパッチ適用など、ITインフラストラクチャの自動化に役立つオープンソースの構成管理ツールです。
Puppetは、Linux、Mac、BSD、Solaris、およびWindowsオペレーティングシステムで使用できます。 「Ruby」言語で記述され、Apacheライセンスの下でリリースされています
このガイドは、CentOS 8 /RHEL8にPuppetをインストールするのに役立ちます。
Pupperは、エージェントマスターアーキテクチャで構成されます。このアーキテクチャでは、管理対象ノードはバックグラウンドサービスとしてパペットエージェントソフトウェアを実行します。一方、1つ以上のサーバーがマスターアプリケーションを実行します。 Puppetサーバー。
人形エージェントは定期的に事実を人形マスターに送信し、カタログを要求します。マスターは、アクセスできる情報のソースを使用して、その特定のノードのカタログをコンパイルして返します。
ここでは、サーバー/エージェントアーキテクチャでパペットを構成します。
ホスト名: puppet server.itzgeek.local
IPアドレス: 192.168.0.10
オペレーティングシステム: CentOS 8
ホスト名: client.itzgeek.local
IPアドレス: 192.168.0.20
オペレーティングシステム: CentOS 8
NTPをインストールする
Puppetサーバーが認証局として機能するため、マスターノードとクライアントノードのタイミングはNTPサーバーと正確に同期している必要があります。
NTPサーバーを設定する必要がある場合は、次のようにします。
読む: Chronyを使用してNTPサーバーを構成する方法
NTPクライアントを設定する必要がある場合は、次のようにします。
読む: Chronyを使用してNTPクライアントを構成する方法
必要に応じて、システムのタイムゾーンも変更してください。
読む :CentOS 8 /RHEL8でタイムゾーンを変更する方法
Puppetエージェントは、ホスト名を使用してPuppetサーバーと通信します。したがって、エージェントノードが/ etc/hostsファイルまたはDNSサーバーを使用してPuppetサーバーのホスト名を解決できることを確認してください。
Puppetサーバーのインストールと構成
Puppet Serverは、マスターノードで実行されるサーバーソフトウェアです。 Puppet Serverは、管理対象ノード(puppet-agent)の構成を制御します。
Puppetサーバーをインストールするには、リポジトリ構成パッケージをインストールしてpuppetリポジトリを追加する必要があります。
rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
以下のコマンドを使用してPuppetサーバーをインストールします。
yum install -y puppetserver
デフォルトでは、Puppetサーバーは2GBのメモリを使用するように構成されています。接続されているノードの数に基づいて、メモリ割り当てを変更できます。
このデモでは、512MBのメモリを割り当てます。
メモリ割り当ての値を変更するには、以下のファイルを編集してください。
vi /etc/sysconfig/puppetserver
値を変更します。
差出人:
JAVA_ARGS="-Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
宛先:
512MBの場合は、以下の設定を使用してください。
JAVA_ARGS="-Xms512m -Xmx512m -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
Puppetの構成ファイルは、Pupperサーバーとエージェント用にそれぞれ[master]と[main]という名前の2つのセクションで構成されています。
vi /etc/puppetlabs/puppet/puppet.conf
環境に応じてファイルを変更してください。 Pupperエージェントは、dns_alt_namesに記載されている任意のホスト名を使用して、Pupperサーバーに接続できます。
# Pupper Server Configuration [master] dns_alt_names = puppetserver,puppetserver.itzgeek.local # Puppet Agent Configuration [main] certname = puppetserver.itzgeek.local server = puppetserver.itzgeek.local runinterval = 30m
PuppetServerのルートおよび中間署名CAを生成します。
puppetserver ca setup
Output: Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/capuppetserver:コマンドが見つからない場合は、ターミナルでsource /etc/profile.d/puppet-agent.shを実行するか、現在のセッションからログアウトして再度ログインします。
Puppetサーバーを起動して有効にします。
systemctl start puppetserver
systemctl enable puppetserver
Puppetサーバーはポート8140でリッスンします。したがって、エージェントがマスターに接続できるようにファイアウォールを構成します。
firewall-cmd --permanent --add-port=8140/tcp
firewall-cmd --reload
Puppetエージェントのインストールと構成
Puppetエージェントをインストールするには、すべてのノードにpuppetリポジトリを追加する必要があります。
rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
以下のコマンドを使用して、クライアントにpuppetエージェントをインストールします。
dnf install -y puppet-agent
puppet構成ファイルを編集し、Puppetサーバー情報を設定します。
Puppetサーバーのホスト名に従ってサーバー値を設定します。私の場合、サーバーはpuppetserver.itzgeek.localであり、certnameはクライアントのホスト名(client.itzgeek.local)です。
vi /etc/puppetlabs/puppet/puppet.conf
以下のように設定します。
[main] server = puppetserver.itzgeek.local certname = client.itzgeek.local runinterval = 30m
runintervalの値は、要件に応じて変更できます。この設定は、エージェントが2つのカタログ要求間で待機する時間を制御します。値は、秒(10または10秒)、分(10分)、および時間(1時間)で設定できます。
ノードでパペットエージェントを起動し、システムの起動時に自動的に起動するようにします。
puppet resource service puppet ensure=running enable=true
Output: Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running' service { 'puppet': ensure => 'running', enable => 'true', provider => 'systemd', }puppet:コマンドが見つからない場合は、ターミナルでsource /etc/profile.d/puppet-agent.shを実行するか、現在のセッションからログアウトして再度ログインします。
各ノードからの証明書要求を承認する必要があります。エージェントノードは、実行しようとすると初めて証明書を要求します。
エージェントノードで以下のコマンドを実行して、初期接続を確立します。警告/エラーは無視してかまいません。
puppet agent -t
Pupperサーバーにログインし、以下のコマンドを実行して未処理のリクエストを表示します。
puppetserver ca list
Output: Requested Certificates: client.itzgeek.local (SHA256) 06:D8:8E:AE:CA:0B:B1:E7:90:B5:B9:1B:75:3C:95:69:D8:EF:27:0A:5D:CC:45:BB:15:34:64:D2:6B:2C:CA:98
puppetcertsignコマンドを実行してリクエストに署名します。
puppetserver ca sign --certname client.itzgeek.local
Output: Successfully signed certificate request for client.itzgeek.local
これで、Puppetサーバーはクライアントマシンと通信してノードを制御できるようになりました。
ノードからの複数の署名要求がある場合は、1つのコマンドですべての要求に署名できます。
puppetserver ca sign --all
場合によっては、特定のノードの証明書を取り消して、それらを読み戻す必要があります。
puppetserver ca revoke --certname AGENT_NAME
以下のコマンドを使用して、署名されたリクエストと署名されていないリクエストをすべて一覧表示できます。
puppetserver ca list --all
Output: Signed Certificates: puppetserver.itzgeek.local (SHA256) E6:2C:6C:1E:9B:C6:AA:D9:84:09:F3:67:45:1B:36:C6:1F:FB:46:5F:92:64:37:19:E3:74:0C:0D:29:D5:C5:F6 alt names: ["DNS:puppetserver.itzgeek.local", "DNS:puppetserver", "DNS:puppetserver.itzgeek.local"] authorization extensions: [pp_cli_auth: true] client.itzgeek.local (SHA256) EF:D8:1A:F2:E9:56:A3:1F:DA:A9:8D:9B:71:02:D8:52:F1:44:98:92:A7:5F:DE:FC:5F:55:37:97:EC:9C:9A:96
Puppetサーバーがクライアント証明書に署名したら、クライアントマシンで次のコマンドを実行してテストします。
puppet agent --test
Output: Info: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Retrieving locales Info: Caching catalog for client.itzgeek.local Info: Applying configuration version '1591351483' Notice: Applied catalog in 0.01 seconds
それはアルです。 CentOS 8 / RHEL 8にPuppetをインストールする方法を学んだことを願っています。さらに読むと、クライアントノードにファイルとディレクトリを作成するための簡単なマニフェストファイルを作成する方法を学びます。コメントセクションでフィードバックを共有してください。