Upgrade Openstack de la Liberty la Queens

Pentru upgrade-ul cluster-ului vom trece prin fiecare release în parte, dar nu vom face upgrade fiecărui serviciu
la acel release, în afară de Ocata și Queens.

Liberty –> Mitaka.
Singurul serviciu care are nevoie de upgrade la Liberty la Mitaka este Nova, dar este nevoie de un pas manual aici.
În primul rând se închid toate serviciile, atât pe controller cât și pe node-urile de compute.
1. Se face upgrade la Mitaka pe controller.
1.1 Se șterge repository-ul de Liberty (oricum nu mai este actual).
yum remove centos-release-openstack-liberty

 
1.2 Se instalează un repository de Mitaka, îl putem folosi pe acesta:
yum-config-manager –add-repo http://distro.ctinetworks.com/distro/mirror/centos/7.3.1611/cloud/x86_64/openstack-mitaka/
dar va trebuie dat argumentul –nogpgcheck la install, deoarece repository-ul nu are chei.

 
1.3 Se face update la endpoint-uri, deocamdată ele arată așa:
http://controller:8774/v2/%\(tenant_id\)s
Noile endpoint-uri vor fi de forma:
http://controller:8774/v2.1/%\(tenant_id\)s
Pentru a modifica endpoint-urile se caută id-urile folosind coamanda:
openstack endpoint list | grep compute, și se ia fiecare ID în parte și se dă mai departe
la comanda:
openstack endpoint set –url http://controller:8774/v2.1/%\(tenant_id\)s <id>

 
1.4 Se face update la serviciile ce compun Nova:
yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler –nogpgcheck

 
1.5 Se face update la config.
Cea mai importantă schimbare este modul în care se face conexiunea la baza de date.
Sub header-ul [database] va fi de forma:
connection = mysql+pymysql://nova:NOVA_PASS@controller/nova
Sub header-ul [api_database] va fi de forma:
connection = mysql+pymysql://nova:NOVA_PASS@controller/nova_api
În rest, se folosește fișierul de configurare de la Mitaka pentru a găsi ce elemente de configurare
sunt de actualitate și care sunt învechite:
https://docs.openstack.org/mitaka/config-reference/compute/config-options.html

 
1.6 Se face sincronizarea bazei de date:
su -s /bin/sh -c “nova-manage api_db sync” nova
su -s /bin/sh -c “nova-manage db sync” nova

 
2. Se face update la Mitaka pe node-uri de compute:
2.1 Se șterge repository-ul de la Liberty:
yum remove centos-release-openstack-liberty

 
2.2 Se instalează un repository de Mitaka:
yum-config-manager –add-repo http://distro.ctinetworks.com/distro/mirror/centos/7.3.1611/cloud/x86_64/openstack-mitaka/

 
2.3 Se face upgrade la pachete:
yum install openstack-nova-compute python2-os-brick –nogpgcheck

 
2.4 Se actualizează fișierul de configurare folosind template-ul de mai sus.

 
3. Se deschid doar serviciile ce compun Nova atât pe controller cât și pe node-urile de compute.
Motivul pentru care este necesară redeschiderea serviciului de compute este schimbarea pe care o aduce
Mitaka bazei de date. Aceasta adaugă o coloană în tabela compute_nodes din baza de date nova numită uuid.
Dacă node-urile de compune nu se conectează iar la controller acest câmp va rămâne gol, ceea ce va creea probleme
la upgrade-ul către Newton, deoarece orice intrare în baza de date cu uuid=NULL va trebui șteargă înainte de sincronizare.

 
4. Se închide Nova atât pe controller cât și pe compute-uri.

 

Mitaka –> Newton
Se șterge repository-ul de Mitaka:
rm -f /etc/yum.repos.d/distro.ctinetworks.com_distro_mirror_centos_7.3.1611_cloud_x86_64_openstack-mitaka.repo
Se adaugă repository-ul de Newton
yum-config-manager –add-repo http://distro.ctinetworks.com/distro/mirror/centos/7.3.1611/cloud/x86_64/openstack-newton/

 

