Puppetは、サーバーにリモートアクセスしながら、サーバーの展開、構成、管理、および保守に使用できる強力なオープンソース構成管理ツールです。 PuppetはRubyで記述されており、単一のサーバー(最大数千の物理サーバーと仮想サーバー)をすべて中央の場所から展開および管理するのに役立ちます。
Puppetモジュールは、マニフェストファイルとデータのコレクションであり、Puppetがクラス、ファクト、関数、定義されたタイプ、およびタスクをロードして検索できるようにします。 Puppetモジュールを使用すると、パッケージのインストールと更新、ファイルとディレクトリの作成、および/または構成の変更をすばやく簡単に行うことができます。これは、LAMP環境の起動、仮想ホストのセットアップなど、ほぼすべてのタスクを実行および自動化することを目的としています。
このチュートリアルでは、LAMPモジュールを作成してLAMPスタックをPuppetエージェントマシンにデプロイする方法を示します。どちらもUbuntu20.04VPSです。始めましょう。
始める前に
必要なもの:
- PuppetマスターとPuppetエージェントが構成された2台のUbuntu20.04仮想サーバー。
- ルートアクセスが有効になっているか、sudo権限を持つユーザー。
はじめに
まず、SSHを使用してサーバーにログインする必要があります。これを行うには、次のコマンドを入力します:
ssh root@IP_Address -p Port_Number
rootユーザーを使用していない場合は、「root」をユーザー名に置き換えることを忘れないでください。サーバーのIPアドレスとSSHポート番号に応じて、「IP_Address」と「Port_Number」を変更します。デフォルトのポート番号は22です。
ログインすると、次のステップに進むことができます。
Puppetサーバーとエージェントを確認する
まず、Puppetマスターノードで次のコマンドを実行して、Puppetサービスを確認します。サービスがアクティブで実行されていることを確認する必要があります:
systemctl status puppetserver
次に、次のコマンドを使用して、署名済みおよび署名なしのすべてのエージェント要求を一覧表示します。
/opt/puppetlabs/bin/puppetserver ca list --all
次の出力が表示されます。
Signed Certificates: puppet-client (SHA256) 58:73:AE:62:04:9E:B8:0F:16:07:83:08:34:4A:00:D2:E6:82:9B:47:2A:00:9F:F4:08:AE:56:A8:E7:1B:6A:31 puppet-master (SHA256) 7F:23:98:18:0E:3F:0F:FD:3E:12:FD:43:A6:50:C2:4C:58:0F:C6:EB:B0:5A:2A:74:6F:D8:A0:95:BC:31:EA:47alt names: ["DNS:puppet-master", "DNS:puppet-master"]authorization extensions: [pp_cli_auth: true]
Puppetエージェントノードで、次のコマンドを実行して、両方のノード間の接続をテストします。
/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-client Info: Applying configuration version '1583136740' Notice: Applied catalog in 0.05 seconds
LAMPモジュールを作成する
まず、PuppetマスターノードにLAMPモジュールを作成する必要があります。モジュールを作成するには、Puppetのmodules
でモジュール名と名前が一致するディレクトリを作成する必要があります ディレクトリ。manifests
というディレクトリが含まれている必要があります。 、およびそのディレクトリにはinit.pp
が含まれている必要があります ファイル。
これを行うには、ディレクトリをPuppetモジュールディレクトリに変更し、lamp
という名前のディレクトリを作成します。 次に、manifests
その中のディレクトリ:
cd /etc/puppetlabs/code/modules/ mkdir -p lamp/manifests
次に、init.pp
を作成します モジュール名と一致するPuppetクラスを含むファイル。 nano
を使用します このためですが、好きなテキストエディタを使用できます。
nano lamp/manifests/init.pp
次の行を追加します:
class lamp { # execute 'apt-get update' exec { 'apt-update': # exec resource named 'apt-update' command => '/usr/bin/apt-get update' # command this resource will run } # install apache2 package package { 'apache2': require => Exec['apt-update'], # require 'apt-update' before installing ensure => installed, } # ensure apache2 service is running service { 'apache2': ensure => running, } # install mysql-server package package { 'mysql-server': require => Exec['apt-update'], # require 'apt-update' before installing ensure => installed, } # ensure mysql service is running service { 'mysql': ensure => running, } # install php package package { 'php': require => Exec['apt-update'], # require 'apt-update' before installing ensure => installed, } # ensure info.php file exists file { '/var/www/html/info.php': ensure => file, content => '', # phpinfo code require => Package['apache2'], # require 'apache2' package before creating } }
終了したら、ファイルを保存して閉じます。
メインマニフェストファイルを作成する
マニフェストは、エージェントノードにLAMPスタックをインストールするために使用できるクライアント構成を含むファイルです。メインのパペットマニフェストファイルは、/etc/puppetlabs/code/environments/production/manifests
にあります。 ディレクトリ。
site.pp
という名前の新しいマニフェストファイルを作成できます 次のコマンドを使用します:
nano /etc/puppetlabs/code/environments/production/manifests/site.pp
次の行を追加します:
node default { } node 'puppet-agent' { include lamp }
ファイルを保存して閉じます。
上記のファイルでは、ノードブロックを使用して、特定のエージェントノードにのみ適用されるPuppetコードを指定できます。デフォルトノードは、ノードブロックが指定されていないすべてのエージェントノードに適用されます。
ここでは、puppet-agent
を指定しました puppet-agent
にのみ適用されるノードブロック エージェントノード。 include lamp
も追加しました Puppetがエージェントノードのランプモジュールを使用できるようにするためのスニペット。
LAMPモジュールをテストする
次に、エージェントノードのLAMP構成をマスターノードからプルする必要があります。
エージェントノードで、次のコマンドを実行して、マスターノードからLAMP構成をプルします。
/opt/puppetlabs/bin/puppet agent --test
これにより、以下に示すように、エージェントノードにLAMPスタックがインストールおよびセットアップされます。
Info: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Retrieving locales Info: Caching catalog for puppet-agent Info: Applying configuration version '1594188800' Notice: /Stage[main]/Lamp/Exec[apt-update]/returns: executed successfully Notice: /Stage[main]/Lamp/Package[apache2]/ensure: created Notice: /Stage[main]/Lamp/Package[mysql-server]/ensure: created Notice: /Stage[main]/Lamp/Package[php]/ensure: created Notice: /Stage[main]/Lamp/File[/var/www/html/info.php]/ensure: defined content as '{md5}d9c0c977ee96604e48b81d795236619a' Notice: Applied catalog in 73.09 seconds
これで、LAMPスタックがエージェントノードにインストールされました。確認するには、Webブラウザを開き、URL http://agent-ip-address/info.php
を入力します。 。 PHPページが表示されます。
おめでとう! PuppetマスターでLAMPモジュールを正常に作成し、Puppetを使用してエージェントノード(または複数のノード)に正常にデプロイしました。
これらの変更をエージェントノードにデプロイすることは、可能な限り簡単かつ自動化されていますが、それでも両方の側を構成し、これらのタスクを自分で実行する必要があります。マネージドUbuntuVPSプランのいずれかを使用する場合は、専門の管理チームに必要なものをインストールするよう依頼するだけです。彼らは、必要なときにいつでも必要なものをインストールしてセットアップしたり、サーバーのメンテナンスを実行したりすることができます。すべて、何もする必要はありません。
このチュートリアルがお役に立てば幸いです。もしそうなら、私たちの共有ショートカットを使用してソーシャルメディアを介してこのチュートリアルを友達と共有していただければ幸いです。または、インストールがどのように進んだかをコメントで残すことができます。ありがとうございます。