Slide 1

Slide 1 text

1 / 40 OpenStack Introduction [via DevStack] Eueung Mulyana https://telematika.org/remark/devstack Intro+Labs | Attribution-ShareAlike CC BY-SA

Slide 2

Slide 2 text

Outline DevStack Installation Dashboard - Horizon CLI - OpenStackClient 2 / 40

Slide 3

Slide 3 text

OpenStack Pike VirtualBox 5.2.6 | Ubuntu 16.04.3 3 / 40

Slide 4

Slide 4 text

DevStack Intallation 4 / 40

Slide 5

Slide 5 text

5 / 40 Getting Started 1. Prepare a VM 2. Add Stack User 3. Download DevStack 4. Create a local.conf 5. Start Installation (stack.sh) Ref:[OpenStack Docs: DevStack]

Slide 6

Slide 6 text

#1 Prepare VM | 2 CPU - 8 GB 6 / 40

Slide 7

Slide 7 text

7 / 40 #2 & #3 Stack User DevStack # 1: stack user with sudo privileges $ sudo useradd -s /bin/bash -d /opt/stack -m stack $ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack $ sudo su - stack # 2: clone/download DevStack $ git clone https://git.openstack.org/openstack-dev/devstack $ cd devstack

Slide 8

Slide 8 text

~/devstack$ git tag diablo-eol essex-eol folsom-eol grizzly-eol havana-eol icehouse-eol juno-eol kilo-2 liberty-eol mitaka-eol ~/devstack$ git branch -a + master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/stable/newton remotes/origin/stable/ocata remotes/origin/stable/pike remotes/origin/stable/queens ~/devstack$ git checkout stable/pike Branch stable/pike set up to track remote branch stable/pike from origin. Switched to a new branch 'stable/pike' ~/devstack$ git branch master + stable/pike # before ./stack.sh ~/devstack$ tree -L 1 -d . |----- data |----- doc |----- exercises |----- extras.d |----- files |----- gate |----- inc |----- lib |----- pkg |----- playbooks |----- roles 8 / 40 DevStack

Slide 9

Slide 9 text

# 3: local.conf $ cp samples/local.conf . $ cat local.conf [[local|localrc]] # Minimal Contents # ---------------- #ADMIN_PASSWORD=nomoresecret ADMIN_PASSWORD=12345 DATABASE_PASSWORD=stackdb RABBIT_PASSWORD=stackqueue SERVICE_PASSWORD=$ADMIN_PASSWORD HOST_IP=192.168.56.70 #HOST_IPV6=2001:db8::7 # Logging # ------- LOGFILE=$DEST/logs/stack.sh.log LOGDAYS=2 # Swift # ----- SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5 SWIFT_REPLICAS=1 SWIFT_DATA_DIR=$DEST/data # Others # ----- # after installation OFFLINE=True 9 / 40 #4 local.conf

Slide 10

Slide 10 text

# 4: start intallation # sudo su - stack ~/devstack$ ./stack.sh ... ========================= DevStack Component Timing ========================= Total runtime 3406 run_process 31 test_with_retry 3 apt-get-update 124 pip_install 689 osc 170 wait_for_service 24 git_timed 979 dbsync 35 apt-get 658 ========================= This is your host IP address: 192.168.56.70 This is your host IPv6 address: ::1 Horizon is now available at http://192.168.56.70/dashboard Keystone is serving at http://192.168.56.70/identity/ The default users are: admin and demo The password: 12345 WARNING: Using lib/neutron-legacy is deprecated, and it will be removed in the future Services are running under systemd unit files. For more information see: https://docs.openstack.org/devstack/latest/systemd.html DevStack Version: pike Change: 68fbb912bd7bc799e8b84d88c4206f7c4b001ad1 Zuul: Remove project name 2018-02-08 16:27:25 OS Version: Ubuntu 16.04 xenial 10 / 40 #5 stack.sh

Slide 11

Slide 11 text

11 / 40 Folders ~$ tree -L 1 . |----- bin |----- cinder |----- data |----- devstack |----- devstack.subunit |----- glance |----- horizon |----- keystone |----- logs |----- neutron |----- nova |----- noVNC |----- requirements |----- tempest

Slide 12

Slide 12 text

Basic Operations Dashboard - Horizon 12 / 40

Slide 13

Slide 13 text

13 / 40 Getting Started 1. Create Network & Router 2. Create Instance (+ Key Pair) 3. Assign Floating IP 4. Access & Security Rules

Slide 14

Slide 14 text

#1 | Demo Project | Cred: demo/... 14 / 40

Slide 15

Slide 15 text

#1 | Demo Project | Network: 'private' | Router: 'router1' 15 / 40

Slide 16

Slide 16 text

#1 | Demo Project | Network Graph 16 / 40

Slide 17

Slide 17 text

#2 | Launch Instance | Create 17 / 40

Slide 18

Slide 18 text

#2 | Launch Instance | Key Pair 18 / 40

Slide 19

Slide 19 text

#2 | Launch Instance | Running 19 / 40

Slide 20

Slide 20 text

