ホーム テクノロジー DEVOPS Ubuntu 18にPuppet 6をインストールするにはどうすればよいですか?

Puppet サーバーとエージェントをインストールし、相互に通信できるように設定する方法を学びます。

Puppet は、DevOps の世界で最も企業に採用されている構成管理ツールの 1 つです。 DevOps エンジニアは、システム上にパペットをセットアップする方法を知っておく必要があります。

ただし、始める前に、パペットのインストールは決して簡単な作業ではないことをお伝えしておきます。 1 つの手順を見逃したり、たとえ 1 か所でもこのチュートリアルで説明した手順の流れを変更したりすると、大量のエラーで 1 日中頭を悩ませることになるかもしれませんが、セットアップは不完全になります。したがって、各ステップを慎重に実行してください。

Puppet はクライアントサーバーアーキテクチャを持ち、Puppet マスター (サーバー) と Puppet エージェント (クライアント) で構成されます。 Puppet Master にはすべての設定があり、その設定をコンパイルして Puppet エージェントに提供します。 Puppet エージェントはファクトを Puppet マスターに送信し、カタログを要求します。 Puppet マスターは、要求されたカタログを Puppet エージェントに送り返します。次に、Puppet Agent はそのカタログをノードに適用し、マスターにレポートを返します。

Puppet の基本を理解したので、Puppet マスターと Puppet Agent をセットアップしてみましょう。

まったくの初心者の場合は、このオンライン ビデオ コースを受講するとよいでしょう。

環境の詳細

2台のUbuntu 18.04マシンを使用しています。 1人は人形マスターとして、もう1人は人形エージェントとして行動します。マシンの詳細は以下のとおりです。

パペットマスター(サーバー)

  • ホスト名: パペット、puppet.geekflate.com
  • IPアドレス: 192.168.0.108

パペットエージェント (クライアント)

  • ホスト名: puppetagent
  • IPアドレス: 192.168.0.107

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

インストールを開始する前に、マスターとエージェントの両方で/etc/hostsファイルを編集して、相互に解決できるようにする必要があります。

マスターノード上

@puppet-master:~$ sudo gedit /etc/hosts

[sudo] password for :

127.0.0.1 localhost
127.0.1.1 
192.168.0.108 puppet puppet..com

エージェントノード上

@puppet-agent:~$ sudo gedit /etc/hosts

127.0.0.1 localhost
127.0.1.1 
192.168.0.107 puppetagent
192.168.0.108 puppet puppet..com 

­次に、マスターノードで Puppet リポジトリを取得して更新する必要があります。

Puppet リポジトリをダウンロードします。

 @puppet-master:~$ wget https://apt.puppetlabs.com/puppet6-release-bionic.deb

--2019-10-15 15:41:34-- https://apt.puppetlabs.com/puppet6-release-bionic.deb

Resolving apt.puppetlabs.com (apt.puppetlabs.com)... 99.86.19.107, 99.86.19.59, 99.86.19.2, ...

Connecting to apt.puppetlabs.com (apt.puppetlabs.com)|99.86.19.107|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 11736 (11K) [application/x-debian-package]

Saving to: ‘puppet6-release-bionic.deb’

puppet6-release-bio 100%[===================>] 11.46K --.-KB/s in 0s     

2019-10-15 15:41:34 (236 MB/s) - ‘puppet6-release-bionic.deb’ saved [11736/11736]

puppet 6 リポジトリを追加して構成します。

 @puppet-master:~$ sudo dpkg -i puppet6-release-bionic.deb

Selecting previously unselected package puppet6-release.

(Reading database ... 187041 files and directories currently installed.)

Preparing to unpack puppet6-release-bionic.deb ...

Unpacking puppet6-release (6.0.0-5bionic) ...

Setting up puppet6-release (6.0.0-5bionic) ...

リポジトリリストを更新します。

 @puppet-master:~$ sudo apt update

Hit:1 https://download.docker.com/linux/ubuntu bionic InRelease

Hit:2 http://security.ubuntu.com/ubuntu cosmic-security InRelease             

Hit:3 http://ppa.launchpad.net/ansible/ansible/ubuntu cosmic InRelease        

Get:4 http://download.virtualbox.org/virtualbox/debian cosmic InRelease [4,429 B]

Get:5 http://apt.puppetlabs.com bionic InRelease [85.3 kB]                    

Hit:6 http://us.archive.ubuntu.com/ubuntu cosmic InRelease                    

Hit:7 http://us.archive.ubuntu.com/ubuntu cosmic-updates InRelease            

Get:8 http://download.virtualbox.org/virtualbox/debian cosmic/contrib amd64 Packages [1,466 B]

