Easy to use Scaleway api client.
Manual instalation:
gem install scalewayadd this to your gemfile:
gem 'scaleway'require'scaleway'Scaleway.organization= <organization_key>
Scaleway.token= <token>
# You can specify the zone, the default zone is 'par1'Scaleway.zone='ams1'# list all serversScaleway::Server.all# list with filterScaleway::Server.allstate: :running# create a new server with default valuesScaleway::Server.create# create a new server with name and tagsScaleway::Server.create:name=>'my_new_server',tags: ['prod']# get a server by idserver=Scaleway::Server.find <server_id>
# edit a serverserver=Scaleway::Server.find <server_id>
server.name='new_name'Scaleway::Server.editserver.id,server# actions on a serverScaleway::Server.power_onserver.idScaleway::Server.power_offserver.idScaleway::Server.terminateserver.id# destroy a serverScaleway::Server.destroyserver.id# list all marketplace imagesScaleway::Marketplace.all# get local image by idimage=Scaleway::Marketplace.find_local_image <marketplace_image_id>
# get local image by marketplace image id for arch armimage=Scaleway::Marketplace.find_local_image <marketplace_image_id>,arch: 'arm'# get local image by nameimage=Scaleway::Marketplace.find_local_image_by_name("Docker")# list all imagesScaleway::Image.all# get image by idimage=Scaleway::Image.find <image_id>
# get image by nameimage=Scaleway::Image.find_by_name('Ubuntu')# create an imageimage=Scaleway::Image.createroot_volume: snapshot# edit an imageimage=Scaleway::Image.editid,image# destroy an imageimage=Scaleway::Image.destroyid# list all volumesScaleway::Volume.all# get volume by idvolume=Scaleway::Volume.find <volume_id>
# create an volumevolume=Scaleway::Volume.createvolume=Scaleway::Volume.createsize: 100 * 10 ** 9,volume_type: 'l_ssd'# edit an volumevolume=Scaleway::Volume.editid,volume# destroy an volumevolume=Scaleway::Volume.destroyid# list all snapshotsScaleway::Volume.all# get snapshot by idsnapshot=Scaleway::Snapshot.find <snapshot_id>
# create an snapshotsnapshot=Scaleway::Snapshot.createvolume_id: id# edit an snapshotsnapshot=Scaleway::Snapshot.editid,snapshot# destroy an snapshotsnapshot=Scaleway::Snapshot.destroyid# list all ip addressesScaleway::Ip.all# get Ipip=Scaleway::Ip.find <ip_id>
ip=Scaleway::Ip.find127.0.0.1# reserve an ipip=Scaleway::Ip.reserve# orip=Scaleway::Ip.create# edit an ipip=Scaleway::Ip.editid,ip# release an ipip=Scaleway::Ip.destroyid# Not foundbeginputsScaleway::Server.find <invalid_id>
rescueScaleway::NotFound=>e# handle error hereend# OtherbeginputsScaleway::Server.createextra_field: ['nope']rescueScaleway::APIError=>e# handle error hereendrequire'scaleway'Scaleway.organization= <organization_key>
Scaleway.token= <token>
# get the docker image from the marketplaceimage=Scaleway::Marketplace.find_local_image_by_name('Docker')# create 5 new servers5.timesdo |x|
Scaleway::Server.createname: "docker#{x}",image: image.id,tags: ['docker']end# power onScaleway::Server.all.eachdo |server|
Scaleway::Server.power_on(server.id)end# do something ...# terminateScaleway::Server.all.eachdo |server|
Scaleway::Server.terminate(server.id)end