OpenStack workshop
Cíl workshopu - seznámit uživatele s prostředím OpenStack - procvičit základní úkony v OpenStack: - vytváření instancí - správa virtuálních disků - správa image - práce s virtuálními sítěmi - práce s příkazovou řádkou - vytváření šablon Slajdy jsou k dispozici zde: http://bit.ly/2jewuen
OpenStack - open-source cloudová platforma pro řízení rozsáhlých výpočetních, úložných a síťových zdrojů v datacentru - uživatelům dává přístup ke správě zdrojů přes webové rozhraní a API - Vznikl v roce 2010 jako společný projekt Rackspace Hosting a NASA - Od roku 2012 je zastřešený neziskovou organizací OpenStack Foundation - V projektu je zapojeno přes 500 společností - OpenStack tvoří cca 20 projektů (komponent) - 6 měsíční vývojový cyklus
NIST service model
Projekty - nasazeny všechny core projekty - Horizon - webový portál - Ceilometer - sběr dat o využití cloudu - Heat - orchestrace - Murano - aplikační katalog - všechny projekty mají veřejně dostupné API - webový portál nabízí pouze část funkcionality
Terminologie Project / tenant - množina zdrojů přiřazená skupině uživatelů Instance - bežící virtuální server Image (raw, qcow2) - kolekce souborů tvořících operační systém, ze které se vytváří instance Flavor - popisuje seznam zdrojů, které se přidělí instanci (CPU, RAM, HDD) Snapshot - obraz disku instance Floating IP - veřejná IP adresa, kterou lze připojit k instanci Security groups - seznam síťových pravidel (firewall) RC file - soubor, který nastavuje proměnné prostředí pro práci s příkazovou řádkou
Webový portál (Horizon) - umožňuje správci řídit a monitorovat cloudové zdroje - uživatelům umožňuje vytvářet a spravovat vlastní virtuální zdroje - vyžaduje prohlížeč s podporou HTML5
Přihlášení do Horizonu URL - https://ostack.ics.muni.cz Domain - UCN User Name - UČO@ucn.muni.cz Password - sekundární heslo Návody - https://wiki.ics.muni.cz/openstack
DEMO 1: Vytvoření instance 1. Nastavení firewall pravidel (Security Group) - ping, ssh 2. Přidání SSH klíče 3. Spuštění instance 4. Alokace floating IP adres 5. Přiřazení floating IP adresy instanci 6. Přihlášení do instance Hint: Defaultní username se odvíjí od zvoleného image ubuntu - ubuntu, centos - centos
Virtuální úložiště - standardně ephemeral disk: - velikost pevně daná podle flavor instance - zvětšit lze pouze navýšením flavor - smazán při smazání instance - snapshot kopíruje image do glance (pomalé) - volumes: - data mohou být zachována i po smazání instance - lze zvolit libovolnou velikost - lze libovolně zvětšovat - téměř okamžitý snapshot - lze zkonvertovat na image - lze backupovat přes API
Demo 2: Práce s volumes Vytvoření instance s root diskem na volume Snapshot ephemeral instance Snapshot volume instance Vytvoření a připojení volume k instanci
Správa image - instance se vytvářejí z image - sada předpřipravených image - způsoby vytvoření vlastních image: - upload qcow2, raw image - snapshot virtuálního stroje - konverze z volume - praktická ukázka
Virtuální sítě - v rámci projektu si uživatel může vytvářet množinu privátních (interních) sítí - IP adresní prostor je izolovaný v rámci projektu (tzn. mezi projekty se může adresní prostor překrývat, ale nedochází ke kolizím) - z vnější sítě uživatel přistupuje přes externí sítě (public/univerzitní privátní), které spojuje s interními sítěmi pomocí virtuálního routeru - každá instance má v operačním systému přidělenou IP adresu z interní sítě - instance, které mají být dostupné z vnější sítě, mají navíc připojenou tzv. plovoucí IP adresu z externí sítě (plovoucí IP adresa není v operačním systému viditelná)
Demo 3: Práce se sítí 1. Vytvoření interní sítě a subnetu 2. Vytvoření routeru 3. Připojení interní a externí sítě do routeru 4. Vytvoření instance na nové interní síti a přidělení floating IP adresy
DEMO 4: Zprovoznění příkazové řádky Instalace cli Debian i. # apt install python-dev python-pip Centos i. # yum install epel-release ii. # yum install python-devel python-pip gcc # pip install python-openstackclient Spuštění instance s již nainstalovaným klientem Image: ost_cli Pokud nemáte klíč, tak lze nastavit heslo při vytváření instance v sekci Configuration vložením následujícího kódu do okna Customization Script #cloud-config ssh_pwauth: True password: HandsOnLab2017 chpasswd: expire: False openstack --version
DEMO 5: Vytvoření instance z příkazové řádky Download RC souboru pro nastavení proměnných prostředí Import proměnnych $. pučo-openrc.sh Výpis informací pro vytvoření instance: $ openstack image list $ openstack flavor list $ openstack network list $ openstack keypair list Vytvoření instance: $ openstack server create --image "Image-Name" --flavor "Flavor-Name" --nic net-id="network-id" --key-name "Key-Name" Instance-Name
HEAT Projekt - Orchestrace v openstacku TOSCA (Topology and Orchestration Specification for Cloud Applications) standard pro popis topologie cloudových služeb, jejich částí a vstahů mezi nimi Stack - skupina propojených cloudových zdrojů Instance (compute) Volumy Sítě... Template -> Stack Formát templatů Yaml (HOT) nebo JSON (CFN) YAML Ain't Markup Language - formát pro serializaci strukturovaných dat
HEAT Výhody Orchestrace komplexních prostředí Znovupoužitelnost templatu Dobře škáluje Nevýhody Pracná výroba templatů Nepřehledná roztříštěná dokumentace Komplexní debugování
HOT - heat orchestration template Struktura yaml templatu: heat_template_version: 2016-10-14 description: # Textový popis templatu parameter_groups: # nepovinna deklarace skupin parametru a poradi paratmertu v nich (citelne predani parametru) parameters: # deklarace vstupních parametrů (názvy, ip adresy, rozsahy cokoliv :-)) resources: # deklarace zdrojů (instance, volumy, security groupy...) outputs: # výstupní parametry (informace pro uživatele nebo k použití v nested templatech)
HEATDEMO1: První instance Demo templaty ke stažení zde: https://github.com/mamut3d/openstack-tutorial 1. Vložení temlaty do gui 1_single_vm.yaml (http://bit.ly/2jea0ya) 2. Zvolení vhodných parameterů 3. Spuštění stacku 4. Rozbor templatu 5. Úprava templatu
HEATDEMO1: První instance
Rozbor templatu - parametets parameters: # vstupní parametry vyžadované templatem key_name: # název vstupního parametru type: string # typ description: decription # popis default: key # defaultní hodnota parametru constraints: # omezení (generuje select bar v horizon gui) - custom_constraint: nova.keypair
Rozbor templatu - resources resources: server: type: OS::Nova::Server properties: key_name: { get_param: key_name } image: { get_param: image } flavor: { get_param: flavor } networks: - network: { get_param: network } # zdroje vytvořené templatem # název instance zdroje # typ (standardní/heat template) # parametry zdroje # předání vstupních parametrů
Rozbor templatu - outputs outputs: # výstupní parametry šablony instance_name: # custom název výstupního parametru description: Name of the instance. # popis value: { get_attr: [ server, name ] } # hodnota instance_ip: description: IP address of the instance. value: { get_attr: [ server, first_address ] }
HEATDEMO1: První instance Úprava templatu - upravte template tak, aby : defaulty vstupnich parametru odpovídaly vašemu projektu vytvářel dva stejné servery vytvářel dva servery s jiným operačním systémem
HEATDEMO2: Sítě 1. Vložení temlaty do gui 2_private_network.yaml 2. Zvolení vhodných parameterů 3. Spuštění stacku 4. Rozbor templatu 5. Úprava templatu tak, aby vracel na výstupu jen id vytvořené sítě (network_id) vytvořil druhou privátní síť, připojenou ke stejnému routeru
HEATDEMO3: VM v síťi 1. Vložení temlaty do gui 3_vm_in_private_network.yaml 2. Zvolení vhodných parameterů 3. Spuštění stacku 4. Rozbor templatu
HEATDEMO4: VM v síťi + floating ip, security group 1. Vložení temlaty do gui 4_vm_float.yaml.yaml 2. Zvolení vhodných parameterů 3. Spuštění stacku 4. Rozbor templatu
HEATDEMO5: První instance z cli Vyžaduje kromě cli navíc instalci heat clienta: # pip install python-heatclient # openstack stack create -t lib/1_single_vm.yaml TestStack # openstack stack show TestStack # openstack stack delete TestStack Předání parametrů: # openstack stack create --parameter image=ost_cli \ -t lib/1_single_vm.yaml TestStack Nebo: # openstack stack create --parameter -e env/1_single_vm.yaml \ -t lib/1_single_vm.yaml TestStack openstack stack create [-h] [-f {json,shell,table,value,yaml}] [-c COLUMN] [--max-width <integer>] [--noindent][--prefix PREFIX] [-e <environment>] [--timeout <timeout>] [--pre-create <resource>][--enable-rollback] [--parameter <key=value>] -t <template> <stack-name>
HEATDEMO5 Environment vhodný k předávání parameterů nekonzistence gui a cli -> cli environment má přednost před defaultem, lze nastavit odkazy na url šablon (např na git) TODO: upravte environment file tak aby odpovídal vašemu prostředí
Další templaty Templaty k vyzkoušení přes cli 5_software.yaml # ukázka instalace balíčků, spouštění skripů ve vm # obsahuje tři ukázky, dvě jsou zakomentované 6_nested_stack.yaml # použití nested template 7_vm_with_nested_net.yaml # nested template - vytvoření routeru a sítě a vm 8_small_cluster.yaml # ukázka templaty tvořící více VM dle vstupního parametru 9_cmall_cluster_git.yaml # nested template pomoci gitu - vyžaduje environment!!! Tipy co vyzkoušet: Instalace vlastního softwaru dle šablony 5 Vytvoření šablony se dvěma sítěmi a několika stroji v nich Úprava šablony 8 tak, aby používala security groups a floating adresy. Vytvoření šablon s volitelným množstvím sítí a VM Použití nested šablon z gitlabu/githubu
Templaty fungují, co dál? Instalace vlastního softwaru dle šablony 5 Vytvoření šablony se dvěma sítěmi a několika stroji v nich Úprava šablony 8 tak, aby používala security groups a floating adresy. Vytvoření šablon vytvřejících volitelné množstvím sítí a VM Použití nested šablon z gitlabu/githubu...
HEAT - kam dál HOT-template specifikace http://docs.openstack.org/developer/heat/template_guide/hot_spec.html Sada tutoriálů https://developer.rackspace.com/blog/openstack-orchestration-in-depth-part-1-introduction-to-heat/ https://developer.rackspace.com/blog/openstack-orchestration-in-depth-part-2-single-instance-deployment s/ https://developer.rackspace.com/blog/openstack-orchestration-in-depth-part-3-multi-instance-deployments / https://developer.rackspace.com/blog/openstack-orchestration-in-depth-part-4-scaling/ Templaty pro inspiraci https://github.com/openstack/heat-templates
Děkujeme za pozornost :-)