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

CentOS 7 /RHEL7にPuppet6.xをインストールする方法

Puppetは、中央の場所から数百のクライアントシステムの構成を管理するのに役立つオープンソースの構成管理ツールです。

Puppetは、反復的なタスクに費やす時間を削減することで管理者の作業を楽にし、他の作業に集中できるようにします。また、展開された構成がインフラストラクチャ全体で一貫していることを保証します。

Puppetは、Linux、Mac、BSD、Solaris、およびWindowsベースのコンピューターシステムで使用でき、Apacheライセンスの下でリリースされ、「Ruby」言語で記述されています。

このガイドは、CentOS 7 /RHEL7にPuppet6.xをインストールするのに役立ちます。

アーキテクチャ

エージェント/マスター

このアーキテクチャでは、管理対象ノードはバックグラウンドサービスとしてパペットエージェントソフトウェアを実行します。一方、1つ以上のサーバーがマスターアプリケーションを実行します。 Puppetサーバー。

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

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

このアーキテクチャでは、各管理対象ノードに構成情報のコピーがあり、カタログをコンパイルします。 puppetapplyアプリケーションをcronジョブとして実行します。

環境

ここでは、サーバー/エージェントアーキテクチャでパペットを構成します。

パペットマスター

ホスト名: server.itzgeek.local
IPアドレス: 192.168.1.10
オペレーティングシステム: CentOS 7.6

パペットクライアント

ホスト名: client.itzgeek.local
IPアドレス: 192.168.1.20
オペレーティングシステム: CentOS 7.6

前提条件

NTPのインストール

Puppetマスターサーバーマスターが認証局として機能するため、マスターノードとクライアントノードのタイミングはアップストリームタイムサーバーと正確に同期している必要があります。

(時間が間違っていると、他のノードが期限切れとして扱う、遠い過去または未来の日付からエージェント証明書を誤って発行する可能性があります。)

NTPパッケージをインストールし、アップストリームNTPサーバーとのタイム同期を実行します。

yum -y install ntpdate
ntpdate 0.centos.pool.ntp.org
date を使用して、すべてのノードが同じタイムゾーンにあることを確認します 指図。不一致がある場合は、それに応じて変更してください。

読む :CentOS 7 /RHEL7でタイムゾーンを変更する方法

DNS

Puppetエージェントはホスト名を使用してPuppetサーバーと通信します。したがって、エージェントノードが/etc/hostsを使用してPuppetサーバーのホスト名を解決できることを確認してください。 ファイルまたはDNSサーバー。

Puppetリポジトリのセットアップ

Puppetサーバー/エージェントをインストールするには、すべてのノードにPuppetリポジトリを追加する必要があります。

マスターノードとエージェントノードの両方にPuppetのリポジトリを設定します。
rpm -Uvh https://yum.puppet.com/puppet6-release-el-7.noarch.rpm

Puppetサーバーのインストール

Puppet Serverは、Puppetマスターノードで実行されるサーバーソフトウェアです。 Puppetmasterは、構成を管理対象ノード(puppet-agent)にプッシュします。

以下のコマンドを使用してPuppetサーバーをインストールします。

yum install -y puppetserver

これでPuppetサーバーがインストールされました。まだPuppetサーバーサービスを開始しないでください。

Puppetサーバーの構成

メモリ割り当て

デフォルトでは、PuppetサーバーのJVMは2GBのメモリを使用するように構成されています。マスターノードで使用可能なメモリの量に応じて、変更できます。接続されているすべてのノードを管理するのに十分であることを確認してください。

メモリ割り当ての値を変更するには、以下のファイルを編集してください。

vi /etc/sysconfig/puppetserver

値を変更します。

差出人:

JAVA_ARGS="-Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"

宛先:

512 MBの場合は、以下の設定を使用してください。

JAVA_ARGS="-Xms512m -Xmx512m -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"

埋め込みWebサーバー

Puppet Serverは、サービスのJVMプロセスに組み込まれたJettyベースのWebサーバーを使用します。 Webサーバーを構成または有効にする必要はありません。箱から出して動作します。実稼働レベルの負荷の下で良好に機能します。

埋め込まれたWebサーバーの設定は、webserver.confで変更できます。外部CAを使用している場合、または非標準ポートでPuppet Serverを実行している場合は、このファイルを編集する必要がある場合があります。

人形の構成

簡単な構成

Puppetサーバーは構成を必要としません。 Puppetサーバーサービスを開始するだけです。デフォルト設定を使用します。

デフォルトのPuppetサーバーのホスト名(dns_alt_names)はpuppetであるため、puppet-agent構成ファイルでserver=puppetを使用する必要があります。

パペットマスターのホスト名を変更する場合は、以下の手順に従ってください。

詳細設定(オプション)

ここでは、要件に合わせてPuppetMasterの設定を変更します。

vi /etc/puppetlabs/puppet/puppet.conf

以下の行を配置します。環境に応じて変更してください。

[master]
dns_alt_names = server.itzgeek.local,server

[main]
certname = server.itzgeek.local
server = server.itzgeek.local
environment = production
runinterval = 1h

Puppetサーバーを起動する

PuppetServerのルートおよび中間署名CAを生成します。

puppetserver ca setup

出力:

Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/ca
puppetserver:コマンドが見つからない場合は、ターミナルで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

PuppetAgentのインストール

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

yum install -y puppet-agent

Puppetエージェントは、デフォルト設定の一部を使用してマスターノードに接続します。ただし、パペット構成ファイルを編集し、パペットマスター情報を設定する必要があります。

サーバーを設定します マスターノード名ごとの値。私の場合、サーバーは server.itzgeek.local 、および証明書名 私のクライアントのホスト名です( client.itzgeek.local )。
vi /etc/puppetlabs/puppet/puppet.conf

