Puppetは、UnixおよびWindowsベースのシステムで広く知られている構成管理ツールであり、管理者は、プロビジョニング、パッケージ/ソフトウェアのインストール、構成、インフラストラクチャ全体の管理など、反復的でエラーが発生しやすいシステム管理タスクを簡単に自動化できます。 Puppetには、PuppetEnterpriseとPuppetオープンソースの2つのフレーバーがあります。名前が示すように、エンタープライズバージョンは商用製品であり、オープンソースバージョンは無料でダウンロードできます。このチュートリアルでは、CentOSおよびUbuntuベースのシステムにオープンソースのPuppet(バージョン4)をインストールして構成する方法について説明します。
インストール手順を開始する前に、puppetのアーキテクチャを理解しましょう。
パペットマスター/エージェントアーキテクチャ
Puppetは通常、クライアント/サーバーモデルに基づいて動作します。つまり、マスター/エージェントベースのアーキテクチャ、つまりPuppetマスターとPuppetエージェントです。 Puppetマスターは構成情報を制御し、管理対象のPuppetAgentノードは独自の構成カタログを要求します。次の図は、マスターノードとエージェントノード間の通信の流れを示しています。
カタログとは
カタログは、システムの望ましい状態に関する情報を含むドキュメントです。 Puppetマスターがカタログをコンパイルし、Puppetエージェントがそれらを適用します。
Puppetインストール環境
このチュートリアルでは、puppetmaster.test.in(Puppet Master)とpuppetagent.test.in(Puppet Agent)の2つのノードを使用します(これらはOpenStackで実行されているVMです)
Puppet4をインストールして構成する方法
ステップ1: 最初のステップは、マスターノードとエージェントノード間のネットワークの可視性を確認することです。これらのドメインがDNSまたはhostsファイルから解決されていることを確認する必要があります。
Puppetマスターノードの場合:
# ping puppetagent PING puppetagent.test.in (10.180.141.126) 56(84) bytes of data. 64 bytes from puppetagent.test.in (10.180.141.126): icmp_seq=1 ttl=64 time=0.347 ms --- puppetagent.test.in ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.347/0.347/0.347/0.000 ms
Puppet Agentノードの場合:
# ping puppetmaster PING puppetmaster.test.in (10.180.141.125) 56(84) bytes of data. 64 bytes from puppetmaster.test.in (10.180.141.125): icmp_seq=1 ttl=64 time=0.711 ms 64 bytes from puppetmaster.test.in (10.180.141.125): icmp_seq=2 ttl=64 time=0.316 ms --- puppetmaster.test.in ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.316/0.513/0.711/0.198 ms
ステップ2: NTPをインストールする
PuppetマスターノードはCとして機能します 証明書A uthority(CA)およびエージェントノードの証明書を発行します。つまり、エージェントノードに証明書を発行する際の問題を回避するために、マスターノードは適切な時間と同期する必要があります。したがって、NTPをインストールして、選択したタイムサーバーと同期する必要があります。
マスターノードで使用可能なタイムゾーンを確認します:
# timedatectl list-timezones
適切な地域のタイムゾーンを設定します:
# timedatectl set-timezone Asia/Kolkata
NTPのインストール:
# yum install ntp
選択したタイムサーバーと同期します:
# ntpdate pool.ntp.org
ntp.confを開きます 選択したタイムサーバーを追加します。
# vim /etc/ntp.conf
保存して終了します。
NTPサービスを開始して有効にします:
# systemctl restart ntpd # systemctl enable ntpd
注 :エージェントノードでNTPを構成することもできます–これを行うには、Puppetエージェントノードでも手順2を実行します。
Puppetサーバーを(マスターノードに)インストールします
PuppetサーバーはPuppetマスターノードで実行されるプログラムであり、アーキテクチャ図に示されているように、このサービスはカタログを作成し、構成をPuppetエージェントノードにプッシュします。
ステップ1: Puppetサービスをインストールするには、Puppetコレクションリポジトリまたはリリースパッケージを有効にする必要があります。 Yumベースのオペレーティングシステムの場合、パッケージは yum.puppetlabs.comにあります。 apt.puppetlabs.comのAptベースのシステムの場合 。
CentOSでは、rpmパッケージに基づくpuppetリポジトリを使用します。
# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm puppetlabs-release-pc1-1.0.0-2.el################################# [100%]
Ubuntuの場合:
# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
# dpkg -i puppetlabs-release-pc1-xenial.deb Selecting previously unselected package puppetlabs-release-pc1. (Reading database ... 205725 files and directories currently installed.) Preparing to unpack puppetlabs-release-pc1-xenial.deb ... Unpacking puppetlabs-release-pc1 (1.0.0-2xenial) ... Setting up puppetlabs-release-pc1 (1.0.0-2xenial) ...
# apt-get update
Puppetサーバーパッケージをインストールします:
CentOSの場合:
# yum -y install puppetserver
Ubuntuの場合:
# apt-get install puppetserver
Puppetサーバーを起動します:
# systemctl start puppetserver
(または)
# service puppetserver start
システムの起動中にPuppetサーバーを起動できるようにする
# systemctl enable puppetserver
(または)
# chkconfig puppetserver on
Puppet Agentのインストール(エージェントノードへ)
Puppet Agentサービスをエージェントノードにインストールします。これらのノードは、Puppetマスターノードからカタログを受け取り、それらを適用するノードです。
Puppetコレクションリポジトリを有効にする:
# rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-pc1-el-7.noarch.rpm
Ubuntuの場合:
# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
# dpkg -i puppetlabs-release-pc1-xenial.deb Selecting previously unselected package puppetlabs-release-pc1. (Reading database ... 205725 files and directories currently installed.) Preparing to unpack puppetlabs-release-pc1-xenial.deb ... Unpacking puppetlabs-release-pc1 (1.0.0-2xenial) ... Setting up puppetlabs-release-pc1 (1.0.0-2xenial) ...
$ sudo apt-get update
Puppet Agentのインストール:
CentOSの場合:
# yum -y install puppet-agent
Ubuntuの場合:
# apt-get install puppet-agent
Puppet Agentを起動します:
デフォルトでは、エージェントはPuppetマスターノードを「puppet」と呼びます。また、以下のコマンドは、エージェントがマスターへの接続に使用するホスト名を表示します。
# /opt/puppetlabs/puppet/bin/puppet agent --configprint server puppet
# /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running' service { 'puppet': ensure => 'running', enable => 'true', }
注 :サーバーを探してください puppet.confでの設定 PuppetMasterのホスト名を変更します。
注 :デフォルトでは、Puppetは / opt / puppetlabsの下にインストールされます フォルダ。
エージェントノードの証明書を認証局に要求する
Puppetマスターノードは、エージェントノードの証明書に署名する認証局として機能します。
# /opt/puppetlabs/puppet/bin/puppet agent -t Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for puppetagent.test.in Info: Certificate Request fingerprint (SHA256): BF:E9:8B:85:ED:61:B4:D5:61:2E:F2:C4:0B:0A:24:A3:D5:17:B5:E3:B4:54:53:4F:C7:39:7F:FE:49:1B:AF:4A Info: Caching certificate for ca Exiting; no certificate found and waitforcert is disabled
Puppetマスターノードの場合–エージェントの証明書リクエストに署名します
現在の証明書リクエストを一覧表示します:
# /opt/puppetlabs/puppet/bin/puppet cert list "puppetagent.test.in" (SHA256) BF:E9:8B:85:ED:61:B4:D5:61:2E:F2:C4:0B:0A:24:A3:D5:17:B5:E3:B4:54:53:4F:C7:39:7F:FE:49:1B:AF:4A
証明書に署名する:
# /opt/puppetlabs/puppet/bin/puppet cert sign puppetagent.test.in Notice: Signed certificate request for puppetagent.test.in Notice: Removing file Puppet::SSL::CertificateRequest puppetagent.test.in at '/etc/puppetlabs/puppet/ssl/ca/requests/puppetagent.test.in.pem'
署名されたすべてのリクエストを表示する:
# /opt/puppetlabs/puppet/bin/puppet cert list --all + "puppetagent.test.in" (SHA256) 0F:41:D0:67:78:BB:7B:48:F8:4B:10:10:C4:F9:FD:DD:46:19:34:4B:BE:4D:6F:4B:2F:45:57:86:33:C2:BC:45 + "puppetmaster.test.in" (SHA256) 4A:F3:F7:C0:81:7D:76:49:77:31:81:B1:70:50:AE:EE:F9:49:95:22:B0:24:0C:08:C3:5E:30:E6:29:75:28:07 (alt names: "DNS:puppet", "DNS:puppetmaster.test.in")
そして、あなたは完了です!最初のPuppetインフラストラクチャの準備が整いました。
パペットをテストしましょう
Puppetはファクターと呼ばれるツールを使用します Puppet Agentsに関する情報(事実)を収集するため。デフォルトでは、オペレーティングシステム名、バージョン、ホスト名、IPアドレス、SSHキーなどの情報が収集されます。ただし、カスタムファクトを追加することもできます。これについては、別の記事で説明します。
事実はどのように役立ちますか?
構成テンプレートの作成中に、ファクト(エージェントノードのIPアドレスなど)を自動的に取得し、適切な場所に入力することができます。同様に、エージェントノードのホスト名を読み取り、それを構成テンプレートで使用することもできます。
以下のコマンド(マスターノードで実行)は、エージェントノードの収集されたすべてのファクトを一覧表示します。
# /opt/puppetlabs/puppet/bin/facter
出力例:
::::::::::::::::::::::::::::::: partitions => { /dev/vda1 => { filesystem => "xfs", mount => "/", size => "39.99 GiB", size_bytes => 42943138304, uuid => "6c8f1327-a7c0-40a2-8bb3-89ea95a69d82" } } path => /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin processors => { count => 2, isa => "x86_64", models => [ "Intel Core Processor (Haswell, no TSX)", "Intel Core Processor (Haswell, no TSX)" ], physicalcount => 2 } :::::::::::::::::::::::::::::::::::::::::
それでおしまい!次に、Puppetを効果的に使用するためのマニフェストとモジュールを理解する必要があります。 。