GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS 7 /RHEL7にPuppetをインストールして構成する

このチュートリアルは、古いバージョンのPuppet Masterを対象としています。一部のリンクが壊れており、期待どおりに機能しない場合があります。新しいバージョンはこちらから入手できます:CentOS 7 /RHEL7にPuppet4.xをインストールする方法。

Puppetは、無料のオープンソース構成管理ツールであり、数百のクライアントシステムの構成を一元的に展開および管理するのに役立ちます。これは、GNU / Linux、Mac、BSD、Solaris、およびWindowsベースのコンピューターシステムで使用でき、Apacheライセンスの下でリリースされ、「Ruby」言語で記述されています。このガイドは、CentOS 7 /RHEL7にPuppetをインストールするのに役立ちます。

人形のアーキテクチャ:

エージェント/マスター:

このアーキテクチャでは、1つ以上のサーバーが通常はWebサーバー(Apache with Passengerなど)によって管理されるRackアプリケーションとしてパペットマスターアプリケーションを実行し、パペットエージェントアプリケーションは通常バックグラウンドサービスとしてクライアントサーバー上で実行されます。

定期的に、人形エージェントは人形マスターに事実を送信し、カタログを要求します。マスターは、アクセスできるいくつかの情報ソースを使用して、そのノードのカタログをコンパイルして返します。

スタンドアロンアーキテクチャ:

このアーキテクチャでは、クライアントサーバーは、通常はスケジュールされたタスクまたはcronジョブとして、puppet applyアプリケーション(puppetマスターアプリケーションとpuppetエージェントアプリケーションの自己完結型の組み合わせ)を実行します。

環境:

ここでは、マスター/エージェントアーキテクチャでパペットを設定する方法を紹介します。このチュートリアルでは、以下に説明するように2つのCentOS7システムを使用します。

パペットマスター:

オペレーティングシステム:CentOS 7 MinimalIPアドレス:192.168.12.10HostName:server.itzgeek.local 

パペットクライアント:

オペレーティングシステム:CentOS 7 MinimalIPアドレス:192.168.12.20HostName:client.itzgeek.local 

前提条件:

CentOS 7 /RHEL7でEPELリポジトリを構成します。

システム(Puppetサーバーとクライアントの両方)がホスト名を相互に解決できることを確認します。 / etc/hostsファイルを使用します。 またはDNSサーバー

生産準備が整った人形のセットアップを行うには、乗客と一緒にapacheを使用する必要があります。乗客を取得するには、リポジトリファイルをダウンロードして/etc/yum.repos.d/に配置します

注:マスターサーバー上のみ。

 [root @ server〜]#curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo 

puppet master / agentをインストールするには、すべてのノードにpuppetリポジトリを設定する必要があります。以下のrpmでインストールして、puppetlabsリポジトリを有効にします。

注:マスターノードとエージェントノードの両方で実行してください。

#rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm 

CentOS 7にPuppetをインストールして構成する:

さあ、人形をインストールしましょう。以下のコマンドを使用してパペットサーバーをインストールします。

 [root @ server〜]#yum -y install puppet-server 

前に述べたように、マスター/エージェントアーキテクチャ用にpuppetを構成します。したがって、このノードはマスターノードとして機能します。 puppet構成ファイルを編集し、 dns_alt_namesを変更します 。

 [root @ server〜]#vi /etc/puppet/puppet.conf [main] dns_alt_names = server、server.itzgeek.local  certname = server.itzgeek.local  

このマシンがご使用の環境で唯一のパペットマスターである場合は、以下のコマンドを実行してパペットマスター証明書を作成します。

 [root @ server〜]#puppet master --verbose --no-daemonizeInfo:caInfoの新しいSSLキーの作成:caInfoの新しいSSL証明書要求の作成:証明書要求の指紋(SHA256):81:C6:BB :8B:1D:71:4C:64:E1:13:54:1B:EC:CF:99:D8:85:90:D1:6C:E8:85:50:3E:03:41:BA:C5 :47:A7:4C:E5通知:caInfoの署名付き証明書要求:新しい証明書失効リストの作成Info:server.itzgeek.localInfoの新しいSSLキーの作成:/etc/puppet/csr_attributes.yamlInfoからのcsr_attributesファイルのロード:新しい証明書の作成server.itzgeek.localInfoのSSL証明書要求:証明書要求フィンガープリント(SHA256):FF:BE:D4:9B:E4:12:83:79:AE:BE:50:17:76:5F:F5:CD:5F :53:EA:5D:AA:5D:87:9E:7C:C4:BC:1B:8A:C6:FA:5C通知:server.itzgeek.localに待機中の証明書要求があります通知:server.itzgeekの署名付き証明書要求。 localNotice:ファイルPuppet ::SSL ::CertificateRequest server.itzgeek.local at'/var/lib/puppet/ssl/ca/requests/server.itzgeek.local.pem'注意:ファイルPuppetを削除しています::SSL ::CertificateRequest server.itzgeek.local at'/var/lib/puppet/ssl/certificate_requests/server.itzgeek.local.pem'注意:Puppetマスターバージョン3.8.3を開始しています

