рд╣рдо рдкрд╣рд▓реЗ рд╣реА рдмрд╛рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ
рджрд┐рд▓рдЪрд╕реНрдк? рддреЛ рдХреГрдкрдпрд╛, рдХрдЯ рдХреЗ рддрд╣рдд, рд╣рдо рдЖрдкрдХреЛ рдмрддрд╛рдПрдВрдЧреЗ рдФрд░ рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рдПрдВрдЧреЗред
рдЪрд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рд╣рдо рдЕрдкрдиреА рднреВрдорд┐рдХрд╛ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рднрд╛рдЧ рд╣реА рджреЗрдЦреЗрдВрдЧреЗред рдЖрдк рд╣рдореЗрд╢рд╛ рдЗрд╕рдХреА рд╕рднреА рдХреНрд╖рдорддрд╛рдУрдВ рдФрд░ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдЯрд╛рд░рдирдЯреВрд▓ рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рд╣реИ api
╨╕ storage
, рдЬрд┐рд╕реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рд╕реНрд╡рдпрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрд╛рдХреА рдХрд╛рдо рд╕реНрд╡рдпрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛, рд╕реЗрд╡рд╛рдПрдБ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рдФрд░ рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣ рд╕рдм рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ; Ansible рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд░реЗрдЧрд╛ред
рд╢рдмреНрджреЛрдВ рд╕реЗ рдХрд░реНрдореЛрдВ рддрдХ
рддреЛ, рдЖрдЗрдП рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рджреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдкрд░ рддреИрдирд╛рдд рдХрд░реЗрдВ рдФрд░ рдПрдХ рд╕рд░рд▓ рдЯреЛрдкреЛрд▓реЙрдЬреА рд╕реЗрдЯ рдХрд░реЗрдВ:
- рдкреНрд░рддрд┐рдХреГрддрд┐рд╕реЗрдЯ
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
рдЯрд╛рд░рдирдЯреВрд▓ рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рднреВрдорд┐рдХрд╛:
$ 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
. рдЪреВрдБрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдЗрдВрд╕реНрдЯреЗрдВрд╕ Ansible рд╢рдмреНрджреЛрдВ рдореЗрдВ рдПрдХ рд╣реЛрд╕реНрдЯ рд╣реИ, рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд▓реЗрдмреБрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреМрди рд╕реЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡реЗрдм рдпреВрдЖрдИ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ
рдЖрдЗрдП рдпрд╣реАрдВ рди рд░реБрдХреЗрдВ рдФрд░ рдЯреЛрдкреЛрд▓реЙрдЬреА рдкреНрд░рдмрдВрдзрди рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░реЗрдВред
рдЯреЛрдкреЛрд▓реЙрдЬреА рдкреНрд░рдмрдВрдзрди
рдЖрдЗрдП рдЕрдкрдиреЗ рдирдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдПрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рд╕реЗрдЯ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВ 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
: рдЕрдиреНрдп рдХреНрд▓рд╕реНрдЯрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди (рд╡реАрдПрд╕рд╣рд╛рд░реНрдб рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрд╡рд░ рдореЛрдб, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди)ред
рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХрд╛рд░реНрдп рдХрд╛ рдХреМрди рд╕рд╛ рднрд╛рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдлрд┐рд░ рднреВрдорд┐рдХрд╛ рд╢реЗрд╖ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдЧреАред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ 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 рдореЗрдВ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╕рд┐рд╕реНрдЯрдордбреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ; рд╣рдордиреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдирдпрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдХреНрд▓рд╕реНрдЯрд░ рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреА рд╕реНрдерд╛рдкрдирд╛
рдордЬрд╝рд╛ рдпрд╣рд╛рдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╕рд╣рдордд рд╣реВрдБ, рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ Ansible рднреВрдорд┐рдХрд╛ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реЛрдирд╛ рдЕрдЬреАрдм рд╣реЛрдЧрд╛ systemd
-рд╕рд░рдХрд╛рд░реА
рдЖрдк рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк: рд╡реЗрдм рдпреВрдЖрдИ рдЦреЛрд▓реЗрдВ рдФрд░ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдпрд╣ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдПрдХ рдмрд╛рд░ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдкрдпреБрдХреНрдд рд╣реИред
- рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк: рдЖрдк GraphQl API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВред
- рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк (рджреГрдврд╝ рдЗрдЪреНрдЫрд╛рд╢рдХреНрддрд┐ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП): рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рдПрдВ, рдХрд┐рд╕реА рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
tarantoolctl connect
рдФрд░ рд▓реБрдЖ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░реЗрдВcartridge
.
рд╣рдорд╛рд░реЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдареАрдХ рдпрд╣реА рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд╛ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
Ansible рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдореЙрдбреНрдпреВрд▓ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рднреВрдорд┐рдХрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдорд╛рд░реА рднреВрдорд┐рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдХреНрд▓рд╕реНрдЯрд░ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред
рдпрд╣ рдХрд╛рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ? рдЖрдк рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рднреВрдорд┐рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдиреБрднрд╛рдЧ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред рдореЙрдбреНрдпреВрд▓ рдХреНрд▓рд╕реНрдЯрд░ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдХрд┐рд╕реА рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдХреЛрдб рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИред
рдкрд░рд┐рдгрд╛рдо
рдЖрдЬ рд╣рдордиреЗ рдмрддрд╛рдпрд╛ рдФрд░ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЯрд╛рд░рдирдЯреВрд▓ рдХрд╛рд░реНрдЯреНрд░рд┐рдЬ рдкрд░ рдХреИрд╕реЗ рддреИрдирд╛рдд рдХрд░реЗрдВ рдФрд░ рдПрдХ рд╕рд░рд▓ рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ Ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ - рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдЬреЛ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдиреЛрдбреНрд╕ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрд▓рд╕реНрдЯрд░ рдЙрджрд╛рд╣рд░рдг) рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдКрдкрд░ рд╣рдордиреЗ Ansible рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рджреЗрдЦрд╛ред рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рддреЛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ group_vars
╨╕ host_vars
.
рдмрд╣реБрдд рдЬрд▓реНрдж рд╣рдо рдЖрдкрдХреЛ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдЯреЛрдкреЛрд▓реЙрдЬреА, рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдмрдирд╛рдорд╣рд╛рд░реНрдб рд╕реЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд╣рдЯрд╛рдПрдВ (рдирд┐рд╖реНрдХрд╛рд╕рд┐рдд рдХрд░реЗрдВ), рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлреЗрд▓рдУрд╡рд░ рдореЛрдб рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ, рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреИрдЪ рдХрд░реЗрдВред рдЗрд╕ рдмреАрдЪ, рдЖрдк рд╕реНрд╡рдпрдВ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдпрджрд┐ рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ
рд╕реНрд░реЛрдд: www.habr.com