以下のように設定します。

[main]
certname = client.itzgeek.local
server = server.itzgeek.local
environment = production
runinterval = 1h

runintervalの値を変更できます 要件によって異なります。値は秒(10または10秒)、分(10分)、時間(1時間)で設定できます この設定は、エージェントが2つのカタログ要求間で待機する時間を制御します。

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

puppet resource service puppet ensure=running enable=true

出力:

Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running'
service { 'puppet':
  ensure => 'running',
  enable => 'true',
}
に変更 puppet:コマンドが見つからない場合は、ターミナルでsource /etc/profile.d/puppet-agent.shを実行するか、現在のセッションからログアウトして再度ログインします。

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

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

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

puppetserver ca list

出力:

client.itzgeek.local   (SHA256)  A6:0E:93:51:FF:53:C8:FA:63:70:72:53:B6:1E:1B:A8:49:79:37:7E:57:00:02:AE:32:44:22:BE:97:F5:08:09

puppetcertsignコマンドを実行してリクエストに署名します。

puppetserver ca sign --certname client.itzgeek.local

出力:

Successfully signed certificate request for client.itzgeek.local

これで、パペットマスターはクライアントマシンと通信してノードを制御できるようになります。

ノードからの複数の署名要求がある場合は、1つのコマンドですべての要求に署名できます。

puppetserver ca sign --all

場合によっては、特定のノードの証明書を取り消して、それらを読み戻す必要があります。

<ホスト名>を置き換えます クライアントのホスト名を使用します。

puppetserver ca revoke --certname <AGENT_NAME>

以下のコマンドを使用して、署名されたリクエストと署名されていないリクエストをすべて一覧表示できます。

puppetserver ca list --all

出力:

server.itzgeek.local   (SHA256)  6E:90:94:6F:31:4F:8C:2A:28:90:D5:C0:6D:71:18:65:5E:86:DE:1C:16:9C:7C:30:8F:BF:DA:87:2D:F7:2C:26    alt names: ["DNS:server.itzgeek.local", "DNS:server", "DNS:server.itzgeek.local"]
client.itzgeek.local   (SHA256)  A6:08:36:5C:DB:73:0D:16:BA:5B:0D:72:76:FD:C7:31:DD:87:6F:EC:D4:4F:7A:87:E9:4F:73:70:D0:09:6E:61

Puppetクライアントを確認する

Puppetサーバーがクライアント証明書に署名したら、クライアントマシンで次のコマンドを実行してテストします。

puppet agent --test

出力:

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 '1558878523'
Notice: Applied catalog in 0.03 seconds

最初のマニフェストの作成

マニフェストは、Puppetの宣言型言語またはRubyDSLで記述されたクライアント構成を含むデータファイルです。このセクションでは、管理対象ノードにディレクトリとファイルを作成するための基本的なマニフェストについて説明します。

メインのパペットマニフェストファイルは、/etc/puppetlabs/code/environments/production/manifests/site.ppにあります。

vi /etc/puppetlabs/code/environments/production/manifests/site.pp

次に、マニフェストに次の行を追加して、管理対象ノードにディレクトリを作成します。

ノード変数が設定されていない場合、このマニフェストはパペットマスターに接続されているすべてのノードに適用されます。
node 'client.itzgeek.local' { # Applies only to mentioned node; if nothing mentioned, applies to all.
file { '/tmp/puppetesttdir': # Resource type file
 ensure => 'directory', # Create as a diectory
 owner => 'root', # Ownership
 group => 'root', # Group Name
 mode => '0755', # Directory permissions
}
}

次に、クライアントノードで次のコマンドを実行して構成を取得します。

puppet agent --test

出力:

Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for client.itzgeek.local
Info: Applying configuration version '1472165498'
Notice: /Stage[main]/Main/Node[client.itzgeek.local]/File[/tmp/puppetesttdir]/ensure: created
Notice: Applied catalog in 0.03 seconds

管理対象ノードにディレクトリが作成されていることを確認します。

[root@client ~]# ls -ld /tmp/puppetesttdir
drwxr-xr-x. 2 root root 6 May 26 09:57 /tmp/puppetesttdir

コンテンツを含むファイルを作成するためのマニフェストを作成して、もう一度テストを行いましょう。

node 'client.itzgeek.local' { # Applies only to mentioned node; if nothing mentioned, applies to all.
file { '/tmp/puppettestfile': # Resource type file
 ensure => 'present', # Make sure it exists
 owner => 'root', # Ownership
 group => 'root', # Group Name
 mode => '0644', # File permissions
 content => "This File is created by Puppet Server"
}
}

前の例に示すように、クライアントマシンに移動してカタログを取得するか、 runinterval に応じて、Puppetエージェントが定期的にPuppetServerからマニフェストを取得します。 構成ファイルで設定します。

結論

CentOS 7 / RHEL 7にPuppetサーバーとエージェントをインストールする方法を学んだことを願っています。また、クライアントノードにディレクトリを作成するための簡単なマニフェストファイルを作成することも学びました。コメントセクションでフィードバックを共有してください。


Cent OS
  1. RHEL 8 / CentOS8LinuxにDNSサーバーをインストールする方法

  2. CentOS 8 /RHEL8にPuppetをインストールする方法

  3. CentOS / RHEL 7 :GUI のインストール方法

  1. RHEL 8 /CentOS8にpostfixメールサーバーをインストールする方法

  2. RHEL 8 /CentOS8にvncサーバーをインストールする方法

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

  1. NextcloudをRHEL8/CentOS8サーバーにインストールする方法

  2. RHEL 8 /CentOS8サーバーにOwnCloudをインストールする方法

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