GNU/Linux >> Linux の 問題 >  >> Ubuntu

CentOSとUbuntuにPuppet4をインストールして設定する方法は? [マスターとエージェント]

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を効果的に使用するためのマニフェストとモジュールを理解する必要があります。 。


Ubuntu
  1. Ubuntu18.04にRedisをインストールして構成する方法

  2. Ubuntu20.04にPuppetマスターとエージェントをインストールします

  3. Ubuntu14.04にPuppetマスターとクライアントをインストールする方法

  1. Ubuntu18.04にRedmineをインストールして設定する方法

  2. Ubuntu18.04にSambaをインストールして設定する方法

  3. Ubuntu20.04にRedisをインストールして構成する方法

  1. Ubuntu20.04にJenkinsをインストールして構成する方法

  2. Ubuntu16.04にAskbotをインストールして構成する方法

  3. Ubuntu14.04にMongoDBをインストールして構成する方法