Ubuntu12.04VPSにPackerをインストールして使用を開始する方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
理由:
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.
代わりに参照してください:
このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。
パッカーについて
Packer は、単一のソース構成から事前構成されたオペレーティングシステムとインストールされたソフトウェアを使用してマシンイメージを作成するための優れたオープンソースツールです。 すべての主要なオペレーティングシステムで実行され、複数のプラットフォームでマシンイメージを並行して作成できます。
次のプラットフォーム用のイメージを作成できます:Amazon EC2、DigitalOcean、OpenStack、VirtualBox、VMware。 ただし、より多くのプラットフォームをサポートするために、プラグインを使用してPackerを拡張することもできます。
このチュートリアルでは、Ubuntu12.04実行VPSにPackerをインストールして開始する方法を説明します。 さらに、DigitalOceanドロップレットイメージを作成することにより、Packerがどのように機能するかを説明します。 それでは始めましょう。 したがって、ターミナルコマンドラインを介して、自分のVPSに対するsudo特権をすでに持っていると思います。
インストール
Packerをインストールするには、システムに適したパッケージであるUbuntu(Linuxベース)を入手する必要があります。 Packerは、Mac OS X、Windows、FreeBSD、およびOpenBSDにもインストールできることに注意してください。 したがって、 http://www.packer.io/downloads.html にアクセスし、リンクを386バージョンにコピーします。 次に、ターミナルでルートフォルダーに移動し、そこに packer という名前の新しいフォルダーを作成して、その中に移動します。
cd ~/ mkdir packer cd packer
次に、次のコマンドを実行してパッケージをダウンロードします。
wget https://releases.hashicorp.com/packer/0.9.0/packer_0.9.0_ linux_386.zip
URLを見つけたものに置き換えてください。 これにより、.zipファイルがダウンロードされ、次のコマンドで解凍する必要があります。
unzip packer_0.9.0_linux_386.zip
ここでも、ファイルの名前をダウンロードしたものに置き換えてください。 エラーが発生し、 unzip がインストールされていない場合は、最初に次のコマンドを実行してインストールします。
sudo apt-get install unzip
次に、アーカイブを再度解凍してみると、Packer関連のファイルが多数取得されるはずです。 次の重要なステップは、作成したこの新しいディレクトリがLinux PATH(環境変数)上にあることを確認することです。 これを行うには、ルートディレクトリにある.bashrcファイルを編集します。
nano ~/.bashrc
このファイルの最後に、次の行を貼り付けます。
export PATH=$PATH:~/packer/
次に、ファイルを保存し、VPSを終了して再起動します。
reboot
切断された場合は、SSHでVPSに戻り、次のコマンドを実行して、Packerがインストールされ、すべてが正常であることを確認します。
packer
「コマンドが見つかりません」というエラーが表示された場合は、上記の手順に戻り、すべてが正しく行われたことを確認してください。 Packerで使用可能なコマンドに関する情報を入手したら、準備は完了です。これで、Packerがインストールされました。
DigitalOcean画像
Packerをインストールしたので、Packerを使用してDigitalOcean Dropletイメージ(またはDO用語を使用する場合はスナップショット)を作成する方法を見てみましょう。 これを実行できるようにするには、DigitalOceanアカウントを持っていることを確認してください。クライアントIDとAPIキーが必要になるためです。
これが邪魔にならないようになったら、作成するイメージを定義する構成ファイルを作成します。これは、テンプレート(基本的にはJSONファイル)と呼ばれます。 したがって、先に進んで、Packerをインストールしたフォルダーに foo.json というファイルを作成します(ただし、任意のファイル名を選択できます)。
nano ~/packer/foo.json
このファイル内に、以下を貼り付けます。
{ "builders": [{ "type": "digitalocean", "api_token": "YOUR API TOKEN", "region": "nyc3", "size": "512mb", "image": "ubuntu-14-04-x64" }] }
必要に応じて、APIトークンを追加してください。 ここでは何が起きるのですか? 基本的に、Ubuntu14.04を実行しているNYC3リージョンでDigitalOceanタイプの単純なデフォルトビルダー(512 MBドロップレット)を定義しています。 この構成ファイルに含めることができるその他のDigitalOcean固有のオプションについては、このページを参照してください。 ただし、Packerが使用するデフォルトのリージョンはDigitalOceanでサポートされなくなったため、VPSをデプロイするためのリージョンIDを指定する必要があることに注意してください。
ただし、ビルドする前に、この構文が有効であり、エラーがないことを確認しましょう。 ファイルを保存し、packerフォルダーに切り替えて、次のコマンドを実行します。
cd packer
packer validate foo.json
エラーが発生しない場合は、次のコマンドを使用してDigitalOceanDropletイメージを作成する準備ができています。
packer build foo.json
しばらくすると(これは2〜3分以内である必要があります)、Packerは構成ファイルに基づいて新しいDropletをデプロイし、スナップショットを取得してからDropletを削除します。 これで、新しい画像で自由にやりたいことができます。 スナップショットのコストは、ファイルシステム内の使用済みスペースの量に基づいて、1ギガバイトあたり1か月あたり0.05ドルです。
しかし、これはそれほど大きな問題ではありませんでした。 ただし、Packerはプロビジョニングも行います。つまり、必要なソフトウェアを使用してこれらのイメージを自動的にインストールできます。 それで、それがどのように機能するか見てみましょう。
プロビジョニング
Packerを使用すると、マシンイメージにソフトウェアをインストールして構成できます。 このチュートリアルでは、Packerによって作成されたDOイメージにApacheが自動的にインストールされます。 それで、それがどのように機能するか見てみましょう。
プロビジョナーは、前に作成したものと同じ構成ファイル(テンプレート)で構成されます。 したがって、そのファイルを編集します。
nano ~/packer/foo.json
そして、ファイルを次のように見せるために、JSON配列に別のセクションを追加します。
{ "builders": [{ "type": "digitalocean", "api_token": "YOUR API TOKEN", "region": "nyc3", "size": "512mb", "image": "ubuntu-14-04-x64" }], "provisioners": [{ "type": "shell", "inline": [ "sleep 30", "sudo apt-get update", "sudo apt-get install -y apache2" ] }] }
ここで、新しいシェルプロビジョナーを追加しました(デフォルトではPackerに付属しており、シェルでスクリプトを実行します)。 新しいVPSが展開されると、Packerは新しいマシンが利用可能になるとすぐにSSHで接続します。 sleep 30 命令を使用すると、PackerがSSH経由で接続してシェルスクリプトを実行する前に、Ubuntuオペレーティングシステムを適切に初期化できます。シェルスクリプトは、リポジトリを更新してApacheをインストールします。
ファイルをもう一度検証して、構文ミスがないことを確認しましょう。
packer validate foo.json
次に、ビルドを再度続行できます。
packer build foo.json
Packerは同じDigitalOceanDropletをデプロイしますが、Apacheもインストールします。 次に、アカウントの Images セクションにある画像を作成し、ドロップレットを破棄します。 すべてが機能し、Apacheがインストールされたことを確認するには、DigitalOceanアカウントにログインし、そのイメージに基づいて新しいドロップレットをデプロイします。 次に、ブラウザでIPを指定すると、Apacheの「動作します!」というメッセージが表示されます。
結論
このチュートリアルでは、Packerを最も基本的なレベルでインストールして使用する方法を見てきました。 他のプラットフォームでの作業と、異なるプラットフォームに複数のマシンを同時にデプロイする方法については、詳細を読むことができます。