Laboratorium OpenStack
Ustawienia grup
Każda z grup posiada rożne adresy IP, które będą używane w poniższych ćwiczeniach. Zanotuj je i pamiętaj aby w konfiguracji wprowadzać poprawne dane - w przeciwnym wypadku lab może nie działać poprawnie.
nazwa hosta: openstack1.lab.local
adres IP hosta: 10.0.197.11
Pula adresow plywajacych: 10.0.197.111,10.0.197.120
nazwa hosta: openstack2.lab.local
adres IP hosta: 10.0.197.12
Pula adresow plywajacych: 10.0.197.121,10.0.197.130
nazwa hosta: openstack3.lab.local
adres IP hosta: 10.0.197.13
Pula adresow plywajacych: 10.0.197.131,10.0.197.140
nazwa hosta: openstack4.lab.local
adres IP hosta: 10.0.197.14
Pula adresow plywajacych: 10.0.197.141,10.0.197.150
nazwa hosta: openstack5.lab.local
adres IP hosta: 10.0.197.15
Pula adresow plywajacych: 10.0.197.151,10.0.197.160
nazwa hosta: openstack6.lab.local
adres IP hosta: 10.0.197.16
Pula adresow plywajacych: 10.0.197.161,10.0.197.170
nazwa hosta: openstack7.lab.local
adres IP hosta: 10.0.197.17
Pula adresow plywajacych: 10.0.197.171,10.0.197.180
nazwa hosta: openstack8.lab.local
adres IP hosta: 10.0.197.18
Pula adresow plywajacych: 10.0.197.181,10.0.197.190
Instalacja
1. Wybór platformy systemowej
Po uruchomieniu, system załaduje z sieci dostępne profile i rozpocznie instalacje CentOSa. Zapytaj prowadzącego lab, który z profili należy wybrać

