Finish section 1 of fog's firstapp tutorial.
Change-Id: I4cffb3574f2f3f9a1b27498f9fbb9b1441950915
This commit is contained in:
parent
a97b508d99
commit
b09b44a717
128
firstapp/samples/fog/getting_started.rb
Normal file → Executable file
128
firstapp/samples/fog/getting_started.rb
Normal file → Executable file
@ -10,18 +10,18 @@ region_name = 'your_region_name'
|
|||||||
conn = Fog::Compute.new({
|
conn = Fog::Compute.new({
|
||||||
:provider => 'openstack',
|
:provider => 'openstack',
|
||||||
:openstack_auth_url => auth_url + '/v2.0/tokens',
|
:openstack_auth_url => auth_url + '/v2.0/tokens',
|
||||||
:openstack_username => auth_username
|
:openstack_username => auth_username,
|
||||||
:openstack_tenant => project_name
|
:openstack_tenant => project_name,
|
||||||
:openstack_api_key => auth_password
|
:openstack_api_key => auth_password,
|
||||||
})
|
})
|
||||||
|
|
||||||
# step-2
|
# step-2
|
||||||
images = conn.list_images
|
images = conn.images.all
|
||||||
print images.body
|
print images
|
||||||
|
|
||||||
# step-3
|
# step-3
|
||||||
flavors = conn.list_flavors
|
flavors = conn.flavors.all
|
||||||
print flavors.body
|
print flavors
|
||||||
|
|
||||||
# step-4
|
# step-4
|
||||||
image_id = '2cccbea0-cea9-4f86-a3ed-065c652adda5'
|
image_id = '2cccbea0-cea9-4f86-a3ed-065c652adda5'
|
||||||
@ -30,26 +30,128 @@ print image
|
|||||||
|
|
||||||
# step-5
|
# step-5
|
||||||
flavor_id = '3'
|
flavor_id = '3'
|
||||||
image = conn.flavor.get flavor_id
|
flavor = conn.flavors.get flavor_id
|
||||||
print flavor
|
print flavor
|
||||||
|
|
||||||
# step-6
|
# step-6
|
||||||
instance_name = 'testing'
|
instance_name = 'testing'
|
||||||
testing_instance = conn.servers.create(:name => instance_name, :flavor_ref => flavor.id, :image_ref => image.id)
|
testing_instance = conn.servers.create(:name => instance_name,
|
||||||
|
:flavor_ref => flavor.id,
|
||||||
|
:image_ref => image.id)
|
||||||
|
|
||||||
# step-7
|
# step-7
|
||||||
conn.servers
|
print conn.servers
|
||||||
|
|
||||||
# step-8
|
# step-8
|
||||||
testing_instance.destroy
|
testing_instance.destroy
|
||||||
|
|
||||||
# step-9
|
# step-9
|
||||||
|
key_pair_name = "demokey"
|
||||||
|
|
||||||
|
pub_key_file = "~/.ssh/id_rsa.pub"
|
||||||
|
|
||||||
|
puts "Checking for existing SSH keypair"
|
||||||
|
|
||||||
|
for pair in conn.key_pairs.all()
|
||||||
|
if pair.name == key_pair_name
|
||||||
|
key_pair = pair
|
||||||
|
puts "Key pair \"" + key_pair.name + "\" exists, skipping
|
||||||
|
import"
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not key_pair
|
||||||
|
puts "Uploading keypair from ~/.ssh/id_rsa.pub"
|
||||||
|
key_file = File.open(File.expand_path(pub_key_file))
|
||||||
|
public_key = key_file.read
|
||||||
|
key_pair = conn.key_pairs.create :name => key_pair_name,
|
||||||
|
:public_key => public_key
|
||||||
|
end
|
||||||
|
|
||||||
# step-10
|
# step-10
|
||||||
all_in_one_security_group = conn.create_security_group 'all-in-one' 'network access for all-in-one application.'
|
for security_group in conn.security_groups.all
|
||||||
conn.create_security_group_rule all_in_one_security_group 'TCP' 80 80
|
if security_group.name == 'all-in-one'
|
||||||
conn.create_security_group_rule all_in_one_security_group 'TCP' 22 22
|
all_in_one_security_group = security_group
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not all_in_one_security_group
|
||||||
|
conn.create_security_group 'all-in-one',
|
||||||
|
'network access for all-in-one application.'
|
||||||
|
for security_group in conn.security_groups.all
|
||||||
|
if security_group.name == 'all-in-one'
|
||||||
|
all_in_one_security_group = security_group
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
conn.security_group_rules.create :ip_protocol => 'TCP',
|
||||||
|
:from_port => 22,
|
||||||
|
:to_port => 22,
|
||||||
|
:parent_group_id => all_in_one_security_group.id
|
||||||
|
conn.security_group_rules.create :ip_protocol => 'TCP',
|
||||||
|
:from_port => 80,
|
||||||
|
:to_port => 80,
|
||||||
|
:parent_group_id => all_in_one_security_group.id
|
||||||
|
end
|
||||||
|
|
||||||
# step-11
|
# step-11
|
||||||
|
userdata = "#!/usr/bin/env bash
|
||||||
|
curl -L -s https://git.openstack.org/cgit/stackforge/faafo/plain/contrib/install.sh \
|
||||||
|
| bash -s -- \ -i faafo -i messaging -r api -r worker -r demo"
|
||||||
|
|
||||||
# step-12
|
# step-12
|
||||||
|
puts "Checking for existing instance"
|
||||||
|
for server in conn.servers.all
|
||||||
|
if server.name == instance_name
|
||||||
|
instance = server
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not instance
|
||||||
|
puts "No test instance found, creating one now"
|
||||||
|
instance = conn.servers.create :name => instance_name,
|
||||||
|
:flavor_ref => flavor.id,
|
||||||
|
:image_ref => image.id,
|
||||||
|
:key_name => key_pair.name,
|
||||||
|
:user_data => userdata,
|
||||||
|
:security_groups => all_in_one_security_group
|
||||||
|
end
|
||||||
|
|
||||||
|
until instance.ready?
|
||||||
|
for server in conn.servers
|
||||||
|
if server.name == instance.name
|
||||||
|
instance = server
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# step-13
|
# step-13
|
||||||
|
puts "Checking for unused Floating IP..."
|
||||||
|
for address in conn.addresses.all()
|
||||||
|
if not address.instance_id
|
||||||
|
ip_address = address
|
||||||
|
puts "Unused IP " + ip_address.ip + " found, it will be used
|
||||||
|
instead of creating a new IP"
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not ip_address
|
||||||
|
puts "Allocating new Floating IP"
|
||||||
|
ip_address = conn.addresses.create()
|
||||||
|
end
|
||||||
|
|
||||||
|
# step-14
|
||||||
|
if instance.public_ip_addresses.length > 0
|
||||||
|
puts "Instance already has a floating IP address"
|
||||||
|
else
|
||||||
|
instance.associate_address(ip_address.ip)
|
||||||
|
end
|
||||||
|
|
||||||
|
# step-15
|
||||||
|
puts "Fractals app will be deployed to http://#{ip_address.ip}"
|
||||||
|
@ -189,6 +189,7 @@ to run code snippets in your language of choice.
|
|||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. literalinclude:: ../samples/fog/getting_started.rb
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
:start-after: step-1
|
:start-after: step-1
|
||||||
:end-before: step-2
|
:end-before: step-2
|
||||||
|
|
||||||
@ -289,6 +290,7 @@ To list the images that are available in your cloud, run some API calls:
|
|||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. literalinclude:: ../samples/fog/getting_started.rb
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
:start-after: step-2
|
:start-after: step-2
|
||||||
:end-before: step-3
|
:end-before: step-3
|
||||||
|
|
||||||
@ -382,6 +384,7 @@ You can also get information about available flavors:
|
|||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. literalinclude:: ../samples/fog/getting_started.rb
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
:start-after: step-3
|
:start-after: step-3
|
||||||
:end-before: step-4
|
:end-before: step-4
|
||||||
|
|
||||||
@ -499,6 +502,7 @@ image that you picked in the previous section:
|
|||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. literalinclude:: ../samples/fog/getting_started.rb
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
:start-after: step-4
|
:start-after: step-4
|
||||||
:end-before: step-5
|
:end-before: step-5
|
||||||
|
|
||||||
@ -580,6 +584,7 @@ Next, choose which flavor you want to use:
|
|||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. literalinclude:: ../samples/fog/getting_started.rb
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
:start-after: step-5
|
:start-after: step-5
|
||||||
:end-before: step-6
|
:end-before: step-6
|
||||||
|
|
||||||
@ -682,6 +687,7 @@ Create the instance.
|
|||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. literalinclude:: ../samples/fog/getting_started.rb
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
:start-after: step-6
|
:start-after: step-6
|
||||||
:end-before: step-7
|
:end-before: step-7
|
||||||
|
|
||||||
@ -745,6 +751,7 @@ If you list existing instances:
|
|||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. literalinclude:: ../samples/fog/getting_started.rb
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
:start-after: step-7
|
:start-after: step-7
|
||||||
:end-before: step-8
|
:end-before: step-8
|
||||||
|
|
||||||
@ -892,6 +899,7 @@ money. Destroy cloud resources to avoid unexpected expenses.
|
|||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. literalinclude:: ../samples/fog/getting_started.rb
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
:start-after: step-8
|
:start-after: step-8
|
||||||
:end-before: step-9
|
:end-before: step-9
|
||||||
|
|
||||||
@ -952,7 +960,14 @@ instance:
|
|||||||
|
|
||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. warning:: This section has not been completed.
|
In the following example, :code:`pub_key_file` should be set to
|
||||||
|
the location of your public SSH key file.
|
||||||
|
|
||||||
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
|
:start-after: step-9
|
||||||
|
:end-before: step-10
|
||||||
|
|
||||||
|
|
||||||
.. only:: libcloud
|
.. only:: libcloud
|
||||||
|
|
||||||
@ -993,6 +1008,7 @@ instance:
|
|||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. literalinclude:: ../samples/fog/getting_started.rb
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
:start-after: step-10
|
:start-after: step-10
|
||||||
:end-before: step-11
|
:end-before: step-11
|
||||||
|
|
||||||
@ -1021,7 +1037,10 @@ instance:
|
|||||||
|
|
||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. warning:: This section has not been completed.
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
|
:start-after: step-11
|
||||||
|
:end-before: step-12
|
||||||
|
|
||||||
.. only:: libcloud
|
.. only:: libcloud
|
||||||
|
|
||||||
@ -1051,7 +1070,10 @@ request the instance, wait for it to build.
|
|||||||
|
|
||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. warning:: This section has not been completed.
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
|
:start-after: step-12
|
||||||
|
:end-before: step-13
|
||||||
|
|
||||||
.. only:: libcloud
|
.. only:: libcloud
|
||||||
|
|
||||||
@ -1091,7 +1113,18 @@ address to your instance.
|
|||||||
|
|
||||||
.. only:: fog
|
.. only:: fog
|
||||||
|
|
||||||
.. warning:: This section has not been completed.
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
|
:start-after: step-13
|
||||||
|
:end-before: step-14
|
||||||
|
|
||||||
|
This will get an ip address that you can assign to your instance
|
||||||
|
with:
|
||||||
|
|
||||||
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
|
:start-after: step-14
|
||||||
|
:end-before: step-15
|
||||||
|
|
||||||
.. only:: libcloud
|
.. only:: libcloud
|
||||||
|
|
||||||
@ -1155,6 +1188,12 @@ time. Consider enjoying a cup of coffee while you wait. After the application
|
|||||||
deploys, you can visit the awesome graphic interface at the following link
|
deploys, you can visit the awesome graphic interface at the following link
|
||||||
by using your preferred browser.
|
by using your preferred browser.
|
||||||
|
|
||||||
|
.. only:: fog
|
||||||
|
|
||||||
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
|
:start-after: step-15
|
||||||
|
|
||||||
.. only:: libcloud
|
.. only:: libcloud
|
||||||
|
|
||||||
.. literalinclude:: ../samples/libcloud/getting_started.py
|
.. literalinclude:: ../samples/libcloud/getting_started.py
|
||||||
@ -1206,6 +1245,11 @@ as a single script.
|
|||||||
Before you run this script, confirm that you have set your authentication
|
Before you run this script, confirm that you have set your authentication
|
||||||
information, the flavor ID, and image ID.
|
information, the flavor ID, and image ID.
|
||||||
|
|
||||||
|
.. only:: fog
|
||||||
|
|
||||||
|
.. literalinclude:: ../samples/fog/getting_started.rb
|
||||||
|
:language: ruby
|
||||||
|
|
||||||
.. only:: libcloud
|
.. only:: libcloud
|
||||||
|
|
||||||
.. literalinclude:: ../samples/libcloud/getting_started.py
|
.. literalinclude:: ../samples/libcloud/getting_started.py
|
||||||
|
Loading…
x
Reference in New Issue
Block a user