注意:Puppetマスターバージョンを開始しています」を取得したら 「、 ctrl-Cを押します プロセスを強制終了します。

本番環境に対応したWebサーバーを構成する:

Puppetには基本的なpuppetマスターWebサーバーが付属していますが、これを実際のロードに使用することはできません。 Puppetでノードの管理を開始する前に、本番品質のWebサーバーを構成する必要があります。

 [root @ server〜]#yum -y install httpd httpd-devel mod_ssl ruby​​-devel ruby​​gems gcc gcc-c ++ pygpgme curl 

Passengerとapacheモジュールをインストールします。

 [root @ server〜]#yum install -y mod_passenger 

アプリケーション用に3つのディレクトリを作成します(親ディレクトリ、「パブリック」ディレクトリ、および「tmp」ディレクトリ )、ext / Rack / config.ruファイルをPup​​petソースコードから親ディレクトリにコピーし、config.ruファイルの所有権を設定します。

 [root @ server〜]#mkdir -p / usr / share / puppet / Rack / puppetmasterd [root @ server〜]#mkdir / usr / share / puppet / Rack / puppetmasterd / public / usr / share / puppet / Rack / puppetmasterd / tmp [root @ server〜]#cp /usr/share/puppet/ext/rack/config.ru /usr/share/puppet/rack/puppetmasterd/ [root @ server〜]#chown puppet:puppet / usr / share / puppet / Rack / puppetmasterd / config.ru 

以下の構成ファイルを作成して、puppetの仮想ホストを追加します。

 [root @ server〜]#vi /etc/httpd/conf.d/puppetmaster.conf 

以下のコンテンツを仮想ホストファイルに追加し、を変更します 環境に応じた色付きのエントリ。

#これらの設定を調整する可能性がありますPassengerHighPerformance onPassengerMaxPoolSize 12PassengerPoolIdleTime 1500#PassengerMaxRequests 1000PassengerStatThrottleRate 120  Listen 8140   SSLEngine on SSLProtocol ALL -SSLv2 -SSLv3 SSLCipherSuite SSLCipherSuite SSLCipherSuite CAMELLIA128:+ AES128:+ SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA256-SHA: AES256-SHA:CAMELLIA128-SHA:AES128-SHA SSLHonorCipherOrder on SSLCertificateFile /var/lib/puppet/ssl/certs/  server.itzgeek.local.pem  SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/  server.itzgeek.local.pem  SSLCertificateChainFile /var/lib/puppet/ssl/ca/  ca_crt.pem  SSLCACertificateFile /var/lib/puppet/ssl/ca/  ca_crt.pem  #ApacheがCRLの無効な署名について不満を言っている場合は、次の行にコメントを付けて#CRLチェックを無効にしてみてください。ただし、これはお勧めしません。 SSLCARevocationFile /var/lib/puppet/ssl/ca/  ca_crl.pem  #Apache 2.4ではSSLCARevocationCheckディレクティブが導入され、noneに設定されています#これにより、CRLチェックが効果的に無効になります。 Apache 2.4以降を使用している場合は、実際にCRLを使用するには、#「SSLCARevocationCheckchain」を指定する必要があります。 #SSLCARevocationCheckチェーンSSLVerifyClientオプションSSLVerifyDepth 1#エージェント証明書の有効期限の警告には`ExportCertData`オプションが必要-件名%{SSL_CLIENT_S_DN} e RequestHeader set X-Client-DN%{SSL_CLIENT_S_DN} e RequestHeader set X-Client-Verify%{SSL_CLIENT_VERIFY} e DocumentRoot  / usr / share / puppet / r>> RackBaseURI/<ディレクトリ/usr / share / puppet / Rack / puppetmasterd / >オプションなしAllowOverrideなし注文を許可、拒否すべての人から許可する   

Apacheサーバーを再起動して、puppet仮想ホストを有効にします。これを行うには、ターミナルで次のコマンドを実行します。

 [root @ server〜]#systemctl restart httpd.service 

