開発者ドキュメント

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を最も基本的なレベルでインストールして使用する方法を見てきました。 他のプラットフォームでの作業と、異なるプラットフォームに複数のマシンを同時にデプロイする方法については、詳細を読むことができます。

投稿者: Danny
モバイルバージョンを終了