Get:9 http://apt.puppetlabs.com bionic/puppet6 all Packages [13.5 kB]

Hit:10 http://us.archive.ubuntu.com/ubuntu cosmic-backports InRelease

Get:11 http://apt.puppetlabs.com bionic/puppet6 i386 Packages [13.5 kB]

Get:12 http://apt.puppetlabs.com bionic/puppet6 amd64 Packages [32.3 kB]

Fetched 151 kB in 2s (61.9 kB/s) 

Reading package lists... Done

Building dependency tree      

Reading state information... Done

234 packages can be upgraded. Run 'apt list --upgradable' to see them.

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

マスターノード上で以下のコマンドを実行して、Puppet サーバーをインストールしましょう。

 @puppet-master:~$ sudo apt install -y puppetserver

Reading package lists... Done

Building dependency tree      

Reading state information... Done

The following additional packages will be installed:

 ca-certificates-java java-common openjdk-8-jre-headless puppet-agent

Suggested packages:

 default-jre fonts-dejavu-extra fonts-ipafont-gothic fonts-ipafont-mincho

 fonts-wqy-microhei fonts-wqy-zenhei

The following NEW packages will be installed:

 ca-certificates-java java-common openjdk-8-jre-headless puppet-agent

 puppetserver

0 upgraded, 5 newly installed, 0 to remove and 234 not upgraded.

Need to get 109 MB of archives.

After this operation, 287 MB of additional disk space will be used.

Get:1 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 java-common all 0.68ubuntu1 [6,988 B]

Get:2 http://apt.puppetlabs.com bionic/puppet6 amd64 puppet-agent amd64 6.10.1-1bionic [19.9 MB]

Get:3 http://us.archive.ubuntu.com/ubuntu cosmic-updates/universe amd64 openjdk-8-jre-headless amd64 8u212-b03-0ubuntu1.18.10.1 [27.2 MB]

Get:4 http://apt.puppetlabs.com bionic/puppet6 amd64 puppetserver all 6.7.1-1bionic [61.5 MB]

Get:5 http://us.archive.ubuntu.com/ubuntu cosmic/main amd64 ca-certificates-java all 20180516ubuntu1 [12.3 kB]

Fetched 109 MB in 1min 41s (1,072 kB/s)                                       

Unpacking puppetserver (6.7.1-1bionic) ...

Setting up puppet-agent (6.10.1-1bionic) ...

Created symlink /etc/systemd/system/multi-user.target.wants/puppet.service → /lib/systemd/system/puppet.service.

Created symlink /etc/systemd/system/multi-user.target.wants/pxp-agent.service → /lib/systemd/system/pxp-agent.service.

Removed /etc/systemd/system/multi-user.target.wants/pxp-agent.service.

Setting up java-common (0.68ubuntu1) ...

Processing triggers for libc-bin (2.28-0ubuntu1) ...

Processing triggers for systemd (239-7ubuntu10.12) ...

Processing triggers for man-db (2.8.4-2) ...

Processing triggers for ca-certificates (20180409) ...

Updating certificates in /etc/ssl/certs...

0 added, 0 removed; done.

Running hooks in /etc/ca-certificates/update.d...

done.

Setting up ca-certificates-java (20180516ubuntu1) ...

head: cannot open '/etc/ssl/certs/java/cacerts' for reading: No such file or directory

Adding debian:SSL.com_EV_Root_Certification_Authority_ECC.pem

Adding debian:ssl-cert-snakeoil.pem

Adding debian:SwissSign_Gold_CA_-_G2.pem

Adding debian:SZAFIR_ROOT_CA2.pem

Adding debian:OpenTrust_Root_CA_G3.pem

Adding debian:TWCA_Root_Certification_Authority.pem

Adding debian:QuoVadis_Root_CA_2_G3.pem

Adding debian:DST_Root_CA_X3.pem

Adding debian:SecureSign_RootCA11.pem

Adding debian:QuoVadis_Root_CA_1_G3.pem

Adding debian:T-TeleSec_GlobalRoot_Class_3.pem

Adding debian:Go_Daddy_Root_Certificate_Authority_-_G2.pem

Adding debian:Actalis_Authentication_Root_CA.pem

Adding debian:Chambers_of_Commerce_Root_-_2008.pem

done.

Processing triggers for ca-certificates (20180409) ...

Updating certificates in /etc/ssl/certs...

0 added, 0 removed; done.

Running hooks in /etc/ca-certificates/update.d...

done.

done.

Setting up openjdk-8-jre-headless:amd64 (8u212-b03-0ubuntu1.18.10.1) ...

