4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

2枚目 SoftLayer Advent Calendar 2014

Day 9

Vagrant から SoftLayer の仮想サーバを 1度に複数 Provisioning する

Last updated at Posted at 2014-09-19

##概要
Vagrantfile 1ファイル で SoftLayer の仮想サーバを 1度に複数サーバ Provisioning する方法を検証します。

##前提
下記を参考に、Vagrant - SoftLayer 環境を整備しておいてください。

Qiita:Vagrant から SoftLayer の仮想サーバを Provisioning する

##Vagrantfile 準備

今回は2つの仮想サーバを1度にProvisioningしてみます。
準備として、Vagrantfile を下記内容に置き換えてください。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "dummy"
  config.vm.box_url = "https://github.com/audiolize/vagrant-softlayer/raw/master/dummy.box"
  config.vm.synced_folder ".", "/vagrant", type: "rsync", disabled: true
  config.ssh.private_key_path = "/root/.ssh/id_rsa"
  config.ssh.username = "root"

  config.vm.define :vagrant01 do |vagrant01|
    vagrant01.vm.provider :softlayer do | sl, override |
      sl.api_key          = ENV['SL_API_KEY']
      sl.username         = ENV['SL_USERNAME']
      sl.datacenter       = "hkg02"
      sl.dedicated        = false
      sl.hourly_billing   = true
      sl.hostname         = "vagrant01"
      sl.domain           = "domain.jp"
      sl.start_cpus       = 1
      sl.max_memory       = 1024
      sl.local_disk       = true
      sl.disk_capacity    = { 0 => 25 }
      sl.network_speed    = 10
      sl.operating_system = "CENTOS_6_64"
      sl.ssh_key          = [ "APIKEY" ]
      override.ssh.username = "root"
    end
  end

  config.vm.define :vagrant02 do |vagrant02|
    vagrant02.vm.provider :softlayer do | sl, override |
      sl.api_key          = ENV['SL_API_KEY']
      sl.username         = ENV['SL_USERNAME']
      sl.datacenter       = "hkg02"
      sl.dedicated        = false
      sl.hourly_billing   = true
      sl.hostname         = "vagrant02"
      sl.domain           = "domain.jp"
      sl.start_cpus       = 1
      sl.max_memory       = 1024
      sl.local_disk       = true
      sl.disk_capacity    = { 0 => 25 }
      sl.network_speed    = 10
      sl.operating_system = "CENTOS_6_64"
      sl.ssh_key          = [ "APIKEY" ]
      override.ssh.username = "root"
    end
  end

end

##Provisioning

では実際に、1度に複数Provisioningします。
標準出力みてると普通に順番に起動しているだけに見えます。

vagrant up

# vagrant up
Bringing machine 'vagrant01' up with 'softlayer' provider...
Bringing machine 'vagrant02' up with 'softlayer' provider...
==> vagrant01: Creating a new SoftLayer instance...
==> vagrant01: Waiting for instance provisioning. This may take a few minutes...
==> vagrant01: SoftLayer instance successfully provisioned!
==> vagrant01: Waiting for machine to boot. This may take a few minutes...
    vagrant01: SSH address: 119.81.167.162:22
    vagrant01: SSH username: root
    vagrant01: SSH auth method: private key
==> vagrant01: Machine booted and ready!
==> vagrant02: Creating a new SoftLayer instance...
==> vagrant02: Waiting for instance provisioning. This may take a few minutes...
==> vagrant02: SoftLayer instance successfully provisioned!
==> vagrant02: Waiting for machine to boot. This may take a few minutes...
    vagrant02: SSH address: 119.81.167.163:22
    vagrant02: SSH username: root
    vagrant02: SSH auth method: private key
==> vagrant02: Machine booted and ready!

確認

# vagrant status
Current machine states:

vagrant01                 running (softlayer)
vagrant02                 running (softlayer)

####Customer Portal での確認

vagrant_futago.png

####仮想サーバに ssh してみる

名前で vagrant ssh することができます。

# vagrant ssh vagrant01
[root@vagrant01 ~]# uname -a
Linux vagrant01.domain.jp 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@vagrant01 ~]# exit
logout
# vagrant ssh vagrant02
[root@vagrant02 ~]# uname -a
Linux vagrant02.domain.jp 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@vagrant02 ~]# exit
logout
#

####仮想サーバの廃棄

名前を並べることで1度に vagrant destroy することも可能です。

# vagrant destroy -f vagrant01 vagrant02
==> vagrant02: Destroying the SoftLayer instance...
==> vagrant01: Destroying the SoftLayer instance...

# vagrant status
Current machine states:

vagrant01                 not created (softlayer)
vagrant02                 not created (softlayer)

もちろん、Customer Portal でも確認できます。

vagrant_destroy.png

##結果

  • Vagrant から SoftLayer の仮想サーバを1度に複数 Provisioning できた
  • destroy もできた。

Customer Portal から GUI で 1台1台注文してもいいのですが、大量の台数を注文する場合、結構な時間がかかってしまいます。それが Vagrantfile を準備する手間が必要とはいえ、1コマンドで済むメリットは大きいように思います。どんなサーバを発注するのか、発注したのか、という証跡を Vagrantfile という形で保管しておけるのも魅力ですね。

##課題

  • Vagrantfile の中の繰り返し部分をベタ書きしているのがダサい。もう少し綺麗にまとめたい。

##参考

下記サイトを参考にさせて頂きました。ありがとうございました。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?