cloud:cli
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
cloud:cli [2020/05/21 15:53] – chudler | cloud:cli [2021/04/15 16:53] (current) – move Usage to new section chudler | ||
---|---|---|---|
Line 8: | Line 8: | ||
===== CONFIGURATION ===== | ===== CONFIGURATION ===== | ||
- | Use a clouds.yaml file to direct your client. Below is a canonical example, but you __will__ have to modify | + | Use the '' |
- | '' | + | |
- | < | + | |
- | clouds: | + | |
- | openstack: | + | |
- | auth: | + | |
- | auth_url: https:// | + | |
- | username: " | + | |
- | password: " | + | |
- | project_name: | + | |
- | user_domain_name: | + | |
- | region_name: | + | |
- | interface: " | + | |
- | identity_api_version: | + | |
- | </ | + | |
- | The [[ cloud: | + | |
- | You can also download a customized version of this data after you authenticate to the Web Interface (click API Access from the menu and then the button " | + | === Generate New Credentials === |
- | ====== USAGE ====== | + | Instead of taking risks and storing your University credentials in the file, use the [[ https:// |
- | First, Take note of a loose UX pattern that the client has: | + | See the [[ cloud:recipe: |
- | < | + | |
- | openstack $resource $action $more_options_or_flags | + | |
- | </ | + | |
- | + | ||
- | take note and always use help for guidance < | + | |
- | + | ||
- | For example< | + | |
- | + | ||
- | Once you have the software installed and the configuration | + | |
- | + | ||
- | ====== Annotated Example ====== | + | |
- | Read what has been written above before you read this. | + | |
- | + | ||
- | We use this command a lot | + | |
- | < | + | |
- | + | ||
- | ====Images==== | + | |
- | + | ||
- | Images are prebuilt operating systems that are used to launch instances. It is equivalent to a live CD. They are usually a few GB in size. A copy of the disk image is written into the instance' | + | |
- | + | ||
- | There are images that Techstaff provides, some of which are restricted-use. We can build images for you or you can build and upload your own. Our images are generic, bare bones, cloud enabled, popular operating systems, that are a firm foundation for you to customize from. They are often in RAW format, not qcow2, for performance reasons. | + | |
- | + | ||
- | Beware of images that are used internally to provide cloud services. You should not usually launch these directly. You do have access to them for the use of a service, and are welcome to customize for advanced usage. | + | |
- | + | ||
- | < | + | |
- | + | ||
- | ====SSH Keys==== | + | |
- | + | ||
- | Openstack can hold a public key in its db, and insert it into instances when told. This is optional (your author does not use this capability) | + | |
- | < | + | |
- | + | ||
- | ==== Flavors ==== | + | |
- | A flavor is a pre-chosen size for resources that make up an instance. It is a mandatory parameter when creating instances. Look at the available flavors, which your admins have created.\\ | + | |
- | + | ||
- | Servers can grow after creation. For example, the '' | + | |
- | < | + | |
- | + | ||
- | ==== Networks ===== | + | |
- | Look at the Networks that are available. The meaning of an Openstack " | + | |
- | + | ||
- | You are free to use the Network called __cloud__, if you don't need your hosts to be L2 isolated from other users, and you would like to proceed directly to creating servers. | + | |
- | + | ||
- | Using the __cloud__ network cuts down your complexity significantly, | + | |
+ | ==Cloud Name== | ||
+ | For convenience, | ||
< | < | ||
- | openstack | + | export OS_CLOUD=openstack |
</ | </ | ||
- | See also [[ cloud: | + | ====== USAGE ====== |
- | ===== Creating an Instance ===== | + | For more tips and usage information, |
- | You now have all of the prerequisites for launching a virtual computer. These are the prerequisites: | ||
- | |||
- | * Properly prepared Network -- or use the one called '' | ||
- | * Flavor Name | ||
- | * Image Name | ||
- | |||
- | NOTE: you won't be able to SSH into the instance, because the NAT is SNAT. Down below you can read how to add a dedicated public (" | ||
- | |||
- | Like other openstack activities, creating a server has __many__ complex options and scenarios. This is a simple and ordinary depiction, creating one server | ||
- | |||
- | < | ||
- | openstack server create \ | ||
- | --image 20.04 \ | ||
- | --boot-from-volume=32 \ | ||
- | --flavor m1.medium \ | ||
- | --config-drive=true \ | ||
- | --user-data=/ | ||
- | --network cloud \ | ||
- | myserver | ||
- | </ | ||
- | |||
- | The command executed asynchronously, | ||
- | |||
- | < | ||
- | openstack server list --name myserver | ||
- | </ | ||
- | |||
- | < | ||
- | openstack server show myserver | ||
- | </ | ||
- | |||
- | Here's an example for creating 10 of them, as promised (only the change at the end of the command) | ||
- | < | ||
- | openstack server create \ | ||
- | --image 20.04 \ | ||
- | --boot-from-volume=32 \ | ||
- | --flavor m1.medium \ | ||
- | --config-drive=true \ | ||
- | --user-data=/ | ||
- | --network cloud \ | ||
- | --min 10 \ | ||
- | --max 10 \ | ||
- | myserver | ||
- | </ | ||
- | |||
- | ==== Mandatory Firewall Rules ==== | ||
- | If you are using the default security groups, all ingress network communication is dropped. | ||
- | |||
- | 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] | ||
- | |||
- | < | ||
- | SEC_GROUP=$(openstack port list \ | ||
- | --server `openstack server show --format value --column id myserver` \ | ||
- | --long \ | ||
- | --column " | ||
- | --format json \ | ||
- | | jq ' | ||
- | | sed ' | ||
- | </ | ||
- | |||
- | If I learned the security group successfully, | ||
- | |||
- | < | ||
- | openstack security group rule create \ | ||
- | --ingress \ | ||
- | --dst-port 22 \ | ||
- | --protocol tcp $SEC_GROUP | ||
- | </ | ||
- | |||
- | In actual fact, all of the servers you create will be in the same security group, so you will not need to " | ||
- | |||
- | ==== Internet Addresses ==== | ||
- | |||
- | If the server' | ||
- | |||
- | As in [[ cloud: | ||
- | |||
- | Where do you want to create your floating IP? | ||
- | < | ||
- | openstack network list | ||
- | </ | ||
- | |||
- | Use the network from the previous command: | ||
- | < | ||
- | openstack floating ip create campus37 | ||
- | </ | ||
- | |||
- | You now have an IP you can use: | ||
- | < | ||
- | openstack server add floating ip myserver < | ||
- | </ | ||
- | |||
- | At last, you can ssh into 128.135.37.XX. It is important for you to realize that your __local__ server IP does not change (no new interface is given to the instance). Instead, the router on the subnet simply performs DNAT on behalf of the clients. | ||
- | |||
- | Here's another possibility: | ||
- | < | ||
- | |||
- | **Now** your server does have a **new** network interface attached to it, and will be served a DHCP address on it. You will almost certainly have to inform the OS about this manually; the cloud may not help you do that. | ||
- | |||
- | This section added a floating ip address directly to the server. You must realize that a router was needed on the subnet for that to happen. On default subnets, your cloud admin has pre-created suitable routers. The command will fail if you are creating your own subnets and networks without taking similar steps. | ||
- | |||
- | Mixing and matching these techniques will create hilarious disasters. | ||
- | ==== A WORD ABOUT CLOUD INIT ==== | ||
- | Your author uses cloud init extensively and does not contemplate alternative. It is optional. A minimal cloud-init for a modern Ubuntu cloud OS might look like this | ||
- | < | ||
- | # | ||
- | network: | ||
- | version: 2 | ||
- | ethernets: | ||
- | net0: | ||
- | match: | ||
- | name: en* | ||
- | dhcp4: true | ||
- | preserve_hostname: | ||
- | users: | ||
- | - name: ubuntu | ||
- | ssh-authorized-keys: | ||
- | - CONTENTS OF YOUR ssh key .pub file | ||
- | timezone: America/ | ||
- | datasource: | ||
- | | ||
- | metadata_urls: | ||
- | max_wait: -1 | ||
- | timeout: 10 | ||
- | retries: 5 | ||
- | apply_network_config: | ||
- | manage_etc_hosts: | ||
- | manual_cache_clean: | ||
- | </ |
/var/lib/dokuwiki/data/attic/cloud/cli.1590094386.txt.gz · Last modified: 2020/05/21 15:53 by chudler