puppetサービスを無効にし、apacheサーバーがシステムの起動時に自動起動できるようにします。

 [root @ server〜]#systemctl disable puppet.service [root @ server〜]#systemctl enable httpd.service 

ファイアウォール:

Puppetはポート番号8140でリッスンします;それを許可するようにIPテーブルを構成します。

 [root @ server〜]#firewall-cmd --zone =public --add-port =8140 / tcp --permanent [root @ server〜]#firewall-cmd --reload 

エージェントノードにPuppetをインストールする:

クライアントマシンで、以下のコマンドを使用してpuppetエージェントをインストールします。

注:エージェントノードでpuppetリポジトリを構成する必要があります。

 [root @ client〜]#yum -y install puppet 

puppet構成ファイルを編集し、クライアントスタンザにpuppetマスター情報を設定します。

注:環境に応じて「サーバー」の値を変更してください。私の場合、サーバーは「server.itzgeek.local」です

 [root @ client〜]#vi /etc/puppet/puppet.conf [agent] server = server.itzgeek.local  

エージェントノードでpuppetを起動し、システムの起動時に自動的に起動するようにします。

 [root @ client〜]#systemctl start puppet.service [root @ client〜]#systemctl enable puppet.service 

ログには以下のイベントが表示されます。

 Oct 21 05:46:45 client systemd:Starting Puppet agent ... Oct 21 05:46:46 client systemd:Started Puppet agent.Oct 21 05:47:03 client systemd:Reloading.Oct 21 05:49 :10 client puppet-agent [2694]:証明書を受け取りませんでした

マスターサーバーでエージェントノードの証明書に署名します:

エージェント/マスター展開では、管理者は、各エージェントノードが構成をフェッチする前に、そのノードの証明書要求を承認する必要があります。エージェントノードは、最初に実行しようとしたときに証明書を要求します。

puppetマスターサーバーにログインし、以下のコマンドを実行して未処理のリクエストを表示します。

 [root @ server〜]#puppet cert list "client.itzgeek.local"(SHA256)D4:88:EC:C5:0A:F7:5D:4E:32:C5:B3:61:E0:51 :7B:0C:CD:B3:49:9E:68:0B:E7:5D:75:19:1D:0B:92:8A:E7:C1 

puppet cert signを実行してリクエストに署名するか、puppet cert sign –allを実行してすべての保留中のリクエストに署名します。

 [root @ server〜]#puppet cert sign client.itzgeek.localNotice:client.itzgeek.localNoticeの署名付き証明書リクエスト:ファイルPuppet ::SSL ::CertificateRequest client.itzgeek.local('/ var / lib /)を削除していますpuppet / ssl / ca /​​ requests / client.itzgeek.local.pem'

クライアントマシンで次のコマンドを実行して、証明書を確認します

 [root @ client〜]#puppet agent -tInfo:client.itzgeek.localInfoのキャッシング証明書:caInfoのキャッシングcertificate_revocation_list:client.itzgeek.localInfoのキャッシング証明書:pluginfactsInfoの取得:pluginInfoのキャッシングカタログ:client.itzgeekのキャッシングカタログ.localInfo:構成バージョン '1445401911を適用しています'情報:状態ファイル/var/lib/puppet/state/state.yamlを作成しています通知:0.09秒でカタログの実行が完了しました

それで全部です。これで、パペットマスターとエージェントが正常に構成されました。 マニフェストを作成する時が来ました (クライアント構成)。しばらくお待ちください。

このチュートリアルは古いバージョンのPuppetMasterを対象としています。一部のリンクが壊れており、期待どおりに機能しない場合があります。新しいバージョンはこちらから入手できます:CentOS 7 /RHEL7にPuppet4.xをインストールする方法。
Cent OS
  1. CentOS 7 / RHEL 7にFTPサーバーをインストールして構成する–(vsftpfd)

  2. CentOS / RHEL 7 :telnet をインストールして構成する方法

  3. CentOS / RHEL に Samba をインストールして構成する方法

  1. RHEL 8 / CentOS8LinuxにHAProxyをインストールして構成する

  2. RHEL 8 / CentOS8LinuxシステムにRをインストールして構成する方法

  3. RHEL 8 /CentOS8にPuppetをインストールする方法

  1. RHEL 8 /CentOS8にsambaをインストールして設定する方法

  2. CentOS7およびRHEL7にVNCサーバーをインストールして構成する

  3. CentOS 7 /RHEL7にoVirt4.0をインストールして構成する方法