Setting up puppetserver (6.7.1-1bionic) ...

usermod: no changes

Processing triggers for systemd (239-7ubuntu10.12) ...

Puppet サーバーの構成

 以下に示すように、 puppetserverファイルを編集します。これは、Puppet サーバーの JVM を設定するためのものです。

 @puppet-master:~$ sudo gedit /etc/default/puppetserver

 
# Modify this if you'd like to change the memory allocation, enable JMX, etc

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

 Puppet 構成ファイルを編集して、Puppet サーバー設定を変更します。

 @puppet-master:~$ sudo gedit /etc/puppetlabs/puppet/puppet.conf


# This file can be used to override the default puppet settings.

# See the following links for more details on what settings are available:

# - https://puppet.com/docs/puppet/latest/config_important_settings.html

# - https://puppet.com/docs/puppet/latest/config_about_settings.html

# - https://puppet.com/docs/puppet/latest/config_file_main.html

# - https://puppet.com/docs/puppet/latest/configuration.html

[master]

vardir = /opt/puppetlabs/server/data/puppetserver

logdir = /var/log/puppetlabs/puppetserver

rundir = /var/run/puppetlabs/puppetserver

pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid

codedir = /etc/puppetlabs/code

dns_alt_names = puppet,puppet..com

[main]

certname = puppet..com

server = puppet..com

environment = production

runinterval = 15m

Puppet Server はルート署名と中間署名、CA を生成する必要があります。

 @puppet-master:~$ sudo /opt/puppetlabs/bin/puppetserver ca setup

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

 Puppet サーバー サービスを開始して有効にします。

 @puppet-master:~$ sudo systemctl start puppetserver

@puppet-master:~$ sudo systemctl enable puppetserver

Synchronizing state of puppetserver.service with SysV service script with /lib/systemd/systemd-sysv-install.

Executing: /lib/systemd/systemd-sysv-install enable puppetserver

Puppet エージェントのインストール

マスター システムの場合と同様に、エージェント ノードでも次の手順に従います。 Puppet リポジトリは、すべてのエージェント ノードに存在する必要があります。

 @puppet-agent:~$ wget https://apt.puppetlabs.com/puppet6-release-bionic.deb

@puppet-agent:~$ sudo dpkg -i puppet6-release-bionic.deb

@puppet-agent:~$ sudo apt update

エージェント ノードで以下のコマンドを実行して、Puppet エージェントをインストールします。

 @puppet-agent:~$ sudo apt install -y puppet-agent

Reading package lists... Done

Building dependency tree      

Reading state information... Done

The following NEW packages will be installed:

 puppet-agent

0 upgraded, 1 newly installed, 0 to remove and 233 not upgraded.

Need to get 19.9 MB of archives.

After this operation, 115 MB of additional disk space will be used.

Get:1 http://apt.puppetlabs.com bionic/puppet6 amd64 puppet-agent amd64 6.10.1-1bionic [19.9 MB]

Fetched 19.9 MB in 2s (8,488 kB/s)      

Selecting previously unselected package puppet-agent.

(Reading database ... 185786 files and directories currently installed.)

Preparing to unpack .../puppet-agent_6.10.1-1bionic_amd64.deb ...

Unpacking puppet-agent (6.10.1-1bionic) ...

Setting up puppet-agent (6.10.1-1bionic) ...

Created symlink /etc/systemd/system/multi-user.target.wants/puppet.service → /lib/systemd/system/puppet.service.

Created symlink /etc/systemd/system/multi-user.target.wants/pxp-agent.service → /lib/systemd/system/pxp-agent.service.

Removed /etc/systemd/system/multi-user.target.wants/pxp-agent.service.

Processing triggers for libc-bin (2.28-0ubuntu1) ...

Puppet エージェントの構成

 エージェントノードで Puppet 構成ファイルを編集します。

 @puppet-agent:~$ sudo gedit /etc/puppetlabs/puppet/puppet.conf

[main]

certname = puppetagent

server = puppet..com

environment = production

runinterval = 15m

以下のコマンドを実行して、Puppet サービスを開始します。このコマンドは起動後にも自動的に開始されます。

 @puppet-agent:~$ sudo /opt/puppetlabs/bin/puppet resource service puppet ensure=running enable=true

service { 'puppet':

 ensure => 'running',

 enable => 'true',

} 

証明書の生成と署名

エージェントが初めて起動すると、証明書署名リクエストが Puppet マスターに送信されます。マスターはこの証明書を確認して署名する必要があります。この後、エージェントはマスターからカタログを取得し、定期的にエージェント ノードに適用します。

