Puppet-validating-setup

提供:Dev Guides
移動先:案内検索

Puppet-Puppetセットアップの検証

Puppetでは、セットアップをローカルでテストできます。 したがって、Puppetマスターとノードをセットアップしたら、セットアップをローカルで検証します。 VagrantとVagrant boxをローカルにインストールする必要があります。これはセットアップをローカルでテストするのに役立ちます。

仮想マシンのセットアップ

ローカルでセットアップをテストしているため、実際にPuppetマスターを実行する必要はありません。 これは、サーバーで実際にPuppetマスターを実行せずに、Puppetを使用してPuppetセットアップ検証のコマンドを適用するだけでよいことを意味します。 Puppet applyコマンドは、構成ファイル内の仮想マシンのホスト名に応じて、 local/etc/puppet からの変更を適用します。

セットアップをテストするために実行する必要がある最初のステップは、次の Vagrantfile をビルドしてマシンを起動し、 /etc/puppet フォルダーを所定の場所にマウントすることです。 必要なすべてのファイルは、次の構造を持つバージョン管理システム内に配置されます。

ディレクトリ構造

- manifests
   \- site.pp
- modules
   \- your modules
- test
   \- update-puppet.sh
   \- Vagrantfile
- puppet.conf

Vagrant File

# -*- mode: ruby -*-
# vi: set ft = ruby :
Vagrant.configure("2") do |config|
   config.vm.box = "precise32"
   config.vm.box_url = "http://files.vagrantup.com/precise64.box"
   config.vm.provider :virtualbox do |vb|
      vb.customize ["modifyvm", :id, "--memory", 1028, "--cpus", 2]
   end

   # Mount our repo onto/etc/puppet
   config.vm.synced_folder "../", "/etc/puppet"

   # Run our Puppet shell script
   config.vm.provision "shell" do |s|
      s.path = "update-puppet.sh"
   end

   config.vm.hostname = "localdev.example.com"
end

上記のコードでは、 update-puppet.sh という名前のシェルスクリプトを実行しようとしているシェルプロビジョニングツールを使用しています。 スクリプトは、Vagrantファイルが配置されているディレクトリと同じディレクトリに存在し、スクリプトの内容は以下のとおりです。

!/bin/bash
echo "Puppet version is $(puppet --version)"
if [ $( puppet --version) != "3.4.1" ]; then
   echo "Updating puppet"
   apt-get install --yes lsb-release
   DISTRIB_CODENAME = $(lsb_release --codename --short)
   DEB = "puppetlabs-release-${DISTRIB_CODENAME}.deb"
   DEB_PROVIDES="/etc/apt/sources.list.d/puppetlabs.list"

   if [ ! -e $DEB_PROVIDES ]
   then
      wget -q http://apt.puppetlabs.com/$DEB
      sudo dpkg -i $DEB
   fi
sudo apt-get update
   sudo apt-get install -o Dpkg::Options:: = "--force-confold"
   --force-yes -y puppet
else
   echo "Puppet is up to date!"
fi

さらに処理する場合、ユーザーはマニフェストディレクトリ内に site.pp という名前のマニフェストファイルを作成する必要があります。これにより、VMにソフトウェアがインストールされます。

node 'brclelocal03.brcl.com' {
   package { ['vim','git'] :
      ensure => latest
   }
}
echo "Running puppet"
sudo puppet apply/etc/puppet/manifests/site.pp

ユーザーは、必要なVagrantファイル構成で上記のスクリプトの準備ができたら、テストディレクトリにcdして* vagrant upコマンド*を実行できます。 これにより、後で新しいVMが起動し、Puppetがインストールされ、シェルスクリプトを使用して実行されます。

出力は次のようになります。

Notice: Compiled catalog for localdev.example.com in environment production in 0.09 seconds
Notice:/Stage[main]/Main/Node[brclelocal03.brcl.com]/Package[git]/ensure: created
Notice:/Stage[main]/Main/Node[brcllocal03.brcl.com]/Package[vim]/ensure: ensure changed 'purged' to 'latest'

複数マシン構成の検証

複数のマシンの構成をローカルでテストする必要がある場合は、Vagrant構成ファイルを変更するだけで簡単に実行できます。

新しい構成済みVagrantファイル

config.vm.define "brclelocal003" do |brclelocal003|
   brclelocal03.vm.hostname = "brclelocal003.brcl.com"
end

config.vm.define "production" do |production|
   production.vm.hostname = "brcleprod004.brcl.com"
end

SSLユーティリティをインストールする必要がある新しい運用サーバーがあるとします。 次の構成で古いマニフェストを拡張するだけです。

node 'brcleprod004.brcl.com' inherits 'brcleloacl003.brcl.com' {
   package { ['SSL'] :
      ensure => latest
   }
}

マニフェストファイルの構成を変更した後、テストディレクトリに移動し、 brclelocal003.brcl.combrcleprod004.brcl.com の両方のマシンを起動する基本的なvagrant upコマンドを実行するだけです。 この例では、* vagrant up productionコマンド*を実行することで実行できる実動マシンを起動しようとしています。 Vagrantファイルで定義されているproductionという名前の新しいマシンを作成し、SSLパッケージをインストールします。