サーバー構築の自動化で利用される技術、自動化ツールとして「Kickstart」「Puppet」を紹介し、構築から運用まで、システムライフサイクル全体にわたる運用管理の自動化についても解説する連載。今回は、agent/master型のPuppetのセットアップ方法を順に解説。インターネットに接続できない環境や証明書の不整合の解決法も。
3日で100台のサーバー構築を無事こなしたR子さん、今日は新しいお仕事にチャレンジするようです。
K男 今度新しくウチのグループ用にWebサーバーを作りたいんだよね
R子 え? わ、私は今すっごく忙しいですぅ(悲)
K男 ん? まだ何も言ってないけど? そんなに作ってみたいのかー。じゃ、よろしく!(ニヤリ)
R子 (しまった…)
K男 そうそう、今回のWebサーバーの構成は、他の部署のポータルサーバーとして横展開したいと思っているんだよね。そこで同じ環境のWebサーバーが間単に作れるように、Webサーバーのインストールと設定をPuppetを使って自動化しておいてね。
R子 私、Puppetほとんど使ったことがないですよぉ(悲)
前回の「PXE+Kickstartで動かすVirtualBox+CentOS環境自動構築サーバーの作り方」では、KickstartによるOSインストールの自動化について紹介しました。
KickstartはOSのインストールを自動化できて便利ですが、できるのはOSのインストールと簡単なシェルスクリプトで可能な設定までです。より本格的なサーバー構築と環境設定を自動化するには、PuppetやChefといった構成管理ツールを利用する必要があります。今回はPuppetのインストールと動作確認をしましょう。
Puppetはスタンドアロン型とagent/master型とで2つの動作形態があります。本連載ではagent/master型を基本に説明しますが、スタンドアロンについても適時説明します。
説明に入る前に、前回作ったCentOS環境に加えて、もうひとつ新規にVMを作成してCentOS環境を準備してください。前回の自動構築サーバーでインストールするといいでしょう。パッケージの構成は前回と同様で構いません。ただし、前回はホスト名をデフォルトのlocalhost.localdomainのままにしていましたが、今回はユニークなホスト名を付けてください。
セットアップ後にホスト名を変更する場合はネットワーク設定ファイル(/etc/sysconfig/network)のHOSTNAMEにホスト名を記述します。自動インストールで1台だけセットアップする場合限定ですが、Kickstartファイルのネットワーク設定を以下のようにする方法もあります。
network --bootproto=dhcp --onboot=yes --hostname={ホスト名}
前述の通り、Puppetをagent/master型でセットアップしますので、以下の項目について確認しましょう。
Puppet masterとagentはTCPの8140番ポートで通信します。前回の説明通りmaster側agent側共にiptablesサービスとSELinuxを無効化してください。
masterとagentはお互いにホスト名で通信できる必要があります。本来はDNSを使って名前解決できるのが理想ですが、ここではお手軽にhostsファイルに記載して間に合わせます。masterとagent双方のhostsファイル(/etc/hosts)に以下のエントリを追加してください。
192.168.xx.xx {masterのホスト名} 192.168.xx.xx {agentのホスト名}
Puppetは時刻情報も併せて管理しているため、masterとagentの時刻は正しく同期している必要があります。本連載で扱うVirtualBoxの場合はホストPCの時刻と同期しているので、同じホストPCのVM間では意識しなくても大丈夫ですが、物理マシンを使う場合や異なるホストPC間で使う場合は必ずNTPで同期してください。後ほど説明しますが、時刻が同期していない場合は証明書のエラーが発生します。
master側のインストールは以下の手順です。
以下、順に紹介します。
インターネットに接続できない環境の場合は、前回の追加パッケージのインストール手順にありました、CentOSのインストール用DVDをYumリポジトリとして使う設定をしてください。インターネットに接続できる環境の場合は特に作業はありません。
プロキシ経由でインターネットに接続している環境の場合は、Yumの設定ファイル(/etc/yum.conf)に以下の行を追加してください。proxy_usernameとproxy_passwordは認証プロキシを利用している場合のみ設定してください。
# PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d proxy=http://{プロキシサーバーのIPアドレス}:{ポート番号}/ proxy_username={プロキシユーザー名} proxy_password={パスワード}
セキュリティ上、proxy_passwordの記載を避けたい場合はyumの実行前に以下のコマンドを実行してください。
# export http_proxoy=http://{ユーザー名}:{パスワード}@{プロキシサーバーI}:{ポート番号}/
設定ができましたら、動作確認で適当なパッケージを検索してみましょう。試しにntpパッケージを検索してみます。以下のようになれば準備完了です。
# yum search ntp Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: centos.mirror.secureax.com * extras: centos.mirror.secureax.com * updates: centos.mirror.secureax.com =============================== N/S Matched: ntp =============================== ntp.x86_64 : The NTP daemon and utilities ntp-doc.noarch : NTP documentation ntp-perl.x86_64 : NTP utilities written in perl ntpdate.x86_64 : Utility to set the date and time via NTP cyrus-imapd.x86_64 : A high-performance mail server with IMAP, POP3, NNTP and : SIEVE support fontpackages-devel.noarch : Templates and macros used to create font packages fontpackages-filesystem.noarch : Directories used by font packages fontpackages-tools.noarch : Tools used to check fonts and font packages python-twisted-news.x86_64 : NNTP protocol implementation with client and server Name and summary matches only, use "search all" for everything.
以下のコマンドを実行してPuppet LabsのYumリポジトリをシステムに登録します。
# rpm -ivh http://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
ここまでの作業でPuppetはYumコマンドを使ってインストールできるようになっています。以下のコマンドでPuppet masterをインストールします。
設定が終わるまでは、puppetおよびpuppetmasterサービスを動かさないでください。
# yum install puppet-server -y
依存関係でエラーが発生した場合は、前述のyum searchを利用してCentOSのリポジトリが見えるか確認してください。またPuppetのリポジトリを作成した場合はダウンロードしたファイルが全て見えているか確認してください。
Copyright © ITmedia, Inc. All Rights Reserved.