[Cinder]
1. Se face upgrade la Cinder pe controller:
1.1 Se face upgrade la pachete:
yum install openstack-cinder python2-os-brick –nogpgcheck

 
1.2 Se actualizează fișierul de configurare.
https://docs.openstack.org/newton/config-reference/block-storage/samples/cinder.conf.html
O schimbare importantă care este bine să fie făcută, chiar dacă opțională în acest release, este modul în care
serviciile se conectează la coada de mesaje.
De la Newton în prezent se face în felul următor. Sub [DEFAULT] se pune:
transport_url = rabbit://RABBIT_USER:RABBIT_PASSWORD@controller

 
1.3 Deoarece o funcție din sqlalchemy caută un parametru de config care nu există în Cinder, trebuie făcut un fix.
vim /usr/lib/python2.7/site-packages/cinder/db/sqlalchemy/api.py
La linia 89 se adaugă un `if hasattr(CONF, ‘profiler’):` peste acel bloc mic de cod.

 
1.4 Se sincronizează baza de date:
su -s /bin/sh -c “cinder-manage db sync” cinder

 

[Nova]
2. Se face upgrade la Nova pe controller:
2.1 Se face upgrade la pachete:

yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler –nogpgcheck

 
2.2 Se face update la fișierul de configurare. Noul template este:
https://docs.openstack.org/newton/config-reference/compute/config-options.html

 
2.3 Se sincronizează bazele de date și se fac migrări în ele:
su -s /bin/sh -c “nova-manage api_db sync” nova
su -s /bin/sh -c “nova-manage db sync” nova
su -s /bin/sh -c “nova-manage db online_data_migrations” nova

 

[Neutron]
3.1 Se face upgrade la pachete:
yum install openstack-neutron openstack-neutron-ml2 \
openstack-neutron-openvswitch ebtables openstack-neutron-vpnaas openstack-neutron-fwaas \
openstack-neutron-lbaas openstack-neutron-metering-agent python2-pecan –nogpgcheck

 
3.2 Se actualizează fișierele de configurare.
https://docs.openstack.org/newton/config-reference/networking/samples/index.html

 
3.3 Se sincronizează baza de date:
su -s /bin/sh -c “neutron-db-manage –config-file /etc/neutron/neutron.conf \
–config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head” neutron

 

Newton –> Ocata
Se șterge repository-ul de Newton:
rm -f /etc/yum.repos.d/distro.ctinetworks.com_distro_mirror_centos_7.3.1611_cloud_x86_64_openstack-newton_.repo
Se adaugă repository-ul de Ocata
yum install centos-release-openstack-ocata

 

[Glance]
1.1 Se face upgrade la pachete:
yum install openstack-glance python-osprofiler

 
1.2 Se actualizează fișierul de configurare.
https://docs.openstack.org/ocata/config-reference/image/sample-configuration-files.html

 
1.3 Se sincronizează baza de date:
su -s /bin/sh -c “glance-manage db_sync” glance

 

[Keystone]
2.1 Se face update la endpoint-uri, deocamdată ele arată așa:
public: http://controller:5000/v2.0
internal: http://controller:5000/v2.0
admin: http://controller:35357/v2.0
În Ocata trebuie să arate așa:
public: http://controller:5000/v3
internal: http://controller:5000/v3
admin: http://controller:35357/v3
Update-ul se face ca mai sus.

 
2.2 Se face update la pachete:
yum install openstack-keystone httpd mod_wsgi python2-oslo-middleware

 
2.3 Se face update la fișierul de configurare:
https://docs.openstack.org/ocata/config-reference/identity/samples/keystone.conf.html

 
2.4 Se sincronizează baza de date:
su -s /bin/sh -c “keystone-manage db_sync” keystone

 
2.5 Dacă se dorește să se folosească token-uri de tip Fernet se rulează:
keystone-manage fernet_setup –keystone-user keystone –keystone-group keystone
keystone-manage credential_setup –keystone-user keystone –keystone-group keystone

 
2.6 Dacă nu există deja, se creează un link simbolic către wsgi-keystone.conf:
rm -f /etc/httpd/conf.d/wsgi-keystone.conf
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

 
2.7 Din cauza unor probleme de permisiuni se rulează următoarea comandă:
chown keystone:keystone /usr/bin/keystone-wsgi-admin /usr/bin/keystone-wsgi-public

 

[Cinder]
3.1 Se modifică endpoint-urile cinderv2 pentru a folosi `project_id` în loc de `tenant_id`.

 
3.2 Se creează serviciul cinderv3:
openstack service create –name cinderv3 \
–description “OpenStack Block Storage” volumev3

 
3.3 Se creează endpoint-urile pentru cinderv3:
openstack endpoint create –region REGION_NAME \
volumev3 public http://controller:8776/v3/%\(project_id\)s
openstack endpoint create –region REGION_NAME \
volumev3 internal http://controller:8776/v3/%\(project_id\)s
openstack endpoint create –region REGION_NAME \
volumev3 admin http://controller:8776/v3/%\(project_id\)s

 
3.4 Se face upgrade la pachete:
yum upgrade openstack-cinder

 
3.5 Se actualizează fișierul de configurare:
https://docs.openstack.org/ocata/config-reference/block-storage/samples/cinder.conf.html

 
3.6 Se sincronizează baza de date:
su -s /bin/sh -c “cinder-manage db sync” cinder

 

 