#2 | Launch Instance | Network Topology 20 / 40

Slide 21

Slide 21 text

#2 | Launch Instance | Network Graph 21 / 40

Slide 22

Slide 22 text

#3 | Floating IP | Assign 22 / 40

Slide 23

Slide 23 text

#3 | Floating IP 23 / 40

Slide 24

Slide 24 text

#4 | Access & Security Rules | Enable Pings 24 / 40

Slide 25

Slide 25 text

#4 | Access & Security Rules | Enable Pings 25 / 40

Slide 26

Slide 26 text

26 / 40 Test Reachability Floating IP ~/devstack$ hostname -I 10.0.2.15 192.168.56.70 192.168.122.1 172.24.4.1 2001:db8::2 # unmodified default rule ~/devstack$ ping 172.24.4.9 PING 172.24.4.9 (172.24.4.9) 56(84) bytes of data. ^C --- 172.24.4.9 ping statistics --- 5 packets transmitted, 0 received, 100% packet loss, time 4016ms # after ICMP rule insertion ~/devstack$ ping 172.24.4.9 PING 172.24.4.9 (172.24.4.9) 56(84) bytes of data. 64 bytes from 172.24.4.9: icmp_seq=1 ttl=63 time=6.73 ms 64 bytes from 172.24.4.9: icmp_seq=2 ttl=63 time=1.52 ms ^C --- 172.24.4.9 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1005ms rtt min/avg/max/mdev = 1.521/4.126/6.731/2.605 ms

Slide 27

Slide 27 text

Test | VM Instance | 10.0.0.12 27 / 40

Slide 28

Slide 28 text

Test | VM Instance | 10.0.0.12 28 / 40

Slide 29

Slide 29 text

29 / 40 Route VB Guest DevStack VM # before stack.sh stack@x64server:~/devstack$ hostname -I 10.0.2.15 192.168.56.70 192.168.122.1 stack@x64server:~$ /sbin/route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 enp0s3 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3 192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 # after stack.sh stack@x64server:~/devstack$ hostname -I 10.0.2.15 192.168.56.70 192.168.122.1 172.24.4.1 2001:db8::2 stack@x64server:~/devstack$ /sbin/route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.2.2 0.0.0.0 UG 0 0 0 enp0s3 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3 172.24.4.0 0.0.0.0 255.255.255.0 U 0 0 0 br-ex 192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0

Slide 30

Slide 30 text

~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.1 0.0.0.0 UG 600 0 0 wlp1s0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlp1s0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp1s0 192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet0 ~$ sudo route add -net 172.24.4.0 netmask 255.255.255.0 gw 192.168.56.70 # $ sudo route del -net 172.24.4.0 gw 192.168.56.70 netmask 255.255.255.0 ~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.1 0.0.0.0 UG 600 0 0 wlp1s0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlp1s0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.24.4.0 192.168.56.70 255.255.255.0 UG 0 0 0 vboxnet0 192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp1s0 192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet0 # before stack.sh ~$ ping 172.24.4.1 PING 172.24.4.1 (172.24.4.1) 56(84) bytes of data. ^C --- 172.24.4.1 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 1005ms # after stack.sh ~$ ping 172.24.4.1 PING 172.24.4.1 (172.24.4.1) 56(84) bytes of data. 64 bytes from 172.24.4.1: icmp_seq=1 ttl=64 time=0.644 ms 64 bytes from 172.24.4.1: icmp_seq=2 ttl=64 time=0.636 ms ^C --- 172.24.4.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1002ms rtt min/avg/max/mdev = 0.636/0.640/0.644/0.004 ms # before ICMP rule ~$ ping 172.24.4.9 PING 172.24.4.9 (172.24.4.9) 56(84) bytes of data. ^C 30 / 40 Route VB Host

Slide 31

Slide 31 text

Test | VM Instance | 10.0.0.12 31 / 40

Slide 32

Slide 32 text

Basic Operations CLI - OSC 32 / 40

Slide 33

Slide 33 text

