Vagrant はサーバー管理の共通インターフェースって感じがする。みんな覚えたら良いと思う。
尚、シークレットトークンとかは .env
に記入するので dotenv
を Vagrant にインストールしておく:
vagrant plugin install dotenv
Amazon Web Services
アクセスキー
アクセスキー (access key ID と secret access key) を確認しておく:
プロジェクト作成
AMI
AMI の ID を確認しておく。
※ 先日登場した t2.micro インスタンスを使用する場合は、仮想化方式が HVM の AMI を使用する必要がある。
Instance Types
Key Pair
インスタンス用の Key Pair を準備しておく。
Security Group
インスタンス用の Secuirty Group を準備しておく。
Vagrant
Vagrant AWS Provider プラグインをインストール:
vagrant plugin install vagrant-aws
Vagrantfile
AWS 用の Vagrantfile
を作成:
Dotenv.load
Vagrant.configure("2") do |config|
# AWS の設定
# https://github.com/mitchellh/vagrant-aws#configuration
config.vm.provider :aws do |provider, override|
provider.access_key_id = "#{ENV['YOUR_KEY']}"
provider.secret_access_key = "#{ENV['YOUR_SECRET_KEY']}"
provider.ami = "ami-bb562fba"
provider.instance_type = "t2.micro"
provider.keypair_name = "#{ENV['KEYPAIR_NAME']}"
provider.region = "ap-northeast-1"
provider.security_groups = [
"vagrant"
]
provider.tags = {
"Name" => "Amazon Linux"
}
# ダミー Box の指定
override.vm.box = "aws"
override.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box"
override.ssh.username = "ec2-user"
override.ssh.private_key_path = "#{ENV['PATH_TO_YOUR_PRIVATE_KEY']}"
end
end
AWS インスタンスを起動:
vagrant up --provider=aws
AWS インスタンスを破棄:
vagrant destroy
Google Compute Engine
gcutil
Google Compute Engine の CLI "gcutil" が途中で必要になるのでインストールしておく。
インストール後、予め使用する Google アカウントにログインしておく:
gcloud auth login
プロジェクト作成
Google Developer Console から Vagrant で管理するプロジェクトを作成する。
プロジェクトを作成したら、下記工程を済ませておく:
- "Google Compute Engine" を プロジェクトの "APIs" ページから有効にする。
- 課金の請求先登録に移るのでクレジットカード情報等を登録する。
- プロジェクトの "Credentials" ページの "Create new Client ID" ボタンから "Service account" を作成する。
- 秘密鍵のダウンロード実行と、鍵のパスワード表示がされるので控えておく。
- "VM instances" ページから、何でも良いので、手動で一つインスタンスを作成する。
- インスタンスが作成されると "VM instances" ページにインスタンス一覧が表示される。
- 一覧に "SSH" ボタンがあるのでクリックすると gcutil で実行するコマンドが表示される。
- コマンドをコピーして CLI から実行する。
- 初回は SSH のパスフレーズ設定があるので、必要に応じて設定する。
- 完了すると、NIX 環境では
~/.ssh
下に秘密鍵google_compute_engine
と公開鍵google_compute_engine.pub
が自動生成され、インスタンスに SSH ログインする。 - この時、ログインユーザー名が決定されるが、これはローカルユーザーと同一になる模様。
-
exit
コマンド等でインスタンスの SSH からログアウトする。
うーん、面倒くさい... ><
Images
- Images - Google Compute Engine — Google Developers
- Operating Systems - Google Compute Engine — Google Developers
Machine Types
Network
Vagrant
Vagrant Google Compute Engine (GCE) Provider プラグインをインストール:
vagrant plugin install vagrant-google
Vagrantfile
GCE 用の Vagrantfile
を作成:
Dotenv.load
Vagrant.configure("2") do |config|
# GCE の設定
# https://github.com/mitchellh/vagrant-google#configuration
config.vm.provider :google do | provider, override|
provider.google_project_id = "#{ENV['YOUR_GOOGLE_CLOUD_PROJECT_ID']}"
provider.google_client_email = "#{ENV['YOUR_SERVICE_ACCOUNT_EMAIL_ADDRESS']}"
provider.google_key_location = "#{ENV['PATH_TO_YOUR_PRIVATE_KEY']}"
provider.image = "centos-6-v20140619"
provider.machine_type = "f1-micro"
provider.name = "my-instance"
provider.network = "vagrant"
# ダミー Box の指定
override.vm.box = "gce"
override.vm.box_url = "https://github.com/mitchellh/vagrant-google/raw/master/google.box"
override.ssh.username = "#{ENV['USERNAME']}"
override.ssh.private_key_path = "~/.ssh/google_compute_engine"
end
end
GCE インスタンスを起動:
vagrant up --provider=google
GCE インスタンスを破棄:
vagrant destroy
DigitalOcean
アカウント設定
SSH Key
"SSH Keys" ページより、SSH 鍵を生成して公開鍵を登録しておく。
Personal Access Token
"Apps & API" ページより、Personal Access Token を生成して確認しておく。
Vagrant
Digital Ocean Vagrant Provider プラグインをインストール:
vagrant plugin install vagrant-digitalocean
Vagrantfile
DigitalOcean 用の Vagrantfile
を作成:
Dotenv.load
Vagrant.configure('2') do |config|
# DigitalOcean の設定
# https://github.com/smdahlen/vagrant-digitalocean#configure
config.vm.provider :digital_ocean do |provider, override|
# Personal Access Token
# https://cloud.digitalocean.com/settings/applications
provider.token = "#{ENV['PERSONAL_ACCESS_TOKEN']}"
# Image
# https://developers.digitalocean.com/#list-all-images
provider.image = "CentOS 7.0 x64"
# Region
# https://developers.digitalocean.com/#list-all-regions
provider.region = "sfo1"
# Size
# https://developers.digitalocean.com/#list-all-sizes
provider.size = "512mb"
# SSH Key
# https://cloud.digitalocean.com/ssh_keys
provider.ssh_key_name = "#{ENV['SSH_KEY_NAME']}"
# SSH ユーザー名を指定
override.ssh.username = "vagrant"
# ダミー Box の指定
override.vm.box = "digitalocean"
override.vm.box_url = "https://github.com/smdahlen/vagrant-digitalocean/raw/master/box/digital_ocean.box"
override.ssh.private_key_path = "#{ENV['SSH_KEY_PATH']}"
end
end
DigitalOcean インスタンスを起動:
vagrant up --provider=digital_ocean
DigitalOcean インスタンスを破棄:
vagrant destroy
Docker
Vagrant
Docker Provider は Vagrant で標準搭載されている。
Docker では Box ファイルではなく、Docker イメージファイルから起動する。
Docker イメージから起動する場合の Vagrantfile
:
Vagrant.configure("2") do |config|
config.vm.provider "docker" do |d|
# イメージ foo/bar を指定
d.image = "foo/bar"
end
end
Docker イメージファイルを Dockerfile
から生成する場合の Vagrantfile
:
Vagrant.configure("2") do |config|
config.vm.provider "docker" do |d|
# Vagrantfile と同階層の Dockerfile を指定
d.build_dir = "."
end
end
Docker インスタンスを起動:
vagrant up --provider=docker
物理サーバー
物理サーバーの場合は OS のインストールと SSH 接続環境の設定までは手動で終わらせておく必要がある。
Vagrant
Vagrant ManagedServers Provider プラグインをインストール:
vagrant plugin install vagrant-managed-servers
ManagedServers 用の Vagrantfile
を作成:
Vagrant.configure("2") do |config|
# ManagedServers
# https://github.com/tknerr/vagrant-managed-servers#configuration
config.vm.provider :managed do |managed, override|
managed.server = "ip-or-hostname"
# ダミー Box の指定
override.vm.box = "managed"
override.vm.box_url = "https://github.com/tknerr/vagrant-managed-servers/raw/master/dummy.box"
override.ssh.username = "ubuntu"
override.ssh.private_key_path = "PATH TO YOUR PRIVATE KEY"
end
end
ManagedServer インスタンスを起動:
vagrant up --provider=managed