GNU/Linux >> Linux の 問題 >  >> Debian

Ubuntu 18.04 /Ubuntu16.04およびDebian9にPuppet6.xをインストールする方法

構成管理ツールについて考えるとき、頭に浮かぶのはPuppetです。 Puppetはオープンソースの構成管理ツールであり、中央の場所から数百のクライアントシステムの構成を展開および管理するのに役立ちます。

Puppetは、反復的なタスクに費やす時間を削減することでシステム管理者の作業を楽にし、他の生産的な作業に取り組むことを可能にします。また、すべての構成がインフラストラクチャ全体で一貫していることを保証します。

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

このガイドは、Ubuntu 18.04 /Ubuntu16.04およびDebian9にPuppetサーバーをインストールするのに役立ちます。

アーキテクチャ

エージェント/マスター

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

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

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

このアーキテクチャでは、クライアントノードは通常cronジョブとしてpuppetapplyアプリケーションを実行します。

環境

ここでは、マスター/エージェントアーキテクチャでパペットを構成し、以下に説明するように2つのシステムを使用します。

パペットマスター

ホスト名: server.itzgeek.local

IPアドレス: 192.168.1.10

パペットクライアント

ホスト名: client.itzgeek.local

IPアドレス: 192.168.1.20

前提条件

NTPのインストール

puppetマスターは、クライアントノードからの証明書に署名するための認証局として機能するため、時刻を正確に設定する必要があります。この目的でNTPを使用します。

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

sudo apt update
sudo apt install -y ntp ntpdate
sudo ntpdate -u 0.ubuntu.pool.ntp.org

タイムゾーン

を使用して、すべてのノードが同じタイムゾーンにあることを確認してください。

date

出力:

Tue Sep 4 22:28:34 EDT 2018

不一致がある場合は、それに応じて変更してください。利用可能なタイムゾーンを一覧表示します。

timedatectl list-timezones

次のコマンドを使用してタイムゾーンを設定します。

sudo timedatectl set-timezone America/New_York

DNS

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

/ etc / hostsファイル:

sudo nano /etc/hosts

以下の行のようなホストエントリを追加します。

192.168.1.10 server.itzgeek.local server
PuppetLabsリポジトリのセットアップ

puppetマスター/エージェントをインストールするには、すべてのノードにpuppetリポジトリを設定する必要があります。

### Ubuntu 18.04 ###

wget https://apt.puppetlabs.com/puppet6-release-bionic.deb
sudo dpkg -i puppet6-release-bionic.deb
sudo apt update

### Ubuntu 16.04 ###

wget https://apt.puppetlabs.com/puppet6-release-xenial.deb
sudo dpkg -i puppet6-release-xenial.deb
sudo apt update

### Debian 9 ###

wget https://apt.puppetlabs.com/puppet6-release-stretch.deb
sudo dpkg -i puppet6-release-stretch.deb
sudo apt update

Ubuntu 18.04で、PuppetServerに必要なパッケージを含むユニバースリポジトリを有効にします。

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

Puppet Serverは、Puppetマスターノードで実行されるサーバーソフトウェアです。以下のコマンドを使用してPuppetサーバーをインストールします。

sudo apt install -y puppetserver

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

Puppetサーバーの構成

メモリ割り当て(オプション)

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

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

sudo nano /etc/default/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 Serverは設定を必要とせず、puppetserverサービスを開始するだけです。デフォルト設定を使用します。

例: dns_alt_names(puppet、<サーバーのホスト名>)

Puppetは、システムのホスト名とpuppetをPuppetServerのDNS代替名として使用します。したがって、puppet-agent構成ファイルでserver=またはserver=puppetを使用する必要があります。

詳細設定(オプション)

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

sudo nano /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 = 15m

Puppetサーバーを起動する

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

sudo /opt/puppetlabs/bin/puppetserver ca setup

出力:

Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/ca

Puppetサーバーを起動して有効にします。

sudo systemctl start puppetserver
sudo systemctl enable puppetserver

PuppetAgentのインストール

前に示したようにエージェントノードにPuppetリポジトリをセットアップしてから、以下のコマンドを使用してpuppetエージェントをインストールします。

sudo apt install -y puppet-agent

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

sudo nano /etc/puppetlabs/puppet/puppet.conf
サーバーを設定します マスターホスト名と証明書名による値 クライアントのホスト名として。私の場合、サーバーはserver.itzgeek.localで、certnameはclient.itzgeek.localです。
[main]
certname = client.itzgeek.local
server = server.itzgeek.local
environment = production
runinterval = 15m

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

