Kuvaputken asettaminen
Tavoitteet
- Tutustua siihen, miten useita pilvipalveluja voidaan käyttää yhdessä.
- Tutustua siihen, miten pilvipalveluja voidaan käyttää niiden komentorajapintojen avulla.
Opetus keskittyy seuraaviin palveluihin:
- Allas, meidän objektitallennuspalvelumme
- cPouta, meidän julkinen pilvipalvelumme
- Pukki, meidän tilauspohjainen tietokantapalvelumme
Johdanto
Haluamme asettaa yksinkertaisen putken, joka muuttaa sille annetut kuvat.
Ensiksi lataamme kuvat työasemaltamme Allasilla olevaan säiliöön. cPoutassa oleva virtuaalikone ottaa kuvat säiliöstä ja lataa ne paikallisesti. Virtuaalikone muuntaa kuvat ja kirjaa suoritetun toiminnon Pukissa isännöityyn tietokantaan. Lopulta virtuaalikone lataa muutetut kuvat toiseen säiliöön Allasissa. Voimme sitten ladata muutetut kuvat työasemallemme säiliöstä.
Tämän opetusmateriaalin tarkoituksessa muokattu kuva vastaa yksinkertaisesti syötekuvaa, jonka värit on käännetty, toisinaan kutsutaan "käännetyksi".
Vaihe 1: säiliöiden luominen Allasissa
Avaamme uuden pääteikkunan, johon viittaamme käyttämällä nimeä terminal_allas
.
Käytämme terminal_allas
-päätettä kaikille Allasiin liittyville komennoille.
Jotta voimme luoda säiliöitä Allasissa, meillä on oltava toimiva komentorajapinta sitä varten. Jos emme ole aiemmin asentaneet tällaista rajapintaa työasemallemme, noudatamme s3cmd:n asentamista ja konfigurointia koskevia ohjeita.
Voimme testata komentorajapinnan oikeaa toimintaa yksinkertaisesti listaamalla kaikki projektissamme tällä hetkellä olevat säiliöt. Esimerkki komennosta ja sen odotetusta tulosteesta:
Huomaa, että lista voi olla myös tyhjä, jos emme ole aiemmin luoneet säiliötä projektissamme.Nyt luomme syöttö- ja tulossaavad putkillemme säiliöt. Ensiksi määrittelemme säiliöiden nimet ympäristömuuttujiin:
Käytämme sitten seuraavia komentoja säiliöiden luomiseen:
$ s3cmd mb s3://$INPUT_BUCKET
Bucket 's3://input_bucket/' created
$ s3cmd mb s3://$OUTPUT_BUCKET
Bucket 's3://output_bucket/' created
Huom
Säiliöiden nimet täytyy olla uniikkeja. Jos toinen käyttäjä on jo valinnut saman nimen, säiliön luomiskomento epäonnistuu:
Tässä tapauksessa voimme yksinkertaisesti yrittää komentoa eri nimellä.Vaihe 2: tietokannan luominen Pukkiin
Avaamme toisen pääteikkunan, johon viittaamme käyttämällä nimeä terminal_pukki
.
Käytämme terminal_pukki
-päätettä kaikille Pukkiin liittyville komennoille.
Toimivan komentorajapinnan olemassaolo Pukkille on edellytys oppimateriaalin jatkamiselle. Jos emme ole sitä aikaisemmin asentaneet, noudatamme Pukki-komentorajapinnan asentamista ja konfigurointia koskevia ohjeita.
Voimme testata komentorajapinnan oikeaa toimintaa yksinkertaisesti listaamalla käytettävissä olevat tietokantatyypit. Esimerkki komennosta ja sen odotetusta tulosteesta:
$ openstack datastore list
+--------------------------------------+------------+
| ID | Name |
+--------------------------------------+------------+
| 71920375-6967-466e-b955-8ee8629312b7 | postgresql |
| 1a8efda2-7bb7-4c52-9eab-e251fd18323c | mariadb |
+--------------------------------------+------------+
Nyt luomme tietokannan, jota käytämme putkiston toimintojen kirjaamiseen. Ensin määrittelemme muutamia ympäristömuuttujia, joita käytämme myöhemmin:
$ export DB_INSTANCE_NAME="pipeline_db_instance" # tietokanta-instanssin nimi Pukissa
$ export DB_NAME="pipeline_db" # tietokannan nimi
$ export DB_USERNAME="db_admin" # tietokantaan konfiguroitavan käyttäjän nimi
$ export DB_PASSWORD="xxxxxx" # laita tähän tietokantaan konfiguroitavan käyttäjän salasana
Luomme sitten varsinaisen tietokanta-instanssin antamalla seuraavan komennon:
$ openstack database instance create $DB_INSTANCE_NAME \
--flavor standard.small \
--databases $DB_NAME \
--users $DB_USERNAME:$DB_PASSWORD \
--datastore postgresql \
--is-public \
--size 1
- flavor määrittää tietokanta-instanssille osoitettujen resurssien (CPU, muisti) määrän, lisätietoja katso DBaaS-makrot ja hinnat.
- databases on lista tietokanta-instanssiin luotavista tietokanoista, tässä tapauksessa tilanne yhden tietokannan kanssa.
- users on lista tunnisteista muodossa käyttäjänimi:salasana, tietokantojen käyttäjien konfigurointia varten, tässä tapauksessa tilanne yhden credentials-parin kanssa.
- datastore määrittää käytettävän tietokannan tyypin, esim., postgresql tai mariadb.
- is-public määrittää, että tietokanta-instanssin tulisi olla julkisesti saavutettavissa.
- size on tietokannan koko gigatavuina.
Komennon tuloste pitäisi olla seuraavanlainen:
+--------------------------+--------------------------------------+
| Field | Value |
+--------------------------+--------------------------------------+
| allowed_cidrs | [] |
| created | 2025-02-04T13:08:51 |
| datastore | postgresql |
| datastore_version | 17.2 |
| datastore_version_number | 17.2 |
| flavor | d4a2cb9c-99da-4e0f-82d7-3313cca2b2c2 |
| id | 2f347948-9460-4ac0-a588-32187c8b6ab1 |
| name | pipeline_db_instance |
| operating_status | |
| public | True |
| region | regionOne |
| service_status_updated | 2025-02-04T13:08:51 |
| status | BUILD |
| updated | 2025-02-04T13:08:51 |
| volume | 1 |
+--------------------------+--------------------------------------+
Vaihe 3: virtuaalikoneen luominen cPoutaan
Avaamme kolmannen pääteikkunan, johon viittaamme käyttämällä nimeä terminal_pouta
.
Käytämme terminal_pouta
-päätettä kaikille cPoutaan liittyville komennoille.
Samoin kuin Allasin ja Pukin osalta, oppimateriaalin jatkaminen vaatii myös toimivan komentorajapinnan olemassaolon cPoutaan. Seuraamme cPouta-komentorajapinnan asentamista ja konfigurointia koskevia ohjeita, jos emme ole jo tehneet sitä.
Huom
Vaikkakin Pukki ja cPouta ovat monilla tavoilla samanlaisia, niiden komentorajapinnat ovat erilaisia, eikä niitä saa käyttää keskenään. Esimerkiksi, Pukki-komentojen suorittaminen cPoutan konfiguroidussa päätelaitteessa johtaa seuraavaan virheeseen:
Jotta vältetään tämän kaltaisia ongelmia, tulee käyttää kahta eri päätettä niiden kanssa työskentelyyn.Jos haluat tarkistaa, mille palvelulle nykyinen päätelaitteesi on konfiguroitu, voit kirjoittaa seuraavan komennon:
Voit testata komentorajapinnan oikeaa toimintaa näyttämällä esimerkiksi jonkin muodon ominaisuuksia. Esimerkki komennosta ja sen odotetusta tulosteesta:
$ openstack flavor show standard.tiny
+----------------------------+--------------------------------------+
| Field | Value |
+----------------------------+--------------------------------------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| access_project_ids | None |
| disk | 80 |
| id | 0143b0d1-4788-4d1f-aa04-4473e4a7c2a6 |
| name | standard.tiny |
| os-flavor-access:is_public | True |
| properties | standard='true' |
| ram | 1000 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 1 |
+----------------------------+--------------------------------------+
Nyt kun työskentelemme cPoutan kanssa, ensimmäisenä askeleena luomme avainparin, jota käytämme pääsemään virtuaalikoneelle, kun se on käynnissä. Luodaksemme uuden avainparin, määrittelemme ensin sen nimen ympäristömuuttujan avulla ja suorita sitten erikoiskomento:
Varmistamme, että komento on luonut kaksi tiedostoa nykyiseen kansioon työasemaltamme.
Ensimmäinen tiedosto, ilman.pub
-päätettä, vastaa yksityistä avainta, kun taas .pub
päätteinen tiedosto vastaa julkista avainta.
Yksityinen avain ei saisi koskaan poistua työasemaltasi, eli sitä ei pitäisi kopioida minnekään muualle.
Sen sijaan julkinen avain voidaan vapaasti kopioida ja jakaa paikkoihin, joissa haluat käyttää juuri luotua avainparia.
Tätä varten lataamme julkisen avaimen cPoutaan antamalla seuraavan komennon:
Komennon public-key-parametri määrittää polun julkisen avaindin tiedostoon.
Komennon tuloste on seuraavanlainen:
+-------------+-------------------------------------------------+
| Field | Value |
+-------------+-------------------------------------------------+
| fingerprint | 0e:60:39:df:83:83:fb:18:91:87:67:25:a9:67:27:fd |
| name | mykeypair |
| user_id | xxxxxxxx |
+-------------+-------------------------------------------------+
Luomme nyt virtuaalikoneen, jota käytämme putkemme runkoon. Ensin määrittelemme virtuaalikoneen nimen ympäristömuuttujana:
Komento, jolla luomme virtuaalikoneen, on seuraava:
$ openstack server create $POUTA_INSTANCE_NAME \
--flavor standard.tiny \
--image Ubuntu-24.04 \
--key-name $POUTA_KEYPAIR
- flavor määrittää virtuaalikoneelle osoitettujen resurssien (CPU, muisti) määrän, lisätietoja katso Virtuaalikoneen muodot ja laskutusyksikön hinnat.
- image määrittää käyttöjärjestelmän kuvauksen, jota käytetään virtuaalikoneen rakentamiseen, katso Perustiedot kuvista vaihtoehtoisten kuvien lista.
- key-name määrittää virtuaalikoneeseen konfiguroitavan julkisen avaimen.
Komennon tuloste on seuraavanlainen:
+-----------------------------+------------------------------------------------------+
| Field | Value |
+-----------------------------+------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | |
| OS-EXT-STS:power_state | NOSTATE |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | None |
| OS-SRV-USG:terminated_at | None |
| accessIPv4 | |
| accessIPv6 | |
| addresses | |
| adminPass | xxxxxxxxxxxx |
| config_drive | |
| created | 2025-02-04T13:10:43Z |
| flavor | standard.tiny (0143b0d1-4788-4d1f-aa04-4473e4a7c2a6) |
| hostId | |
| id | ae9f924b-f6c5-488c-b617-36809008e37e |
| image | Ubuntu-24.04 (bc68d79a-6dcc-446f-a8cd-c8313b885718) |
| key_name | mykeypair |
| name | pipeline_vm |
| progress | 0 |
| project_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| properties | |
| security_groups | name='default' |
| status | BUILD |
| updated | 2025-02-04T13:10:43Z |
| user_id | timo |
| volumes_attached | |
+-----------------------------+------------------------------------------------------+
Vaihe 4: putken konfigurointi
Nyt kun olemme rakentaneet kaikki komponentit, konfiguroimme ne toimimaan putkena. Ensiksi konfiguroimme virtuaalikoneen siten, että voimme käyttää sitä työasemaltamme. Sitten varmistamme, että virtuaalikone voi toimia Allasinsa sisältämien säiliöiden kanssa. Määrittelemme myös tietokanta-instanssimme Pukissa hyväksymään liikenteen virtuaalikoneelta. Lopulta asennamme ja konfiguroimme työkalut, jotka mahdollistavat putken toiminnan virtuaalikoneessa.
Liikenteen salliminen työasemalta virtuaalikoneelle
Oletuksena virtuaalikone ei salli saapuvaa liikennettä Internetistä estääkseen luvattomat pääsyyritykset. Pääsy virtuaalikoneelle säädellään turvallisuusryhmien ja niiden sisältämien sääntöjen avulla. Näin ollen luomme uuden turvallisuusryhmän yhdellä säännöllä, joka sallii pääsyn virtuaalikoneelle työasemaltamme.
Palaamme terminal_pouta
-laitteeseen.
Ensiksi selvitämme, mikä on työasemamme julkisesti käytetty ip-osoite ja tallennamme sen ympäristömuuttujaan antamalla seuraavan komennon:
Luomme uuden turvallisuusryhmän määrittelemällä ensin sen nimen ympäristömuuttujaan ja antamalla sitten erikoiskomennon:
$ export POUTA_SEC_GROUP_NAME="pipeline_security_group"
$ openstack security group create $POUTA_SEC_GROUP_NAME
Tuloste näyttää seuraavanlaiselta:
+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| created_at | 2025-02-04T13:12:43Z |
| description | pipeline_security_group |
| id | a8630776-db3d-408a-ba8e-8c52b5f2a8c9 |
| location | cloud='', project.domain_id='default', project.domain_name=, project.id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', project.name='project_xxxxxxx', region_name='regionOne', zone= |
| name | pipeline_security_group |
| project_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| revision_number | 1 |
| rules | created_at='2025-02-04T13:12:44Z', direction='egress', ethertype='IPv6', id='8e0cba6e-814d-4e70-92de-61389f9b6ca7', updated_at='2025-02-04T13:12:44Z' |
| | created_at='2025-02-04T13:12:43Z', direction='egress', ethertype='IPv4', id='cdf6527c-ca5a-4247-8e47-40213b601ee0', updated_at='2025-02-04T13:12:43Z' |
| tags | [] |
| updated_at | 2025-02-04T13:12:43Z |
+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Lisäämme säännön, joka sallii pääsyn suorittamalla seuraavan komennon:
$ openstack security group rule create $POUTA_SEC_GROUP_NAME \
--remote-ip $WORKSTATION_IP/32 \
--dst-port 22 \
--protocol tcp
- remote-ip määrittää ip-osoitteiden joukon, jolle sääntö on määritelty. Etäpäätepisteet vastaavat liikenteen lähteitä.
- dst-port määrittää, mille kohteen portille sääntö on määritelty. Kohdeportti vastaa liikenteen kohdetta.
- protocol määrittää protokollan, johon sääntö on määritelty. Tässä tapauksessa sääntö huomioi vain TCP-liikenteen.
Tuloste on seuraavanlainen:
+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| created_at | 2025-02-04T13:13:04Z |
| description | |
| direction | ingress |
| ether_type | IPv4 |
| id | 29ebe032-f09c-4cb5-9e49-bc75e6d1880c |
| location | cloud='', project.domain_id='default', project.domain_name=, project.id='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', project.name='project_xxxxxxx', region_name='regionOne', zone= |
| name | None |
| port_range_max | 22 |
| port_range_min | 22 |
| project_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| protocol | tcp |
| remote_group_id | None |
| remote_ip_prefix | xxx.xxx.xxx.xxx/32 |
| revision_number | 0 |
| security_group_id | a8630776-db3d-408a-ba8e-8c52b5f2a8c9 |
| tags | [] |
| updated_at | 2025-02-04T13:13:04Z |
+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Nyt sovellamme turvallisuusryhmän aiemmin luotuun virtuaalikoneeseen niin, että tämä juuri luotu sääntö koskee sen liikennettä.
Jos komento onnistuu, se ei näytä tulostetta.Yhteyden muodostaminen virtuaalikoneelle
Virtuaalikone on nyt konfiguroitu sallimaan liikenteen työasemaltamme, mutta se ei ole vielä saavutettavissa. Virtuaalikoneelle annetaan yksityinen IP-osoite käynnistyksen yhteydessä, mutta sille ei määritetä automaattisesti julkista IP:tä, joka vaaditaan yhteyden muodostamiseen virtuaalikoneeseen Internetistä.
Palaamme terminal_pouta
-laitteeseen.
Hankimme uuden osoitteen antamalla seuraavan komennon:
Tuloste on seuraavanlainen:
+---------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| created_at | 2025-02-04T13:13:38Z |
| description | |
| dns_domain | None |
| dns_name | None |
| fixed_ip_address | None |
| floating_ip_address | xxx.xxx.xxx.xxx |
| floating_network_id | 26f9344a-2e81-4ef5-a018-7d20cff891ee |
| id | 1a38ae4f-1354-4958-b2be-72502b53c492 |
| location | Munch({'cloud': '', 'region_name': 'regionOne', 'zone': None, 'project': Munch({'id': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'name': 'project_xxxxxxx', 'domain_id': 'default', 'domain_name': None})}) |
| name | xxx.xxx.xxx.xxx |
| port_details | None |
| port_id | None |
| project_id | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| qos_policy_id | None |
| revision_number | 0 |
| router_id | None |
| status | DOWN |
| subnet_id | None |
| tags | [] |
| updated_at | 2025-02-04T13:13:38Z |
+---------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
floating_ip_address
arvon ympäristömuuttujaan:
Yhdistämme nyt saadun osoitteen virtuaalikoneeseemme antamalla seuraavan komennon:
Jos komento onnistuu, se ei näytä tulostetta.Kaikki on nyt valmista. Voimme testata yhteyden muodostamista virtuaalikoneeseemme antamalla seuraavan komennon:
Mahdollisesti meille esitetään seuraava kysymys:
Virheellistä laitetta 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' ei voi todentaa.
ED25519 avain on sormenjälki SHA256:waKe82wIU0HYSGpRFCBOx0n6GOvH108nkJ+koosOF80.
Tätä avainta ei tunneta millään muilla nimillä
Haluatko varmasti jatkaa yhteyden muodostamista (yes/no/[fingerprint])?
Voimme turvallisesti vastata yes
ja painaa Enter-näppäintä, mikä lopulta johtaa meidät virtuaalikoneelle:
Haluatko varmasti jatkaa yhteyden muodostamista (yes/no/[fingerprint])? yes
Varoitus: Lisätty 'xxx.xxx.xxx.xxx' (ED25519) pysyvästi tiedostoon known hosts.
Tervetuloa Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-51-generic x86_64)
...
Ylläpitäjänä (käyttäjänä "root") voit suorittaa komennon "sudo <komento>".
Ks. "man sudo_root" lisätietoa varten.
ubuntu@pipeline-vm:~$
Lähdemme hetkeksi terminal_pouta
, palaamme kun on aika asentaa ja konfiguroida työkalut sen sisällä.
Liikenteen salliminen virtuaalikoneelta tietokantaan
Oletuksena tietokanta-instanssimme Pukkissa ei salli mitään saapuvaa liikennettä. Haluamme konfiguroida sen niin, että se hyväksyy liikenteen virtuaalikoneeltamme cPoutassa.
Siirrymme terminal_pukki
-laitteeseen.
Ennen kuin aloitamme toiminnan tietokanta-instanssin kanssa, on huomattava, että yhdessä päätelaitteessa määritellyt ympäristömuuttujat eivät leviä automaattisesti muihin päätelaitteisiin.
Tämän vuoksi meidän on määritettävä kelluva IP-osoite, joka on annettu virtuaalikoneelle cPoutassa, ympäristömuuttujaksi myös tässä päätelaitteessa.
$ export POUTA_FLOATING_IP="xxx.xxx.xxx.xxx" # laita tähän sama arvo, joka on annettu samaan muuttujaan terminal_pouta-laitteessa
Annamme sitten seuraavan komennon:
Komennon allowed-cidr-parametri määrittää ip-osoitteiden joukon, joille liikenne tietokanta-instanssille on sallittua.Jos komento onnistuu, se ei näytä tulostetta. Voimme kuitenkin tarkistaa onnistuneen toiminnan katsomalla tietokanta-instanssimme tietoja:
$ openstack database instance show $DB_INSTANCE_NAME
+--------------------------+-----------------------------------------------------------------------------------------------------------+
| Field | Value |
+--------------------------+-----------------------------------------------------------------------------------------------------------+
| addresses | [{'address': '192.168.215.98', 'type': 'private', 'network': 'a89ef792-74ec-434f-8e20-7d33b5b6d633'}, |
| | {'address': 'xxx.xxx.xxx.xxx', 'type': 'public'}] |
| allowed_cidrs | ['xxx.xxx.xxx.xxx/32'] |
| created | 2025-02-04T13:08:51 |
| datastore | postgresql |
| datastore_version | 17.2 |
| datastore_version_number | 17.2 |
| flavor | d4a2cb9c-99da-4e0f-82d7-3313cca2b2c2 |
| id | 2f347948-9460-4ac0-a588-32187c8b6ab1 |
| ip | 192.168.215.98, xxx.xxx.xxx.xxx |
| naam | pipeline_db_instance |
| operating_status | HEALTHY |
| julkinen | False |
| region | regionOne |
| service_status_updated | 2025-02-04T13:16:10 |
| status | ACTIVE |
| päivitetty | 2025-02-04T13:16:52 |
| volume | 1 |
| volume_used | 0.08 |
+--------------------------+-----------------------------------------------------------------------------------------------------------+
allowed_cidrs
.
Näyttämissä tiedoissa huomaa myös tietokanta-instanssimme julkisen IP-osoitteen, jota tarvitsemme seuraavissa vaiheissa.
Kentän addresses
rivi sisältää kaksi osaa: osoitteen, joka on merkitty private
, ja toisen, joka on merkitty public
.
Palaamme terminal_pouta
-laitteeseen, missä olemme vielä kirjautuneina virtuaalikoneeseemme cPoutassa, ja määrittelemme ympäristömuuttujaksi tietokannan julkisen osoitteen, koska tarvitsemme sitä myöhemmin konfiguroinnissa.
$ export DB_PUBLIC_IP="xxx.xxx.xxx.xxx" # laita tähän tietokanta-instanssin julkinen ip-osoite Pukissa
Virtuaalikoneen pääsyn konfigurointi Allasiin
Työasemamme tavoin myös virtuaalikone on konfiguroitava pääsemään Allasissa isännöityihin säiliöihin.
terminal_pouta
-päätteessä seuraamme ohjeita s3cmd:n asennuksesta ja konfiguroinnista virtuaalikoneen sisältä.
Kun s3cmd on konfiguroitu, testaamme, että kaikki toimii oikein listaamalla Allasin säiliömme:
Virtuaalikoneen pääsyn konfigurointi tietokantaan
Tässä vaiheessa opetusmateriaalia liikenne virtuaalikoneelta voi saavuttaa Pukin tietokannan. Tällä hetkellä virtuaalikoneella ei kuitenkaan ole tietoa siitä, missä tietokanta löytyy, eli sen julkista IP-osoitetta, eikä myöskään niitä tunnuksia, joita käytetään tietokantaan pääsemiseen. Siksi konfiguroimme seuraavaksi tietokantayhteyden virtuaalikoneessa.
Pysymme terminal_pouta
-päätteellä.
Aluksi asennamme työkalun, jota tarvitsemme puhuaksemme tietokannan kanssa:
Määrittelemme sitten kaikki ympäristömuuttujat, joita tarvitsemme yhdistääksemme ja päästäksemme Pukin tietokantaan.
$ export DB_NAME="pipeline_db" # tietokannan nimi
$ export DB_USERNAME="db_admin" # tietokannan käyttäjä
$ export DB_PASSWORD="xxxxxx" # laita tähän tietokannan käyttäjän salasana
Määrittelemme myös postgresql-salasanatiedoston, jota voidaan sitten käyttää helposti tietokantaan yhdistämiseen komentoriviltä.
Lisätietoja postgresql-salasanatiedostosta löytyy sen omalta kelvisivulta.Testataan nyt tietokantaan pääsyä.
terminal_pouta
-päätteessä suorita seuraava komento:
psql (16.6 (Ubuntu 16.6-0ubuntu0.24.04.1), palvelin 17.2 (Debian 17.2-1.pgdg110+1))
VAROITUS: psql:n suuri versio 16, palvelimen suuri versio 17.
Joitakin psql-ominaisuuksia ei ehkä toimi.
SSL-yhteys (protokolla: TLSv1.3, salaus: TLS_AES_256_GCM_SHA384, pakkaus: off)
Kirjoita "help" saadaksesi apua.
pipeline_db=>
exit
ja paina Enter
.
Kun olemme yhteydessä tietokantaamme, valmistelemme sen isännöimään tietoa, jota lähetämme siihen käsitellessämme kuvia. Suoritamme seuraavan komennon luodaksemme taulukon, joka isännöi tietoa kuvista:
$ psql \
-h "$DB_PUBLIC_IP" \
-d "$DB_NAME" \
-U "$DB_USERNAME" \
-c "CREATE TABLE IF NOT EXISTS log_records (timestamp varchar(25) primary key, negated_picture_name text, negated_picture_hash text)"
- h on isäntänimi, eli ip-osoite, jossa tietokanta on löydettävissä.
- d on tietokannan nimi.
- U on käyttäjänimi, jota käytetään tietokantaan autentikoitumiseen.
- c on komento, joka annetaan tietokantaan itsessään. Komento on kirjoitettu tietokannan käyttämällä syntaksilla.
Jos komento onnistui, pääte vastaa yksinkertaisesti merkkijonolla CREATE TABLE
.
Tietokanta on nyt konfiguroitu putkellemme.
Kuvanmuuntoskriptin asentaminen
Viimeisenä osana konfigurointifaasia asennamme skriptin, joka huolehtii Allasista ja Pukista keskustelemisesta, sekä syötteen muuntamisesta.
Tätä varten asennamme ensin työkalun kuvien muuntamiseen.
terminal_pouta
-päätteessä suorita:
Kun työkalu on asennettu kaikilla sen riippuvuuksilla, suoritamme:
Näemme vilkkuvan kursorin ikkunan vasemmassa yläkulmassa, mikä osoittaa, että voimme nyt kirjoittaa uuteenpipeline_script.sh
-nimiseen tiedostoomme.
Kopioimme ja liitämme seuraavan sisällön.
Muistathan vaihtaa skriptin alussa määritellyt ympäristömuutt