リンクバル技術部の川畑です。サーバの構成管理はどこの会社でも課題になっていると思われます。このあたり構成管理ツールをつかってコードをGitHubとかで管理していきたいですね。構成管理ツールでもマシンイメージ・ミドルウェア・デプロイツールなどいくつかの階層によって適用できるツールがあると思われるのですが、今回はマシンイメージを管理する「Packer」を検証してみました。
目次
1.Packer設定ファイル
- json形式で記載
- 「builder」でマシン環境を定義
- 「provisioners」でサーバ上の動作を定義
- ここでは「digitalocean.json」で保存
"builders": [{
"type": "digitalocean",
"api_token": "<DigitalOceanのAPIトークン>",
"image": "ubuntu-16-04-x64",
"region": "sgp1",
"ssh_username": "root",
"size": "512mb",
"snapshot_name": "linkbal-packer-test {{timestamp}}"
}],
"provisioners": [{
"type": "shell",
"inline": [
"sleep 30",
"sudo apt-get upgrade"
] }] }
[/bash]
2.設定ファイル構文チェック
- Packer設定ファイルの構文が正しいかをチェック
Template validated successfully.
[/bash]
3.イメージ作成
- Packer設定ファイルの内容を実行して、新しいイメージをビルド
digitalocean output will be in this color.
==> digitalocean: Creating temporary ssh key for droplet…
==> digitalocean: Creating droplet…
==> digitalocean: Waiting for droplet to become active…
==> digitalocean: Waiting for SSH to become available…
==> digitalocean: Connected to SSH!
==> digitalocean: Provisioning with shell script: /var/folders/2m/6vlfpttn2_v52m6nmmls03b0_hvfdt/T/packer-shell546848099
digitalocean: Reading package lists…
digitalocean: Building dependency tree…
digitalocean: Reading state information…
digitalocean: Calculating upgrade…
digitalocean: 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
==> digitalocean: Gracefully shutting down droplet…
==> digitalocean: Creating snapshot: linkbal-packer 1485762269
==> digitalocean: Waiting for snapshot to complete…
==> digitalocean: Destroying droplet…
==> digitalocean: Deleting temporary ssh key…
Build ‘digitalocean’ finished.
==> Builds finished. The artifacts of successful builds are:
–> digitalocean: A snapshot was created: ‘linkbal-packer 1485762269’ (ID: 22512428) in region ‘sgp1’
[/bash]
実行開始後、DigitalOceanコンソールの「Droplets」を確認するとイメージを作成するためにサーバが起動されている
実行完了後、DigitalOceanコンソールの「Images」を確認すると新規イメージが作成されている
DigitalOceanコンソールの「Droplets」からはサーバが削除されている
まずは使ってみた感想
- 今回はDigitalOceanのデフォルトのイメージからDropletsを作成し、インストールされているパッケージを最新にするといった流れを検証
- AWS・GCP・AzureなどのIaaSやVMWare・VirtualBoxにも対応しており、ハイブリッドでマシンイメージを管理する時には便利そう
- Dockerのイメージ管理もできるので、Dockerを使用して開発している環境では、バージョン管理などが便利そう
※参考
リンクバルでは エンジニアを積極募集中 です。興味のある方のご応募お待ちしております。