値は、秒(30秒または30)、分(30m)、または時間(1時間)で設定できます。

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

sudo /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マスターサーバーにログインし、以下のコマンドを実行して未処理のリクエストを表示します。

sudo /opt/puppetlabs/bin/puppetserver ca list

出力:

Requested Certificates:
    client.itzgeek.local   (SHA256)  07:B1:57:5B:DE:AF:9F:4A:DF:4A:D1:CD:C4:2A:F9:9F:D9:76:CD:C5:F1:60:09:9C:B4:BA:76:D6:7B:3C:6F:0D

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

sudo /opt/puppetlabs/bin/puppetserver ca sign --certname client.itzgeek.local

出力:

Successfully signed certificate request for client.itzgeek.local

1つのコマンドですべての証明書署名要求に署名します。

sudo /opt/puppetlabs/bin/puppetserver ca sign --all

場合によっては、特定のノードの証明書を取り消して、それらを読み戻す必要があります。 を置き換えます クライアントのホスト名を使用します。

sudo /opt/puppetlabs/bin/puppetserver ca revoke --certname <AGENT_NAME>

署名されたリクエストと署名されていないリクエストをすべて一覧表示します。マスターサーバーで実行する必要があります。

sudo /opt/puppetlabs/bin/puppetserver ca list --all

出力:

Signed Certificates:
    server.itzgeek.local   (SHA256)  E5:A4:93:45:EF:82:3B:FF:6E:36:D2:9A:F0:75:15:67:94:33:06:2F:84:9F:D1:45:CE:C6:1C:86:D4:57:B8:25    alt names: ["DNS:server.itzgeek.local", "DNS:server", "DNS:server.itzgeek.local"]
    client.itzgeek.local   (SHA256)  AB:3B:F0:D0:62:69:50:DD:50:45:CE:AD:A5:2C:4F:9E:EB:19:D6:C6:9C:34:A3:C5:CD:84:8F:BA:50:04:4A:D0

PuppetAgentを確認する

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

sudo /opt/puppetlabs/bin/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 '1558888335'
Notice: Applied catalog in 0.02 seconds

マニフェストを作成

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

メインのパペットマニフェストファイルは、 / etc / puppetlabs / code / environment /production /manifestsにあります。 ディレクトリ 新しいマニフェストファイルを作成します。

sudo nano /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/puppetdir': # Resource type file
             ensure => 'directory', # Create as a diectory
             owner => 'root', # Ownership
             group => 'root', # Group Name
             mode => '0755', # Directory permissions
          }
}
ノード変数が設定されていない場合、このマニフェストはパペットマスターに接続されているすべてのノードに適用されます。

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

sudo /opt/puppetlabs/bin/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 '1558888460'
Notice: /Stage[main]/Main/Node[client.itzgeek.local]/File[/tmp/puppetdir]/ensure: created
Notice: Applied catalog in 0.16 seconds

クライアントノードにディレクトリが作成されていることを確認します。

ls -ld /tmp/puppetdir/

出力:

drwxr-xr-x 2 root root 4096 May 26 22:03 /tmp/puppetdir/

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

node 'client.itzgeek.local' { # Applies only to mentioned node. If nothing mentioned, applies to all.
      file { '/tmp/puppetfile': # 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" # Content of the file
           }
}

前の例のようにクライアントマシンに移動してカタログを取得するか、15分待ってカタログを自動適用することができます。

結論

この投稿が、Ubuntu 18.04 / Ubuntu 16.04&Debian9にPuppetServerをインストールするのに役立つことを願っています。コメントセクションでフィードバックを共有してください。


Debian
  1. Debian11にRedisサーバーをインストールする方法

  2. MySQL 8.0/5.7をDebian11/Debian10にインストールする方法

  3. MySQLサーバーをDebian9にインストールする方法

  1. Debian9にMinecraftサーバーをインストールする方法

  2. Ubuntu 18.04 /Ubuntu16.04およびDebian9にPuppet6.xをインストールする方法

  3. Debian8にProFTPDをインストールする方法

  1. SuiteCRMをDebian9にインストールする方法

  2. MySQL8をDebian10にインストールする方法

  3. Debian11にPuppetサーバーとエージェントをインストールする方法