Puppet エージェントが実行されているので、マスター ノードで以下のコマンドを実行して、証明書署名リクエストを受信したかどうかを確認します。

マスターノード上

@puppet-master:~$ sudo /opt/puppetlabs/bin/puppetserver ca list

[sudo] password for :

Requested Certificates:

   puppetagent (SHA256) EA:68:23:B5:C3:71:2C:E6:4A:6A:3B:2F:24:F5:B8:5B:50:F7:3F:12:89:DE:B1:EB:D1:0A:74:3E:48:C3:D7:35

エージェントから送信された証明書に署名します。

 @puppet-master:~$ sudo /opt/puppetlabs/bin/puppetserver ca list

[sudo] password for :

Requested Certificates:

   puppetagent (SHA256) EA:68:23:B5:C3:71:2C:E6:4A:6A:3B:2F:24:F5:B8:5B:50:F7:3F:12:89:DE:B1:EB:D1:0A:74:3E:48:C3:D7:35

以下のコマンドを実行して、すべての証明書リストを確認します。 1 つの証明書はすでに存在しており、マスター ノードのデフォルトであり、もう 1 つはエージェント ノードからのものです。

 @puppet-master:~$ sudo /opt/puppetlabs/bin/puppetserver ca list --all

Signed Certificates:

   puppetagent (SHA256) EA:68:23:B5:C3:71:2C:E6:4A:6A:3B:2F:24:F5:B8:5B:50:F7:3F:12:89:DE:B1:EB:D1:0A:74:3E:48:C3:D7:35

   puppet..com (SHA256) 71:30:5B:C8:C5:CE:28:A0:60:5C:4F:39:26:D0:FC:DA:DF:0A:0F:4D:ED:D4:B1:9C:05:1A:38:2F:D6:5F:9C:06 alt names: ["DNS:puppet..com", "DNS:puppet", "DNS:puppet..com"]

エージェントノード上

次に、このコマンドを実行して、マスター ノードとエージェント ノードの間で接続が確立され、すべてが正常に動作しているかどうかをテストします。

 @puppet-agent:~$ 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 puppet-agent

Info: Applying configuration version '1571171191'

Notice: Applied catalog in 0.02 seconds

パペットのサンプル例

簡単なパペットの例を実行してみましょう。特定の権限を持つディレクトリを作成する単純な Puppet マニフェストを作成します。

マスターノード上:

 @puppet-master:~$ sudo gedit /etc/puppetlabs/code/environments/production/manifests/site.pp

 以下の内容を入れます。

 node 'puppetagent' { # Applies only to mentioned node. If nothing mentioned, applies to all.

    file { '/home/test': # Resource type file

            ensure => 'directory', # Create a directory

            owner => 'root', # Ownership

            group => 'root', # Group Name

            mode => '0755', # Directory permissions

         }

}

ここで、エージェントがマスターに接続して構成をプルするために以下のコマンドを実行します。このコマンドを実行すると、エージェント ノード上にそのディレクトリが作成されます。

エージェントノード上

@puppet-agent:~$ sudo /opt/puppetlabs/bin/puppet agent --test

[sudo] password for :

Info: Using configured environment 'production'

Info: Retrieving pluginfacts

Info: Retrieving plugin

Info: Retrieving locales

Info: Caching catalog for puppetagent

Info: Applying configuration version '1571333010'

Notice: /Stage[main]/Main/Node[puppetagent]/File[/home/test]/ensure: created

Notice: Applied catalog in 0.05 seconds

lsコマンドを実行して、ディレクタが正常に作成されたかどうかを確認します。

 @puppet-agent:~$ ls -l /home/

total 32

drwxr-xr-x 13   4096 Jul 19 08:06 

drwx------ 2 root root 16384 Oct 23 2018 lost+found

drwxr-xr-x 23   4096 Oct 17 11:02 

drwxr-xr-x 2 root root 4096 Oct 17 13:23 test

drwxr-xr-x 2 username username 4096 Jun 29 09:38 username

さあ!

結論

これは、その動作を示す簡単な例でした。しかし、何百ものサーバーに特定の構成をインストールまたは適用する必要がある、より大きなシナリオを想像してください。 Puppet を使用すると、数分でそれを達成できます。

自動化に携わっており、さらに詳しく知りたい場合は、Ansible、Puppet、Salt について説明しているこのUdemy コースをご覧ください。

「 Ubuntu 18にPuppet 6をインストールするにはどうすればよいですか?」についてわかりやすく解説!絶対に観るべきベスト2動画

UbuntuではじめるLinux入門 2023-1-28 D-6
【和訳】Puppet Show by XG 日本語 訳

Share via
Copy link