# Milestone 9 - OpenStack Tutorials

## Services Commands:

Display services:

```
microstack.openstack catalog list
```

Display users:

```
microstack.openstack user list
```

Display images:

```
microstack.openstack image list
```

Display networks:

```
microstack.openstack network list
```

Display hypervisors:

```
microstack.openstack hypervisor list
```

## Dashboard Navigation:

#### Themes:

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FyYghD8auFx4XooBdW86b%2Fimage.png?alt=media&#x26;token=465811c6-f5b8-4729-b1a8-7bd5d4949d71" alt=""><figcaption></figcaption></figure>

#### Users:

Access users:

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2F0kXzCsxbgWJmtYNy01XF%2Fimage.png?alt=media&#x26;token=bfa15bca-0c0e-4cb5-a3fc-498cad419cb4" alt=""><figcaption></figcaption></figure>

Change user password:

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2Fr1yp7iTlDpb2A5MYhwxu%2Fimage.png?alt=media&#x26;token=5541254a-de2a-4cf0-97b0-3e7bb05e35f5" alt=""><figcaption></figcaption></figure>

#### Project Menu:

Project drop down:

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FwQnwPjYG1kMCO8qLEVKc%2Fimage.png?alt=media&#x26;token=2f0787e4-d86b-4211-9923-f9642e370fc3" alt=""><figcaption></figcaption></figure>

The **Project** menu on the left is grouped into three sections:

* **API Access** provides information about API endpoints of OpenStack services.
* **Compute** provides access to project compute resources, such as instances.
* **Network** provides access to project network resources, such as virtual networks.

List images for a project:

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FRRuBToMPgHnZUIKAKbRi%2Fimage.png?alt=media&#x26;token=f2bba90c-4383-4e1f-9933-7721d18fdd8a" alt=""><figcaption></figcaption></figure>

#### Admin Menu:

The **Admin** menu on the left is grouped into five sections:

* **Overview** displays usage metrics across all projects.
* **Compute** provides access to global compute resources, such as hypervisors.
* **Network** provides access to global network resources, such as RBAC policies.
* **System** provides access to various system information.
* **Optimization** currently not used

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FekNaBFdvqVe9zo00fbk6%2Fimage.png?alt=media&#x26;token=a828cb3d-ffb2-4753-801c-63be330590f3" alt=""><figcaption></figcaption></figure>

#### Identity Menu:

The **Identity** menu on the left is grouped into six sections:

* **Domains** provides acces to domains.
* **Projects** provides access to project accounts.
* **Users** provides access to user accounts.
* **Groups** provides access to user groups.
* **Roles** provides access to user roles.
* **Application Credentials** provides access to application credentials.

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FtAdR1Q8Ack2cWLnTxXuN%2Fimage.png?alt=media&#x26;token=b3e2776c-b71c-4460-8271-465e8f7892d6" alt=""><figcaption></figcaption></figure>

## Templates:

Create Image:

```
microstack.openstack image create --disk-format qcow2 --min-disk 8 --min-ram 512 --file ~/Downloads/focal-server-cloudimg-amd64-disk-kvm.img --private paul-focal
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FTpiFEEZQn31V2Pivlp4L%2Fimage.png?alt=media&#x26;token=cbf3c5d6-ceca-4361-aa6a-a5e713601d31" alt=""><figcaption></figcaption></figure>

List images:

```
microstack.openstack image list
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FMjWiGXuI3TKQvaaARG4K%2Fimage.png?alt=media&#x26;token=6d77ea46-edbd-47ea-895a-6f150c6b4678" alt=""><figcaption></figcaption></figure>

Manage through dashboard:

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2F7ajaZMBQDTA4yaObDC6c%2Fimage.png?alt=media&#x26;token=a9f6e54d-3186-49d8-bd65-cc7ce9bd8a23" alt=""><figcaption></figcaption></figure>

Example upload:

* **Image Name** - Type `ubuntu-focal`
* **File** - Click **Browse** and find the **focal-server-cloudimg-amd64-disk-kvm.img** file in your **Downloads** directory
* **Format** - Select **QCOW2 - QEMU Emulator**
* **Minimum Disk (GB)** - Type `8`
* **Minimum RAM (MB)** - Type `512`
* **Visibility** - Choose **Private**

