User Tools

Site Tools


cloud:intro

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
cloud:intro [2019/12/09 08:04] chudlercloud:intro [2020/01/17 12:04] kauffman
Line 82: Line 82:
 Use your favorite package manager on your own computer. Pip is preferred because the upstream packages it for themselves and it is in pure python. The general CS infrastructure will become a managed client for you to use in the near future (e.g., linux.cs.uchicago.edu). However, our experience has been that the software installs cleanly and is free from dependency problems. Use your favorite package manager on your own computer. Pip is preferred because the upstream packages it for themselves and it is in pure python. The general CS infrastructure will become a managed client for you to use in the near future (e.g., linux.cs.uchicago.edu). However, our experience has been that the software installs cleanly and is free from dependency problems.
  
-Try: <code>pip install python-openstackclient</code>+Try: <code>python3 -m pip install --user python-openstackclient</code>
  
 == PRELIMINARY SETUP == == PRELIMINARY SETUP ==
Line 146: Line 146:
 You are free to use the Network called __cloud__, if you don't need your hosts to be L2 isolated from other people, and you would like to proceed directly to creating servers. You are free to use the Network called __cloud__, if you don't need your hosts to be L2 isolated from other people, and you would like to proceed directly to creating servers.
 Using the __cloud__ network cuts down your complexity significantly, and can be changed later, or mixed with other modes at your leisure. Please talk with us if you want to attach a Router to the __cloud__ network. Using the __cloud__ network cuts down your complexity significantly, and can be changed later, or mixed with other modes at your leisure. Please talk with us if you want to attach a Router to the __cloud__ network.
-<code>openstack network list</code>+ 
 +<code> 
 +openstack network list 
 +</code>
  
 [EDITOR NOTE: This section should be isolated from the main body] [EDITOR NOTE: This section should be isolated from the main body]
Line 153: Line 156:
  
 Should you want to create a network of your own that your hosts will be on, not all of these options are necessary Should you want to create a network of your own that your hosts will be on, not all of these options are necessary
-<code>openstack network create mynet  --provider-network-type geneve  --enable-port-security --internal</code>+<code> 
 +openstack network create mynet 
 +  --provider-network-type geneve 
 +  --enable-port-security 
 +  --internal 
 +</code>
  
 Now create a subnet for your network. This is mandatory for launching instances in the network that you just created. Now create a subnet for your network. This is mandatory for launching instances in the network that you just created.
Line 163: Line 171:
 You are now advised that there is no "correct" choice for subnet range and IP. Overlaps are **not** a concern unless you intend to perform route/tunneling among the overlapping regions. You are now advised that there is no "correct" choice for subnet range and IP. Overlaps are **not** a concern unless you intend to perform route/tunneling among the overlapping regions.
  
-<code>openstack subnet create --network mynet --ip-version 4 --subnet-range 192.168.222.0/24 --allocation-pool start=192.168.222.10,end=192.168.222.240 --dns-nameserver 128.135.164.141 mysubnet --gateway 192.168.222.1 --dhcp</code>+<code> 
 +openstack subnet create 
 +  --network mynet 
 +  --ip-version 4 
 +  --subnet-range 192.168.222.0/24 
 +  --allocation-pool start=192.168.222.10,end=192.168.222.240 
 +  --dns-nameserver 128.135.164.141 mysubnet 
 +  --gateway 192.168.222.1 
 +  --dhcp 
 +</code>
  
 After creating your own network and subnet(s), a router is also needed. However, a router is **not** needed if your instances only talk to each other. The router will take the gateway of your subnet automatically, and allow clients to access the internet via outbound NAT. Much more is possible, and a router is a prerequisite for the next step, which is inbound NAT (DNAT). After creating your own network and subnet(s), a router is also needed. However, a router is **not** needed if your instances only talk to each other. The router will take the gateway of your subnet automatically, and allow clients to access the internet via outbound NAT. Much more is possible, and a router is a prerequisite for the next step, which is inbound NAT (DNAT).
-<code>openstack router create --enable myrouter 
-openstack router add subnet mysubnet</code> 
  
-With the router created and attached to your subnet, develop it further. First, you need to obtain a free IP address on the UC Campus. We call this network __campus37__. 
-<code>openstack floating ip create campus37</code> 
-The output of the command is shown below. Take note of the IP Address: 
 <code> <code>
-+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +openstack router create --enable myrouter 
-| Field               | Value                                                                                                                                                                                       | +</code> 
-+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +<code> 
-| created_at          | 2019-12-06T16:49:29Z                                                                                                                                                                        | +openstack router add subnet myrouter mysubnet 
-| description                                                                                                                                                                                                     | +</code>
-| dns_domain          |                                                                                                                                                                                             | +
-| dns_name            |                                                                                                                                                                                             | +
-| fixed_ip_address    | None                                                                                                                                                                                        | +
-| floating_ip_address | 128.135.37.244                                                                                                                                                                              | +
-| floating_network_id | f6a5f729-d5bf-4fa7-9cd9-e4ed23c7d48f                                                                                                                                                        | +
-| id                  | 7110ea40-8c32-4f99-8454-9a091bcd4623                                                                                                                                                        | +
-| location            | Munch({'project': Munch({'domain_name': 'Default', 'domain_id': None, 'name': 'admin', 'id': u'8fa4efd231fa4cfc886b3c55f9efdfa1'}), 'cloud': '', 'region_name': 'regionOne', 'zone': None}) | +
-| name                | 128.135.37.244                                                                                                                                                                              | +
-| port_details        | None                                                                                                                                                                                        | +
-| port_id             | None                                                                                                                                                                                        | +
-| project_id          | 8fa4efd231fa4cfc886b3c55f9efdfa1                                                                                                                                                            | +
-| qos_policy_id       | None                                                                                                                                                                                        | +
-| revision_number     | 0                                                                                                                                                                                           | +
-| router_id           | None                                                                                                                                                                                        | +
-| status              | DOWN                                                                                                                                                                                        | +
-| subnet_id           | None                                                                                                                                                                                        | +
-| tags                | []                                                                                                                                                                                          | +
-| updated_at          | 2019-12-06T16:49:29Z                                                                                                                                                                        | +
-+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+</code>+
  
