{"id":53611,"date":"2019-12-06T00:00:00","date_gmt":"2019-12-05T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1"},"modified":"2020-02-18T14:01:32","modified_gmt":"2020-02-18T11:01:32","slug":"legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1","title":{"rendered":"Lihtsalt ja muretult juurutame rakendusi Tarantool Cartridge\u2019is (osa 1)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Lihtsalt ja muretult juurutame rakendusi Tarantool Cartridge\u2019is (osa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/0493b6c8d60253352bc971b216e9b63e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Oleme juba r\u00e4\u00e4kinud <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/465503\/\">Tarantool Cartridge<\/a><\/noindex>, mis v\u00f5imaldab arendada ja pakendada jaotatud rakendusi. J\u00e4\u00e4nud on vaid \u00f5ppida, kuidas neid rakendusi k\u00e4itada ja hallata. \u00c4rge muretsege, oleme k\u00f5ik hoolikalt l\u00e4bi m\u00f5elnud! Oleme kokku kogunud k\u00f5ik parimad praktikad Tarantool Cartridge\u2019i t\u00f6\u00f6tamiseks ja kirjutanud <noindex><a rel=\"nofollow\" href=\"https:\/\/galaxy.ansible.com\/tarantool\/cartridge\">ansible-rol<\/a><\/noindex>, mis paigaldab paketi serveritele, k\u00e4ivitab instantsid, \u00fchendab need klastriks, seadistab autentimise, bootstrapi vshardi, lubab automaatse failover'i ja uuendab klasterkonfign.<\/p>\n<p><\/p>\n<p>Huvitav? Siis tulge edasi, r\u00e4\u00e4gime ja n\u00e4itame k\u00f5ike.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"nachnem-s-primera\">Alustame n\u00e4itest<\/h1>\n<p><\/p>\n<p>Kaalume ainult osa meie rolli funktsionaalsusest. K\u00f5iki selle v\u00f5imalusi ja sisendparameetreid saate alati leida <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/ansible-cartridge#ansible-role-tarantool-cartridge\">dokumentatsioonis<\/a><\/noindex>. Kuid parem on kord proovida kui sada korda n\u00e4ha, seega laske meil k\u00e4itada v\u00e4ike rakendus.<\/p>\n<p><\/p>\n<p>Tarantool Cartridge'il on <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/cartridge-cli\/tree\/master\/examples\/getting-started-app#application-example-based-on-tarantool-cartridge\">tutorial<\/a><\/noindex> n\u00e4ide v\u00e4ikese Cartridge-rakenduse loomisest, mis salvestab panga klientide ja nende kontode teavet ning pakub API-d andmete haldamiseks HTTP kaudu. Selleks kirjeldatakse rakenduses kahte v\u00f5imalikku rolli: <code>api<\/code> ja <code>storage<\/code>, mis v\u00f5ivad instantsidele m\u00e4\u00e4ratud olla.<\/p>\n<p><\/p>\n<p>Cartridge ei \u00fctle midagi selle kohta, kuidas protsesse k\u00e4ivitada, vaid annab v\u00f5imaluse juba jooksvaid instantsse konfigureerida. \u00dclej\u00e4\u00e4nud peab kasutaja ise \u00e4ra tegema: seadistama konfiguratsioonifailid, k\u00e4ivitama teenused ja seadistama topoloogia. Kuid me ei hakka selle k\u00f5igega vaeva n\u00e4gema, selle teeb meie eest Ansible.<\/p>\n<p><\/p>\n<h3 id=\"ot-slov-k-delu\">S\u00f5nadest tegu<\/h3>\n<p><\/p>\n<p>Nii et deploime meie rakenduse kahele virtuaalmasinale ja seadistame lihtsa topoloogia:<\/p>\n<p><\/p>\n<ul>\n<li>Repliikasett <code>app-1<\/code> realiseerib rolli <code>api<\/code>, mis h\u00f5lmab rolli <code>vshard-router<\/code>. Siin on vaid \u00fcks instants.<\/li>\n<li>Repliikasett <code>storage-1<\/code> realiseerib rolli <code>storage<\/code> (ja samal ajal <code>vshard-storage<\/code>), siia lisame kaks instantsi erinevatelt masinatelt.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Lihtsalt ja muretult juurutame rakendusi Tarantool Cartridge\u2019is (osa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/62d20050e2d7a6358002ecd758222f1f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e4ite k\u00e4ivitamiseks vajame <noindex><a rel=\"nofollow\" href=\"https:\/\/www.vagrantup.com\/\">Vagrant<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ansible.com\">Ansible<\/a><\/noindex> (versioon 2.8 v\u00f5i uuem).<\/p>\n<p><\/p>\n<p>Ise roll asub <noindex><a rel=\"nofollow\" href=\"https:\/\/galaxy.ansible.com\/docs\/\">Ansible Galaxy<\/a><\/noindex>. See on koht, kus saab jagada oma saavutusi ja kasutada olemasolevaid rolle.<\/p>\n<p><\/p>\n<p>Kloonime n\u00e4idisrepo:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ git clone https:\/\/github.com\/dokshina\/deploy-tarantool-cartridge-app.git\n$ cd deploy-tarantool-cartridge-app &amp;&amp; git checkout 1.0.0<\/code><\/pre>\n<p><\/p>\n<p>K\u00e4ivitame virtuaalmasinad:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ vagrant up<\/code><\/pre>\n<p><\/p>\n<p>Paigaldame ansible-rolli Tarantool Cartridge:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ ansible-galaxy install tarantool.cartridge,1.0.1<\/code><\/pre>\n<p><\/p>\n<p>K\u00e4ivitame paigaldatud rolli:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ ansible-playbook -i hosts.yml playbook.yml<\/code><\/pre>\n<p><\/p>\n<p>Ootame m\u00e4nguplaadi t\u00e4itmise l\u00f5ppemist, liikudes edasi <noindex><a rel=\"nofollow\" href=\"http:\/\/localhost:8181\/admin\/cluster\/dashboard\">http:\/\/localhost:8181\/admin\/cluster\/dashboard<\/a><\/noindex> ja naudime tulemust:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Lihtsalt ja muretult juurutame rakendusi Tarantool Cartridge\u2019is (osa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/6563ddf2f2bfc85714f327c8d6b2d1c4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Saame andmeid sisestada. Lahe, eks?<\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd uurime, kuidas sellega t\u00f6\u00f6tada, ja lisame samal ajal s\u00fcsteemi veel \u00fche replikasethi.<\/p>\n<p><\/p>\n<h3 id=\"nachinaem-razbiratsya\">Alustame uurimist<\/h3>\n<p><\/p>\n<p>Nii, mis juhtus?<\/p>\n<p><\/p>\n<p>Oleme k\u00e4ivitanud kaks virtuaalset masinat ja jooksutanud ansible-m\u00e4nguplaadi, mis seadistab meie klastrit. Vaadakem failide sisu <code>playbook.yml<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">---\n- name: Paigaldada minu Tarantool Cartridge rakendus\n  hosts: k\u00f5ik\n  become: true\n  become_user: root\n  tasks:\n  - name: Import Tarantool Cartridge roll\n    import_role:\n      name: tarantool.cartridge<\/code><\/pre>\n<p><\/p>\n<p>Siin ei toimu midagi huvitavat, k\u00e4ivitame ansible-rolli, mis nimetatakse <code>tarantool.cartridge<\/code>.<\/p>\n<p><\/p>\n<p>Kogu k\u00f5ige olulisem (nimelt, klastrikonfiguratsioon) asub <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/intro_inventory.html\">inventory<\/a><\/noindex>-failis <code>hosts.yml<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">---\nall:\n  vars:\n    # tavalised klastrimuutujad\n    cartridge_app_name: getting-started-app\n    cartridge_package_path: .\/getting-started-app-1.0.0-0.rpm  # paketi tee\n\n    cartridge_cluster_cookie: app-default-cookie  # klastrik\u00fcpsis\n\n    # tavalised ssh valikud\n    ansible_ssh_private_key_file: ~\/.vagrant.d\/insecure_private_key\n    ansible_ssh_common_args: '-o IdentitiesOnly=yes -o UserKnownHostsFile=\/dev\/null -o StrictHostKeyChecking=no'\n\n  # INSTANSSID\n  hosts:\n    storage-1:\n      config:\n        advertise_uri: '172.19.0.2:3301'\n        http_port: 8181\n\n    app-1:\n      config:\n        advertise_uri: '172.19.0.3:3301'\n        http_port: 8182\n\n    storage-1-replica:\n      config:\n        advertise_uri: '172.19.0.3:3302'\n        http_port: 8183\n\n  children:\n    # R\u00dcHMA INSTANSSID MASINATE J\u00c4RGI\n    host1:\n      vars:\n        # esimese masina \u00fchenduse valikud\n        ansible_host: 172.19.0.2\n        ansible_user: vagrant\n\n      hosts:  # instansid, mis k\u00e4ivitatakse esimesel masinal\n        storage-1:\n\n    host2:\n      vars:\n        # teise masina \u00fchenduse valikud\n        ansible_host: 172.19.0.3\n        ansible_user: vagrant\n\n      hosts:  # instansid, mis k\u00e4ivitatakse teisel masinal\n        app-1:\n        storage-1-replica:\n\n    # R\u00dcHMA INSTANSSID REPLIKA SEADME J\u00c4RGI\n    replicaset_app_1:\n      vars:  # replika seade konfiguratsioon\n        replicaset_alias: app-1\n        failover_priority:\n          - app-1  # juht\n        roles:\n          - 'api'\n\n      hosts:  # replika seadme instansid\n        app-1:\n\n    replicaset_storage_1:\n      vars:  # replika seade konfiguratsioon\n        replicaset_alias: storage-1\n        weight: 3\n        failover_priority:\n          - storage-1  # juht\n          - storage-1-replica\n        roles:\n          - 'storage'\n\n      hosts:   # replika seadme instansid\n        storage-1:\n        storage-1-replica:<\/code><\/pre>\n<p><\/p>\n<p>K\u00f5ik, mida me vajame, on \u00f5ppida haldama instantsse ja replikasete, muutes selle faili sisu. Edasi lisame sinna uusi sektsioone. Segaduse v\u00e4ltimiseks v\u00f5ite piiluda selle faili l\u00f5pliku versiooni sisse. <code>hosts.updated.yml<\/code>, mis asub n\u00e4idise hoidlas.<\/p>\n<p><\/p>\n<h3 id=\"upravlenie-instansami\">Instantside haldamine<\/h3>\n<p><\/p>\n<p>Ansible'i m\u00f5istes on iga instants host (\u00e4ra sega seda f\u00fc\u00fcsilise serveriga), st infrastruktuuri s\u00f5lm, mille \u00fcle Ansible haldus teeb. Iga hosti jaoks saame m\u00e4\u00e4rata \u00fchenduse parameetrid (nt <code>ansible_host<\/code> ja <code>ansible_user<\/code>), samuti instantsi konfiguratsiooni. Instantside kirjeldus asub jaotises <code>hosts<\/code>.<\/p>\n<p><\/p>\n<p>Vaatame instantsi konfiguratsiooni <code>storage-1<\/code>:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">all:\n  vars:\n    ...\n\n  # INSTANSSID\n  hosts:\n    storage-1:\n      config:\n        advertise_uri: '172.19.0.2:3301'\n        http_port: 8181\n\n  ...<\/code><\/pre>\n<p><\/p>\n<p>Muutujas <code>edasi konsolideerimiseks ja aggregeerimiseks.<\/code> oleme m\u00e4\u00e4ranud instantsi parameetrid \u2014 <code>advertise URI<\/code> ja <code>HTTP port<\/code>.<br \/>\nAllpool on instantside parameetrid <code>app-1<\/code> ja <code>storage-1-replika<\/code>.<\/p>\n<p><\/p>\n<p>Peame Ansible'ile edastama \u00fchenduse parameetrid iga instantsi jaoks. Tundub loogiline gruppida instantsid virtuaalmasinate j\u00e4rgi. Selleks on instantsid \u00fchendatud gruppidesse <code>host1<\/code> ja <code>host2<\/code>, ja igas grupis jaotises <code>vars<\/code> on n\u00e4idatud v\u00e4\u00e4rtused <code>ansible_host<\/code> ja <code>ansible_user<\/code> \u00fche virtuaalmasina jaoks. Ja jaotises <code>hosts<\/code> \u2014 hostid, mis kuuluvad sellesse gruppi:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">all:\n  vars:\n    ...\n  hosts:\n    ...\n  children:\n    # GRUPI INSTANSSID MASINATE KAUDEL\n    host1:\n      vars:\n        # esimese masina \u00fchenduse valikud\n        ansible_host: 172.19.0.2\n        ansible_user: vagrant\n       hosts:  # instansid, mis k\u00e4ivitatakse esimesel masinal\n        storage-1:\n\n     host2:\n      vars:\n        # teise masina \u00fchenduse valikud\n        ansible_host: 172.19.0.3\n        ansible_user: vagrant\n       hosts:  # instansid, mis k\u00e4ivitatakse teisel masinal\n        app-1:\n        storage-1-replica:<\/code><\/pre>\n<p><\/p>\n<p>Alustame muudatustega <code>hosts.yml<\/code>. Lisame veel kaks instantsi, <code>storage-2-replica<\/code> esimesel virtuaalmasinal ja <code>storage-2<\/code> teisel:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">all:\n  vars:\n    ...\n\n  # INSTANSSID\n  hosts:\n    ...\n    storage-2:  # &lt;==\n      config:\n        advertise_uri: '172.19.0.3:3303'\n        http_port: 8184\n\n    storage-2-replica:  # &lt;==\n      config:\n        advertise_uri: '172.19.0.2:3302'\n        http_port: 8185\n\n  children:\n    # GRUPI INSTANSSID MASINATE KAUDEL\n    host1:\n      vars:\n        ...\n      hosts:  # instansid, mis k\u00e4ivitatakse esimesel masinal\n        storage-1:\n        storage-2-replica:  # &lt;==\n\n    host2:\n      vars:\n        ...\n      hosts:  # instansid, mis k\u00e4ivitatakse teisel masinal\n        app-1:\n        storage-1-replica:\n        storage-2:  # &lt;==\n  ...<\/code><\/pre>\n<p><\/p>\n<p>K\u00e4ivitame ansible-playbooki:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ ansible-playbook -i hosts.yml \n                   --limit storage-2,storage-2-replica \n                   playbook.yml<\/code><\/pre>\n<p><\/p>\n<p>Pange t\u00e4hele valikut <code>--limit<\/code>. Kuna iga klastri instants on Ansible'i m\u00f5istes host, saame selgelt m\u00e4\u00e4rata, milliseid instantsse tuleks playbooki k\u00e4ivitamisel seadistada.<\/p>\n<p><\/p>\n<p>Logime uuesti sisse Web UI-sse <noindex><a rel=\"nofollow\" href=\"http:\/\/localhost:8181\/admin\/cluster\/dashboard\">http:\/\/localhost:8181\/admin\/cluster\/dashboard<\/a><\/noindex> ja j\u00e4lgime meie uusi instantsi:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Lihtsalt ja muretult juurutame rakendusi Tarantool Cartridge\u2019is (osa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/6181c359e4e5ec4adaee8737600a27e4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u00c4rme peatu saavutatu juures, vaid \u00f5pime tundma topoloogia haldamist.<\/p>\n<p><\/p>\n<h3 id=\"upravlenie-topologiey\">Topoloogia haldamine<\/h3>\n<p><\/p>\n<p>Kombineerime meie uued instantsid replikasetti <code>storage-2<\/code>. Lisame uue r\u00fchma <code>replicaset_storage_2<\/code> ja kirjeldame selle muutujates replikasetti parameetreid analoogia alusel <code>replicaset_storage_1<\/code>. Jaotises <code>hosts<\/code> n\u00e4itame, millised instantsid kuuluvad sellesse r\u00fchma (ehk meie replikasetti):<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">---\nall:\n  vars:\n    ...\n  hosts:\n    ...\n  children:\n    ...\n    # R\u00dcHMITA INSTANSSID REPLIKA SETIDE ALUSEL\n    ...\n    replicaset_storage_2:  # &lt;==\n      vars:  # replikaseti konfiguratsioon\n        replicaset_alias: storage-2\n        weight: 2\n        failover_priority:\n          - storage-2\n          - storage-2-replica\n        roles:\n          - 'storage'\n\n      hosts:   # replikaseti instantsid\n        storage-2:\n        storage-2-replica:<\/code><\/pre>\n<p><\/p>\n<p>K\u00e4ivitame taas playbooki:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ ansible-playbook -i hosts.yml \n                   --limit replicaset_storage_2 \n                   --tags cartridge-replicasets \n                   playbook.yml<\/code><\/pre>\n<p><\/p>\n<p>Parameeter <code>--limit<\/code> mille me seekord edastasime grupi nime, mis vastab meie replikasettile.<\/p>\n<p><\/p>\n<p>Vaadakem v\u00f5imalust <code>tags<\/code>.<\/p>\n<p><\/p>\n<p>Meie roll t\u00e4idab j\u00e4rjest erinevaid \u00fclesandeid, mis on m\u00e4rgitud j\u00e4rgmiste siltidega:<\/p>\n<p><\/p>\n<ul>\n<li><code>cartridge-instances<\/code>: instantside haldamine (seadistamine, \u00fchendamine membership'iga);<\/li>\n<li><code>cartridge-replicasets<\/code>: topoloogia haldamine (replikasettide haldamine ja instantside p\u00f6\u00f6rdumatud eemaldamine (expel) klastri seast);<\/li>\n<li><code>cartridge-config<\/code>: klastri teiste parameetrite haldamine (vshard bootstrapping, automaatse failover'i re\u017eiim, autoriseerimise parameetrid ja rakenduse konfigureerimine).<\/li>\n<\/ul>\n<p><\/p>\n<p>Me saame selgelt m\u00e4\u00e4rata, millist osa t\u00f6\u00f6st soovime teha, siis roll j\u00e4tab \u00fclej\u00e4\u00e4nud \u00fclesanded vahele. Meie puhul soovime t\u00f6\u00f6tada ainult topoloogiaga, seega m\u00e4\u00e4rasime <code>cartridge-replicasets<\/code>.<\/p>\n<p><\/p>\n<p>Hinnatakse meie pingutuste tulemust. Leiame uue replikaseti aadressil <noindex><a rel=\"nofollow\" href=\"http:\/\/localhost:8181\/admin\/cluster\/dashboard\">http:\/\/localhost:8181\/admin\/cluster\/dashboard<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Lihtsalt ja muretult juurutame rakendusi Tarantool Cartridge\u2019is (osa 1)\" src=\"\/wp-content\/uploads\/2019\/12\/20da99480df519b1ee239cd81f67b786.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hurraa!<\/p>\n<p><\/p>\n<p>Katsuge muuta instantside ja replikasettide konfiguratsiooni ning vaadake, kuidas klastrite topoloogia muutub. Saate proovida erinevaid kasutusstsenaariume, n\u00e4iteks <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_delegation.html#rolling-update-batch-size\">rolling update<\/a><\/noindex> v\u00f5i suurendamine <code>memtx_memory<\/code>. Roll p\u00fc\u00fcab seda teha ilma instantsi taask\u00e4ivitamata, et v\u00e4hendada teie rakenduse v\u00f5imaliku seiskumise aega.<\/p>\n<p><\/p>\n<p>\u00c4rge unustage k\u00e4ivitada <code>vagrant halt<\/code>, et peatada virtuaalmasinad, kui olete nendega t\u00f6\u00f6tamise l\u00f5petanud.<\/p>\n<p><\/p>\n<h1 id=\"a-chto-pod-kapotom\">Aga mis toimub taustal?<\/h1>\n<p><\/p>\n<p>Siin r\u00e4\u00e4gin l\u00e4hemalt, mis toimus ansible-rolli taustal meie katsete ajal.<\/p>\n<p><\/p>\n<p>Vaadake samm-sammult Cartridge-rakenduse juurutamist.<\/p>\n<p><\/p>\n<h3 id=\"ustanovka-paketa-i-start-instansov\">Paketi installimine ja instantside k\u00e4ivitamine<\/h3>\n<p><\/p>\n<p>Esmalt peab paketi serverisse toimetama ja installima. N\u00fc\u00fcd oskab roll t\u00f6\u00f6tada RPM- ja DEB-pakettidega.<\/p>\n<p><\/p>\n<p>Seej\u00e4rel k\u00e4ivitame instantsid. Siin on k\u00f5ik v\u00e4ga lihtne: iga instants on eraldi <code>systemd<\/code>-teenus. Selgitan n\u00e4ite varal:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">$ systemctl start myapp@storage-1<\/code><\/pre>\n<p><\/p>\n<p>See k\u00e4sk k\u00e4ivitab instantsi <code>storage-1<\/code> rakendused <code>myapp<\/code>. K\u00e4ivitatud instants otsib oma <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tarantool.io\/ru\/doc\/2.2\/book\/cartridge\/cartridge_dev\/#configuring-instances\">konfiguratsiooni<\/a><\/noindex> \u00fches <code>\/etc\/tarantool\/conf.d\/<\/code>. Instantsi logisid saab vaadata kasutades <code>journald<\/code>.<\/p>\n<p><\/p>\n<p>Unit-fail <code>\/etc\/systemd\/system\/myapp@.sevice<\/code> systemd-teenuse jaoks toimetatakse koos paketiga.<\/p>\n<p><\/p>\n<p>Ansible'il on sisseehitatud moodulid pakettide installimiseks ja systemd-teenuste haldamiseks, siin me midagi uut ei leiutanud.<\/p>\n<p><\/p>\n<h3 id=\"nastroyka-topologii-klastera\">Klastri topoloogia seadistamine<\/h3>\n<p><\/p>\n<p>Siin hakkab k\u00f5ige huvitavam osa. N\u00f5ustuge, et oleks kummaline vaeva n\u00e4ha erilise ansible-rolliga pakettide installimiseks ja <code>systemd<\/code>-teenuste k\u00e4ivitamiseks.<\/p>\n<p><\/p>\n<p>Klaster saab seadistada k\u00e4sitsi:<\/p>\n<p><\/p>\n<ul>\n<li>Esimene variant: avame veebiliidese ja vajutame nuppudele. \u00dche korra mitme instantsi k\u00e4ivitamiseks sobib see k\u00fcll.<\/li>\n<li>Teine variant: saab kasutada GraphQl API-d. Siin on juba midagi automatiseerida, n\u00e4iteks kirjutada Pythonis skript.<\/li>\n<li>Kolmas variant (t\u00f5sistele): siseneme serverisse, \u00fchendume \u00fche instantsiga kasutades <code>tarantoolctl connect<\/code> ja teeme k\u00f5ik vajalikud toimingud Lua-mooduliga <code>cartridge<\/code>.<\/li>\n<\/ul>\n<p><\/p>\n<p>Meie leiutise peamine eesm\u00e4rk on teha teie jaoks just see, k\u00f5ige keerulisem t\u00f6\u00f6osa.<\/p>\n<p><\/p>\n<p>Ansible v\u00f5imaldab teil kirjutada oma mooduli ja kasutada seda rollis. Meie roll kasutab selliseid mooduleid klastrite erinevate komponentide haldamiseks.<\/p>\n<p><\/p>\n<p>Kuidas see t\u00f6\u00f6tab? Kirjutate soovitud klastririigi deklaratiivses konfiguratsioonis, ja roll edastab igale moodulile selle konfiguratsiooni osa. Moodul saab klastrite hetkeseisu ja v\u00f5rdleb seda sisendiks saadud olekuga. Seej\u00e4rel k\u00e4ivitab \u00fcks instantsidest kaudu sokli koodi, mis viib klastrite soovitud seisundisse.<\/p>\n<p><\/p>\n<h1 id=\"itogi\">Kokkuv\u00f5te<\/h1>\n<p><\/p>\n<p>T\u00e4na r\u00e4\u00e4kisime ja n\u00e4itasime, kuidas oma rakendust Tarantool Cartridge'ile juurutada ja seadistada lihtne topoloogia. Selleks kasutasime Ansible'it \u2014 v\u00f5imekat t\u00f6\u00f6riista, mis paistab silma kasutusmugavusega ja v\u00f5imaldab samal ajal seadistada mitmeid infrastruktuuri s\u00f5lmi (meie juhul klastrite instantsid).<\/p>\n<p><\/p>\n<p>Eelnevalt k\u00e4sitlesime \u00fchte paljusid viise, kuidas Ansible'i abil klastrikonfiguratsiooni kirjeldada. Kui olete valmis edasi liikuma, uurige <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/user_guide\/playbooks_best_practices.html\">parimaid tavasid<\/a><\/noindex> playbookide kirjutamiseks. V\u00f5ib-olla on teie jaoks mugavam hallata topoloogiat kasutades <code>group_vars<\/code> ja <code>host_vars<\/code>.<\/p>\n<p><\/p>\n<p>Varsti r\u00e4\u00e4gime, kuidas p\u00f6\u00f6rdumatult (expel) eemaldada instantsid topoloogiast, buutida vshard'i, hallata automaatse failover'i re\u017eiimi, seadistada autoriseerimist ja pat\u0161i klastrikonfiguratsiooni. Seni v\u00f5ite iseseisvalt uurida <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/ansible-cartridge#ansible-role-tarantool-cartridge\">dokumentatsiooni<\/a><\/noindex> ja katsetada klastriparameetrite muutmist.<\/p>\n<p><\/p>\n<p>Kui midagi ei toimi, andke kindlasti <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/tarantool\/ansible-cartridge\/issues\/new\">meile probleemist teada. Lahendame k\u00f5ik kiiresti!<\/a><\/noindex> teavitage meid probleemist. Lahendame selle kiiresti!<\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/478710\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e Tarantool Cartridge, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0445. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e: \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438. \u041d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0439\u0442\u0435\u0441\u044c, \u043c\u044b \u0432\u0441\u0451 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438! \u041c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432\u0441\u0435 best practices \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Tarantool Cartridge \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 ansible-\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442 \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0441\u0442\u0430\u0440\u0442\u0430\u043d\u0435\u0442 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442 \u0438\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-53611","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e Tarantool Cartridge, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0445. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e: \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438. \u041d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0439\u0442\u0435\u0441\u044c, \u043c\u044b \u0432\u0441\u0451 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438! \u041c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432\u0441\u0435 best practices \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Tarantool Cartridge \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 ansible-\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442 \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0441\u0442\u0430\u0440\u0442\u0430\u043d\u0435\u0442 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442 \u0438\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041b\u0435\u0433\u043a\u043e \u0438 \u043d\u0435\u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0435\u043d\u043d\u043e \u0434\u0435\u043f\u043b\u043e\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Tarantool Cartridge (\u0447\u0430\u0441\u0442\u044c 1) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e Tarantool Cartridge, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0445. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e: \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438. \u041d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0439\u0442\u0435\u0441\u044c, \u043c\u044b \u0432\u0441\u0451 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438! \u041c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432\u0441\u0435 best practices \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Tarantool Cartridge \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 ansible-\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442 \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0441\u0442\u0430\u0440\u0442\u0430\u043d\u0435\u0442 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442 \u0438\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-05T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:01:32+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Lihtsalt ja mugavalt rakenduste juurutamine Tarantool Cartridge'il (osa 1) | ProHoster","description":"Oleme juba r\u00e4\u00e4kinud Tarantool Cartridge'ist, mis v\u00f5imaldab arendada ja pakendada jaotatud rakendusi. J\u00e4\u00e4nud on veel v\u00e4he: \u00f5ppida neid rakendusi \u00fcles seadma ja hallata. \u00c4rge muretsege, oleme k\u00f5ik ette n\u00e4inud! Oleme kokku kogunud k\u00f5ik parimad tavad Tarantool Cartridge'iga t\u00f6\u00f6tamiseks ja kirjutanud ansible-rolle, mis paigutab paketi serveritesse, k\u00e4ivitab instantsid, \u00fchendab need erinevatesse klastritesse ja seadistab.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041b\u0435\u0433\u043a\u043e \u0438 \u043d\u0435\u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0435\u043d\u043d\u043e \u0434\u0435\u043f\u043b\u043e\u0438\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 Tarantool Cartridge (\u0447\u0430\u0441\u0442\u044c 1) | ProHoster","og:description":"\u041c\u044b \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e Tarantool Cartridge, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0445. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e \u043d\u0438\u0447\u0435\u0433\u043e: \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u043c\u0438. \u041d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0439\u0442\u0435\u0441\u044c, \u043c\u044b \u0432\u0441\u0451 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438! \u041c\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432\u0441\u0435 best practices \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 Tarantool Cartridge \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 ansible-\u0440\u043e\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u043b\u043e\u0436\u0438\u0442 \u043f\u0430\u043a\u0435\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0441\u0442\u0430\u0440\u0442\u0430\u043d\u0435\u0442 \u0438\u043d\u0441\u0442\u0430\u043d\u0441\u044b, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442 \u0438\u0445 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/legko-i-neprinuzhdenno-deploim-prilozheniya-na-tarantool-cartridge-chast-1","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-05T21:00:00+00:00","article:modified_time":"2020-02-18T11:01:32+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"53611","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 08:06:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:22:49","updated":"2026-01-24 08:06:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/53611","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=53611"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/53611\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=53611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=53611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=53611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}