33 / 40 CLI Test demo user demo project ~/devstack$ . openrc demo demo WARNING: setting legacy OS_TENANT_NAME to support cli tools. ~/devstack$ openstack server list +--------------------------------------+------+--------+---------------------------------------- | ID | Name | Status | Networks +--------------------------------------+------+--------+---------------------------------------- | fe670153-8a9f-4f34-b4f3-6fc98e0a6937 | node | ACTIVE | private=10.0.0.12, fd3d:7fab:583d:0:f81 +--------------------------------------+------+--------+---------------------------------------- ~/devstack$ openstack image list +--------------------------------------+--------------------------+--------+ | ID | Name | Status | +--------------------------------------+--------------------------+--------+ | 2e5ea796-c099-4a55-a6d9-60f37a093039 | cirros-0.3.5-x86_64-disk | active | +--------------------------------------+--------------------------+--------+ ~/devstack$ openstack user list You are not authorized to perform the requested action: identity:list_users. (HTTP 403) (Request ~/devstack$ openstack --help ~/devstack$ openstack command list

Slide 34

Slide 34 text

# Keystone is serving at http://192.168.56.70/identity/ { "versions": { "values": [ { "status": "stable", "updated": "2017-02-22T00:00:00Z", "media-types": [ { "base": "application/json", "type": "application/vnd.openstack.identity-v3+json" } ], "id": "v3.8", "links": [ { "href": "http://192.168.56.70/identity/v3/", "rel": "self" } ] }, { "status": "deprecated", "updated": "2016-08-04T00:00:00Z", "media-types": [ { "base": "application/json", "type": "application/vnd.openstack.identity-v2.0+json" } ], "id": "v2.0", "links": [ { "href": "http://192.168.56.70/identity/v2.0/", "rel": "self" }, { "href": "https://docs.openstack.org/", "type": "text/html", "rel": "describedby" } ] 34 / 40 Keystone identity

Slide 35

Slide 35 text

~/devstack$ openstack --os-username=admin --os-password=12345 --os-auth-url=http://192.168.56. +----------------------------------+-----------+ | ID | Name | +----------------------------------+-----------+ | 072d377ecb23418eb6ce5466eed15934 | glance | | 54c88e67b1204721b39d1b1e7a0c3fae | demo | | 673e2bab55ab40f481ef5cbdd6c7a590 | placement | | 7b425ff57f4641c4a24a728498e4bb6b | admin | | 7cd343a1790f4673a1e069c516b792e3 | nova | | 7ddf2056049e4254aad083e10c27f538 | neutron | | 8f6e5671f00543f69bb172eaae6e6127 | alt_demo | | bcae28b0d6f84017bc5950a11883070b | cinder | +----------------------------------+-----------+ ~/devstack$ openstack --os-username=admin --os-password=12345 --os-auth-url=http://192.168.56. +----------------------------------+--------------------+ | ID | Name | +----------------------------------+--------------------+ | 00d1fbc04a524371b76507c3c4fe8bb1 | demo | | 4a5f1787cad44b859a44612362abb53c | alt_demo | | 4b09d781ee6149b690293b177d48392a | admin | | 51f1294b7f164a3e927214216c68ca65 | invisible_to_admin | | c2437dacab1d427a8d22faf9a45e36a7 | service | +----------------------------------+--------------------+ 35 / 40 CLI Auth via Keystone

Slide 36

Slide 36 text

~/devstack/accrc$ tree . |----- admin | |---- admin |----- alt_demo | |---- admin | |---- alt_demo |----- demo | |---- admin | |---- demo |----- invisible_to_admin |---- demo 4 directories, 6 files ~/devstack/accrc$ cat demo/demo # OpenStack USER ID = 54c88e67b1204721b39d1b1e7a0c3fae export OS_USERNAME="demo" # OpenStack project ID = 00d1fbc04a524371b76507c3c4fe8bb1 export OS_PROJECT_NAME="demo" export OS_AUTH_URL="http://192.168.56.70/identity" export OS_CACERT="" export NOVA_CERT="/opt/stack/devstack/accrc/cacert.pem" export OS_PASSWORD="12345" export OS_USER_DOMAIN_ID=default unset OS_USER_DOMAIN_NAME export OS_PROJECT_DOMAIN_ID=default unset OS_PROJECT_DOMAIN_NAME ~/devstack/accrc$ cat demo/admin # OpenStack USER ID = 7b425ff57f4641c4a24a728498e4bb6b export OS_USERNAME="admin" # OpenStack project ID = 00d1fbc04a524371b76507c3c4fe8bb1 export OS_PROJECT_NAME="demo" export OS_AUTH_URL="http://192.168.56.70/identity" export OS_CACERT="" export NOVA_CERT="/opt/stack/devstack/accrc/cacert.pem" export OS_PASSWORD="12345" export OS_USER_DOMAIN_ID=default unset OS_USER_DOMAIN_NAME export OS_PROJECT_DOMAIN_ID=default unset OS_PROJECT_DOMAIN_NAME t k@ 64 /d t k/ $ 36 / 40 accrc Templates

Slide 37

Slide 37 text

# static IP sdn@onos-tutorial:~$ cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto enp0s3 iface enp0s3 inet dhcp # The secondary network interface auto enp0s8 iface enp0s8 inet static address 192.168.56.70 netmask 255.255.255.0 network 192.168.56.0 broadcast 192.168.56.255 #gateway 192.168.56.1 #dns-nameservers 8.8.8.8 8.8.4.4 #iface enp0s8 inet dhcp 37 / 40 Notes

Slide 38

Slide 38 text

Refs/Resources 38 / 40

Slide 39

Slide 39 text

Refs/Resources 1. OpenStack Docs: DevStack 2. OpenStack Docs: OpenStackClient 3. openstack-dev/devstack 4. OpenStack Docs: All-In-One Single Machine 5. OpenStack Docs: DevStack Networking 6. Using your devstack cloud 39 / 40

Slide 40

Slide 40 text

40 / 40 END Eueung Mulyana https://telematika.org/remark/devstack Intro+Labs | Attribution-ShareAlike CC BY-SA