рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдХреБрд░рд╛ рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫреМрдВ
рд░реЛрдЪрдХ? рддреНрдпрд╕реЛрднрдП, рдХреГрдкрдпрд╛, рдХрд╛рдЯ рдЕрдиреНрддрд░реНрдЧрдд, рд╣рд╛рдореА рддрдкрд╛рдИрдВрд▓рд╛рдИ рдмрддрд╛рдЙрдиреЗрдЫреМрдВ рд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рдмреИ рдХреБрд░рд╛ рджреЗрдЦрд╛рдЙрдиреЗрдЫреМрдВред
рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реМрдВ
рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рднреВрдорд┐рдХрд╛рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдХреЛ рдЕрдВрд╢ рдорд╛рддреНрд░ рд╣реЗрд░реНрдиреЗрдЫреМрдВред рддрдкрд╛рдИрдВ рд╕рдзреИрдВ рдпрд╕рдХреЛ рд╕рдмреИ рдХреНрд╖рдорддрд╛рд╣рд░реВ рд░ рдЗрдирдкреБрдЯ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдкрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
Tarantool рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рдЫ api
╨╕ storage
, рдЬрд╕рд▓рд╛рдИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдорд╛ рддреЛрдХреНрди рд╕рдХрд┐рдиреНрдЫред
рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рдЖрдлреИрд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдХрд╕рд░реА рд╕реБрд░реВ рдЧрд░реНрдиреЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдХреЗрд╣реА рдмреЛрд▓реНрджреИрди, рдпрд╕рд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдмрд╛рдБрдХреА рдЖрдлреИрдВ рдЧрд░реНрдиреБрдкрд░реНрдЫ: рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╕реЗрд╡рд╛рд╣рд░реВ рд╕реБрд░реВ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЯреЛрдкреЛрд▓реЛрдЬреА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рддрд░ рд╣рд╛рдореА рдпреЛ рд╕рдмреИ рдЧрд░реНрджреИрдиреМрдВ; рдЙрддреНрддрд░рджрд╛рдпреАрд▓реЗ рдпреЛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдЧрд░реНрдиреЗрдЫред
рд╢рдмреНрдж рджреЗрдЦрд┐ рдХрд░реНрдо рд╕рдореНрдо
рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореНрд░реЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рджреБрдИ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВрдорд╛ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реМрдВ рд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЛрдкреЛрд▓реЛрдЬреА рд╕реЗрдЯ рдЕрдк рдЧрд░реМрдВ:
- рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ
app-1
рднреВрдорд┐рдХрд╛рд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗрдЫapi
, рдЬрд╕рдорд╛ рднреВрдорд┐рдХрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫvshard-router
ред рдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдорд╛рддреНрд░ рдЙрджрд╛рд╣рд░рдг рд╣реБрдиреЗрдЫред - рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ
storage-1
рднреВрдорд┐рдХрд╛ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫstorage
(рд░ рдПрдХреИ рд╕рдордпрдорд╛vshard-storage
), рдпрд╣рд╛рдБ рд╣рд╛рдореА рд╡рд┐рднрд┐рдиреНрди рдореЗрд╕рд┐рдирд╣рд░реВрдмрд╛рдЯ рджреБрдИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдердкреНрдиреЗрдЫреМрдВред
рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдЙрди
рднреВрдорд┐рдХрд╛ рдЖрдлреИрдорд╛ рдЫ
рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд╕рд╛рде рднрдгреНрдбрд╛рд░ рдХреНрд▓реЛрди рдЧрд░реМрдВ:
$ git clone https://github.com/dokshina/deploy-tarantool-cartridge-app.git
$ cd deploy-tarantool-cartridge-app && git checkout 1.0.0
рд╣рд╛рдореА рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рдмрдврд╛рдЙрдБрдЫреМрдВ:
$ vagrant up
Tarantool рдХрд╛рд░рддреВрд╕ рдЙрддреНрддрд░рджрд╛рдпреА рднреВрдорд┐рдХрд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
$ ansible-galaxy install tarantool.cartridge,1.0.1
рд╕реНрдерд╛рдкрд┐рдд рднреВрдорд┐рдХрд╛ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
$ ansible-playbook -i hosts.yml playbook.yml
рд╣рд╛рдореА рдкреНрд▓реЗрдмреБрдХрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреВрд░рд╛ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреНрдЫреМрдВ, рдЬрд╛рдиреБрд╣реЛрд╕реН
рддрдкрд╛рдИрдВ рдбрд╛рдЯрд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд░рд╛рдореНрд░реЛ, рд╕рд╣реА?
рдЕрдм рдпрд╕рд╕рдБрдЧ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реН, рд░ рдПрдХреИ рд╕рдордпрдорд╛ рдЯреЛрдкреЛрд▓реЛрдЬреАрдорд╛ рдЕрд░реНрдХреЛ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдердкреНрдиреБрд╣реЛрд╕реНред
рдпрд╕рд▓рд╛рдИ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕реБрд░реБ рдЧрд░реМрдВ
рддреНрдпрд╕реЛрднрдП рдХреЗ рднрдпреЛ?
рд╣рд╛рдореАрд▓реЗ рджреБрдИрд╡рдЯрд╛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВ рд╕реЗрдЯрдЕрдк рдЧрд░реНрдпреМрдВ рд░ рдПрдЙрдЯрд╛ рдЙрддреНрддрд░рджрд╛рдпреА рдкреНрд▓реЗрдмреБрдХ рд╕реБрд░реВ рдЧрд░реНтАНрдпреМрдВ рдЬрд╕рд▓реЗ рд╣рд╛рдореНрд░реЛ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНтАНрдпреЛред рдлрд╛рдЗрд▓рдХрд╛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рд╣реЗрд░реМрдВ playbook.yml
:
---
- name: Deploy my Tarantool Cartridge app
hosts: all
become: true
become_user: root
tasks:
- name: Import Tarantool Cartridge role
import_role:
name: tarantool.cartridge
рдпрд╣рд╛рдБ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдХреЗрд╣реА рд╣реБрдБрджреИрди, рднрдирд┐рдиреНрдЫ рдЬрд╡рд╛рдлрджреЗрд╣реА рднреВрдорд┐рдХрд╛ рд╕реБрд░реБ рдЧрд░реМрдВ tarantool.cartridge
.
рд╕рдмреИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬрд╣рд░реВ (рдЕрд░реНрдерд╛рддреН, рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди) рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдЫрдиреН hosts.yml
:
---
all:
vars:
# common cluster variables
cartridge_app_name: getting-started-app
cartridge_package_path: ./getting-started-app-1.0.0-0.rpm # path to package
cartridge_cluster_cookie: app-default-cookie # cluster cookie
# common ssh options
ansible_ssh_private_key_file: ~/.vagrant.d/insecure_private_key
ansible_ssh_common_args: '-o IdentitiesOnly=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
# INSTANCES
hosts:
storage-1:
config:
advertise_uri: '172.19.0.2:3301'
http_port: 8181
app-1:
config:
advertise_uri: '172.19.0.3:3301'
http_port: 8182
storage-1-replica:
config:
advertise_uri: '172.19.0.3:3302'
http_port: 8183
children:
# GROUP INSTANCES BY MACHINES
host1:
vars:
# first machine connection options
ansible_host: 172.19.0.2
ansible_user: vagrant
hosts: # instances to be started on the first machine
storage-1:
host2:
vars:
# second machine connection options
ansible_host: 172.19.0.3
ansible_user: vagrant
hosts: # instances to be started on the second machine
app-1:
storage-1-replica:
# GROUP INSTANCES BY REPLICA SETS
replicaset_app_1:
vars: # replica set configuration
replicaset_alias: app-1
failover_priority:
- app-1 # leader
roles:
- 'api'
hosts: # replica set instances
app-1:
replicaset_storage_1:
vars: # replica set configuration
replicaset_alias: storage-1
weight: 3
failover_priority:
- storage-1 # leader
- storage-1-replica
roles:
- 'storage'
hosts: # replica set instances
storage-1:
storage-1-replica:
рд╣рд╛рдореАрд▓реЗ рдпрд╕ рдлрд╛рдЗрд▓рдХреЛ рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрд░ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд░ рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ рдХрд╕рд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕рд┐рдХреНрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫред рдЕрд░реНрдХреЛ рд╣рд╛рдореА рдпрд╕рдорд╛ рдирдпрд╛рдБ рдЦрдгреНрдбрд╣рд░реВ рдердкреНрдиреЗрдЫреМрдВред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХрд╣рд╛рдБ рдердкреНрдиреЗ рднреНрд░рдордорд╛ рдирдкрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдлрд╛рдЗрд▓рдХреЛ рдЕрдиреНрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, hosts.updated.yml
, рдЬреБрди рдЙрджрд╛рд╣рд░рдг рднрдгреНрдбрд╛рд░рдорд╛ рдЫред
рдЙрджрд╛рд╣рд░рдг рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди
рдЙрддреНрддрд░рджрд╛рдпреА рд╕рд░реНрддрд╣рд░реВрдорд╛, рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╣реЛрд╕реНрдЯ рд╣реЛ (рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рд░реНрднрд░рд╕рдБрдЧ рднреНрд░рдорд┐рдд рд╣реБрдиреБ рд╣реБрдБрджреИрди), рдЕрд░реНрдерд╛рддреНред рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдиреЛрдб рдЬреБрди Ansible рд▓реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрдиреЗрдЫред рдкреНрд░рддреНрдпреЗрдХ рд╣реЛрд╕реНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдЬрдбрд╛рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ (рдЬрд╕реНрддреИ ansible_host
╨╕ ansible_user
), рд╕рд╛рдереИ рдЙрджрд╛рд╣рд░рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдиред рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рд╡рд┐рд╡рд░рдг рдЦрдгреНрдбрдорд╛ рдЫ hosts
.
рдЙрджрд╛рд╣рд░рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╣реЗрд░реМрдВ storage-1
:
all:
vars:
...
# INSTANCES
hosts:
storage-1:
config:
advertise_uri: '172.19.0.2:3301'
http_port: 8181
...
рдЪрд░ рдорд╛ config
рд╣рд╛рдореАрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрдХрд╛ рдЫреМрдВ - advertise URI
╨╕ HTTP port
.
рддрд▓ рдЙрджрд╛рд╣рд░рдг рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЫрдиреН app-1
╨╕ storage-1-replica
.
рд╣рд╛рдореАрд▓реЗ Ansible рд▓рд╛рдИ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдЬрдбрд╛рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдмрддрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рд╕рдореВрд╣рд╣рд░реВрдорд╛ рд╕рдореВрд╣ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рддрд╛рд░реНрдХрд┐рдХ рджреЗрдЦрд┐рдиреНрдЫред рдпрд╕ рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐, рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕рдореВрд╣рд╣рд░реВрдорд╛ рд╕рдВрдпреБрдХреНрдд рдЫрдиреН host1
╨╕ host2
, рд░ рдЦрдгреНрдбрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣рдорд╛ vars
рдорд╛рдирд╣рд░реВ рд╕рдВрдХреЗрдд рдЧрд░рд┐рдПрдХреЛ рдЫ ansible_host
╨╕ ansible_user
рдПрдЙрдЯрд╛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдХреЛ рд▓рд╛рдЧрд┐ред рд░ рдЦрдгреНрдбрдорд╛ hosts
тАФ рд╣реЛрд╕реНрдЯрд╣рд░реВ (рдЙрд░реНрдл рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ) рдЬреБрди рдпрд╕ рд╕рдореВрд╣рдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН:
all:
vars:
...
hosts:
...
children:
# GROUP INSTANCES BY MACHINES
host1:
vars:
# first machine connection options
ansible_host: 172.19.0.2
ansible_user: vagrant
hosts: # instances to be started on the first machine
storage-1:
host2:
vars:
# second machine connection options
ansible_host: 172.19.0.3
ansible_user: vagrant
hosts: # instances to be started on the second machine
app-1:
storage-1-replica:
рд╣рд╛рдореА рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдерд╛рд▓реНрдЫреМрдВ hosts.yml
ред рдЕрдЭ рджреБрдИрд╡рдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдердкреМрдВ, storage-2-replica
рдкрд╣рд┐рд▓реЛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдорд╛ рд░ storage-2
рджреЛрд╕реНрд░реЛ рдорд╛:
all:
vars:
...
# INSTANCES
hosts:
...
storage-2: # <==
config:
advertise_uri: '172.19.0.3:3303'
http_port: 8184
storage-2-replica: # <==
config:
advertise_uri: '172.19.0.2:3302'
http_port: 8185
children:
# GROUP INSTANCES BY MACHINES
host1:
vars:
...
hosts: # instances to be started on the first machine
storage-1:
storage-2-replica: # <==
host2:
vars:
...
hosts: # instances to be started on the second machine
app-1:
storage-1-replica:
storage-2: # <==
...
рдЙрддреНрддрд░рджрд╛рдпреА рдкреНрд▓реЗрдмреБрдХ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН:
$ ansible-playbook -i hosts.yml
--limit storage-2,storage-2-replica
playbook.yml
рдХреГрдкрдпрд╛ рд╡рд┐рдХрд▓реНрдк рдиреЛрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН --limit
ред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдЙрджрд╛рд╣рд░рдг рдЙрддреНрддрд░рджрд╛рдпреА рд╕рд░реНрддрд╣рд░реВрдорд╛ рд╣реЛрд╕реНрдЯ рднрдПрдХреЛ рд╣реБрдирд╛рд▓реЗ, рд╣рд╛рдореА рдкреНрд▓реЗрдмреБрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрд╛ рдХреБрди рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреБрдкрд░реНрдЫ рднрдиреЗрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред
рд╡реЗрдм UI рдорд╛ рдлрд░реНрдХрд┐рдБрджреИ
рддреНрдпрд╣рд╛рдБ рдирд░реЛрдХреМрдВ рд░ рдорд╛рд╕реНрдЯрд░ рдЯреЛрдкреЛрд▓реЛрдЬреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдиред
рдЯреЛрдкреЛрд▓реЛрдЬреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди
рд╣рд╛рдореНрд░реЛ рдирдпрд╛рдБ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯрдорд╛ рдЬреЛрдбреМрдВ storage-2
ред рдирдпрд╛рдБ рд╕рдореВрд╣ рдердкреМрдВ replicaset_storage_2
рд░ рдпрд╕рдХреЛ рдЪрд░рд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд╕рдБрдЧ рд╕рдорд╛рдирддрд╛рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрди рдЧрд░реНрдиреБрд╣реЛрд╕реН replicaset_storage_1
ред рдЦрдгреНрдбрдорд╛ hosts
рдпрд╕ рд╕рдореВрд╣рдорд╛ рдХреБрди-рдХреБрди рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫрдиреН рднрдиреНрдиреЗ рд╕рдВрдХреЗрдд рдЧрд░реМрдВ (рдЕрд░реНрдерд╛рдд, рд╣рд╛рдореНрд░реЛ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ):
---
all:
vars:
...
hosts:
...
children:
...
# GROUP INSTANCES BY REPLICA SETS
...
replicaset_storage_2: # <==
vars: # replicaset configuration
replicaset_alias: storage-2
weight: 2
failover_priority:
- storage-2
- storage-2-replica
roles:
- 'storage'
hosts: # replicaset instances
storage-2:
storage-2-replica:
рдкреНрд▓реЗрдмреБрдХ рдлреЗрд░рд┐ рд╕реБрд░реБ рдЧрд░реМрдВ:
$ ansible-playbook -i hosts.yml
--limit replicaset_storage_2
--tags cartridge-replicasets
playbook.yml
рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдорд╛ --limit
рдпрд╕ рдкрдЯрдХ рд╣рд╛рдореАрд▓реЗ рд╕рдореВрд╣рдХреЛ рдирд╛рдо рдкрд╛рд╕ рдЧрд░реНрдпреМрдВ рдЬреБрди рд╣рд╛рдореНрд░реЛ рдкреНрд░рддрд┐рдХреГрддрд┐рд╕рдБрдЧ рдореЗрд▓ рдЦрд╛рдиреНрдЫред
рд╡рд┐рдХрд▓реНрдк рд╡рд┐рдЪрд╛рд░ рдЧрд░реМрдВ tags
.
рд╣рд╛рдореНрд░реЛ рднреВрдорд┐рдХрд╛рд▓реЗ рдХреНрд░рдорд╢рдГ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрджрдЫ, рдЬреБрди рдирд┐рдореНрди рдЯреНрдпрд╛рдЧрд╣рд░реВрд╕рдБрдЧ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХреЛ рдЫ:
cartridge-instances
: рдЙрджрд╛рд╣рд░рдг рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди (рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди, рд╕рджрд╕реНрдпрддрд╛ рдЬрдбрд╛рди);cartridge-replicasets
: рдЯреЛрдкреЛрд▓реЛрдЬреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди (рдкреНрд░рддрд┐рдХреГрддрд┐ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд░ рдХреНрд▓рд╕реНрдЯрд░рдмрд╛рдЯ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рд╕реНрдерд╛рдпреА рд╣рдЯрд╛рдЙрдиреЗ (рдирд┐рдХрд╛рд▓));cartridge-config
: рдЕрдиреНрдп рдХреНрд▓рд╕реНрдЯрд░ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди (vshard рдмреБрдЯрд╕реНрдЯреНрд░реНрдпрд╛рдкрд┐рдЩ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрднрд░ рдореЛрдб, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди)ред
рд╣рд╛рдореА рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рд╣рд╛рдореА рдХрд╛рдордХреЛ рдХреБрди рднрд╛рдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ, рддреНрдпрд╕рдкрдЫрд┐ рднреВрдорд┐рдХрд╛рд▓реЗ рдмрд╛рдБрдХреА рдХрд╛рд░реНрдпрд╣рд░реВ рдЫреЛрдбреНрдиреЗрдЫред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореА рдЯреЛрдкреЛрд▓реЛрдЬреАрд╕рдБрдЧ рдорд╛рддреНрд░ рдХрд╛рдо рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрдХрд╛ рдЫреМрдВ cartridge-replicasets
.
рд╣рд╛рдореНрд░реЛ рдкреНрд░рдпрд╛рд╕рдХреЛ рдирддрд┐рдЬрд╛рдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реМрдВред рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рдирдпрд╛рдБ рдкреНрд░рддрд┐рдХреГрддрд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫреМрдВ
рд╣реБрд░реИ!
рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯрд╣рд░реВрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдХреНрд▓рд╕реНрдЯрд░ рдЯреЛрдкреЛрд▓реЛрдЬреА рдХрд╕рд░реА рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред рддрдкрд╛рдИрдВ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдЪрд╛рд▓рди рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ред memtx_memory
ред рднреВрдорд┐рдХрд╛рд▓реЗ рддрдкрд╛рдЗрдБрдХреЛ рдЖрд╡реЗрджрдирдХреЛ рд╕рдореНрднрд╛рд╡рд┐рдд рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХрдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЙрджрд╛рд╣рд░рдг рдкреБрди: рд╕реБрд░реБ рдирдЧрд░реА рдпреЛ рдЧрд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫред
рджреМрдбрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН vagrant halt
рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╢рд┐рдирд╣рд░реВ рд░реЛрдХреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЬрдм рддрдкрд╛рдЗрдБ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░рд┐рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рд╣реБрдб рдореБрдирд┐ рдХреЗ рдЫ?
рдпрд╣рд╛рдБ рдо рддрдкрд╛рдИрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдкреНрд░рдпреЛрдЧрдХреЛ рдХреНрд░рдордорд╛ рдЬрд╡рд╛рдлрджреЗрд╣реА рднреВрдорд┐рдХрд╛рдХреЛ рд╣реБрдб рдЕрдиреНрддрд░реНрдЧрдд рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдерд┐рдпреЛ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдердк рдмрддрд╛рдЙрдиреЗрдЫреБред
рдХрд╛рд░рдЯреНрд░рд┐рдЬ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓рд╛рдИ рдЪрд░рдгрдмрджреНрдз рд░реВрдкрдорд╛ рдбрд┐рдкреНрд▓реЛрдЗ рдЧрд░реНрдиреЗ рд╣реЗрд░реМрдВред
рдкреНрдпрд╛рдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ рд░ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕реБрд░реБ рдЧрд░реНрджреИ
рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрдВрд▓реЗ рд╕рд░реНрднрд░рдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рдбреЗрд▓рд┐рднрд░ рдЧрд░реНрди рд░ рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд╣рд╛рд▓ рднреВрдорд┐рдХрд╛рд▓реЗ RPM рд░ DEB рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫред
рдЕрд░реНрдХреЛ рд╣рд╛рдореА рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕реБрд░реВ рдЧрд░реНрдЫреМрдВред рдпрд╣рд╛рдБ рд╕рдмреИ рдХреБрд░рд╛ рдзреЗрд░реИ рд╕рд░рд▓ рдЫ: рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдЕрд▓рдЧ рдЫ systemd
- рд╕реЗрд╡рд╛ред рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдиреЗрдЫреБ:
$ systemctl start myapp@storage-1
рдпреЛ рдЖрджреЗрд╢рд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реБрд░реБ рдЧрд░реНрдиреЗрдЫ storage-1
рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ myapp
ред рд▓рдиреНрдЪ рдЧрд░рд┐рдПрдХреЛ рдЙрджрд╛рд╣рд░рдгрд▓реЗ рдпрд╕рдХреЛ рдЦреЛрдЬреА рдЧрд░реНрдиреЗрдЫ /etc/tarantool/conf.d/
ред рдЙрджрд╛рд╣рд░рдг рд▓рдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣реЗрд░реНрди рд╕рдХрд┐рдиреНрдЫ journald
.
рдПрдХрд╛рдЗ рдлрд╛рдЗрд▓ /etc/systemd/system/[email protected]
рдкреНрдпрд╛рдХреЗрдЬрдХреЛ рд╕рд╛рде рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреЗрдЫред
Ansible рд╕рдБрдЧ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ systemd рд╕реЗрд╡рд╛рд╣рд░реВ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рд░реНрдорд┐рдд рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдЫрдиреН; рд╣рд╛рдореАрд▓реЗ рдпрд╣рд╛рдБ рдХреЗрд╣рд┐ рдирдпрд╛рдБ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЧрд░реЗрдХрд╛ рдЫреИрдиреМрдВред
рдХреНрд▓рд╕реНрдЯрд░ рдЯреЛрдкреЛрд▓реЛрдЬреА рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИ
рдпрд╣рд╛рдБ рд░рдорд╛рдЗрд▓реЛ рд╕реБрд░реБ рд╣реБрдиреНрдЫред рд╕рд╣рдордд рд╣реБрдиреБрд╣реЛрд╕реН, рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд░ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реЗрд╖ рдЙрддреНрддрд░рджрд╛рдпреА рднреВрдорд┐рдХрд╛рдХреЛ рд╕рд╛рде рдЪрд┐рдиреНрддрд╛ рдЧрд░реНрдиреБ рдЕрдиреМрдареЛ рд╣реБрдиреЗрдЫ systemd
- рд╕реЗрд╡рд╛рд╣рд░реВред
рддрдкрд╛рдИрдВ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
- рдкрд╣рд┐рд▓реЛ рд╡рд┐рдХрд▓реНрдк: рд╡реЗрдм UI рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН рд░ рдмрдЯрдирд╣рд░реВрдорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпреЛ рдзреЗрд░реИ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рдПрдХ-рдкрдЯрдХ рд╕реБрд░реБрдХреЛ рд▓рд╛рдЧрд┐ рдПрдХрджрдо рдЙрдкрдпреБрдХреНрдд рдЫред
- рджреЛрд╕реНрд░реЛ рд╡рд┐рдХрд▓реНрдк: рддрдкрд╛рдИрдВ GraphQl API рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╣рд╛рдБ рддрдкрд╛рдЗрдБ рдкрд╣рд┐рд▓реЗ рдиреИ рдХреЗрд╣рд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдкрд╛рдЗрдерди рдорд╛ рд▓рд┐рдкрд┐ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред
- рддреЗрд╕реНрд░реЛ рд╡рд┐рдХрд▓реНрдк (рдмрд▓рд┐рдпреЛ-рдЗрдЪреНрдЫрд╛рдХреЛ рд▓рд╛рдЧрд┐): рд╕рд░реНрднрд░рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН, рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН
tarantoolctl connect
рд░ Lua рдореЛрдбреНрдпреБрд▓рдХреЛ рд╕рд╛рде рд╕рдмреИ рдЖрд╡рд╢реНрдпрдХ рд╣реЗрд░рдлреЗрд░рд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреБрд╣реЛрд╕реНcartridge
.
рд╣рд╛рдореНрд░реЛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░рдХреЛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рднрдиреЗрдХреЛ рдареНрдпрд╛рдХреНрдХреИ рдпреЛ рдЧрд░реНрдиреБ рд╣реЛ, рддрдкрд╛рдИрдВрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рдордХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдХрдард┐рди рднрд╛рдЧред
Ansible рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЖрдлреНрдиреИ рдореЛрдбреНрдпреБрд▓ рд▓реЗрдЦреНрди рд░ рднреВрдорд┐рдХрд╛рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╣рд╛рдореНрд░реЛ рднреВрдорд┐рдХрд╛рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдХреНрд▓рд╕реНрдЯрд░ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рддреНрдпрд╕реНрддрд╛ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред
рдпрд╕рд▓реЗ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ? рддрдкрд╛рдИрдВрд▓реЗ рдШреЛрд╖рдгрд╛рддреНрдордХ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЗрдЪреНрдЫрд┐рдд рдЕрд╡рд╕реНрдерд╛ рд╡рд░реНрдгрди рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рд░ рднреВрдорд┐рдХрд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЛрдбреНрдпреБрд▓рд▓рд╛рдИ рдпрд╕рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЦрдгреНрдб рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдореЛрдбреНрдпреБрд▓рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рд╣рд╛рд▓рдХреЛ рдЕрд╡рд╕реНрдерд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдЗрдирдкреБрдЯрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рд╛рдкреНрдд рднрдПрдХреЛрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрджрдЫред рдЕрд░реНрдХреЛ, рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдгрдХреЛ рд╕рдХреЗрдЯ рдорд╛рд░реНрдлрдд рдХреЛрдб рд╕реБрд░реБ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░рд▓рд╛рдИ рдЪрд╛рд╣рд┐рдПрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рд▓реНрдпрд╛рдЙрдБрдЫред
рдкрд░рд┐рдгрд╛рдорд╣рд░реВ
рдЖрдЬ рд╣рд╛рдореАрд▓реЗ Tarantool Cartridge рдорд╛ рддрдкрд╛рдЗрдБрдХреЛ рдЖрд╡реЗрджрди рдХрд╕рд░реА рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдиреЗ рд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЛрдкреЛрд▓реЛрдЬреА рд╕реЗрдЯ рдЕрдк рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдмрддрд╛рдпреМрдБ рд░ рджреЗрдЦрд╛рдпреМрдБред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореАрд▓реЗ Ansible - рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНтАНрдпреМрдВ рдЬреБрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫ рд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдПрдХреИ рд╕рд╛рде рдзреЗрд░реИ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдиреЛрдбрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ (рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдХреНрд▓рд╕реНрдЯрд░ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ)ред
рдорд╛рдерд┐ рд╣рд╛рдореАрд▓реЗ Ansible рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╡рд░реНрдгрди рдЧрд░реНрдиреЗ рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдЙрдЯрд╛рдорд╛ рд╣реЗрд░реНрдпреМрдВред рдПрдХрдЪреЛрдЯрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЕрдЧрд╛рдбрд┐ рдмрдвреНрди рддрдпрд╛рд░ рдорд╣рд╕реБрд╕ рдЧрд░реНрдиреБрднрдпреЛ, рдЕрдиреНрд╡реЗрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН group_vars
╨╕ host_vars
.
рдзреЗрд░реИ рдЪрд╛рдБрдбреИ рд╣рд╛рдореА рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдЯреЛрдкреЛрд▓реЛрдЬреА, рдмреБрдЯрд╕реНрдЯреНрд░реНрдпрд╛рдк vshard, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрднрд░ рдореЛрдб рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХрдиреНрдлрд┐рдЧрд░ рд░ рдХреНрд▓рд╕реНрдЯрд░ рдХрдиреНрдлрд┐рдЧрд░ рдкреНрдпрд╛рдЪрдмрд╛рдЯ рдХрд╕рд░реА рд╕реНрдерд╛рдпреА рд░реВрдкрдорд╛ рдореЗрдЯрд╛рдЙрдиреЗ (рдирд┐рдХрд╛рд▓рд╛) рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рдмрддрд╛рдЙрдиреЗрдЫреМрдВред рдпрд╕ рдмреАрдЪрдорд╛, рддрдкрд╛рдИрдВ рдЖрдлреНрдиреЛ рдЕрдзреНрдпрдпрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
рдпрджрд┐ рдХреЗрд╣рд┐ рдХрд╛рдо рдЧрд░реНрджреИрди рднрдиреЗ, рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрдиреБрд╣реЛрд╕реН
рд╕реНрд░реЛрдд: www.habr.com