[Heat]
4.1 Se face upgrade la pachete:
yum install openstack-heat-api openstack-heat-api-cfn \
openstack-heat-engine

 
4.2 Se actualizează fișierul de configurare:
https://docs.openstack.org/ocata/config-reference/orchestration.html

 
4.3 Se sincronizează baza de date:
su -s /bin/sh -c “heat-manage db_sync” heat

 

 

[Nova]
5.1 Se creează baza de date `nova_cell0` și i se oferă privlegii user-ului nova asupra acesteia:
MariaDB [(none)]> CREATE DATABASE nova_cell0;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO ‘nova’@’localhost’ \
IDENTIFIED BY ‘NOVA_DBPASS’;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO ‘nova’@’%’ \
IDENTIFIED BY ‘NOVA_DBPASS’;

 
5.2 Se face update la endpoint-uri. Deocamdată sunt de forma:
http://controller:8774/v2/%\(tenant_id\)s
În Ocata sunt de forma:
http://controller:8774/v2.1

 
5.3 Se creează user-ul `placement`:
openstack user create –domain default –password-prompt placement

 
5.4 Se adaugă user-ul placement la proiectul `service` și la rolul de admin:
openstack role add –project service –user placement admin

 
5.5 Se creează serviciul placement:
openstack service create –name placement –description “Placement API” placement

 
5.6 Se creează endpoint-urile pentru serviciul placement:
openstack endpoint create –region REGION_NAME placement public http://controller:8778
openstack endpoint create –region REGION_NAME placement internal http://controller:8778
openstack endpoint create –region REGION_NAME placement admin http://controller:8778

 
5.7 Se face upgrade la pachete:
yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api python2-oslo-middleware

 
5.8 Se actualizează fișierul de configurare:
https://docs.openstack.org/ocata/config-reference/compute.html

 
5.9 În /etc/httpd/conf.d/00-nova-placement-api.conf se adaugă:
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>

 
5.10 Se modifică fișierul /usr/lib/python2.7/site-packages/nova/db/sqlalchemy/api.py și se adaugă
la linia 115 `if hasattr(CONF, ‘profiler’):` ca și mai sus.

 
5.11 De la Ocata a devenit obligatorie tranziția către cell-uri, care sunt niște baze de date ce țin
evidența node-urilor de compute:
su -s /bin/sh -c “nova-manage cell_v2 map_cell0” nova
su -s /bin/sh -c “nova-manage cell_v2 create_cell –name=cell1 –verbose” nova

 
5.12 Se sincronizează baza de date:
su -s /bin/sh -c “nova-manage api_db sync” nova
su -s /bin/sh -c “nova-manage db sync” nova

 

[Neutron]
6.1 Se face upgrade la pachete:
yum install openstack-neutron openstack-neutron-ml2 \
openstack-neutron-openvswitch ebtables openstack-neutron-vpnaas openstack-neutron-fwaas \
openstack-neutron-lbaas openstack-neutron-metering-agent

 
6.2 Se actualizează fișierele de configurare:
https://docs.openstack.org/ocata/config-reference/networking/samples/index.html

 
6.3 Se sincronizează baza de date:
su -s /bin/sh -c “neutron-db-manage –config-file /etc/neutron/neutron.conf \
–config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head” neutron

 

Ocata –> Pike
Se șterge repository-ul de Ocata:
yum remove centos-release-openstack-ocata
Se
instalează cel de Pike:
yum install centos-release-openstack-pike
[Neutron]
1.1 Se face upgrade la pachete:
yum install openstack-neutron openstack-neutron-ml2 \
openstack-neutron-openvswitch ebtables openstack-neutron-vpnaas openstack-neutron-fwaas \
openstack-neutron-lbaas openstack-neutron-metering-agent

 
1.2 Se face upgrade la fișierele de configurare:
https://docs.openstack.org/neutron/pike/configuration/

 
1.3 Se sincronizează baza de date:
su -s /bin/sh -c “neutron-db-manage –config-file /etc/neutron/neutron.conf \
–config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head” neutron

 

Pike –> Queens
Se șterge repository-ul de Pike și cel învechit de Ceph:
yum remove centos-release-openstack-pike
yum remove centos-release-ceph-jewel-1.0-1.el7.centos.noarch
Se instalează repository-ul de Queens și cel nou de Ceph:
yum install centos-release-ceph-luminous
yum install centos-release-openstack-queens

 

