diff --git a/docs/source/index.rst b/docs/source/index.rst index 4dce0f2..2f93b3e 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -12,4 +12,3 @@ Welcome to Mass Open Cloud's documentation! hardware/index.rst networking/index.rst openshift/index.rst - openstack/index.rst diff --git a/docs/source/openstack/access-the-openstack-dashboard.md b/docs/source/openstack/access-the-openstack-dashboard.md deleted file mode 100644 index e3905fd..0000000 --- a/docs/source/openstack/access-the-openstack-dashboard.md +++ /dev/null @@ -1,15 +0,0 @@ -# Access the OpenStack Dashboard - -The OpenStack Dashboard (Horizon) is located at [https://kaizen.massopen.cloud](https://kaizen.massopen.cloud). - -The MOC supports logging in with you university accounts and it is the reccomended method of authentication. Select "Institution Account" and then "Sign In" - -![](img/openstack_login.png) - -You can now select your university by using the search box and clicking "Log On." You will now be redirected to your institution's website where you can login with your normal credentials. The MOC does not see or have access to your institutional account credentials. To reset "Remember this selection", visit [cilogon.org/me](https://cilogon.org/me) and select "Delete Browser Cookies". - -![](img/cilogon.png) - -Once you login you should see an overview of the resources like instances(vms), CPU, RAM etc. Take some time to just browse around. - -![](img/compute_overview.png) diff --git a/docs/source/openstack/application-credentials.md b/docs/source/openstack/application-credentials.md deleted file mode 100644 index 54585b1..0000000 --- a/docs/source/openstack/application-credentials.md +++ /dev/null @@ -1,48 +0,0 @@ -# Authenticating to OpenStack using application credentials - -## Creating an Application Credential for Kaizen - -1. Go to and log in with your institutional account. -1. Select the project for which you would like to create an application credential from the dropdown, similar to how you switch projects in the Kaizen dashboard. - - ![Example project selection menu](img/onboarding-project-select.png) - -1. Navigate to Identity > Application Credentials in the sidebar. - - ![Image showing application credentials in sidebar](img/onboarding-application-credentials-menu.png) - -1. Click Create Application Credential - - ![Image showing "Create Application Credential" button](img/onboarding-create-application-credential.png) - -1. In the resulting dialog, specify a name, everything else is optional. - - ![Image showing "Create Application Credential" dialog](img/onboarding-create-application-credential-dialog.png) - -1. After creation, you will be prompted to download an RC file or a clouds.yaml file which looks something like the one below: - - ``` - # This is a clouds.yaml file, which can be used by OpenStack tools as a source - # of configuration on how to connect to a cloud. If this is your only cloud, - # just put this file in ~/.config/openstack/clouds.yaml and tools like - # python-openstackclient will just work with no further config. (You will need - # to add your password to the auth section) - # If you have more than one cloud account, add the cloud entry to the clouds - # section of your existing file and you can refer to them by name with - # OS_CLOUD=openstack or --os-cloud=openstack - clouds: - openstack: - - auth: - - auth_url: https://kaizen.massopen.cloud:13000 - - application_credential_id: "..." - application_credential_secret: "..." - - region_name: "moc-kzn" - - interface: "public" - identity_api_version: 3 - auth_type: "v3applicationcredential" - ``` diff --git a/docs/source/openstack/assign-a-floating-ip.md b/docs/source/openstack/assign-a-floating-ip.md deleted file mode 100644 index cb127fc..0000000 --- a/docs/source/openstack/assign-a-floating-ip.md +++ /dev/null @@ -1,76 +0,0 @@ -# Assign A Floating IP - -By attaching a Floating IP to your instance, you can ssh into your vm from your local machine. - -Floating IPs are a limited resource, so your project will have a quota based on its needs. -You should only assign public IPs to VMS that need them. - -To get access to your other VMs, ssh from outside to a VM with a floating IP, then ssh over your private network. - -Make sure you are using key forwarding as described in [Create a Key Pair](Create-a-Key-Pair.html) - -## Allocate a Floating IP - -Navigate to Project -> Compute -> Instances - -Next to Instance Name -> Click Actions dropdown arrow (far right) -> Choose Associate Floating IP - -![](img/floatingip_associate.png) - -If you have some floating IPs already allocated to your project which are not yet associated with a VM, -they will be available in the dropdown list on this screen. - -If you have no floating IPs allocated, or all your allocated IPs are in use already, the dropdown list will be empty. - -![](img/floatingip_none.png) - -Click the + symbol to allocate an IP. You will see the following screen. - -Make sure 'public' appears in the dropdown menu, and that you have not already met your quota of allocated IPs. - -In the example, the project has a quota of 2 floating IPs, but we have not allocated any yet, so we can allocate up to 2 IPs. - -Click Allocate. - -![](img/floatingip_allocate.png) - -You will get a green "success" popup in the top left that shows your public IP address. - -You will get a red error message instead if you attempt to exceed your project's floating IP quota. -*If you have not tried to exceed your quota, but you get a red error message anyway, please contact moc-kaizen-l@bu.edu for help.* - -![](img/floatingip_success.png) - -You can now see the floating IP is attached to your VM on the Instances page: - -![](img/floatingip_is_associated.png) - -## Disassociate a Floating IP - -You may need to disassociate a Floating IP from an instance which no longer needs it, so you can assign it to one that does. - -Navigate to Project -> Compute -> Instances - -Find the instance you want to remove the IP from in the list. Click the red "Disassociate Floating IP" to the right. - -This IP will be disassociated from the instance, but it will still remain allocated to your project. - -![](img/floatingip_disassociate.png) - -## Release a Floating IP - -You may discover that your project does not need all the floating IPs that are allocated to it -(perhaps at one time you used two, but now you only need one). - -If this is the case, you should release the floating IP back to the pool so that other people can use it. - -Navigate to Project -> Compute -> Access and Security -> Floating IPs - -Click the dropdown menu under the "Actions" column next to the IP you are not using, and choose "Release Floating IP". - -The floating IP will be removed from your project. -*Don't release the floating IP if you know in the future you will need the exact same floating IP again. - -Just keep the IP allocated to your project for future use.* - -![](img/floatingip_release.png) diff --git a/docs/source/openstack/clouds.yaml.md b/docs/source/openstack/clouds.yaml.md deleted file mode 100644 index 830b851..0000000 --- a/docs/source/openstack/clouds.yaml.md +++ /dev/null @@ -1,108 +0,0 @@ -# Using clouds.yaml with the OpenStack command line tools - -Traditionally, the OpenStack command line tools were configured using a set of environment variables (`OS_AUTH_URL`, `OS_USERNAME`, etc.), usually delivered in the format of a simple shell script that can be sourced into your current environment. While this works, it becomes hard to manage if you are working with multiple OpenStack environments. The `clouds.yaml` configuration file was developed as an alternative mechanism for storing your OpenStack credentials. A `clouds.yaml` is written using [YAML][] syntax, and at a high level looks like this: - -[YAML]: https://en.wikipedia.org/wiki/YAML - -``` -clouds: - cloud1_name: - ...credentials go here... - cloud2_name: - ...credentials go here... -``` - -See below for some specific examples. The command line tools (and the Python API) look for `clouds.yaml` in the following locations (in this order): - -- Your current directory -- `$HOME/.config/openstack/clouds.yaml` -- `/etc/openstack/clouds.yaml` - -## Using `clouds.yaml` - -Put your `clouds.yaml` file in one of the locations mentioned above (using `$HOME/.config/openstack/clouds.yaml` is probably the most convenient). To interact with a specific cloud, you may either set the `OS_CLOUD` environment variable, or specify a cloud on the command line using the `--os-cloud` option. - -### Using the OS_CLOUD environment variable - -This option is convenient if you are interacting with a single OpenStack environment. - -``` -$ export OS_CLOUD=kaizen -$ openstack flavor list -$ openstack server list -``` - -### Using the --os-cloud command line option - -This option is convenient if you find yourself switching between multiple OpenStack environments. - -``` -$ openstack --os-cloud kaizen flavor list -$ openstack --os-cloud kaizen server list -``` - -## Examples - -### Example 1: Application credentials - -This example shows a `clouds.yaml` file used for authenticating to an OpenStack environment using [application credentials][]. This is what you'll be using if you authenticate using some form of single-signon. - -[application credentials]: https://docs.openstack.org/keystone/queens/user/application_credentials.html - -``` -clouds: - example2: - auth_type: v3applicationcredential - auth: - auth_url: https://cloud.example.com:13000 - application_credential_id: 1234567890ABCDEF1234567890ABCDEF - application_credential_secret: secret - region: RegionOne - interface: public - identity_api_version: 3 -``` - -### Example 2: Two clouds - -This example shows a `clouds.yaml` that contains credentials for two different clouds environments. - -``` -clouds: - cloud1: - auth_type: v3applicationcredential - auth: - auth_url: https://cloud1.example.com:13000 - application_credential_id: 1234567890ABCDEF1234567890ABCDEF - application_credential_secret: secret - region: RegionOne - interface: public - identity_api_version: 3 - cloud2: - auth_type: v3applicationcredential - auth: - auth_url: https:/cloud2.example.com:13000 - application_credential_id: FEDCBA0987654321FEDCBA0987654321 - application_credential_secret: secret - region: RegionOne - interface: public - identity_api_version: 3 -``` - -### Example 3: Username and password - -This example shows a `clouds.yaml` file used for authenticating to an OpenStack environment using a username and password. - -``` -clouds: - example1: - auth: - username: myusername - project_name: myprojectname - password: secret - auth_url: https://kaizen.massopen.cloud:13000 - user_domain_name: Default - project_domain_name: Default - region: RegionOne - interface: public - identity_api_version: 3 -``` diff --git a/docs/source/openstack/create-a-key-pair.md b/docs/source/openstack/create-a-key-pair.md deleted file mode 100644 index 902cb76..0000000 --- a/docs/source/openstack/create-a-key-pair.md +++ /dev/null @@ -1,139 +0,0 @@ -# OpenStack Key Pairs -*NOTE: If you will be using PuTTY on Windows, please read [this first](#ssh-keys-with-putty-on-windows).* - -## Add a Key Pair -For security, the VM images have password authentication disabled by default, so you will need to use an SSH key pair to log in. - -Click Access and Security, then click the Key Pairs tab which appears below it. - -![](img/key_pairs_01.png) - -## Import a Key Pair -Prerequisite: You need ssh installed in your system - -You can create a key pair on your local machine, then upload the public key to the cloud. This is the recommended method. - -Open a terminal and type the following commands (in the example, we have named the key cloud.key, but you can name it anything you want): -```shell - $ cd ~/.ssh - $ ssh-keygen -t rsa -f ~/.ssh/cloud.key -C "label_your_key" -``` -Example: - -![](img/generate_key.png) - -You will be prompted to create a passphrase for the key. -*IMPORTANT: Do not forget the passphrase! If you do, you will be unable to use your key.* - -This process creates two files in your `.ssh` folder: -```shell - cloud.key # private key - don’t share this with anyone, and never upload it anywhere ever - cloud.key.pub # this is your public key -``` -*Pro Tip: The `-C "label"` field is not required, but it is useful to quickly identify different public keys later. - -You could use your email address as the label, or a user@host tag that identifies the computer the key is for. - -For example, if Laura has both a laptop and a desktop computer that she will, -she might use -C "Laura@laptop" to label the key she generates on the laptop, and -C "Laura@desktop" for the desktop.* - -On your terminal: -```shell - $ pbcopy < ~/.ssh/cloud.key.pub #copies the contents of public key to clipboard -``` -Go back to the Openstack Dashboard, where you should still be on the Key Pairs tab - -(If not, find it under Project -> Compute -> Access and Security --> Key Pairs) - -Choose "Import Key Pair" - -Paste the public key that you just copied in the "Public Key" text box. - -Give the key a name in the "Key Pair Name" Box. - -![](img/import_key.png) - -Click "Import Key Pair". You will see your key pair appear in the list. - -![](img/key_pairs_02.png) - -You can now skip ahead to [Adding the key to an ssh-agent](#adding-the-key-to-an-ssh-agent) - -## Create a Key Pair -If you are having trouble creating a key pair with the instructions above, the Openstack dashboard can make one for you. - -Click "Create a Key Pair", and enter a name for the key pair. - -![](img/create_key.png) - -You will be prompted to download a `.pem` file containing your private key. - -In the example, we have named the key 'cloud_key.pem', but you can name it anything. - -Save this file to your hard drive, for example in your Downloads folder. - -![](img/save_key.png) - -Store this key inside the `.ssh` folder on your local machine/laptop, using the following steps: -```shell - $ cd ~/Downloads # Navigate to the folder where you saved the .pem file - $ mv cloud.pem ~/.ssh/ # This command will copy the key you downloaded to your .ssh folder. - $ cd ~/.ssh # Navigate to your .ssh folder - $ chmod 400 cloud.pem # Change the permissions of the file -``` -To see your public key, navigate to Project -> Compute -> Access and Security -> Key Pairs - -You should see your key in the list. - -![](img/key_pairs_03.png) - -Click on the key, and you will see a screen of information that includes your public key: - -![](img/view_public_key.png) - -The public key is the part of the key you distribute to VMs and remote servers. - -You may find it convenient to paste it into a file inside your `.ssh` folder, so you don't always need to log into the website to see it. - -Call the file something like `cloud_key.pub` to distinguish it from your private key. -*Important: Never share your private key with anyone, or upload it to a server!* - -## Adding the key to an ssh-agent -If you have many VMs, you will most likely be using one or two VMs with public IPs as a gateway to others which are not reachable from the internet. - -In order to be able to use your key for multiple SSH hops, do NOT copy your private key to the gateway VM! - -The correct method to use Agent Forwarding, which adds the key to an ssh-agent on your local machine and 'forwards' it over the SSH connection. - -First, add the key to your ssh agent: -```shell - $ cd ~/.ssh - $ ssh-add cloud.pem -``` -Check that it is added with the command -```shell - $ ssh-add -l - 2048 SHA256:D0DLuODzs15j2OaZnA8I52aEeY3exRT2PCsUyAXgI24 /Users/kamfonik/.ssh/cloud.pem (RSA) -``` -Depending on your system, you might have to repeat these steps after you reboot or log out of your computer. - -You can always check if your ssh key is added by running the `ssh-add -l` command. - -A key with the default name id_rsa will be added by default at login, although you will still need to unlock it with your passphrase the first time you use it. - -Once the key is added, you will be able to forward it over an SSH connection, like this: -```shell - $ ssh -A -i cloud.key @ -``` -Connecting via SSH is discussed in more detail later in the tutorial ([SSH to Cloud VM](ssh-to-cloud-vm)); for now, just proceed to the next step below. - -## SSH keys with PuTTY on Windows -PuTTY requires SSH keys to be in its own `ppk` format. To convert between OpenSSH keys used by OpenStack and PuTTY's format, you need a utility called PuTTYgen. - -If it was not installed when you originally installed PuTTY, you can get it here: [Download PuTTY](http://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html). - -You have 2 options for generating keys that will work with PuTTY: - 1. Generate an OpenSSH key with ssh-keygen or from the Horizon GUI using the instructions above, then use PuTTYgen to convert the private key to .ppk - 1. Generate a .ppk key with PuTTYgen, and import the provided OpenSSH public key to OpenStack using the 'Import' instructions above. - -There is a detailed walkthrough of how to use PuTTYgen here: [Use SSH Keys with PuTTY on Windows](https://devops.profitbricks.com/tutorials/use-ssh-keys-with-putty-on-windows/) diff --git a/docs/source/openstack/create-a-router.md b/docs/source/openstack/create-a-router.md deleted file mode 100644 index f5dfe77..0000000 --- a/docs/source/openstack/create-a-router.md +++ /dev/null @@ -1,51 +0,0 @@ -## Create Router -A router acts as a gateway for external connectivity. - -By connecting your private network to the public network via a router, you can connect your instance to the Internet, -install packages, etc. without needing to associate it with a public IP address. - -From the Network Topology page click on Create Router. - -Give your router a name that indicates what project it is attached to. - -From the External Network dropdown, select the 'public' network, and click Create. - -![](img/create_router.png) - -You should now see the router in the Network Topology view. (It also appears under Project -> Network -> Routers). - -Notice that it is now connected to the public network, but not your private network. - -![](img/network_topology_03.png) - -### Set Router Gateway -Navigate to Project -> Network -> Routers. - -Need to setup a gateway to attach router to the Public Network. - -For the new router you just created, click on "Set Gateway" under Actions box. - -Choose the external network "Public". - -![](img/router_gateway.png) - -Click on Set Gateway. - -### Set Internal Interface on the Router -In order to route between your private network and the outside world, you must give the router an interface on your private network. - -From the Network Topology view, click on the router you just created, and click 'Add Interface' on the popup that appears. - -![](img/add_interface_01.png) - -Choose your subnet from drop down list. - -![](img/add_interface_02.png) - -Click "Add Interface." The Router will now appear connected to the private network in Network Topology. - -![](img/network_topology_04.png) - -You can also access more information about the router by navigating to Networks --> Routers and choosing it from the list. - -![](img/routers-interfaces.png) diff --git a/docs/source/openstack/dashboard-overview.md b/docs/source/openstack/dashboard-overview.md deleted file mode 100644 index c1981f4..0000000 --- a/docs/source/openstack/dashboard-overview.md +++ /dev/null @@ -1,29 +0,0 @@ -## OpenStack Dashboard Overview -When you log in you will be taken to the Compute panel which is under the Project tab. - -In the top bar you can see the two tabs in small print: Project and Identity. - -Beneath that in larger print are the three panels: Compute, Network, Object Store. - -On the Compute panel you see an overview of different resources. - -### Compute Panel -Navigate: Project -> Compute -> Overview - -![](img/compute_overview.png) - -Take some time to click through the different tabs under compute, such as Instances. - -### Network Panel -Navigate: Project -> Network -> Network Topology - -Next click on the Network panel. You should see the external public network which has already been created. - -![](img/network_topology_01-lg.png) - -### Object Store Panel -Navigate: Project->Object Store->Container - -In future you would use this tab to create Swift object storage for your projects on a need basis. - -![](img/swift_containers.png) diff --git a/docs/source/openstack/img/access_security_newgroup.png b/docs/source/openstack/img/access_security_newgroup.png deleted file mode 100644 index 58e4810..0000000 Binary files a/docs/source/openstack/img/access_security_newgroup.png and /dev/null differ diff --git a/docs/source/openstack/img/add_interface_01.png b/docs/source/openstack/img/add_interface_01.png deleted file mode 100644 index 9ef541c..0000000 Binary files a/docs/source/openstack/img/add_interface_01.png and /dev/null differ diff --git a/docs/source/openstack/img/add_interface_02.png b/docs/source/openstack/img/add_interface_02.png deleted file mode 100644 index a0dea9a..0000000 Binary files a/docs/source/openstack/img/add_interface_02.png and /dev/null differ diff --git a/docs/source/openstack/img/add_rule.png b/docs/source/openstack/img/add_rule.png deleted file mode 100644 index 138d95e..0000000 Binary files a/docs/source/openstack/img/add_rule.png and /dev/null differ diff --git a/docs/source/openstack/img/base_images_public.png b/docs/source/openstack/img/base_images_public.png deleted file mode 100644 index e0a6afb..0000000 Binary files a/docs/source/openstack/img/base_images_public.png and /dev/null differ diff --git a/docs/source/openstack/img/cilogon.png b/docs/source/openstack/img/cilogon.png deleted file mode 100644 index c8528b9..0000000 Binary files a/docs/source/openstack/img/cilogon.png and /dev/null differ diff --git a/docs/source/openstack/img/compute_overview.png b/docs/source/openstack/img/compute_overview.png deleted file mode 100644 index 49bf08c..0000000 Binary files a/docs/source/openstack/img/compute_overview.png and /dev/null differ diff --git a/docs/source/openstack/img/create_key.png b/docs/source/openstack/img/create_key.png deleted file mode 100644 index 8f41ae9..0000000 Binary files a/docs/source/openstack/img/create_key.png and /dev/null differ diff --git a/docs/source/openstack/img/create_network.png b/docs/source/openstack/img/create_network.png deleted file mode 100644 index 81457cf..0000000 Binary files a/docs/source/openstack/img/create_network.png and /dev/null differ diff --git a/docs/source/openstack/img/create_network_details.png b/docs/source/openstack/img/create_network_details.png deleted file mode 100644 index 5eaed0f..0000000 Binary files a/docs/source/openstack/img/create_network_details.png and /dev/null differ diff --git a/docs/source/openstack/img/create_network_subnet.png b/docs/source/openstack/img/create_network_subnet.png deleted file mode 100644 index b616c5f..0000000 Binary files a/docs/source/openstack/img/create_network_subnet.png and /dev/null differ diff --git a/docs/source/openstack/img/create_router.png b/docs/source/openstack/img/create_router.png deleted file mode 100644 index 1d4e0ac..0000000 Binary files a/docs/source/openstack/img/create_router.png and /dev/null differ diff --git a/docs/source/openstack/img/create_security_group.png b/docs/source/openstack/img/create_security_group.png deleted file mode 100644 index bca7ae1..0000000 Binary files a/docs/source/openstack/img/create_security_group.png and /dev/null differ diff --git a/docs/source/openstack/img/ec2_credentials.png b/docs/source/openstack/img/ec2_credentials.png deleted file mode 100644 index d88eb90..0000000 Binary files a/docs/source/openstack/img/ec2_credentials.png and /dev/null differ diff --git a/docs/source/openstack/img/floatingip_allocate.png b/docs/source/openstack/img/floatingip_allocate.png deleted file mode 100644 index 3f99f99..0000000 Binary files a/docs/source/openstack/img/floatingip_allocate.png and /dev/null differ diff --git a/docs/source/openstack/img/floatingip_associate.png b/docs/source/openstack/img/floatingip_associate.png deleted file mode 100644 index 6336ef0..0000000 Binary files a/docs/source/openstack/img/floatingip_associate.png and /dev/null differ diff --git a/docs/source/openstack/img/floatingip_disassociate.png b/docs/source/openstack/img/floatingip_disassociate.png deleted file mode 100644 index 86347f8..0000000 Binary files a/docs/source/openstack/img/floatingip_disassociate.png and /dev/null differ diff --git a/docs/source/openstack/img/floatingip_is_associated.png b/docs/source/openstack/img/floatingip_is_associated.png deleted file mode 100644 index 2f0d970..0000000 Binary files a/docs/source/openstack/img/floatingip_is_associated.png and /dev/null differ diff --git a/docs/source/openstack/img/floatingip_none.png b/docs/source/openstack/img/floatingip_none.png deleted file mode 100644 index 25994a4..0000000 Binary files a/docs/source/openstack/img/floatingip_none.png and /dev/null differ diff --git a/docs/source/openstack/img/floatingip_release.png b/docs/source/openstack/img/floatingip_release.png deleted file mode 100644 index dadc5ca..0000000 Binary files a/docs/source/openstack/img/floatingip_release.png and /dev/null differ diff --git a/docs/source/openstack/img/floatingip_success.png b/docs/source/openstack/img/floatingip_success.png deleted file mode 100644 index 14f9cf0..0000000 Binary files a/docs/source/openstack/img/floatingip_success.png and /dev/null differ diff --git a/docs/source/openstack/img/floatingips.png b/docs/source/openstack/img/floatingips.png deleted file mode 100644 index 8165763..0000000 Binary files a/docs/source/openstack/img/floatingips.png and /dev/null differ diff --git a/docs/source/openstack/img/generate_key.png b/docs/source/openstack/img/generate_key.png deleted file mode 100644 index 21ce19f..0000000 Binary files a/docs/source/openstack/img/generate_key.png and /dev/null differ diff --git a/docs/source/openstack/img/import_key.png b/docs/source/openstack/img/import_key.png deleted file mode 100644 index d1aeb56..0000000 Binary files a/docs/source/openstack/img/import_key.png and /dev/null differ diff --git a/docs/source/openstack/img/key_pairs_01.png b/docs/source/openstack/img/key_pairs_01.png deleted file mode 100644 index ddb8290..0000000 Binary files a/docs/source/openstack/img/key_pairs_01.png and /dev/null differ diff --git a/docs/source/openstack/img/key_pairs_02.png b/docs/source/openstack/img/key_pairs_02.png deleted file mode 100644 index 4917bbd..0000000 Binary files a/docs/source/openstack/img/key_pairs_02.png and /dev/null differ diff --git a/docs/source/openstack/img/key_pairs_03.png b/docs/source/openstack/img/key_pairs_03.png deleted file mode 100644 index 09f1a7f..0000000 Binary files a/docs/source/openstack/img/key_pairs_03.png and /dev/null differ diff --git a/docs/source/openstack/img/launch_details.png b/docs/source/openstack/img/launch_details.png deleted file mode 100644 index eff01a7..0000000 Binary files a/docs/source/openstack/img/launch_details.png and /dev/null differ diff --git a/docs/source/openstack/img/launch_flavor_01.png b/docs/source/openstack/img/launch_flavor_01.png deleted file mode 100644 index c22afc1..0000000 Binary files a/docs/source/openstack/img/launch_flavor_01.png and /dev/null differ diff --git a/docs/source/openstack/img/launch_flavor_02.png b/docs/source/openstack/img/launch_flavor_02.png deleted file mode 100644 index 1b20162..0000000 Binary files a/docs/source/openstack/img/launch_flavor_02.png and /dev/null differ diff --git a/docs/source/openstack/img/launch_key.png b/docs/source/openstack/img/launch_key.png deleted file mode 100644 index bf743b0..0000000 Binary files a/docs/source/openstack/img/launch_key.png and /dev/null differ diff --git a/docs/source/openstack/img/launch_networks.png b/docs/source/openstack/img/launch_networks.png deleted file mode 100644 index 7d26e07..0000000 Binary files a/docs/source/openstack/img/launch_networks.png and /dev/null differ diff --git a/docs/source/openstack/img/launch_running.png b/docs/source/openstack/img/launch_running.png deleted file mode 100644 index 3a995a5..0000000 Binary files a/docs/source/openstack/img/launch_running.png and /dev/null differ diff --git a/docs/source/openstack/img/launch_security.png b/docs/source/openstack/img/launch_security.png deleted file mode 100644 index 69b6411..0000000 Binary files a/docs/source/openstack/img/launch_security.png and /dev/null differ diff --git a/docs/source/openstack/img/launch_source.png b/docs/source/openstack/img/launch_source.png deleted file mode 100644 index 142dfda..0000000 Binary files a/docs/source/openstack/img/launch_source.png and /dev/null differ diff --git a/docs/source/openstack/img/launch_spawning.png b/docs/source/openstack/img/launch_spawning.png deleted file mode 100644 index c112dcd..0000000 Binary files a/docs/source/openstack/img/launch_spawning.png and /dev/null differ diff --git a/docs/source/openstack/img/network_topology_01-lg.png b/docs/source/openstack/img/network_topology_01-lg.png deleted file mode 100644 index 42e60d4..0000000 Binary files a/docs/source/openstack/img/network_topology_01-lg.png and /dev/null differ diff --git a/docs/source/openstack/img/network_topology_02.png b/docs/source/openstack/img/network_topology_02.png deleted file mode 100644 index 0042208..0000000 Binary files a/docs/source/openstack/img/network_topology_02.png and /dev/null differ diff --git a/docs/source/openstack/img/network_topology_03.png b/docs/source/openstack/img/network_topology_03.png deleted file mode 100644 index 34a632c..0000000 Binary files a/docs/source/openstack/img/network_topology_03.png and /dev/null differ diff --git a/docs/source/openstack/img/network_topology_04.png b/docs/source/openstack/img/network_topology_04.png deleted file mode 100644 index ddcf8bf..0000000 Binary files a/docs/source/openstack/img/network_topology_04.png and /dev/null differ diff --git a/docs/source/openstack/img/object_store.png b/docs/source/openstack/img/object_store.png deleted file mode 100644 index 3de7803..0000000 Binary files a/docs/source/openstack/img/object_store.png and /dev/null differ diff --git a/docs/source/openstack/img/object_store_container_list.png b/docs/source/openstack/img/object_store_container_list.png deleted file mode 100644 index 861a8a3..0000000 Binary files a/docs/source/openstack/img/object_store_container_list.png and /dev/null differ diff --git a/docs/source/openstack/img/object_store_create_container.png b/docs/source/openstack/img/object_store_create_container.png deleted file mode 100644 index 663d23d..0000000 Binary files a/docs/source/openstack/img/object_store_create_container.png and /dev/null differ diff --git a/docs/source/openstack/img/object_store_download_file.png b/docs/source/openstack/img/object_store_download_file.png deleted file mode 100644 index 8c29ca6..0000000 Binary files a/docs/source/openstack/img/object_store_download_file.png and /dev/null differ diff --git a/docs/source/openstack/img/object_store_make_public.png b/docs/source/openstack/img/object_store_make_public.png deleted file mode 100644 index 5058e2b..0000000 Binary files a/docs/source/openstack/img/object_store_make_public.png and /dev/null differ diff --git a/docs/source/openstack/img/object_store_public_url.png b/docs/source/openstack/img/object_store_public_url.png deleted file mode 100644 index ad83f0a..0000000 Binary files a/docs/source/openstack/img/object_store_public_url.png and /dev/null differ diff --git a/docs/source/openstack/img/object_store_upload_file.png b/docs/source/openstack/img/object_store_upload_file.png deleted file mode 100644 index 3c4f894..0000000 Binary files a/docs/source/openstack/img/object_store_upload_file.png and /dev/null differ diff --git a/docs/source/openstack/img/onboarding-application-credentials-menu.png b/docs/source/openstack/img/onboarding-application-credentials-menu.png deleted file mode 100644 index 87448e1..0000000 Binary files a/docs/source/openstack/img/onboarding-application-credentials-menu.png and /dev/null differ diff --git a/docs/source/openstack/img/onboarding-create-application-credential-dialog.png b/docs/source/openstack/img/onboarding-create-application-credential-dialog.png deleted file mode 100644 index 4ecfa9e..0000000 Binary files a/docs/source/openstack/img/onboarding-create-application-credential-dialog.png and /dev/null differ diff --git a/docs/source/openstack/img/onboarding-create-application-credential.png b/docs/source/openstack/img/onboarding-create-application-credential.png deleted file mode 100644 index 52317cf..0000000 Binary files a/docs/source/openstack/img/onboarding-create-application-credential.png and /dev/null differ diff --git a/docs/source/openstack/img/onboarding-project-select.png b/docs/source/openstack/img/onboarding-project-select.png deleted file mode 100644 index f84e5d1..0000000 Binary files a/docs/source/openstack/img/onboarding-project-select.png and /dev/null differ diff --git a/docs/source/openstack/img/openstack_login.png b/docs/source/openstack/img/openstack_login.png deleted file mode 100644 index ecf0c40..0000000 Binary files a/docs/source/openstack/img/openstack_login.png and /dev/null differ diff --git a/docs/source/openstack/img/project-identity-base.png b/docs/source/openstack/img/project-identity-base.png deleted file mode 100644 index d858fc0..0000000 Binary files a/docs/source/openstack/img/project-identity-base.png and /dev/null differ diff --git a/docs/source/openstack/img/project-identity-download-circled.png b/docs/source/openstack/img/project-identity-download-circled.png deleted file mode 100644 index 60489fd..0000000 Binary files a/docs/source/openstack/img/project-identity-download-circled.png and /dev/null differ diff --git a/docs/source/openstack/img/project-identity-menu-circled.png b/docs/source/openstack/img/project-identity-menu-circled.png deleted file mode 100644 index 23cbc41..0000000 Binary files a/docs/source/openstack/img/project-identity-menu-circled.png and /dev/null differ diff --git a/docs/source/openstack/img/project-identity-project-circled.png b/docs/source/openstack/img/project-identity-project-circled.png deleted file mode 100644 index 13dd45a..0000000 Binary files a/docs/source/openstack/img/project-identity-project-circled.png and /dev/null differ diff --git a/docs/source/openstack/img/router_gateway.png b/docs/source/openstack/img/router_gateway.png deleted file mode 100644 index 2326217..0000000 Binary files a/docs/source/openstack/img/router_gateway.png and /dev/null differ diff --git a/docs/source/openstack/img/routers-interfaces.png b/docs/source/openstack/img/routers-interfaces.png deleted file mode 100644 index 19495e1..0000000 Binary files a/docs/source/openstack/img/routers-interfaces.png and /dev/null differ diff --git a/docs/source/openstack/img/save_key.png b/docs/source/openstack/img/save_key.png deleted file mode 100644 index 4c0fe0e..0000000 Binary files a/docs/source/openstack/img/save_key.png and /dev/null differ diff --git a/docs/source/openstack/img/security_add_rule_ping.png b/docs/source/openstack/img/security_add_rule_ping.png deleted file mode 100644 index 619beda..0000000 Binary files a/docs/source/openstack/img/security_add_rule_ping.png and /dev/null differ diff --git a/docs/source/openstack/img/security_groups.png b/docs/source/openstack/img/security_groups.png deleted file mode 100644 index 9bd77c3..0000000 Binary files a/docs/source/openstack/img/security_groups.png and /dev/null differ diff --git a/docs/source/openstack/img/security_rules_01.png b/docs/source/openstack/img/security_rules_01.png deleted file mode 100644 index 6b59fbd..0000000 Binary files a/docs/source/openstack/img/security_rules_01.png and /dev/null differ diff --git a/docs/source/openstack/img/security_rules_02.png b/docs/source/openstack/img/security_rules_02.png deleted file mode 100644 index 4872409..0000000 Binary files a/docs/source/openstack/img/security_rules_02.png and /dev/null differ diff --git a/docs/source/openstack/img/ssh_to_vm.png b/docs/source/openstack/img/ssh_to_vm.png deleted file mode 100644 index cac20f0..0000000 Binary files a/docs/source/openstack/img/ssh_to_vm.png and /dev/null differ diff --git a/docs/source/openstack/img/swift_containers.png b/docs/source/openstack/img/swift_containers.png deleted file mode 100644 index 91e4223..0000000 Binary files a/docs/source/openstack/img/swift_containers.png and /dev/null differ diff --git a/docs/source/openstack/img/view_public_key.png b/docs/source/openstack/img/view_public_key.png deleted file mode 100644 index 7a105f1..0000000 Binary files a/docs/source/openstack/img/view_public_key.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_attach.png b/docs/source/openstack/img/volume_attach.png deleted file mode 100644 index fc72e87..0000000 Binary files a/docs/source/openstack/img/volume_attach.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_create.png b/docs/source/openstack/img/volume_create.png deleted file mode 100644 index c4058e6..0000000 Binary files a/docs/source/openstack/img/volume_create.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_dropdown.png b/docs/source/openstack/img/volume_dropdown.png deleted file mode 100644 index 8860ffb..0000000 Binary files a/docs/source/openstack/img/volume_dropdown.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_list_01.png b/docs/source/openstack/img/volume_list_01.png deleted file mode 100644 index d61b489..0000000 Binary files a/docs/source/openstack/img/volume_list_01.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_list_02.png b/docs/source/openstack/img/volume_list_02.png deleted file mode 100644 index bb526ee..0000000 Binary files a/docs/source/openstack/img/volume_list_02.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_list_03.png b/docs/source/openstack/img/volume_list_03.png deleted file mode 100644 index 0aab60d..0000000 Binary files a/docs/source/openstack/img/volume_list_03.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_transfer_create01.png b/docs/source/openstack/img/volume_transfer_create01.png deleted file mode 100644 index 0834429..0000000 Binary files a/docs/source/openstack/img/volume_transfer_create01.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_transfer_create02.png b/docs/source/openstack/img/volume_transfer_create02.png deleted file mode 100644 index 450a53e..0000000 Binary files a/docs/source/openstack/img/volume_transfer_create02.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_transfer_create03.png b/docs/source/openstack/img/volume_transfer_create03.png deleted file mode 100644 index f49564d..0000000 Binary files a/docs/source/openstack/img/volume_transfer_create03.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_transfer_receive01.png b/docs/source/openstack/img/volume_transfer_receive01.png deleted file mode 100644 index 6dda503..0000000 Binary files a/docs/source/openstack/img/volume_transfer_receive01.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_transfer_receive02.png b/docs/source/openstack/img/volume_transfer_receive02.png deleted file mode 100644 index 5be6bf4..0000000 Binary files a/docs/source/openstack/img/volume_transfer_receive02.png and /dev/null differ diff --git a/docs/source/openstack/img/volume_transfer_receive03.png b/docs/source/openstack/img/volume_transfer_receive03.png deleted file mode 100644 index 17e2b22..0000000 Binary files a/docs/source/openstack/img/volume_transfer_receive03.png and /dev/null differ diff --git a/docs/source/openstack/index.rst b/docs/source/openstack/index.rst deleted file mode 100644 index c7845d1..0000000 --- a/docs/source/openstack/index.rst +++ /dev/null @@ -1,8 +0,0 @@ -OpenStack -========= - -.. toctree:: - :maxdepth: 2 - :glob: - - * diff --git a/docs/source/openstack/launch-a-vm.md b/docs/source/openstack/launch-a-vm.md deleted file mode 100644 index e1bf60b..0000000 --- a/docs/source/openstack/launch-a-vm.md +++ /dev/null @@ -1,69 +0,0 @@ -## Launch A VM - -### Background -To start a VM, we will need a base image. MOC has made several Public images available to users. - -### Launch an Instance -Navigate: Project -> Compute -> Images. Make sure you are on the Public tab. - -![](img/base_images_public.png) - -Click Launch Instance next to the public image of your choice. In the example, we chose RHEL7.1. - -*Important: There are multiple tabs along the top of the the pop up window. - -Make sure you review all of them as per instructions before clicking on Launch! Otherwise, your launched VM may be inaccessible.* - -Give your instance a name. - -![](img/launch_details.png) - -**Source:** Double check that in the dropdown "Select Boot Source," "Image" is selected. - -To create an image that uses the boot volume sized according to the flavor ensure that "No" is selected under the "Create New Volume" section as shown here: - -![](img/launch_source.png) - -**Flavor:** Choose m1.small from the 'Flavor' tab by clicking on the "+" icon. - -![](img/launch_flavor_01.png) - -The default m1.tiny flavor is too small for the base images which are available. - -m1.small has enough resources for most purposes, so you should choose that unless you explicitly need more. - -If you find later that a custom flavor would help you use your resources more effectively, -you can contact moc-kaizen-l@bu.edu to request that the admins create a new flavor. - -After choosing m1.small, you should see it moved up to "Allocated". - -![](img/launch_flavor_02.png) - -**Networking:** Make sure the Private Network you just created is moved up to "Allocated". If not, you can click on the "+" icon in "Available". - -![](img/launch_networks.png) - -**Security Groups:** Make sure to add the security group where you enabled SSH. - -![](img/launch_security.png) - -**Key Pair:** Add the key pair you want to use with this VM. - -Openstack currently only supports adding a single key pair. -We will discuss how to add additional public keys [later in the tutorial](SSH-to-Cloud-VM.html#more-ssh-keys). - -![](img/launch_key.png) - -**Configuration and Metadata:** Ignore these two tabs for now. - -You are now ready to launch your VM - go ahead and click "Launch Instance"! - -On a successful launch you would be redirected to Compute -> Instances tab and can see the VM spawning. - -![](img/launch_spawning.png) - -Once your VM is successfully running you will see the **Power State** changes from "No State" to "running". - -![](img/launch_running.png) - -Good job! diff --git a/docs/source/openstack/object-storage.md b/docs/source/openstack/object-storage.md deleted file mode 100644 index 88a081f..0000000 --- a/docs/source/openstack/object-storage.md +++ /dev/null @@ -1,153 +0,0 @@ -# Object Storage -The **Object Store** is an interface where users can upload data directly to our Ceph cluster for storage. - -Please note that while Ceph is a reliable, replicated storage solution, we do not currently maintain any offsite backup of user data. - -Please do not keep your only copy of critical data in our Object Store. - -You can manage objects in the Object Store via the web interface, -or by using the API to connect to the Rados Gateway service, which provides a Swift or S3 interface. - -## Web Interface -To get started, navigate to Project -> Object Store -> Containers. - -![](img/object_store.png) - -## Create a Container -In order to store objects, you need at least one **Container** to put them in. -Containers are essentially top-level directories. Other services use the terminology **buckets**. - -Click Create Container. Give your container a name. -The name needs to be unique, not just within your project but across all of our OpenStack installation. - -If you get an error message after trying to create the container, try giving it a more unique name. - -For now, leave the Container Access set to Private. - -![](img/object_store_create_container.png) - -Your container now appears in the containers list. - -![](img/object_store_container_list.png) - -## Upload a File -Click on the name of your container, and click the Upload File icon. Click Browse and select a file from your local machine to upload. - -It can take a while to upload very large files, so if you're just testing it out you may want to use a small text file or similar. - -By default the File Name will be the same as the original file, but you can change it to another name. -Click "Upload File". Your file will appear inside the container. - -![](img/object_store_upload_file.png) - -## Using Folders -Files stored by definition do not organize objects into folders, but you can use folders to keep your data organized. - -On the backend, the folder name is actually just prefixed to the object name, -but from the web interface (and most other clients) it works just like a folder. - -To add a folder, click on the "+ folder" icon. - -## Make a container public -Making a container public allows you to send your collaborators a URL that gives access to the container's contents. - -Click on your container's name, then check the "Public Access" box. Note that "Public Access" changes from "disabled" to "link". - -![](img/object_store_make_public.png) - -Click "link" to see a list of object in the container. This is the URL of your container. - -Note that anyone who obtains the URL will be able to access the container, -so this is not recommended as a way to share sensitive data with collaborators. - -In addition, everything inside a public container is public, so we recommend creating a separate container specifically for files that should be made public. - -In this example, we have added a folder and a second object, to show how the directory structure appears in the container. - -![](img/object_store_public_url.png) - -To download the file `test.txt` we would use the [following url](http://rdgw.kaizen.massopencloud.org/swift/v1/test-container-unique/test.txt) - -Or you can just click on "Download" next to the file's name. - -![](img/object_store_download_file.png) - -You can also interact with public objects using a utility such as curl: -```shell - # curl http://rdgw.kaizen.massopencloud.org/swift/v1/tutorial_container_unique - test_file - tutorial_pseudo-folder/ - tutorial_pseudo-folder/test_file2 -``` -To download a file: -```shell - # curl -o local_file.txt http://rdgw.kaizen.massopencloud.org/swift/v1/tutorial_container_unique/test_file -``` - -## Make a container private -You can make a public container private by clicking the dropdown next to the container and clicking Make Private. -This will deactivate the public URL of the container. - -## S3 Interface -The Ceph Object Gateway [supports basic operations through the Amazon S3 interface](http://docs.ceph.com/docs/master/radosgw/s3/). This enables compatibility with libraries and applications which have been developed to target the S3 interface. - -To access this interface you must login through the OpenStack Dashboard and navigate to "Projects > API Access" where you can click on "Download OpenStack RC File" and select "EC2 Credentials." - -![](img/ec2_credentials.png) - -This will download a file similar to the one below. The important parts are `EC2_ACCESS_KEY` and `EC2_SECRET_KEY`. - -```shell - #!/bin/bash - - NOVARC=$(readlink -f "${BASH_SOURCE:-${0}}" 2>/dev/null) || NOVARC=$(python -c 'import os,sys; print os.path.abspath(os.path.realpath(sys.argv[1]))' "${BASH_SOURCE:-${0}}") - NOVA_KEY_DIR=${NOVARC%/*} - export EC2_ACCESS_KEY=25ff4004d5f64b0681e4e9ca87dcab4d - export EC2_SECRET_KEY=db8cff9f059441bdbf8e190b356379fc - export EC2_URL=https://kaizen.massopen.cloud:13788 - export EC2_USER_ID=42 # nova does not use user id, but bundling requires it - export EC2_PRIVATE_KEY=${NOVA_KEY_DIR}/pk.pem - export EC2_CERT=${NOVA_KEY_DIR}/cert.pem - export NOVA_CERT=${NOVA_KEY_DIR}/cacert.pem - export EUCALYPTUS_CERT=${NOVA_CERT} # euca-bundle-image seems to require this set - - alias ec2-bundle-image="ec2-bundle-image --cert ${EC2_CERT} --privatekey ${EC2_PRIVATE_KEY} --user 42 --ec2cert ${NOVA_CERT}" - alias ec2-upload-bundle="ec2-upload-bundle -a ${EC2_ACCESS_KEY} -s ${EC2_SECRET_KEY} --url ${S3_URL} --ec2cert ${NOVA_CERT}" -``` - -The keys can then be plugged into your application. See below example using the Python boto library, which connects through the S3 API interface through EC2 credentials, and requests a listing of all the buckets that the user has access to. - -```python - connection = boto.s3.connection.S3Connection( - aws_access_key_id='25ff4004d5f64b0681e4e9ca87dcab4d', - aws_secret_access_key='db8cff9f059441bdbf8e190b356379fc', - port=443, - host='kzn-swift.massopen.cloud', - is_secure=True, - calling_format=boto.s3.connection.OrdinaryCallingFormat()) - - connection.get_all_buckets() -``` - -## Swift Interface -There are a number of Swift clients available. In this tutorial we will use python-swiftclient. -```shell - # yum install python-swiftclient -``` -If when trying to use the client, you get an error about ssl_match_hostname, you will need to manually install the relevant python backport: -```shell - # yum install python-backports.ssl_match_hostname -``` -Swift authenticates using a user, tenant, and key, which map to your OpenStack username, project, and password. - -Set these environmental variables using your openstackrc file, and type the command below to get a lits of your containers: -```shell - $ swift -V 2 -A $OS_AUTH_URL -U $OS_TENANT_NAME:$OS_USERNAME -K $OS_PASSWORD list - tutorial_container_unique -``` -To upload a file to tutorial_container_unique -```shell - $ swift -V 2 -A $OS_AUTH_URL -U $OS_TENANT_NAME:$OS_USERNAME -K $OS_PASSWORD upload tutorial-container_unique /path/to/file - tutorial_container_unique -``` -Type "man swift" to learn more about using the swift commands. The client has a --debug flag, which can be useful if you are having issues. diff --git a/docs/source/openstack/openstack-cli.md b/docs/source/openstack/openstack-cli.md deleted file mode 100644 index 3abf931..0000000 --- a/docs/source/openstack/openstack-cli.md +++ /dev/null @@ -1,101 +0,0 @@ -## OpenStack CLI -[CLI Cheat Sheet](http://docs.openstack.org/user-guide/cli-cheat-sheet.html) - -The OpenStack CLI is designed for interactive use. - -It's also possible to call it from a bash script or similar, but typically it is too slow for heavy scripting use. - -### Command Line setup -To use the CLI, you must create an application credentials and set the appropriate environment variables. - -The easiest way to do this is to go to https://onboarding.massopen.cloud and log in. Then navigate to `Identity > Application Credentials` on the sidebar. - -Click on `Create Application Credential` and provide a **name** and **role** for the application credential. All other fields are optional and leaving the secret field empty will set it to autogenerate (recommended). - -Please note that an application credential is only valid for a single project, and to access multiple projects you need to create an application credential for each. You can switch projects by clicking on the project name at the top left corner and choosing from the dropdown. - -After clicking Create, the **ID** and **Secret** will be displayed and you will be prompted to `Download the openrc file` or to `Download clouds.yaml`. Both of these are different methods of configuring the client for CLI access. - -#### OpenRC File -Find the file (by default it will be named the same as the application credential name with the suffix `-openrc.sh` where project is the name of your OpenStack project). - -Source the file: -```shell - [kamfonik@ezio ~]$ source tutorial_project-openrc.sh -``` - -Note that this just stores your entry into the environment variable - there's no validation at this stage. You can inspect the downloaded file to retrieve the ID and Secret if necessary and see what other environment variables are set. - -#### Clouds.yaml -For more information on configuring the OpenStack Client with `clouds.yaml` please see the [OpenStack documentation]( -https://docs.openstack.org/python-openstackclient/wallaby/configuration/index.html#clouds-yaml) - -### OpenStack Hello World -To test that you have everything configured, try out some commands. The following command lists all the images available to your project: -```shell - [kamfonik@ezio ~]$ openstack image list - +--------------------------------------+------------------------------------------+--------+ - | ID | Name | Status | - +--------------------------------------+------------------------------------------+--------+ - | 64599610-2952-4a1f-9291-2711c966905c | Sahara: Vanilla-MOCRemix on Ubuntu 14.04 | active | - | df9982fb-aac7-48d4-ad78-93c3105a5d68 | Sahara: Storm 0.9.2 on Ubuntu 14.04 | active | - | 0fd4d588-77de-4567-afc4-7433ad94fb98 | Sahara: Vanilla 2.7.1 on Ubuntu 14.04 | active | - | d47e31d3-50e4-4c73-a65c-db17c423e044 | Sahara: Vanilla 2.7.1 on CentOS 6.6 | active | - | 599fdf40-1fd9-4cda-9d9b-8d91e76d6195 | Sahara: Spark 1.3.1 on Ubuntu 14.04 | active | - | 0f613a03-a85b-4ce5-be65-2431d9715040 | centos_bmi | active | - | 454d6106-bb8d-4cc4-a8e7-1c0c6ed126ef | centos-6.7 | active | - | 3dae6817-36bb-4476-b68f-e743ae5490f3 | ubuntu16.04 | active | - | bd62fbfb-937b-4e2c-b4c1-99c7a80841f4 | hortonworks-sandbox | active | - | 07944e19-2474-47e6-8412-57f2c1826570 | cirros-0.3.4-x86_64-disk.img_alt | active | - | 30bbd7e6-3a33-4cc3-8cb7-35b797617ac9 | cirros-0.3.4-x86_64-disk.img | active | - | 3dfb6cd0-9bf8-4106-b6ef-e735542fb669 | ubuntu-14.04 | active | - | 895a5bd0-9508-4c39-ab1c-b19337e61068 | ubuntu-15.10 | active | - | 79e50158-1526-4602-b859-6465986e942c | RHEL7.1 | active | - | afba46bb-8be3-4d0f-a845-a3f8ba1cd596 | Centos 7 -RAW | active | - | ef8d3b1d-8639-4e3b-9129-a9aad2c717a1 | Centos 7 | active | - +--------------------------------------+------------------------------------------+--------+ -``` - -If you have launched some instances already, the following command shows a list of your project's instances: -```shell - [kamfonik@ezio Downloads]$ openstack server list - +--------------------------------------+------------------+---------+---------------------------------------+ - | ID | Name | Status | Networks | - +--------------------------------------+------------------+---------+---------------------------------------+ - | 0ec026ff-1014-4953-9660-0b6386915562 | test | ACTIVE | kamfonik-net=10.20.8.15 | - | 5e1a685b-db75-4af1-8b1a-c077c1e8b9e4 | kamfonik-gw | ACTIVE | kamfonik-net=10.20.8.9, | - | 34898710-8cf9-44db-9212-32539876e17c | kamfonik-gateway | SHUTOFF | kamfonik-net=10.20.8.8 | - | c04b34d9-b684-40a3-9873-b1bd7daf08bf | inventory-dev | ACTIVE | kamfonik-net=10.20.8.5 | - +--------------------------------------+------------------+---------+---------------------------------------+ -``` -If you don't have any instances, you will get the error `list index out of range`, which is why we didn't suggest this command for your first test: -```shell - [kamfonik@ezio ~]$ openstack server list - list index out of range -``` -If you see this error: -```shell - [kamfonik@ezio moc-public.wiki]$ openstack server list - The request you have made requires authentication. (HTTP 401) (Request-ID: req-6a827bf3-d5e8-47f2-984c-b6edeeb2f7fb) -``` -Then your environment variables are likely not configured correctly. - -The most common reason is that you made a typo when entering your password. Try sourcing the rc script again and retyping it. - -You can type `openstack -h` to see a list of available commands. - -Note that this includes some admin-only commands. If you try one of these by mistake, you might see this output: -```shell - [kamfonik@ezio ~]$ openstack user list - You are not authorized to perform the requested action: admin_required (HTTP 403) (Request-ID: req-60ceb1b8-a90f-407a-84dd-66e0d4b40869) -``` -Depending on your needs for API interaction, this might be sufficient. - -If you just occasionally want to run 1 or 2 of these commands from your terminal, -you can do it manually or write a quick bash script that makes use of this CLI. - -However, this isn't a very optimized way to do complex interactions with OpenStack. -For that, you want to write scripts that interact with the python bindings directly. - -*Pro Tip: If you find yourself fiddling extensively with awk and grep to extract things like project IDs from the CLI output, -it's time to move on to using the client libraries or the RESTful API directly in your scripts.* diff --git a/docs/source/openstack/security-groups.md b/docs/source/openstack/security-groups.md deleted file mode 100644 index 4bafb41..0000000 --- a/docs/source/openstack/security-groups.md +++ /dev/null @@ -1,63 +0,0 @@ -## Security Groups -Before you launch a VM, you must configure some security settings so that you will be able to log in via ssh. - -Navigate to Project -> Compute -> Access and Security - -Click on the Security Groups tab. - -You should see a ‘default’ security group. - -![](img/security_groups.png) - -Security groups are profiles that control the firewall settings which allow or block access to instances that are members of the group. - -The default security group allows traffic only between members of the security group, so by default you can always connect between VMs in this group. - -However, it blocks all traffic from outside, including incoming SSH connections. -In order to access instances via a public IP, an additional security group is needed. - -Security groups are very highly configurable, so you can create different security groups for different types of VMs used in your project. - -For example, for a VM that hosts a web page, you need a security group which allows access to ports 80 and 443. - -You can also limit access based on where the traffic originates, using either IP addresses or security groups to define the allowed sources. - -### Create a new Security Group -Click on "Create Security Group." Give your new group a name, and a brief description. - -In the example, we will enable SSH from anywhere so we can access the VM via a public IP. - -![](img/create_security_group.png) - -Your new group now appears in the list. Click the "Manage Rules" button in the "Actions" column next to your new security group. - -![](img/access_security_newgroup.png) - -You will see some existing rules: - -![](img/security_rules_01.png) - -Let's create the new rule to allow SSH. Click on Add Rule. - -You will see there are a lot of options you can configure on this screen. - -There is a built-in SSH option to make things simple. Choose 'SSH' from the 'Rule' drop down menu and click "Add." - -![](img/add_rule.png) - -The new rule now appears in the list. - -![](img/security_rules_02.png) - -### Allowing Ping -The default configuration blocks ping responses, so you will need to add an additional group and/or rule -if you want your public IPs to respond to ping requests. - -Ping is ICMP traffic, so the easiest way to allow it is to add a new rule and choose "ALL ICMP" from the dropdown. - -![](img/security_add_rule_ping.png) - -More on different types of ICMP codes can be found at [this link](http://www.nthelp.com/icmp.html). -*Note that due to a [known bug](https://bugs.launchpad.net/horizon/+bug/1511748) setting a specific ICMP type may give an error message.* - -Make sure to add VMs with public IPs you want to ping to the security group containing this rule. diff --git a/docs/source/openstack/set-up-a-private-network.md b/docs/source/openstack/set-up-a-private-network.md deleted file mode 100644 index 30b2fad..0000000 --- a/docs/source/openstack/set-up-a-private-network.md +++ /dev/null @@ -1,39 +0,0 @@ -## Setup a Private Network - -### Create a Network -You can view your network topology by clicking Project, then click Network and choose Network Topology from the menu that appears. - -You should see the public network which is accessible to all projects. - -![](img/network_topology_01-lg.png) - -Click the "Create Network" button on the right side of the screen, above the network topology map. -Give your network a name, and leave the two checkboxes with the default settings. - -![](img/create_network.png) - -Next, click "Subnet" and set up your private network's subnet. - -For your private networks, you should use IP addresses which fall within the ranges that are specifically reserved for private networks: -```shell -10.0.0.0/8 -172.16.0.0/12 -192.168.0.0/16 -``` -In the example below, we configure a network containing addresses 192.168.100.1 to 192.168.100.255. -*Technically, your private network will still work if you choose any IP outside these ranges, -but this causes problems with connecting to IPs in the outside world - so don't do it!* - -![](img/create_network_subnet.png) - -Next, click "Subnet Details". Check the box next to Enable DHCP so that your VM instances will automatically be assigned an IP on the subnet. - -In the DNS Name Servers box, type '8.8.8.8' (you may recognize this as one of Google's public name servers). - -![](img/create_network_details.png) - -For now, leave the Allocation Pools and Host Routes boxes empty. Click on Create. - -The Network Topology should now show your virtual private network next to the public network. - -![](img/network_topology_02.png) diff --git a/docs/source/openstack/ssh-to-cloud-vm.md b/docs/source/openstack/ssh-to-cloud-vm.md deleted file mode 100644 index c706dc2..0000000 --- a/docs/source/openstack/ssh-to-cloud-vm.md +++ /dev/null @@ -1,117 +0,0 @@ -## SSH to Cloud VM -Before trying to access instances from the outside world, you need to make sure you have followed these steps: - - You followed the instruction in [Create a Key Pair](Create-a-Key-Pair.html) to set up a public ssh key. - - Your public ssh-key was selected (in the Access and Security tab) while [launching the instance](Launch-a-VM.html). - - [Assign a Floating IP](Assign-a-Floating-IP.html) to the instance in order to access it from outside world. - - Make sure you have added rules in the [Security Groups](Security-Groups.html) to allow ssh to the instance. - -Make note of the floating IP you have associated to your instance. - -![](img/floatingip_is_associated.png) - -In our example, the IP is `129.10.3.66`. - -Default usernames for all the base images are: - - **all Ubuntu images**: ubuntu - - **all CentOS images**: centos - - **all RHEL images**: cloud-user - -Our example VM was launched with the RHEL7.1 base image, the user we need is 'cloud-user'. - -Open a Terminal window and type: -```shell - $ ssh cloud-user@129.10.3.66 -``` -Since you have never connected to this VM before, you will be asked if you are sure you want to connect. Type `yes`. - -![](img/ssh_to_vm.png) - -Note that if you haven't added your key to ssh-agent, you may need to specify the private key file, like this: -```shell - $ ssh -i ~/.ssh/cloud_key.pem cloud-user@129.10.3.66 -``` -If you have problems with the SSH step, this page lists solutions to some common problems: [Troubleshooting SSH Login](Troubleshooting-SSH-login.html) - ---- - -### Setting a password -When the VMs are launched, a strong, randomly-generated password is created for the default user, and then discarded. - -Once you connect to your VM, you will want to set a password in case you ever need to log in via the console in the web dashboard. - -For example, if your network connections aren't working right. - -Since you are not using it to log in over SSH or to sudo, it doesn't really matter how hard it is to type, -and we recommend using a randomly-generated password. - -Create a random password like this: -```shell - [cloud-user@test-vm ~]$ cat /dev/urandom | base64 | dd count=14 bs=1 - C8a6lipvDcLY6j14+0 records in - 14+0 records out - 14 bytes transferred in 0.030097 secs (465 bytes/sec) -``` -The 'count' parameter controls the number of characters. - -The first characters of the output are your randomly generated output, followed immediately by "+0", -so in the above example the password is: `C8a6lipvDcLY6j` . - -Set the password for cloud-user using the command `sudo passwd cloud-user`. Store the password in a secure place. -Don't send it over email, post it on your wall on a sticky note, etc. - ---- - -### Adding other people's SSH keys to the instance -You were able to log into using your own SSH key. - -Right now Openstack only permits one key to be added at launch, so you need to add your teammates keys manually. - -Get your teammates' public keys. If they used ssh-keygen to create their key, this will be in a file called .pub on their machine. - -If they created a key via the dashboard, or imported the key created with ssh-keygen, their public key is viewable from the Key Pairs tab. - -Click on the key pair name. The public key starts with 'ssh-rsa' and looks something like this: -```shell - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDL6O5qNZHfgFwf4vnnib2XBub7ZU6khy6z6JQl3XRJg6I6gZ+Ss6tNjz0Xgax5My0bizORcka/TJ33S36XZfzUKGsZqyEl/ax1Xnl3MfE/rgq415wKljg4+QvDznF0OFqXjDIgL938N8G4mq/cKKtRSMdksAvNsAreO0W7GZi24G1giap4yuG4XghAXcYxDnOSzpyP2HgqgjsPdQue919IYvgH8shr+sPa48uC5sGU5PkTb0Pk/ef1Y5pLBQZYchyMakQvxjj7hHZaT/Lw0wIvGpPQay84plkjR2IDNb51tiEy5x163YDtrrP7RM2LJwXm+1vI8MzYmFRrXiqUyznd test_user@demo -``` -Create a file called something like 'teammates.pub' and paste in your team's public keys, one per line. - -Hang onto this file to save yourself from having to do all the copy/pasting every time you launch a new vm. - -Copy the file to the vm: -```shell - [you@your-laptop ~]$ scp teammates.pub cloud-user@129.10.3.66:~ -``` -If the copy works, you will see the output: -```shell - testfile.txt 100% 0 0.0KB/s 00:00 -``` -Append the file's contents to authorized_keys: -```shell - [cloud-user@test-vm ~]# cat testfile >> ~/.ssh/authorized_keys -``` -Now your teammates should also be able to log in. - -Make sure to use `>>` instead of `>` to avoid overwriting your own key. - ---- - -### Adding users to the instance -You may decide that each teammate should have their own user on the VM instead of everyone logging in to the default user. - -Once you log into the vm, you can create another user like this. - -Note that the 'sudo_group' is different for different OS - in CentOS and Red Hat, the group is called 'wheel', while in Ubuntu, the group is called 'sudo'. -```shell - $ sudo su - # useradd -m - # passwd - # usermod -aG <-- skip this step for users who should not have root access - # su username - $ cd ~ - $ mkdir .ssh - $ chmod 700 .ssh - $ cd .ssh - $ vi authorized_keys <------- paste the public key for that user here - $ chmod 600 authorized_keys -``` diff --git a/docs/source/openstack/volumes.md b/docs/source/openstack/volumes.md deleted file mode 100644 index c94135d..0000000 --- a/docs/source/openstack/volumes.md +++ /dev/null @@ -1,140 +0,0 @@ -## Volumes -A **Volume** is a removable disk that can be mounted to an instance. - -You can think of it as a USB drive. - -You can move volumes between different instances, or boot new instances from bootable volumes, but a volume can only be mounted to one instance at a time. - -Ownership of volumes can be transferred to another project. - -Some uses for volumes: - - Persistent data storage for ephemeral instances. - - Transfer of data between projects - - Bootable image where disk changes persist - - Mounting the disk of one instance to another for troubleshooting - -To get started, navigate to Compute -> Volumes. - -![](img/volume_list_01.png) - -### Create an empty volume -An empty volume is like an unformatted USB stick. We'll attach it to an instance, create a filesystem on it, and mount it to the instance. - -Click "Create Volume". In the resulting popup, give your volume a name. The description field is optional. - -Choose "empty volume" from the Source dropdown. This will create a volume that is like an unformatted hard disk. Choose a size for your volume. - -![](img/volume_create.png) - -Click Create. In a few moments, the volume will appear in the Volume list with the status Available. - -![](img/volume_list_02.png) - -### Attach the volume to an instance -In the Actions column, click the dropdown and select Manage Attachments. - -![](img/volume_dropdown.png) - -From the menu, choose the instance you want to connect the volume to, and click Attach Volume. - -![](img/volume_attach.png) - -The volume now has a status of "In Use" and the Attached To column notes which instance it is attached to, and what device name it has. - -This will be something like `/dev/vdb` but it can vary depending on the state of your instance, and whether you have attached volumes before. - -Make note of the device name of your volume. - -![](img/volume_list_03.png) - -### Format and mount the volume -SSH to your instance. You should now see the volume as an additional disk in the output of `sudo fdisk -l` or `lsblk`. -```shell - # lsblk - NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT - vda 253:0 0 20G 0 disk - └─vda1 253:1 0 20G 0 part / - vdb 253:16 0 10G 0 disk -``` - -We see the volume here as the disk 'vdb', which matches the `/dev/vdb/` we noted in the Attached To column. - -In this case it's easy to spot because there is only one additional disk attached to the instance, -but it's important to keep track of the device name, especially if you have multiple volumes attached. - -Also, a given volume might not get the same device name the second time you attach it to an instance. - -Create a filesystem on the volume and mount it - in the example we create an ext4 filesystem: -```shell - # mkfs.ext4 /dev/vdb - # mkdir /mnt/test_volume - # mount /dev/vdb /mnt/test_volume -``` -The volume is now available at the mount point: -```shell - # lsblk - NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT - vda 253:0 0 20G 0 disk - └─vda1 253:1 0 20G 0 part / - vdb 253:16 0 10G 0 disk /mnt/test_volume -``` -If you place data in the directory `/mnt/test_volume`, detach the volume, and mount it to another instance, the second instance will have access to the data. - -### Detach a volume -To detach a mounted volume by going back to Manage Attachments and choosing Detach Volume. - -Once it is successfully detached, you can use Manage Attachments to attach it to another instance if desired. - -### Create Volume from Image -You can create a volume from an existing image. If the image is bootable, you can use the volume to launch an instance. - -Click Create Volume. This time, for Volume Source, choose 'Image'. From the 'Use Image as Source' dropdown, choose the image you'd like to use. - -To use this volume to launch an instance, you can choose Boot From Volume in the Instance Boot Source dropdown when creating an image, -then select your volume from the Volumes list. - -Make sure 'Delete on Terminate' is unchecked if you want the volume to persist after the instance is terminated. - -Note that only one instance at a time can be booted from a given volume. - -### Transfer a Volume -You may wish to transfer a volume to a different project. - -Perhaps you did some work in your individual project, and you want to transfer a volume containing the work to your team's project. - -The volume to transfer must not be attached to an instance. Click the dropdown next to the volume and choose Create Transfer. - -![](img/volume_transfer_create01.png) - -Give the transfer a name. - -![](img/volume_transfer_create02.png) - -You will see a screen like this. Be sure to capture the Transfer ID and the Key. - -You can always get the transfer ID later if needed, but there is no way to retrieve the key. - -If the key is lost before the transfer is completed, you will have to cancel the pending transfer and create a new one. - -![](img/volume_transfer_create03.png) - -Assuming you have access to the receiving project, switch to it using the Project dropdown at the top right. - -If you don't have access to the receiving project, give the transfer ID and key to a collaborator who does, and have them complete the next steps. - -In the receiving project, go to the Volumes tab, and click Accept Volume Transfer. -In the example, we see that the receiving project already has a couple of volumes. - -![](img/volume_transfer_receive01.png) - -Enter the Transfer ID and the Transfer key that were captured when the transfer was created. - -![](img/volume_transfer_receive02.png) - -The volume should now appear in the Volumes list of the receiving project. - -![](img/volume_transfer_receive03.png) - -Note that pending transfers can be cancelled if they are not yet accepted, but there is no way to "undo" a transfer once it is complete. - -To send the volume back to the original project, a new transfer would be required.