vagrant on softlayer

18
Japan SoftLayer User Group Vagrantから SoftLayer仮想サーバーを 操作する 2016.3.4

Upload: yuichi-tamagawa

Post on 10-Jan-2017

1.263 views

Category:

Technology


8 download

TRANSCRIPT

Page 1: Vagrant on SoftLayer

Japan SoftLayer User Group

VagrantからSoftLayerの仮想サーバーを操作する

2016.3.4

Page 2: Vagrant on SoftLayer

話す人

玉川 雄一

• 日本アイ・ビー・エム シニアITスペシャリスト

• SoftLayerのテクニカルセールス

• プリセールス活動

• 技術情報の発信

• 共著でSoftLayerの本を書きました →

@y_tama

2016/2/26 発売しました!

Page 3: Vagrant on SoftLayer

• 仮想サーバーを簡単に作成&管理できる開発者向けツール

• vagrant up(作成) / destroy(削除) / halt(停止) / rebuild(再構築) etc

• 同じ設定ファイルがあれば、同じ構成の開発環境が作れる

• Rubyで書かれたOSS

• 元々はVirtualbox用に作られた

• 現在は様々なプラグインが存在し、SoftLayer, AWS, VMwareなどにも対応

• 「vagrant up」だけで、様々な仮想化基盤上にサーバーが作れる

• Mitchell Hashimoto氏が2010年にVagrant ver0.1をリリース

• 2012年にHashicorp設立 (Vagrant, Packer, Consul, Serf etc)

Vagrantとは

Page 4: Vagrant on SoftLayer

今回の構成

SoftLayer

インターネット

親サーバーCentOS

操作対象の仮想サーバー

SSH接続

②API呼び出し

SoftLayer APIOS Image または

Image Template

③サーバー作成

SoftLayerプラグイン

①vagrant up

④vagrant ssh秘 公

SSH公開鍵

ユーザーIDAPIキー

事前準備2

事前準備1

Page 5: Vagrant on SoftLayer

事前準備1

• SoftLayerのユーザーID+APIキー をメモ

ユーザーID

APIキー

Page 6: Vagrant on SoftLayer

事前準備2

• SSH公開鍵の登録

SSH公開鍵(事前にどこかのLinux環境でssh-keygenコマ

ンドで作成)

対になる秘密鍵は親サーバーに配置する

Page 7: Vagrant on SoftLayer

インストール (親サーバーへの操作)

• Vagrant本体

# rpm -ivh https://releases.hashicorp.com/vagrant/1.8.1/vagrant_1.8.1_x86_64.rpm

• SoftLayerプラグイン

# vagrant plugin install vagrant-softlayer

[root@vagrant01 ~]# vagrant plugin install vagrant-softlayer

Installing the 'vagrant-softlayer' plugin. This can take a few minutes...

Installed the plugin 'vagrant-softlayer (0.4.0)'!

[root@vagrant01 ~]# vagrant list

vagrant-share (1.1.5, system)

vagrant-softlayer (0.4.0)

[root@vagrant01 ~]#

Page 8: Vagrant on SoftLayer

設定ファイル(Vagrantfile)にSoftLayer用の設定を追記

README: https://github.com/audiolize/vagrant-softlayer/blob/master/README.md

config.vm.provider :softlayer do | sl, override |sl.api_key = ”xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"sl.username = “xxxxxxxx"sl.datacenter = “che01”sl.dedicated = falsesl.domain = "softlayer.com”sl.disk_capacity = { 0 => 25 }

# sl.private_only = truesl.force_private_ip = truesl.hostname = "vagrant03"sl.hourly_billing = truesl.image_guid = nilsl.local_disk = falsesl.max_memory = 1024sl.network_speed = 100sl.operating_system = "CENTOS_LATEST"sl.ssh_key = [ "tamatest_key" ]sl.start_cpus = 1

override.ssh.username = "root"end

チェンナイDCに1コア/1GBメモリ/25GBディスク/100Mbps NIC/最新

のCentOSでサーバーを作る。サーバー名は

vagrant03.softlayer.com

事前準備1でメモしたSoftLayerのユーザーIDとAPIキー

Private IPのみ付与

Private IP側から操作

Page 9: Vagrant on SoftLayer

vagrant up

[root@vagrant01 vagrant]# vagrant up

Bringing machine 'default' up with 'softlayer' provider...

==> default: Creating a new SoftLayer instance...

==> default: Waiting for instance provisioning. This may take a few minutes...

==> default: SoftLayer instance successfully provisioned!

==> default: Waiting for machine to boot. This may take a few minutes...

(中略)

==> default: Machine booted and ready!

[root@vagrant01 vagrant]# vagrant ssh

[root@vagrant03 ~]#

親サーバー

作成中の対象サーバー

Page 10: Vagrant on SoftLayer

イメージのID(guid)を指定し、テンプレート・イメージからのサーバー作成も可能

# slcli image list

:......................................:....................................................:....................:............:.........:

: guid : name : type : visibility : account :

:......................................:....................................................:....................:............:.........:

: 719113ed-c060-43f3-8c5c-8889f8b4df01 : 25GB - Ubuntu / Ubuntu / 14.04-64 Minimal for VSI : System : Public : 208938 :

: b14a49a2-648b-4cea-9194-17120e98138f : 25GB - Ubuntu / Ubuntu / 12.04-64 Minimal for VSI : System : Public : 208938 :

: 2402ec54-6dd8-4391-846a-772406fa76cd : 25GB - Redhat / EL / 5.5-64 Minimal for VSI : System : Public : 208938 :

: 56c35934-1caa-408f-9e38-b36e4368e3b7 : 100GB - Ubuntu / Ubuntu / 14.04-32 Minimal for VSI : System : Public : 208938 :

: 0e4b036f-8287-4ff9-ac9b-77883c245e49 : 100GB - Redhat / EL / 5.5-32 Minimal for VSI : System : Public : 208938 :

: f5d6c60f-d6cf-4d0b-a424-5e661e2dea47 : 100GB - Debian / Debian / 8.0.0-64 Minimal for VSI : System : Public : 208938 :

Public=誰でも使えるイメージPrivate=自分が取得したイメージ

slcliで確認

Page 11: Vagrant on SoftLayer

config.vm.provider :softlayer do | sl, override |sl.api_key = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"sl.username = “xxxxxxxx"sl.datacenter = “sea01"sl.dedicated = falsesl.domain = "softlayer.com"sl.disk_capacity = { 0 => 25 }sl.force_private_ip = truesl.hostname = "vagrant03"sl.hourly_billing = truesl.image_guid = “719113ed-c060-43f3-8c5c-8889f8b4df01”sl.local_disk = falsesl.max_memory = 1024sl.network_speed = 100sl.operating_system = nilsl.ssh_key = [ "tamatest_key" ]sl.start_cpus = 1

override.ssh.username = "root"end

OSタイプは明示的にNILを指定(guidと両方書いてあるとエラーになる)

イメージのID(guid)を指定し、テンプレート・イメージからのサーバー作成も可能

Page 12: Vagrant on SoftLayer

[root@vagrant01 vagrant]# vagrant upBringing machine 'default' up with 'softlayer' provider...==> default: Creating a new SoftLayer instance...==> default: Waiting for instance provisioning. This may take a few minutes...==> default: SoftLayer instance successfully provisioned!==> default: Waiting for machine to boot. This may take a few minutes...(中略)==> default: Machine booted and ready![root@vagrant01 vagrant]# vagrant sshWelcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-65-generic x86_64)

* Documentation: https://help.ubuntu.com/root@vagrant03:~#

イメージのID(guid)を指定し、テンプレート・イメージからのサーバー作成も可能

Page 13: Vagrant on SoftLayer

Vagrant+shell provision

• vagrant upの処理の中で、親サーバーに置いたスクリプトを、対象サーバー上で実行できる。

• サーバー作成後の定型作業に便利(例:iptablesの設定、OSユーザー作成、ソフトウェアの導入 etc)

• SoftLayerのProvisioning scriptでも同様の事ができるが、スクリプトをHTTPSサーバーに配置しておく必

要がある。→ Vagrantのほうが手軽。

• Vagrantfileに下記を追記

config.vm.provision :shell, :path => "./provisioning.sh",:privileged => true

#!/bin/sh

# yum update all

yum -y update

# install apach webserver

yum install -y httpd

service httpd start

chkconfig httpd on

スクリプト例:

最新のOSパッチを適用し、ウェブサーバーを導入・起動する

Page 14: Vagrant on SoftLayer

Vagrant+chef(ローカルモード)

• OSに Development Tools導入

• Chef Development Kit 導入(chef, ruby, gem)

• Vagrantプラグイン(vagrant-omnibus、vagrant-chef-zero)導入

• Berksfile作成

• Cookbook作成(berks vendor cookbooks)

• Vagrantfileにchef用設定追記

config.vm.provision "chef_zero" do |chef|

# Specify the local paths where Chef data is stored

chef.cookbooks_path = "./chef-repo/cookbooks"

chef.roles_path = "./chef-repo/roles"

chef.nodes_path = "./chef-repo/cookbooks"

# Add a recipe

chef.add_recipe "apache2"

end

[root@vagrant01 chef-repo]# cat Berksfile

source "https://supermarket.chef.io"

cookbook 'apache2'

[root@vagrant01 chef-repo]#

親サーバーに追加設定

Page 15: Vagrant on SoftLayer

Vagrant+chef(ローカルモード)

• vagrant upで、chefのレシピまで実行される環境が作れる。

• VagrantとChefを組み合わせて使うメリット

OS環境による差異をある程度chefが吸収してくれる

既存の資産(recipe、スキル)を使える

Page 16: Vagrant on SoftLayer

参考リンクVagrantでSoftLayerを操作する

http://niccloud.niandc.ne.jp/?p=749

SoftLayer Tips プロビジョニング・スクリプトとSSH鍵でのログイン

https://ibm.biz/BdH4Yu

Vagrant と Chef による仮想環境構築の自動化(VirtualBox編)

https://www.ogis-ri.co.jp/otc/hiroba/technical/vagrant-chef/chap1.html

初めての Vagrant + Chef zero + Berkshelf

http://qiita.com/tsuyopooon/items/d90679d9f8b5ccfcfde5

Chef Zero Provisioner

https://www.vagrantup.com/docs/provisioning/chef_zero.html

Error: Missing required value for `chef.nodes_path'.

https://github.com/r8/vagrant-lamp/issues/134

ソフトレイヤー活用ガイド コマンドでサーバーをオーダーするには?

https://www.change-makers.jp/post/10352

Page 17: Vagrant on SoftLayer

ご清聴ありがとうございました

Page 18: Vagrant on SoftLayer

この資料に含まれる情報は可能な限り正確を期しておりますが、日本アイ・ビー・エム株式会社の正式なレビューを受けておらず、当資料に記載された内容に関して日本アイ・ビー・エムは何ら保証するものではありません。

ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独自の見解を反映したものです。それらは情報提供の目的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助言を意図したものではなく、またそのような結果を生むものでもありません。本講演資料に含まれている情報については、完全性と正確性を期するよう努力しましたが、「現状のまま」提供され、明示または暗示にかかわらずいかなる保証も伴わないものとします。本講演資料またはその他の資料の使用によって、あるいはその他の関連によって、いかなる損害が生じた場合も、IBMは責任を負わないものとします。 本講演資料に含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかなる保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使用を規定する適用ライセンス契約の条項を変更することを意図したものでもなく、またそのような結果を生むものでもありません。

本講演資料でIBM製品、プログラム、またはサービスに言及していても、IBMが営業活動を行っているすべての国でそれらが使用可能であることを暗示するものではありません。本講演資料で言及している製品リリース日付や製品機能は、市場機会またはその他の要因に基づいてIBM独自の決定権をもっていつでも変更できるものとし、いかなる方法においても将来の製品または機能が使用可能になると確約することを意図したものではありません。本講演資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上高の向上、またはその他の結果が生じると述べる、または暗示することを意図したものでも、またそのような結果を生むものでもありません。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使用した測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラミングの量、入出力構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。

記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使用したか、またそれらのお客様が達成した結果の実例として示されたものです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。

IBM, IBM ロゴ、ibm.com, SoftLayerは、世界の多くの国で登録されたInternational Business Machines Corporationの商標です。

他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。

現時点での IBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。