[Keystone]
1.1 Se face upgrade la endpoint-uri. Rămân la fel, însă Keystone ascultă numai pe port-ul 5000, deci
vor arăta așa:
public: http://controller:5000/v3
internal: http://controller:5000/v3
admin: http://controller:5000/v3

 

1.2 Se face upgrade la pachete:
yum install openstack-keystone httpd mod_wsgi

 

1.3 Se actualizează fișierul de configurare:
https://docs.openstack.org/keystone/queens/configuration/samples/keystone-conf.html

 

1.4 Se sincronizează baza de date:
su -s /bin/sh -c “keystone-manage db_sync” keystone

 

[Cinder]
2.1 Se face upgrade la pachete:
yum install pyparsing openstack-cinder

 

2.2 Se actualizează fișierele de configurare:
https://docs.openstack.org/cinder/queens/configuration/block-storage/samples/cinder.conf.html

 

2.3 Se sincronizează baza de date:
su -s /bin/sh -c “cinder-manage db sync” cinder

 

[Nova]
Pe controller:
3.1 Se face upgrade la pachete:
yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-placement-api

 
3.2 Se face update la config:
https://docs.openstack.org/nova/queens/configuration/sample-config.html

 

3.3 Se sincronizează bazele de date:
su -s /bin/sh -c “nova-manage api_db sync” nova
su -s /bin/sh -c “nova-manage db sync” nova

 

Pe compute:
3.4 Se face upgrade la pachete:
yum install openstack-nova-compute

 

3.5 Se face upgrade la config.

 

[Neutron]
Pe controller:
4.1 Se face upgrade la pachete:
yum install openstack-neutron openstack-neutron-ml2 \
openstack-neutron-openvswitch ebtables openstack-neutron-vpnaas openstack-neutron-fwaas \
openstack-neutron-lbaas openstack-neutron-metering-agent

 
4.2 Se actualizează fișierele de configurare:
https://docs.openstack.org/neutron/queens/configuration/

 
4.3 Se sincronizează baza de date:
su -s /bin/sh -c “neutron-db-manage –config-file /etc/neutron/neutron.conf \
–config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head” neutron

 

Pe compute:
4.4 Se face upgrade la pachete:
yum install openstack-neutron-openvswitch ebtables

 
4.5 Se actualizează fișierele de configurare

 

[Heat]
5.1 Se face upgrade la pachete:
yum install openstack-heat-api openstack-heat-api-cfn \
openstack-heat-engine

 
5.2 Se actualizează fișierul de configurare:
https://docs.openstack.org/heat/queens/configuration/

 
5.3 Se sincronizează baza de date:
su -s /bin/sh -c “heat-manage db_sync” heat

 

[Glance]
6.1 Se face upgrade la pachete:
yum install openstack-glance

 

6.2 Se actualizează fișierul de configurare:
https://docs.openstack.org/glance/queens/configuration/

 

6.3 Se sincronizează baza de date:
su -s /bin/sh -c “glance-manage db_sync” glance

 

[Horizon]
7.1 Se face upgrade la pachete:
yum install openstack-dashboard

 

7.2 Se actualizează fișierul de configurare:
https://docs.openstack.org/horizon/queens/configuration/settings.html

Things to watch out for:
– lbaas este învechit, se trece la Openstack Octavia pentru Load Balancing
– vpnaas e integrat în l3_agent în Queens.
– e bine să se pună un SECRET_KEY în local_settings (Horizon), deoarece există un bug care nu îl lasă
să caute în /tmp

Username-uri implicite

Salutare

Aveti mai jos lista username-urilor implicite pentru fiecare imagine in parte:

  • Centos 6 – centos
  • Centos 7 – centos
  • Debian 8.6.0 – debian
  • Ubuntu 16.04 Xenial – ubuntu
  • Ubuntu 16.04 Xenial (32bit) – ubuntu
  • ABD Template v1 – student
  • ASCG/CCG Template v2 – student
  • GSR Template (Debian 8.6.0) – student
  • ISRM Template v2 – student
  • RL 2016 – student
  • RL 2016 Tema2 – student
  • SAISP Template v1 – student
  • USO Template (Ubuntu 16.0.4 – 32bit) – student
  • USO Practic Template (Ubuntu 16.0.4 – 32bit) – student

Incercam pe viitor sa standardizam username-ul sa fie acelasi la toate instantele.

Windows 2012R2 pe Openstack

Salutare