#### Manage flavors:

Create a flavor:

```
microstack.openstack flavor create --ram 1024 --disk 10 --vcpus 1 paul-flavor
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FAaGNUMAYsXCZN1BKvfuK%2Fimage.png?alt=media&#x26;token=dcf67f31-0d39-4299-9dd5-ede7b187b40b" alt=""><figcaption></figcaption></figure>

List flavors:

```
microstack.openstack flavor list
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2Fvg9UkJM1Kx7NSJMe4rAj%2Fimage.png?alt=media&#x26;token=87e34199-255b-49da-bafb-af148f5594de" alt=""><figcaption></figcaption></figure>

Manage flavors in dashboard:

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FeaSDTwzSgqoJOq4Gh4WR%2Fimage.png?alt=media&#x26;token=e29a3555-a88f-4636-83ed-c4d375c86965" alt=""><figcaption></figcaption></figure>

To create the flavor, fill in the form as follows:

* **Name** - Type `paul-flavor`
* **VCPUS** - Type `1`
* **RAM (MB)** - Type `1024`
* **Root Disk (GB)** - Type `10`

## Identities:

#### Manage Domains:

Create domain:

```
microstack.openstack domain create --description "paul_domain" pauldomain
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FDkSRQglSniMV5S8WRpPN%2Fimage.png?alt=media&#x26;token=f6b1e4f3-f073-4612-b851-c9ff13e88373" alt=""><figcaption></figcaption></figure>

List domain:

```
microstack.openstack domain list
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FnbiFasbYnUjDn8YHuNht%2Fimage.png?alt=media&#x26;token=b0cbc9a8-baa1-44f8-9ee7-1bf43544df2a" alt=""><figcaption></figcaption></figure>

Create domain user:

```
microstack.openstack user create --domain pauldomain --password <password> admin
microstack.openstack role add --domain pauldomain --user-domain pauldomain --user admin admin
```

Oliver added the following code to enable domains:

add the following to "/var/snap/microstack/common/etc/horizon/local\_settings.d/\_05\_snap\_tweaks.py" to enable domains:

```
# Setup multidomain support
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
```

Additions seen added to `_05_snap_tweaks.py`:

