前回のブログでは、Puppetを使用してマシンをセットアップし、MongoDBをインストールして構成する方法を紹介しました。多数のノードまたはマシンを構成するため、パペットマスターが必要です。ただし、この場合は、マニフェストをプッシュしてマシンに適用するgitリポジトリを作成します。
ローカルのgitリポジトリを作成するには、最初に使用するパス、つまり/opt/を選択します。次に、$sudomkdirリポジトリを実行してgitリポジトリを作成します。コマンド$sudochown vagrant:vagrant repositoryを発行して、rootユーザーにこのディレクトリの内容を変更する権限を取得します。コマンド$cdrepositoryを発行した後、このディレクトリをgitリポジトリとして初期化するには、$ git init --bare --sharedを実行します。このディレクトリに移動すると、次のように表示されます。
[email protected]:/vagrant/repository$ ls -l
total 12
-rw-rw-r-- 1 vagrant vagrant 23 Jul 15 07:46 HEAD
drwxr-xr-x 1 vagrant vagrant 64 Jul 15 07:46 branches
-rw-rw-r-- 1 vagrant vagrant 145 Jul 15 07:46 config
-rw-rw-r-- 1 vagrant vagrant 73 Jul 15 07:46 description
drwxr-xr-x 1 vagrant vagrant 352 Jul 15 07:46 hooks
drwxr-xr-x 1 vagrant vagrant 96 Jul 15 07:46 info
drwxr-xr-x 1 vagrant vagrant 128 Jul 15 07:46 objects
drwxr-xr-x 1 vagrant vagrant 128 Jul 15 07:46 refs
-rw-r--r-- 1 vagrant vagrant 0 Jul 1 15:58 test.pp
これはgitリポジトリの基本構造であり、オプション--bareおよび--shareを使用すると、ディレクトリからファイルをプッシュおよびプルできます。
ただし、これをバックグラウンドで実行できるファイルを作成することをお勧めします。したがって、コマンドsudo vim / etc / systemd / system/gitdを発行してサービスを設定する必要があります。サービス。新しいファイルにこれらのコンテンツを入力します
[Unit]
Description=Git Repo Server Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack
[Install]
WantedBy=getty.target
DefaultInstance=ttyl
ファイルを保存し、
[email protected]:/opt/repository$ systemctl start gitd
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to start 'gitd.service'.
Authenticating as: vagrant,,, (vagrant)
Password:
==== AUTHENTICATION COMPLETE ===
To check if the service is running $ ps -ef | grep git and you will get:
[email protected]:/opt/repository$ ps -ef | grep git
root 1726 1 0 07:48 ? 00:00:00 /usr/bin/git daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack
root 1728 1726 0 07:48 ? 00:00:00 git-daemon --reuseaddr --base-path=/opt/ --export-all --enable=receive-pack
vagrant 1731 1700 0 07:48 pts/0 00:00:00 grep --color=auto git
これで、ルートディレクトリで$ git clone git://198.168.1.100/repository(マシンのネットワークIPでIPアドレスを変更することを忘れないでください)を実行すると、新しく作成されたリポジトリフォルダーが取得されます。 。構成ファイルの電子メールとパスワードのコメントを解除して、資格情報を構成することを忘れないでください。 $ git config --global --editを実行して、このファイルにアクセスします。
このリポジトリは、すべてのマニフェストと変数の中央サーバーとして機能します。
次に、ノードを構成する環境をセットアップする必要があります。まず、vagrantディレクトリに切り替えて、上記と同じコマンドで作成したリポジトリのクローンを作成します。
$ rm -rmanifest /を実行して、vagrantフォルダーのマニフェストディレクトリを削除します。
$ mkdir productを使用して新しい本番フォルダーを作成し、$ git clone git://198.168.1.100/repositoryを使用して上記で作成したものと同じリポジトリのクローンを作成します。 (最後のドットを忘れないでください)
cp -pr / etc / puppetlabs / code / environment / product / *を発行して、puppetlabs本番環境のコンテンツをコピーしてこの本番フォルダに貼り付けます。これで、本番ディレクトリは次のようになります
[email protected]:/vagrant/production$ ls -l
total 8
drwxr-xr-x 1 vagrant vagrant 64 Apr 26 18:50 data
-rw-r--r-- 1 vagrant vagrant 865 Apr 26 18:50 environment.conf
-rw-r--r-- 1 vagrant vagrant 518 Apr 26 18:50 hiera.yaml
drwxr-xr-x 1 vagrant vagrant 96 Jul 2 10:45 manifests
drwxr-xr-x 1 vagrant vagrant 64 Apr 26 18:50 modules
-rw-r--r-- 1 vagrant vagrant 0 Jul 1 16:13 test.pp
これらの変更をルートリポジトリにプッシュして、実行する必要があります。
$ git add * && git commit -m "adding production default files" && git push
git構成が機能しているかどうかをテストするには、このディレクトリで$ sudo rm -r *を実行して、ディレクトリ/ etc / puppetlabs / code / environment /product/のコンテンツを削除してからプルします。ルートユーザーとしてのマスターリポジトリからのファイル、つまり$ git clone git://198.168.1.100/repository。 (最後のドットを忘れないでください)。この場合、コンテンツを含むディレクトリのみがプルされるため、マニフェストとモジュールのフォルダを見逃す可能性があります。これらの操作は、マスターパペットまたはクライアントマシンのいずれかに関連するすべてのマシンで実行できます。したがって、私たちのタスクは、メインサーバーから変更をプルし、マニフェストを使用して変更を適用することです。
これは、変更をプルして他のノードに自動的に適用するために作成するスクリプトです。本番環境を使用する必要があるだけでなく、できるだけ多くの環境を追加して、検索するパペットを指定することができます。ルートのproduction/manifestsディレクトリに実行マニフェストをpuppet_exec.ppとして作成し、次の内容を入力します
file { "This script will be pulling and applying the puppet manifests":
path => '/usr/local/bin/exec-puppet',
content => 'cd /etc/puppetlabs/code/environments/production/ && git pull; /opt/puppetlabs/bin/puppet apply manifests/'
mode => "0755"
}
cron {'exec-puppet':
command => '/usr/local/bin/exec-puppet',
hour => '*',
minute => '*/15'
}
ファイルは、パペットマニフェストを実行するために記述されたリソースです。作成するファイルに適切なパスを追加し、実行時に発行されるコマンドをファイルに入力します。
コマンドは体系的に実行されます。つまり、最初に本番環境に移動し、リポジトリの変更をプルしてから、それらをマシンに適用します。
マニフェストディレクトリを各ノードに提供し、そこからアプリケーションに向けられたマニフェストを選択できます。
これを現在のマシンに適用するには、$ cd / vagrant/productionです。 $ git add *、$ git commit -m「cron構成の追加」、最後に$ git pushを実行して、すべてをgitに追加します。次に、$ cd / etc / puppetlabs / code / environment /Production/および$sudogit pull
に移動します。このディレクトリのmanifestsフォルダを確認すると、定義したとおりに作成されたpuppet_exec.ppが表示されます。
ここで、$ sudo puppet applymanifests /を実行し、ファイルexec-puppetが作成されているかどうかを確認します$ cat / usr / local / bin / exec-puppet
cd /etc/puppetlabs/code/environments/production/ && git pull; /opt/puppetlabs/bin/puppet apply manifests/
この時点で、他のすべてのノードに適用する必要があるマスターマシンに変更をプルおよびプッシュする方法を確認しました。 $ sudo crontab -lを実行すると、作成されたexec-puppetファイルでいくつかの重要な警告が強調表示されます。
# HEADER: This file was autogenerated at 2019-07-02 11:50:56 +0000 by puppet.
# HEADER: While it can still be managed manually, it is definitely not recommended.
# HEADER: Note particularly that the comments starting with 'Puppet Name' should
# HEADER: not be deleted, as doing so could cause duplicate cron jobs.
# Puppet Name: exec-puppet
*/15 * * * * /usr/local/bin/exec-puppet
Vagrant.configure("2") do |config|
config.vm.define "puppet" do |puppet|
puppet.vm.box = "bento/ubuntu-16.04"
#puppet.vm.hostname = "puppet"
#puppet.vm.network "private_network", ip: "192.168.1.10"
end
config.vm.define "db" do |db|
db.vm.box = "bento/ubuntu-16.04"
end
end
この場合、構成を行っているパペットマシンがあり、次にdbマシンがあります。ここで、dbマシンが起動されるたびに、パペットがすでにインストールされ、cronファイルがマニフェストをプルしてそれに応じて適用できるようにマシンを自動化します。 dbマシンの内容を次のように再構築する必要があります
config.vm.define "db" do |db|
db.vm.box = "bento/ubuntu-16.04"
vm.provision "shell", inline: <<-SHELL
cd /temp
wget https://apt.puppetlabs.com/puppet5-release-xenial.deb
dpkg -i puppet5-release-xenial.deb
apt-get update
apt-get install -y puppet-agent
apt-get install -y git
rm -rf /etc/puppetlabs/code/environments/production/*
cd /etc/puppetlabs/code/environments/production/
git clone git://198.168.1.100/repository .
/opt/puppetlabs/bin/puppet apply /etc/puppetlabs/code/environments/production/manifests/puppet_exec.pp
SHELL
End
この段階まで、パペットディレクトリの構造は次のようになっている必要があります
ここで、コマンド$ vagrant up dbを使用してdbマシンを実行すると、一部のリソースがインストールされ、定義したスクリプトは、production/manifestsディレクトリにあります。ただし、無料版では10ノードのみに制限されているパペットマスターを使用することをお勧めします。そうしないと、プランにサブスクライブする必要があります。 Puppetマスターは、より多くの機能を提供し、マニフェストを複数のノードに配布し、ログを報告し、ノードをより詳細に制御します。
MongodbPuppetモジュール
このモジュールは、MongoDBのインストール、mongodサーバーのインストールの管理、mongodデーモンの構成、MongoDB-mmsデーモン以外のOpsManagerセットアップの管理に使用されます。
結論
次のブログでは、Puppetを使用してMongoDBレプリカセットとシャードをデプロイする方法を紹介します。