Este disponibila imaginea de Windows 2012R2 oferita de cei de la CloudBase. Este un base install de Windows 2012R2, neavand nici un alt software instalat pe ea.

Daca vreti sa o testati recomandam sa folositi un flavor ce are minim 2G ram.

Odata masina pornita (dureaza in jur de 15min) puteti cere parola pentru userul Admin folosind linia de comanda:

[razvan.dobre@fep-62-2 ~]$ source openstack/openstackrc
Please enter your OpenStack Password:
[razvan.dobre@fep-62-2 ~]$ nova get-password feb0fa7b-2387-4d46-86f5-05502f74fd2b ~/.ssh/openstack.key
VfTQl0HtfvRpIt

In cazul in care nu primiti nici un raspuns, verificati statusul instantei accesand tabul Console din Dashboard si reincercati rularea comenzii.

Comanda nova get-password are urmatoarea sintaxa:

[razvan.dobre@fep-62-2 ~]$ nova help get-password
usage: nova get-password <server> <private-key>

Get password for a server.

Positional arguments:
 <server> Name or ID of server.
 <private-key> Private key (used locally to decrypt password).

Pentru conectarea la instanta trebuie sa tunelati portul 3389 astfel:

ssh razvan.dobre@fep.grid.pub.ro -L 3389:10.42.130.154:3389

Folositi Remote Desktop de pe calculatorul vostru pentru a va conecta la localhost:3389. Autentificarea se face cu userul Admin si parola aflata mai sus.

 

Asociere automata de floating ips

Salutare

Am modificat setarile Openstack astfel incat sa se aloce automat ip-uri flotante instantelor noi create. In acest moment cand creati o instanta noua aceasta va primi automat 2 adrese ip, una din clasa 10.8.0.0/16 (adresa privata) si una din clasa 10.42.0.0/16 (adresa publica, accesibila de pe fep.grid.pub.ro).

Folositi adresa din clasa 10.42.0.0/16 pentru conectarea la masina virtuala. Adresele ip care sunt asociate deja proiectului pot fi eliberate (Access & Security -> Floating IPs -> select ip -> Release Floating IPs).

Am actualizat si documentatie de pe pagina principala (cloud.curs.pub.ro).

ASCG/CCG Template v1

A fost lansata prima versiune a template-ului Openstack pentru materiile ASCG/CCG. Acesta contine o imagine de Opensuse 12.3 la care se adauga cloud-init instalat manual pentru a beneficia de metadatele oferite de Openstack. In cadrul laboratolui veti instala in aceasta masina virtuala kernelul de Mosix.

Pentru a utiliza template-ul, creati o noua instanta (Screen Shot 2014-10-26 at 10.50.28 PM) si alegeti “ASCG/CCG Template v1” din sectiunea “Image name”. Template-ul nu va functiona cu flavor-urile m1.micro sau mi1.tiny.

Folositi username-ul root pentru autentificare in cadrul masinii virtuale. Parola va fi furnizata la curs/laborator.

USO Template v1

A fost lansat template-ul v1 pentru USO. Acesta consta in intr-o masina virtuala cu 2 containere LXC aferente, ca in figura de mai jos:

uso-topo-v1-2

Toate host-urile (router, host-01 si host-02) sunt bazate pe Ubuntu 12.04 LTS.

Conectarea la host-uri se face folosind urmatorii useri:

  • router
    • username: student, parola: student
    • username: student, parola: cheia-publica
  • host-01, host-02
    • username: student, parola: student
    • username: ubuntu, parola: ubuntu

Reteaua formata din router(lxcbr0), host-01 (eth0) si host-02 (eth0) se autoconfigureaza prin dhcp, iar host-urile vor primi ip-urile din figura. Ambele containere au acces la internet.

Reteaua formata din host-01 (eth1) si host-02 (eth1) nu este configurata la nivelul ip.

Pentru manipularea containerelor host-01 si host-02 se folosesc urmatoarele utilitare:

  • lxc-list – afiseaza starea tuturor containerelor
  • lxc-stop -n host-01 – opreste containerul host-01
  • lxc-start -d -n host-01 – porneste containerul host-01
  • lxc-console -n host-01 – acceseaza consola host-01. Aceast utilitar este util atunci cand se pierde conectivitatea IP cu respectivul container. Pentru a iesi din consola se foloseste CTRL+a q

 

Ubuntu 12.04

A fost adaugata imaginea Openstack pentru Ubuntu 12.04. Imaginea reprezinta o instalare simpla a Ubuntu 12.04, versiunea server (fara interfata grafica). Pentru autentificare folositi ssh, contul student si cheia privata proprie din ~/openstack/openstack.key.