![](https://github.com/Oliver-Mustoe/Oliver-Mustoe-Tech-Journal/raw/main/tech_journal_backups/SYS-350/sys350-m9/media/image26.png)

Then ran:

```
sudo snap restart microstack.horizon-uwsgi
```

To login with domain user:

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FtDfup0uBZferJph4wpxp%2Fimage.png?alt=media&#x26;token=22c208ce-7aaa-4206-806b-91bf2d7689ad" alt=""><figcaption></figcaption></figure>

Domains:

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FIdfnjOzZHc3qxUgGEYRu%2Fimage.png?alt=media&#x26;token=e9c46177-555b-4968-969c-2ef05e8d9404" alt=""><figcaption></figcaption></figure>

#### Manage Roles:

Create role:

```
microstack.openstack role create _paulmember_
```

List roles:

```
microstack.openstack role list
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FGvu2kyAn99qbpNQr0TJ8%2Fimage.png?alt=media&#x26;token=87212644-609b-47f4-b363-8404f7893b57" alt=""><figcaption></figcaption></figure>

#### Project management:

Create project:

```
microstack.openstack project create --domain pauldomain paulproject
```

List project in domain:

```
microstack.openstack project list --domain pauldomain
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FxNCU7TEXwhVsKDDbioQr%2Fimage.png?alt=media&#x26;token=51ad70ff-cc4a-4720-a908-1aa9f6ec3837" alt=""><figcaption></figcaption></figure>

#### User and group management:

Create new user:

```
microstack.openstack user create --domain pauldomain --password <password> admin2
```

Create a new group:

```
microstack.openstack group create --domain pauldomain paulgroup
```

List groups:

```
microstack.openstack group list --domain pauldomain
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FCW13yQFmipp92bAUYLiu%2Fimage.png?alt=media&#x26;token=f46881ef-e704-4f58-9cef-46adafe66b83" alt=""><figcaption></figcaption></figure>

#### Membership and assignment management:

Add user to group:

```
microstack.openstack group add user --group-domain pauldomain --user-domain pauldomain paulgroup admin2
```

Assign group to project:

```
microstack.openstack role add --project paulproject --project-domain pauldomain --group paulgroup --group-domain pauldomain member
```

## Multi-tenancy:

#### Setup:

```
sudo apt install python3-pip python3.10-venv -y


python3 -m venv venv
source venv/bin/activate
pip install python-openstackclient

source ~/Downloads/pauldomain_admin2.sh
```

#### Keypair:

```
openstack --insecure keypair create --private-key ./mykeypair.pem --type ssh mykeypair
```

## Networking:

#### Network:

Create network:

```
microstack.openstack network create paulnetwork
```

List networks:

```
microstack.openstack network list
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FZJFws9kJECiOflST2qbb%2Fimage.png?alt=media&#x26;token=7c813fd3-a9fb-475c-b23d-a0a31eff3057" alt=""><figcaption></figcaption></figure>

#### Subnet:

Create subnet:

```
microstack.openstack subnet create --network paulnetwork --subnet-range 10.5.0.0/24 --allocation-pool start=10.5.0.75,end=10.5.0.100 --dns-nameserver 1.1.1.1 paulsubnet
```

List subnets:

```
microstack.openstack subnet list
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FDPvIOXy4LYinuhl8sAon%2Fimage.png?alt=media&#x26;token=2964fde0-1981-4516-89e3-1418fc1dd83e" alt=""><figcaption></figcaption></figure>

#### Routers:

Create:

<pre><code><strong>microstack.openstack router create paulrouter
</strong></code></pre>

List:

```
microstack.openstack router list
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2F4OMZkVi97GjUGYUrWMob%2Fimage.png?alt=media&#x26;token=d283647f-b33e-4071-97af-f51cb4643cad" alt=""><figcaption></figcaption></figure>

Set external network:

```
microstack.openstack router set --external-gateway external-network paulrouter
```

Add subnet:

```
microstack.openstack router add subnet paulrouter paulsubnet
```

#### Floating IPs:

Create:

```
microstack.openstack floating ip create external
```

list:

```
microstack.openstack floating ip list
```

#### Security Groups:

Create:

<pre><code><strong>microstack.openstack security group create paulsecuritygroup
</strong></code></pre>

list:

```
microstack.openstack security group list
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2FDu4BSrEAIFnPwGVkBQBH%2Fimage.png?alt=media&#x26;token=6b36d988-76f5-43c6-b388-85722cbbb098" alt=""><figcaption></figcaption></figure>

All 22 to my security group:

```
microstack.openstack security group rule create --remote-ip 0.0.0.0/0 --dst-port 22:22 --protocol tcp --ingress paulsecuritygroup
```

List rules:

```
microstack.openstack security group rule list paulsecuritygroup
```

<figure><img src="https://1798827758-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlwjwyZXx0WTx2lLKnGIY%2Fuploads%2Fv99nFz3UNPgYycdCzHfw%2Fimage.png?alt=media&#x26;token=2da5e6b0-fdc8-4a1a-b202-ecb5a749df1b" alt=""><figcaption></figcaption></figure>

## Instances:

#### Launch instance:

launch:

```
microstack.openstack --insecure server create --flavor paul-flavor --image cirros --network paulnetwork --key-name mykeypair --min 2 --max 2 paulinstance
```

Server list:

```
microstack.openstack server list
```

#### Floating IP to instance:

<pre><code>IP=$(openstack --insecure floating ip list | tail -n 2 | head -n 1 | awk '{print $4}')
<strong>microstack.openstack --insecure server add floating ip paulinstance $IP
</strong></code></pre>

#### Attach security to instance:

```
microstack.openstack server add security group paulinstance paulsecuritygroup
```

#### Attach security group:

```
chmod 0400 ~/Downloads/mykeypair.pem
```

```
IP=$(openstack floating ip list | tail -n 2 | head -n 1 | awk '{print $4}')
ssh -i ~/Downloads/mykeypair.pem -o StrictHostKeyChecking=no cirros@$IP
```

#### Delete Instance:

```
microstack.openstack server delete paulinstance
```