2. Dezaktywacja zbędnych usług
Dezaktywuj zbędne/niekompatybilne usługi (poniższe usługi przestaną działać po restarcie systemu):
systemctl disable firewalld
systemctl disable NetworkManager
3. Instalacja brakujących pakietów
Zaktualizuj system i zainstaluj brakujące pakiety:
yum install -y openvswitch*
yum -y update
4. Instalacja repozytoriów OpenStack
Zainstaluj repozytoria instalacyjne OpenStack i zrestartuj serwer:
yum install -y https://rdoproject.org/repos/rdo-release.rpm
yum -y update
yum install -y openstack-packstack
5a. Ustawienie nazwy hosta
Zmień nazwę hosta na openstackX.lab.local gdzie X jest numerem grupy
hostnamectl set-hostname openstack<<numer_grupy>>.lab.local
5b. Ustawienie nazwy hosta
Dodaj wpis do pliku /etc/hosts dotyczący FQDN hosta:
10.0.197.<<numer_grupy>> openstack<<numer_grupy>>.lab.local openstack<<numer_grupy>>
Dla przykładu, plik /etc/hosts dla grupy 23 powinien wyglądać następująco:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.197.23 openstack23.lab.local openstack23
6a. Konfiguracja wirtualnego switcha
Za pomocą polecenia:
ip a
zlokalizuj nazwę interfejsu sieciowego podłączonego do sieci (z adresem 10.0.197.0/24). W niniejszym przykładzie jest to interfejs en01
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether d0:bf:9c:46:31:c0 brd ff:ff:ff:ff:ff:ff
inet 10.0.197.203/24 brd 10.0.197.255 scope global noprefixroute dynamic eno1
valid_lft 574sec preferred_lft 574sec
inet6 fe80::d2bf:9cff:fe46:31c0/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether d0:bf:9c:46:31:c1 brd ff:ff:ff:ff:ff:ff
...a następnie za pomocą jednego z edytorów (vim,mcedit,nano) zmodyfikuj plik konfiguracyjny interfejsu /etc/sysconfig/network-scripts/ifcfg-<<nazwa_interfejsu_zlokalizowanego_powyżej>>
DEVICE=<<nazwa_interfejsu_zlokalizowanego_powyżej>>
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=br-ex
ONBOOT=yes
6b. Konfiguracja wirtualnego switcha
Ustaw statyczny adres IP (10.0.197.X gdzie X jest numerem grupy) oraz skonfiguruj interfejs br-ex. Do tego celu musisz stworzyć plik: /etc/sysconfig/network-scripts/ifcfg-br-ex
touch /etc/sysconfig/network-scripts/ifcfg-br-ex
..a następnie za pomocą jednego z edytorów (vim, mcedit, nano) wyedytuj jego zawartość
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=10.0.197.<<numer_grupy>>
NETMASK=255.255.255.0
GATEWAY=10.0.197.200
DNS1=8.8.8.8
ONBOOT=yes
6c. Konfiguracja wirtualnego switcha - testy
Zresetuj serwer, uruchom konsole, sprawdź ustawienia sieci i wykonaj polecenie PING na domyślną bramę (10.0.197.200 oraz adres serwera DNS)
Wykonaj polecenie: ip a aby sprawdzić konfiguracje sieci
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP group default qlen 1000
link/ether 00:0c:29:1c:6e:7a brd ff:ff:ff:ff:ff:ff
inet6 fe80::20c:29ff:fe1c:6e7a/64 scope link
valid_lft forever preferred_lft forever
3: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether a2:a9:3f:b8:17:13 brd ff:ff:ff:ff:ff:ff
4: br-ex: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether 00:0c:29:1c:6e:7a brd ff:ff:ff:ff:ff:ff
inet 10.0.197.11/24 brd 10.0.197.255 scope global br-ex
valid_lft forever preferred_lft forever
inet6 fe80::c46c:99ff:fe84:9b42/64 scope link
valid_lft forever preferred_lft forever
Wykonaj polecenie ping 10.0.197.200 aby sprawdzić poprawna konfiguracje sieci
PING 10.0.197.200 (10.0.197.200) 56(84) bytes of data.
64 bytes from 10.0.197.200: icmp_seq=1 ttl=64 time=0.747 ms
64 bytes from 10.0.197.200: icmp_seq=2 ttl=64 time=0.715 ms
64 bytes from 10.0.197.200: icmp_seq=3 ttl=64 time=0.707 ms
--- 10.0.197.200 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.707/0.723/0.747/0.017 ms
Wykonaj polecenie dig www.eti.pg.gda.pl aby sprawdzić poprawne połączenie z usługą DNS
DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> www.eti.pg.gda.pl
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6207
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.eti.pg.gda.pl. IN A
;; ANSWER SECTION:
www.eti.pg.gda.pl. 8829 IN A 153.19.55.227
;; Query time: 16 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Apr 16 20:20:35 CEST 2019
;; MSG SIZE rcvd: 62
7. Tworzenie domyślnego pliku konfiguracyjnego
Wygeneruj plik konfiguracyjny (answer-file)
packstack --gen-answer-file=lab_config
8. Edycja domyślnego pliku konfiguracyjnego
Wyedytuj plik answer-file zmieniając następujące wartości
CONFIG_CEILOMETER_INSTALL=n
CONFIG_AODH_INSTALL=n
CONFIG_CINDER_VOLUMES_SIZE=500G
CONFIG_PROVISION_DEMO=n
9. Instalacja OpenStack
Rozpocznij instalacje podając answer_file jako plik konfiguracyjny:
[root@openstack1 ~]# packstack --answer-file=lab_config
Proces instalacji może zająć do 15 minut
Welcome to the Packstack setup utility
The installation log file is available at: /var/tmp/packstack/20190416-221959-AcJnyW/openstack-setup.log
Installing:
Clean Up [ DONE ]
Discovering ip protocol version [ DONE ]
Setting up ssh keys [ DONE ]
Preparing servers [ DONE ]
Pre installing Puppet and discovering hosts' details [ DONE ]
Preparing pre-install entries [ DONE ]
Setting up CACERT [ DONE ]
Preparing AMQP entries [ DONE ]
Preparing MariaDB entries [ DONE ]
Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]
Preparing Keystone entries [ DONE ]
Preparing Glance entries [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Preparing Cinder entries [ DONE ]
Preparing Nova API entries [ DONE ]
Creating ssh keys for Nova migration [ DONE ]
Gathering ssh host keys for Nova migration [ DONE ]
Preparing Nova Compute entries [ DONE ]
Preparing Nova Scheduler entries [ DONE ]
Preparing Nova VNC Proxy entries [ DONE ]
Preparing OpenStack Network-related Nova entries [ DONE ]
Preparing Nova Common entries [ DONE ]
Preparing Neutron LBaaS Agent entries [ DONE ]
Preparing Neutron API entries [ DONE ]
Preparing Neutron L3 entries [ DONE ]
Preparing Neutron L2 Agent entries [ DONE ]
Preparing Neutron DHCP Agent entries [ DONE ]
Preparing Neutron Metering Agent entries [ DONE ]
Checking if NetworkManager is enabled and running [ DONE ]
Preparing OpenStack Client entries [ DONE ]
Preparing Horizon entries [ DONE ]
Preparing Swift builder entries [ DONE ]
Preparing Swift proxy entries [ DONE ]
Preparing Swift storage entries [ DONE ]
Preparing Puppet manifests [ DONE ]
Copying Puppet modules and manifests [ DONE ]
Applying 10.0.197.11_controller.pp
10.0.197.11_controller.pp: [ DONE ]
Applying 10.0.197.11_network.pp
10.0.197.11_network.pp: [ DONE ]
Applying 10.0.197.11_compute.pp
10.0.197.11_compute.pp: [ DONE ]
Applying Puppet manifests [ DONE ]
Finalizing [ DONE ]
**** Installation completed successfully ******
Additional information:
* Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
* File /root/keystonerc_admin has been created on OpenStack client host 10.0.197.11. To use the command line tools you need to source the file.
* To access the OpenStack Dashboard browse to http://10.0.197.11/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
* The installation log file is available at: /var/tmp/packstack/20190416-221959-AcJnyW/openstack-setup.log
* The generated manifests are available at: /var/tmp/packstack/20190416-221959-AcJnyW/manifests
You have new mail in /var/spool/mail/root
Konfiguracja
1. Logowanie do pulpitu OpenStack
Zaloguj się to openstack za pomocą następującego linka (pamiętaj, aby w miejsce XXX wprowadzić numer swojej grupy):
http://openstackXXX.radkowski.local/dashboard
Login i hasło do dostępu znajdują się w pliku /root/keystonerc_admin

2. Konfiguracja Security Groups
Na potrzeby niniejszego maila należny stworzyć nowa grupę zabezpieczeń pozwalającą na połączenia w obydwu kierunkach dla protokołów TCP, UDP i ICMP.
W pierwszym kroku tworzymy grupę o nazwie lab_studium_sec_group
3. Modyfikacje reguł Security Groups
Za pomocą przycisku Manage Rules, uruchamiamy edycje grupy. Usuwamy dwie domyślne reguły oraz dodajemy 6 nowych przepuszczających ruch TCP, UDP i ICMP w obydwu kierunkach
4. Przegląd reguł Security Groups
Po wprowadzeniu wszystkich reguł, konfiguracja powinna wyglądać następująco

5a. Konfiguracja sieci - zdefiniowanie sieci zewnętrznej
Za pomocą zakładki Admin -> Networks -> Networks zdefiniuj nowa siec zewnętrzna w/g poniższych parametrów (przycisk Create Network):
- Name: siec_zewnetrzna
- Project: admin
- Provider Network Type: Flat
- Physical Network: extnet
- Enable Admin State: aktywne
- Shared: nieaktywne
- External Network: aktywne
- Create Subnet: aktywne
5c. Konfiguracja sieci - zdefiniowanie uslug podsieci
- Allocation Pools: Adresy IP przypisane grupie
- DNS: puste
- Host Routers: puste
OpenStack dysponuje narzędziami konsolowymi, umożliwiającymi konfiguracje systemu bez konieczności uruchamiania panelu webowego. Skrypt konfiguracji sieci (analogicznej do powyższej) znajduje się poniżej
# . keystonerc_admin
# neutron net-create external_network --provider:network_type flat --provider:physical_network extnet --router:external
# neutron subnet-create --name public_subnet --enable_dhcp=False --allocation-pool=start=192.168.122.10,end=192.168.122.20 \
--gateway=192.168.122.1 external_network 192.168.122.0/24
# neutron net-create private_network
# neutron subnet-create --name private_subnet private_network 192.168.100.0/24
# neutron router-create router1
# neutron router-gateway-set router1 external_network
neutron router-interface-add router1 private_subnet
5i. Testowanie poprawności konfiguracji sieci
Za pomocą zakładki Project -> Network -> Network Topology sprawdź poprawność konfiguracji sieci oraz routera
6. Dodanie obrazu instalacyjnego
Cirros jest mini dystrybucją linuxa dedykowaną do testów (min. konfiguracji OpenStack). Korzystając z poniższego linku, pobierz obraz instalacyjny na lokalny komputer
Nastepnie za pomoca Project -> Images dodaj obraz do systemu klikajac przycisk New Image:
- Image Name: Cirros
- Image Source: pobrany wczesniej plik.img
- Format: QCOW2
- Minimum Disk: 1GB
- Minimum RAM: 256MB
Praca w środowisku OpenStack
9b. Konfiguracja pływającego IP - definicja nowych adresów
Jeśli system nie dysponuje wolnymi adresami, należy dodać je za pomocą przycisku +. Adresy te zostaną dodane z puli, zdefiniowanej na początku dokumentacji jako "Pula adresów pływających"
10b. Uruchamianie wielu instancji jednocześnie - nazewnictwo
Po uruchomieniu system zacznie budować instancje w identyczny sposób, jak buduje pojedyncze. Każda z nowej instancji będzie posiadać nazwę zdefiniowana podczas konfiguracji oraz numer. W niniejszym przykładzie jako nazwę podano multi, system sam po myślniku dodał kolejne numery: multi-1, multi-2, ....multi-9,multi-10
10c. uruchamianie wielu instancji jednocześnie - podgląd topologii
Istnieje możliwość podglądu skonfigurowanej topologii w widoku "Network Topology". Pokazuje on nie tylko liczbę uruchomionych instancji ale również i siec(i) do której są podłączone oraz router(y) za pomocą których łącza się ze światem zewnętrznym i/lub innymi sieciami zdefiniowanymi w systemie.