ΠΠ΅Ρ ΡΠΌΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ
ΠΠ°Π½ΠΈΠΌΡΠΈΠ²ΠΎ? ΠΠ½Π΄Π°, ΠΌΠΎΠ»ΠΈΠΌ Π²Π°Ρ, ΠΈΡΠΏΠΎΠ΄ ΡΠ΅Π·Π°, ΡΠ²Π΅ ΡΠ΅ΠΌΠΎ Π²Π°ΠΌ ΡΠ΅ΡΠΈ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠΈ.
ΠΠΎΡΠ½ΠΈΠΌΠΎ ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ
ΠΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ΠΌΠΎ ΡΠ°ΠΌΠΎ Π΄Π΅ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΠΈ Π½Π°ΡΠ΅ ΡΠ»ΠΎΠ³Π΅. Π£Π²Π΅ΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠ°Π½ ΠΎΠΏΠΈΡ ΡΠ²ΠΈΡ
ΡΠ΅Π³ΠΎΠ²ΠΈΡ
ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠ»Π°Π·Π½ΠΈΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°ΡΠ°
Π’Π°ΡΠ°Π½ΡΠΎΠΎΠ» Π¦Π°ΡΡΡΠΈΠ΄Π³Π΅ ΠΈΠΌΠ° 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
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ Π°Π½ΡΠΈΠ±Π»Π΅ ΡΠ»ΠΎΠ³Ρ Π’Π°ΡΠ°Π½ΡΠΎΠΎΠ» Π¦Π°ΡΡΡΠΈΠ΄Π³Π΅-Π°:
$ 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_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
.
ΠΠΎΡΠ°ΠΌΠΎ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌΠΎ ΠΠ½ΡΠΈΠ±Π»Π΅-Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ Π²Π΅Π·Π΅ Π·Π° ΡΠ²Π°ΠΊΡ ΠΈΠ½ΡΡΠ°Π½ΡΡ. Π§ΠΈΠ½ΠΈ ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ½ΠΈΠΌ Π³ΡΡΠΏΠΈΡΠ°ΡΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠ΅ Ρ Π³ΡΡΠΏΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡ
ΠΌΠ°ΡΠΈΠ½Π°. Π£ ΡΡ ΡΠ²ΡΡ
Ρ, ΠΈΠ½ΡΡΠ°Π½ΡΠ΅ ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΡΡΡ Ρ Π³ΡΡΠΏΠ΅ 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
. ΠΠΎΡΡΠΎ ΡΠ΅ ΡΠ²Π°ΠΊΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π΄ΠΎΠΌΠ°ΡΠΈΠ½ Ρ ΠΠ½ΡΠΈΠ±Π»Π΅ ΡΠ΅ΡΠΌΠΈΠ½ΠΈΠΌΠ°, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π½Π°Π²Π΅ΡΡΠΈ ΠΊΠΎΡΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠ΅ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ° ΠΏΠ»Π°ΠΈΠ±ΠΎΠΎΠΊ-Π°.
ΠΡΠ°ΡΠ°ΠΌΠΎ ΡΠ΅ Π½Π° Π²Π΅Π± ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ
Π₯Π°ΡΠ΄Π΅ Π΄Π° Π½Π΅ ΡΡΠ°Π½Π΅ΠΌΠΎ ΡΡ ΠΈ ΡΠ°Π²Π»Π°Π΄Π°ΠΌΠΎ ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠΎΠΌ.
Π£ΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠΎΠΌ
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΡΡΠ΅ΠΌΠΎ Π½Π°ΡΠ΅ Π½ΠΎΠ²Π΅ ΠΈΠ½ΡΡΠ°Π½ΡΠ΅ Ρ ΡΠΊΡΠΏ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° 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
Π΄Π° Π·Π°ΡΡΡΠ°Π²ΠΈΡΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅ ΠΊΠ°Π΄Π° Π·Π°Π²ΡΡΠΈΡΠ΅ ΡΠ° ΡΠ°Π΄ΠΎΠΌ ΡΠ° ΡΠΈΠΌΠ°.
Π ΡΡΠ° ΡΠ΅ ΠΈΡΠΏΠΎΠ΄ Ρ Π°ΡΠ±Π΅?
ΠΠ²Π΄Π΅ ΡΡ Π²Π°ΠΌ ΡΠ΅ΡΠΈ Π²ΠΈΡΠ΅ ΠΎ ΡΠΎΠΌΠ΅ ΡΡΠ° ΡΠ΅ Π΄Π΅ΡΠ°Π²Π°Π»ΠΎ ΠΈΡΠΏΠΎΠ΄ Ρ Π°ΡΠ±Π΅ Π°Π½ΡΠΈΠ±Π»Π΅ ΡΠ»ΠΎΠ³Π΅ ΡΠΎΠΊΠΎΠΌ Π½Π°ΡΠΈΡ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Π°ΡΠ°.
ΠΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ ΠΊΠΎΡΠ°ΠΊ ΠΏΠΎ ΠΊΠΎΡΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π¦Π°ΡΡΡΠΈΠ΄Π³Π΅.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ ΠΏΠΎΡΠ΅ΡΠ½Π΅ ΠΈΠ½ΡΡΠ°Π½ΡΠ΅
ΠΡΠ²ΠΎ ΠΌΠΎΡΠ°ΡΠ΅ ΠΈΡΠΏΠΎΡΡΡΠΈΡΠΈ ΠΏΠ°ΠΊΠ΅Ρ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠΈ Π³Π°. Π’ΡΠ΅Π½ΡΡΠ½ΠΎ ΡΠ»ΠΎΠ³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π΄ΠΈ ΡΠ° Π ΠΠ ΠΈ ΠΠΠ ΠΏΠ°ΠΊΠ΅ΡΠΈΠΌΠ°.
ΠΠ°ΡΠΈΠΌ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠ΅. ΠΠ²Π΄Π΅ ΡΠ΅ ΡΠ²Π΅ Π²ΡΠ»ΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ: ΡΠ²Π°ΠΊΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠ° ΡΠ΅ Π·Π°ΡΠ΅Π±Π½Π° systemd
-ΡΠ΅ΡΠ²ΠΈΡ. Π΄Π°ΡΡ Π²Π°ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
$ systemctl start myapp@storage-1
ΠΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΡ storage-1
Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ myapp
. ΠΠΎΠΊΡΠ΅Π½ΡΡΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠ° ΡΠ΅ ΡΡΠ°ΠΆΠΈΡΠΈ ΡΠ²ΠΎΡΠ΅ /etc/tarantool/conf.d/
. ΠΠ½Π΅Π²Π½ΠΈΡΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠΈ ΠΏΠΎΠΌΠΎΡΡ journald
.
ΠΠ΅Π΄ΠΈΠ½ΠΈΡΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° /etc/systemd/system/[email protected]
Π·Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΡ ΡΡΠ»ΡΠ³Ρ Π±ΠΈΡΠ΅ ΠΈΡΠΏΠΎΡΡΡΠ΅Π½ Π·Π°ΡΠ΅Π΄Π½ΠΎ ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠΌ.
ΠΠ½ΡΠΈΠ±Π»Π΅ ΠΈΠΌΠ° ΡΠ³ΡΠ°ΡΠ΅Π½Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΌ ΡΡΠ»ΡΠ³Π°ΠΌΠ°; ΠΎΠ²Π΄Π΅ Π½ΠΈΡΠΌΠΎ ΠΈΠ·ΠΌΠΈΡΠ»ΠΈΠ»ΠΈ Π½ΠΈΡΡΠ° Π½ΠΎΠ²ΠΎ.
ΠΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°
ΠΠ²Π΄Π΅ Π·Π°Π±Π°Π²Π° ΠΏΠΎΡΠΈΡΠ΅. Π‘Π»Π°ΠΆΠ΅ΠΌ ΡΠ΅, Π±ΠΈΠ»ΠΎ Π±ΠΈ ΡΡΠ΄Π½ΠΎ Π·Π°ΠΌΠ°ΡΠ°ΡΠΈ ΡΠ΅ ΠΏΠΎΡΠ΅Π±Π½ΠΎΠΌ ΡΠ»ΠΎΠ³ΠΎΠΌ ΠΠ½ΡΠΈΠ±Π»Π΅ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΈ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ systemd
-ΡΡΠ»ΡΠ³Π΅.
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ½ΠΎ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅Ρ:
- ΠΡΠ²Π° ΠΎΠΏΡΠΈΡΠ°: ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ Π²Π΅Π± ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ ΠΈ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° Π΄ΡΠ³ΠΌΠ°Π΄. ΠΡΠΈΠ»ΠΈΡΠ½ΠΎ ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π°Π½ Π·Π° ΡΠ΅Π΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ.
- ΠΡΡΠ³Π° ΠΎΠΏΡΠΈΡΠ°: ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΡΠ°ΠΏΡ ΠΠ» ΠΠΠ. ΠΠ²Π΄Π΅ Π²Π΅Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ΡΡΠΎ Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·ΠΎΠ²Π°ΡΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΏΠΈΡΠ°ΡΠΈ ΡΠΊΡΠΈΠΏΡΡ Ρ ΠΠ°ΡΡΠΎΠ½Ρ.
- Π’ΡΠ΅ΡΠ° ΠΎΠΏΡΠΈΡΠ° (Π·Π° ΡΠ°ΠΊΠ΅ Π²ΠΎΡΠ΅): ΠΈΠ΄ΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠΎΠ²Π΅ΠΆΠΈΡΠ΅ ΡΠ΅ Π½Π° ΡΠ΅Π΄Π½Ρ ΠΎΠ΄ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ
tarantoolctl connect
ΠΈ ΠΈΠ·Π²ΡΡΠΈΡΠ΅ ΡΠ²Π΅ ΠΏΠΎΡΡΠ΅Π±Π½Π΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠ΅ ΡΠ° ΠΡΠ° ΠΌΠΎΠ΄ΡΠ»ΠΎΠΌcartridge
.
ΠΠ»Π°Π²Π½ΠΈ Π·Π°Π΄Π°ΡΠ°ΠΊ Π½Π°ΡΠ΅Π³ ΠΏΡΠΎΠ½Π°Π»Π°ΡΠΊΠ° ΡΠ΅ Π΄Π° ΡΡΠ°Π΄ΠΈΠΌΠΎ ΡΠΏΡΠ°Π²ΠΎ ΠΎΠ²Π°Ρ, Π½Π°ΡΡΠ΅ΠΆΠΈ Π΄Π΅ΠΎ ΠΏΠΎΡΠ»Π° Π·Π° Π²Π°Ρ.
ΠΠ½ΡΠΈΠ±Π»Π΅ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈ ΠΌΠΎΠ΄ΡΠ» ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π³Π° Ρ ΡΠ»ΠΎΠ·ΠΈ. ΠΠ°ΡΠ° ΡΠ»ΠΎΠ³Π° ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ°ΠΊΠ²Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅ Π·Π° ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
ΠΠ°ΠΊΠΎ ΡΠΎ ΡΠ°Π΄ΠΈ? ΠΠΈ ΠΎΠΏΠΈΡΡΡΠ΅ΡΠ΅ ΠΆΠ΅ΡΠ΅Π½ΠΎ ΡΡΠ°ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Ρ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΈ, Π° ΡΠ»ΠΎΠ³Π° Π΄Π°ΡΠ΅ ΡΠ²Π°ΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ²ΠΎΡ ΠΎΠ΄Π΅ΡΠ°ΠΊ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΊΠ°ΠΎ ΡΠ»Π°Π·. ΠΠΎΠ΄ΡΠ» ΠΏΡΠΈΠΌΠ° ΡΡΠ΅Π½ΡΡΠ½ΠΎ ΡΡΠ°ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈ ΡΠΏΠΎΡΠ΅ΡΡΡΠ΅ Π³Π° ΡΠ° ΠΎΠ½ΠΈΠΌ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΌΡΠ΅Π½ΠΎ ΠΊΠ°ΠΎ ΡΠ»Π°Π·. ΠΠ°ΡΠΈΠΌ ΡΠ΅ ΠΊΡΠΎΠ· ΡΠΎΠΊΠ΅Ρ ΡΠ΅Π΄Π½Π΅ ΠΎΠ΄ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΈ Π΄ΠΎΠ²ΠΎΠ΄ΠΈ ΠΊΠ»Π°ΡΡΠ΅Ρ Ρ ΠΆΠ΅ΡΠ΅Π½ΠΎ ΡΡΠ°ΡΠ΅.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈ
ΠΠ°Π½Π°Ρ ΡΠΌΠΎ ΡΠ΅ΠΊΠ»ΠΈ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ²ΠΎΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π½Π° Π’Π°ΡΠ°Π½ΡΠΎΠΎΠ» Π¦Π°ΡΡΡΠΈΠ΄Π³Π΅ ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Ρ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΡ. ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΊΠΎΡΠΈΡΡΠΈΠ»ΠΈ ΡΠΌΠΎ ΠΠ½ΡΠΈΠ±Π»Π΅ - ΠΌΠΎΡΠ°Π½ Π°Π»Π°Ρ ΠΊΠΎΡΠΈ ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π°Π½ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΠΈ ΠΊΠΎΡΠΈ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³Π΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½Π΅ ΡΠ²ΠΎΡΠΎΠ²Π΅ (Ρ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ, ΠΈΠ½ΡΡΠ°Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°).
ΠΠ·Π½Π°Π΄ ΡΠΌΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°Π»ΠΈ ΡΠ΅Π΄Π°Π½ ΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π½Π°ΡΠΈΠ½Π° Π΄Π° ΠΎΠΏΠΈΡΠ΅ΠΌΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠ½ΡΠΈΠ±Π»Π΅. ΠΠ°Π΄Π° ΠΎΡΠ΅ΡΠΈΡΠ΅ Π΄Π° ΡΡΠ΅ ΡΠΏΡΠ΅ΠΌΠ½ΠΈ Π΄Π° ΠΊΡΠ΅Π½Π΅ΡΠ΅ Π΄Π°ΡΠ΅, ΠΈΡΡΡΠ°ΠΆΠΈΡΠ΅ group_vars
ΠΈ host_vars
.
Π£ΡΠΊΠΎΡΠΎ ΡΠ΅ΠΌΠΎ Π²Π°ΠΌ ΡΠ΅ΡΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΡΠ°ΡΠ½ΠΎ ΠΈΠ·Π±ΡΠΈΡΠ΅ΡΠ΅ (ΠΈΠ·Π±Π°ΡΠΈΡΠ΅) ΠΈΠ½ΡΡΠ°Π½ΡΠ΅ ΠΈΠ· ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅, ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ Π²ΡΡ
Π°ΡΠ΄, ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΈΠΌ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ ΠΏΡΠ΅Π»Π°ΡΠΊΠ° Π½Π° Π³ΡΠ΅ΡΠΊΡ, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ΅ΡΠ΅ Π°ΡΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡ ΠΈ Π·Π°ΠΊΡΠΏΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. Π£ ΠΌΠ΅ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ Π΄Π° ΡΡΠΈΡΠ΅
ΠΠΊΠΎ Π½Π΅ΡΡΠΎ Π½Π΅ ΡΠ°Π΄ΠΈ, ΠΎΠ±Π°Π²Π΅Π·Π½ΠΎ
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