-Only you will be able to use this address until you destroy it. **DONT ever take more than you need and free this resource as soon as you project ends.**+With the router created and attached to your own subnet, develop it furtherYou need to obtain a free IP address on the UC Campus. We call this network __campus37__. The Internet-connected subnet on that network is called __public37__.
  
-Give this address to your Router, on a new interface. After this command, the router will have one leg in your subnet and one leg in the public campus network (and internet). The example above gave us 128.135.37.244.+After this command, the router will have one leg in your subnet and one leg in the public campus network (and internet). 
 + 
 +Only you will be able to use this address until you destroy it**DONT ever take more than you need and free this resource as soon as you project ends.**
  
 <code> <code>
-openstack router set --fixed-ip subnet=$(openstack subnet show --format value --column id public37),ip-address=128.135.37.244 --external-gateway campus37 --enable-snat mynet+openstack router set myrouter \ 
 +  --external-gateway campus37 
 +  --enable-snat
 </code> </code>
  
Line 219: Line 216:
  
 Like other openstack activities, creating a server has __many__ complex options and scenarios. This is a simple and ordinary depiction, creating one server Like other openstack activities, creating a server has __many__ complex options and scenarios. This is a simple and ordinary depiction, creating one server
-<code>openstack server create --image bionic-server-cloudimg-amd64.raw --boot-from-volume=32 --flavor m1.small --config-drive=true --user-data=/home/chudler/openstack/cluster_test/cloud-init.yml --network mynet myserver</code>+ 
 +<code> 
 +openstack server create 
 +  --image bionic-server-cloudimg-amd64.raw 
 +  --boot-from-volume=32 
 +  --flavor m1.small 
 +  --config-drive=true 
 +  --user-data=/home/chudler/openstack/cluster_test/cloud-init.yml 
 +  --network mynet 
 +  myserver 
 +</code>
  
 The command executed asynchronously, check the status: The command executed asynchronously, check the status:
  
-<code>openstack server list --name myserver +<code> 
-openstack server show myserver</code>+openstack server list --name myserver 
 +</code> 
 +<code> 
 +openstack server show myserver 
 +</code>
  
 Here's an example for creating 10 of them, as promised (only the change at the end of the command) Here's an example for creating 10 of them, as promised (only the change at the end of the command)
-<code>openstack server create --image bionic-server-cloudimg-amd64.raw --boot-from-volume=32 --flavor m1.small --config-drive=true --user-data=/home/chudler/openstack/cluster_test/cloud-init.yml --network mynet moar --min 10 --max 10</code>+<code> 
 +openstack server create 
 +  --image bionic-server-cloudimg-amd64.raw 
 +  --boot-from-volume=32 
 +  --flavor m1.small 
 +  --config-drive=true 
 +  --user-data=/home/chudler/openstack/cluster_test/cloud-init.yml 
 +  --network mynet 
 +  --min 10 
 +  --max 10 
 +  myserver 
 +</code>
  
 Here's a nasty thing I use to determine what the security group is for a server (it can be determined also by looking at security groups directly) [ITS BRITTLE, BEWARE] Here's a nasty thing I use to determine what the security group is for a server (it can be determined also by looking at security groups directly) [ITS BRITTLE, BEWARE]
  
-<code>SEC_GROUP=$(openstack port list --server `openstack server show --format value --column id myserver` --long --column "Security Groups" --format json | jq '.[]."Security Groups"[]')</code>+<code> 
 +SEC_GROUP=$(openstack port list 
 +  --server `openstack server show --format value --column id myserver` 
 +  --long 
 +  --column "Security Groups" 
 +  --format json 
 +  | jq '.[]."Security Groups"[]' \ 
 +  | sed 's/"//g') 
 +</code>
  
 If I learned the security group successfully, I can let in SSH. By default, **no communication is possible**. If I learned the security group successfully, I can let in SSH. By default, **no communication is possible**.
  
-<code>openstack security group rule create --ingress --dst-port 22 --protocol tcp $SEC_GROUP</code>+<code> 
 +openstack security group rule create 
 +  --ingress 
 +  --dst-port 22 
 +  --protocol tcp $SEC_GROUP 
 +</code>
  
 In actual fact, all of the servers you create will be in the same security group. The above was attempting to suggest effective use of the tools, in combination. In actual fact, all of the servers you create will be in the same security group. The above was attempting to suggest effective use of the tools, in combination.
Line 243: Line 278:
 You could also use the web interface to access the console, but that's not quite the same. You could also use the web interface to access the console, but that's not quite the same.
 As before, in the Network Gear section, get a campus IP address from our pool. As before, in the Network Gear section, get a campus IP address from our pool.
-<code>openstack floating ip create + 
-openstack server add floating ip myserver 128.135.37.XX+ 
 +Where do you want to create your floating IP? 
 +<code> 
 +openstack network list 
 +</code> 
 +Use the network from the previous command: 
 +<code> 
 +openstack floating ip create <network> 
 +</code> 
 +You now have an IP you can use:  
 +<code> 
 +openstack server add floating ip myserver <floating_ip_address>
 </code> </code>
  
/var/lib/dokuwiki/data/pages/cloud/intro.txt · Last modified: 2021/04/15 17:50 by chudler

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki