
list ssh_keys and create disk add models and requests for create computer create server at once add bin and route file update create_with write getting_started wip. and create helper methods. add sakura to mock_helper add bin and route file write getting_started wip. and create helper methods. add mocks and test create tests and write getting started writenig provider for sakuracloud ,wip list ssh_keys and create disk add models and requests for create computer create server at once add bin and route file update create_with write getting_started wip. and create helper methods. add sakura to mock_helper add bin and route file write getting_started wip. and create helper methods. add mocks and test create tests and write getting started mv getting_started to docs mv getting_started to docs use snake_case for models fix: wrong usage of :aliases update doc. replace to snake_case from class update mocks format Fix: remove commas for Ruby 1.8.7 duplicate example use create method with option if atatch volume remove empty line (checking travis works..) fix args for core/provider.rb#service
11 KiB
Getting started for SakuraCloud
Links
- Product Information: http://cloud.sakura.ad.jp/
- API Reference(1.1): http://developer.sakura.ad.jp/cloud/api/1.1/
Requeirement
- API TOKEN
- API TOKEN SECRET
You can retreave them from dashboard.
Resources
Service | Class | Description |
---|---|---|
Volume(disk) | Fog::Volume::SakuraCloud | Block device for server. |
Compute | Fog::Compute::SakuraCloud | Server. |
Simple start
Inital boot from template with ssh key.
require 'fog'
compute = Fog::Compute::SakuraCloud.new(
:sakuracloud_api_token => 'YOUR_API_TOKEN',
:sakuracloud_api_token_secret => 'YOUR_API_TOKEN_SECRET'
)
server = compute.servers.create({
:sakuracloud_api_token => 'YOUR_API_TOKEN',
:sakuracloud_api_token_secret => 'YOUR_API_TOKEN_SECRET',
:sshkey => '11260003****', # Your SSH Key id
:serverplan => '2001', # Server Type
:volume => {
:diskplan => 4, # Type SSD
:sourcearchive => '112500463685' # Ubuntu12.04
},
:boot => true
})
You can login or integrate with configuration management tools to server at once.
Services
Usage for SakuraCloud Services.
Volume(disk) Service
Initailize Volume service.
require 'fog'
volume = Fog::Volume::SakuraCloud.new(
:sakuracloud_api_token => 'YOUR_API_TOKEN',
:sakuracloud_api_token_secret => 'YOUR_API_TOKEN_SECRET'
)
or initailize with Fog.credentials
Fog.credentials[:sakuracloud_api_token] = 'YOUR_API_TOKEN'
Fog.credentials[:sakuracloud_api_token_secret] = 'YOUR_API_TOKEN_SECRET'
volume = Fog::Volume[:sakuracloud]
Listing disk plans
use volume.plans
.
> volume.plans
=> [ <Fog::Volume::SakuraCloud::Plan
id=4,
name="SSDプラン"
>,
<Fog::Volume::SakuraCloud::Plan
id=2,
name="標準プラン"
>]
Listing volume templates(archives)
use volume.archives
.
require 'fog'
volume = Fog::Volume::SakuraCloud.new(
:sakuracloud_api_token => 'YOUR_API_TOKEN',
:sakuracloud_api_token_secret => 'YOUR_API_TOKEN_SECRET'
)
> volume.archives
=> [ <Fog::Volume::SakuraCloud::Archive
id="112500514887",
name="CentOS 5.10 64bit (基本セット)"
>,
<Fog::Volume::SakuraCloud::Archive
id="112500571575",
name="CentOS 6.5 64bit (基本セット)"
>,
<Fog::Volume::SakuraCloud::Archive
id="112500556904",
name="Scientific Linux 6.4 64bit (基本セット)"
>,
<Fog::Volume::SakuraCloud::Archive
id="112500587018",
name="Scientific Linux 6.5 RC1 64bit (基本セット)"
>,
<Fog::Volume::SakuraCloud::Archive
id="112500556903",
name="FreeBSD 8.3 64bit (基本セット)"
>,
<Fog::Volume::SakuraCloud::Archive
id="112500556906",
name="FreeBSD 9.1 64bit (基本セット)"
>,
<Fog::Volume::SakuraCloud::Archive
id="112500556907",
name="Ubuntu Server 13.04 64bit (基本セット)"
>,
<Fog::Volume::SakuraCloud::Archive
id="112500463685",
name="Ubuntu Server 12.04.3 LTS 64bit (基本セット)"
>,
<Fog::Volume::SakuraCloud::Archive
id="112500490219",
name="Ubuntu Server 13.10 64bit(基本セット)"
>,
<Fog::Volume::SakuraCloud::Archive
id="112500556909",
name="Debian GNU/Linux 6.0.7 64bit (基本セット)"
>,
-- snip --
Create volume from templates(archives)
use volume.disks.create
with :name
, :plan
(Plan id) and :source_archive
(id, optional)
Example: Create SSD installed 'Ubuntu 12.04'.
disk = volume.disks.create :name => 'foobar',
:plan => 4, # Type SSD
:source_archive => 112500463685 # Ubuntu12.04
It creates disk.
=> <Fog::Volume::SakuraCloud::Disk
id="112600053876",
name="foobar",
Connection="virtio",
Availability="migrating",
Plan={"id"=>4, "StorageClass"=>"iscsi1204", "name"=>"SSDプラン"},
SizeMB=20480,
SourceDisk=nil,
SourceArchive={"id"=>"112500463685", "name"=>"Ubuntu Server 12.04.3 LTS 64bit (基本セット)", "Availability"=>"available", "SizeMB"=>20480, "Plan"=>{"id"=>2, "StorageClass"=>"iscsi1204", "name"=>"標準プラン"}, "Storage"=>{"id"=>"3100297001", "Class"=>"iscsi1204", "name"=>"sac-is1b-arc-st01", "Zone"=>{"id"=>31002, "name"=>"is1b", "Region"=>{"id"=>310, "name"=>"石狩"}}, "DiskPlan"=>{"id"=>2, "StorageClass"=>"iscsi1204", "name"=>"標準プラン"}}, "BundleInfo"=>nil}
>
Listing available disks
use volume.disks
> volume.disks
=> [ <Fog::Volume::SakuraCloud::Disk
id="112600053837",
name="ed86efca-d7f1-4367-97df-30e16c4f331e",
Connection="virtio",
Availability="available",
Plan={"id"=>4, "StorageClass"=>"iscsi1204", "name"=>"SSDプラン"},
SizeMB=20480,
SourceDisk=nil,
SourceArchive={"id"=>"112500463685", "name"=>"Ubuntu Server 12.04.3 LTS 64bit (基本セット)", "Availability"=>"available", "SizeMB"=>20480, "Plan"=>{"id"=>2, "StorageClass"=>"iscsi1204", "Na
>,
<Fog::Volume::SakuraCloud::Disk
id="112600053840",
name="2a3f571a-2562-49e1-a4ea-86f7cf34c571",
Connection="virtio",
Availability="available",
Plan={"id"=>4, "StorageClass"=>"iscsi1204", "name"=>"SSDプラン"},
SizeMB=20480,
SourceDisk=nil,
SourceArchive={"id"=>"112500463685", "name"=>"Ubuntu Server 12.04.3 LTS 64bit (基本セット)", "Availability"=>"available", "SizeMB"=>20480, "Plan"=>{"id"=>2, "StorageClass"=>"iscsi1204", "Na
>,
-- snip --
Get Disk id or any attributes.
> volume.disks.first.id
=> "112600053837"
> volume.disks.first.SizeMB
=> 20480
or
> disk = volume.disks.first
> disk.id
=> "112600053837"
You can reload disk attributes.
> disk.reload
=> <Fog::Volume::SakuraCloud::Disk
id="112600053837",
name="ed86efca-d7f1-4367-97df-30e16c4f331e",
Connection="virtio",
Availability="available",
Plan={"id"=>4, "StorageClass"=>"iscsi1204", "name"=>"SSDプラン"},
SizeMB=20480,
SourceDisk=nil,
SourceArchive={"id"=>"112500463685", "name"=>"Ubuntu Server 12.04.3 LTS 64bit (基本セット)", "Availability"=>"available", "SizeMB"=>20480, "Plan"=>{"id"=>2, "StorageClass"=>"iscsi1204", "name"=>"標準プラン"}, "Storage"=>{"id"=>"3100297001", "Class"=>"iscsi1204", "name"=>"sac-is1b-arc-st01", "Zone"=>{"id"=>31002, "name"=>"is1b", "Region"=>{"id"=>310, "name"=>"石狩"}}, "DiskPlan"=>{"id"=>2, "StorageClass"=>"iscsi1204", "name"=>"標準プラン"}}, "BundleInfo"=>nil}
>
Delete disk
use volume.disks.delete('Disk_id')
> volume.disks.delete('112600053837')
=> true
or execute delete method for disk.
> volume.disks.first.delete
=> true
Example: Delete all disks
> volume.disks.each {|d| d.delete}
SSH Key Service (Part of the Compute Service)
Initailize Compute service.
require 'fog'
compute = Fog::Compute::SakuraCloud.new(
:sakuracloud_api_token => 'YOUR_API_TOKEN',
:sakuracloud_api_token_secret => 'YOUR_API_TOKEN_SECRET'
)
Listing SSH Keys
use compute.ssh_keys
> compute.ssh_keys
=> [ <Fog::Compute::SakuraCloud::SshKey
id="11260003****",
name="sawanobori",
PublicKey="ssh-rsa ***********************"
>]
Add SSH Key to disk.
Work with Volume service.
use configure
method with SSH Key id.
Example
> volume.disks.first.configure(11260003****)
=> true
Compute Service
Initailize Compute service.
require 'fog'
compute = Fog::Compute::SakuraCloud.new(
:sakuracloud_api_token => 'YOUR_API_TOKEN',
:sakuracloud_api_token_secret => 'YOUR_API_TOKEN_SECRET'
)
or initailize with Fog.credentials
Fog.credentials[:sakuracloud_api_token] = 'YOUR_API_TOKEN'
Fog.credentials[:sakuracloud_api_token_secret] = 'YOUR_API_TOKEN_SECRET'
volume = Fog::Compute[:sakuracloud]
Listing server plans
use compute.plans
.
> compute.plans
=> [ <Fog::Compute::SakuraCloud::Plan
id=1001,
name="プラン/1Core-1GB",
ServiceClass="cloud/plan/1core-1gb",
CPU=1,
MemoryMB=1024
>,
<Fog::Compute::SakuraCloud::Plan
id=2001,
name="プラン/1Core-2GB",
ServiceClass="cloud/plan/1core-2gb",
CPU=1,
MemoryMB=2048
>,
-- snip --
Listing zones
use compute.zones
.
> compute.zones
=> [ <Fog::Compute::SakuraCloud::Zone
id=31001,
name="is1a",
Description="石狩第1ゾーン"
>,
<Fog::Compute::SakuraCloud::Zone
id=31002,
name="is1b",
Description="石狩第2ゾーン"
>]
Create server
use volume.servers.create
with :name
, :ServerPlan
(Plan id)
Example: Create server with public switch connection.
server = compute.servers.create :name => 'foobar',
:ServerPlan => 2001
It creates server.
=> <Fog::Compute::SakuraCloud::Server
id="112600055437",
name="foobar",
ServerPlan={"id"=>2001, "name"=>"プラン/1Core-2GB", "CPU"=>1, "MemoryMB"=>2048, "ServiceClass"=>"cloud/plan/1core-2gb", "Availability"=>"available"},
Instance={"Server"=>{"id"=>"112600055437"}, "Status"=>"down", "BeforeStatus"=>nil, "StatusChangedAt"=>nil, "MigrationProgress"=>nil, "MigrationSchedule"=>nil, "IsMigrating"=>nil, "MigrationAllowed"=>nil, "ModifiedAt"=>"2014-01-30T23:54:47+09:00", "Host"=>nil, "CDROM"=>nil, "CDROMStorage"=>nil},
Disks=[],
Interfaces=[{"id"=>"112600055438", "MACAddress"=>"9C:A3:BA:30:13:28", "IPAddress"=>"133.242.236.247", "UserIPAddress"=>nil, "Hostname"=>nil, "Switch"=>{"id"=>"112500556860", "name"=>"スイッチ", "Scope"=>"shared", "Subnet"=>{"id"=>nil, "NetworkAddress"=>"133.242.236.0", "NetworkMaskLen"=>24, "DefaultRoute"=>"133.242.236.1", "Internet"=>{"BandWidthMbps"=>100}}, "UserSubnet"=>nil}, "PacketFilter"=>nil}]
>
Listing available servers
use compute.servers
> compute.servers
=> [ <Fog::Compute::SakuraCloud::Server
id="112600055437",
name="foobar",
ServerPlan={"id"=>2001, "name"=>"プラン/1Core-2GB", "CPU"=>1, "MemoryMB"=>2048, "ServiceClass"=>"cloud/plan/1core-2gb", "Availability"=>"available"},
Instance={"Server"=>{"id"=>"112600055437"}, "Status"=>"down", "BeforeStatus"=>nil, "StatusChangedAt"=>nil, "MigrationProgress"=>nil, "MigrationSchedule"=>nil, "IsMigrating"=>nil, "MigrationAllowed"=>nil, "ModifiedAt"=>"2014-01-30T23:54:47+09:00", "Host"=>nil, "CDROM"=>nil, "CDROMStorage"=>nil},
Disks=[],
Interfaces=[{"id"=>"112600055438", "MACAddress"=>"9C:A3:BA:30:13:28", "IPAddress"=>"133.242.236.247", "UserIPAddress"=>nil, "Hostname"=>nil, "Switch"=>{"id"=>"112500556860", "name"=>"スイッチ", "Scope"=>"shared", "Subnet"=>{"id"=>nil, "NetworkAddress"=>"133.242.236.0", "NetworkMaskLen"=>24, "DefaultRoute"=>"133.242.236.1", "Internet"=>{"BandWidthMbps"=>100}}, "UserSubnet"=>nil}, "PacketFilter"=>nil}]
>]
Boot or stop servers
execute boot/stop method for server.
Example: boot server
> compute.servers.first.boot
=> true
Example: stop server
> compute.servers.first.stop
=> true
force stop
> compute.servers.first.stop(true)
=> true