แฉแแแ แฃแแแ แแแกแแฃแแ แแ
แกแแแแขแแ แแกแแ? แแแ แ แญแ แแก แฅแแแจ แแแแแแฎแแแ, แงแแแแแคแแ แก แแแขแงแแแ แแ แแแฉแแแแแแ.
แแแแแฌแงแแ แแแแแแแแแ
แฉแแแ แแแแแจแฃแฅแแแ แฉแแแแ แ แแแแก แคแฃแแฅแชแแแแแ แแแแก แแฎแแแแ แแแฌแแแก. แแฅแแแ แงแแแแแแแแก แจแแแแซแแแแ แแแแแแ แแแกแ แงแแแแ แแแฎแแกแแแแแแแแกแ แแ แจแแงแแแแแก แแแ แแแแขแ แแแแก แกแ แฃแแ แแฆแฌแแ แ
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 Cartridge-แแก แซแแ แแแแแ แ แแแ:
$ 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
แแฅ แแ แแคแแ แ แกแแแแขแแ แแกแ แแ แฎแแแแ, แแแฌแงแแแ ansible-role-แก, แ แแแแแกแแช แ.แฌ 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 แแแ แแแแก. แแแแแแฃแแ แฐแแกแขแแกแแแแก, แฉแแแ แจแแแแแซแแแ แแแแฃแแแแแ แแแแจแแ แแก แแแ แแแแขแ แแแ (แ แแแแ แแชแแ 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 แกแแแแแแจแ แฌแแแแ:
$ ansible-playbook -i hosts.yml
--limit storage-2,storage-2-replica
playbook.yml
แงแฃแ แแแฆแแแ แแแแฅแชแแแ แแแ แแแแขแก --limit
. แแแแแแแแ แแแแแแฃแแ แแแแกแขแแ แฃแแ แแแกแขแแแชแแ Ansible แขแแ แแแแแ แแ แแก แฐแแกแขแ, แฉแแแ แจแแแแแซแแแ แชแแแกแแฎแแ แแแแแกแแแฆแแ แแ แ แแแแแ แแแกแขแแแชแแแแ แฃแแแ แแงแแก แแแแคแแแฃแ แแ แแแฃแแ แกแแแแแแจแ แฌแแแแแก แแแจแแแแแกแแก.
แแแ 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 bootstrapping, แแแขแแแแขแฃแ แ failover แ แแแแแ, แแแขแแ แแแแชแแแก แแแ แแแแขแ แแแ แแ แแแแแแแชแแแก แแแแคแแแฃแ แแชแแ).
แฉแแแ แจแแแแแซแแแ แชแแแกแแฎแแ แแแแแกแแแฆแแ แแ แกแแแฃแจแแแก แ แแแแแ แแแฌแแแแก แจแแกแ แฃแแแแ แแแแแแ, แจแแแแแ แ แแแ แแแแแขแแแแแก แแแแแ แฉแแ แแแแแแแแแแก. แฉแแแแก แจแแแแฎแแแแแจแ, แฉแแแ แแแแแแ แแแแฃแจแแแ แแฎแแแแ แขแแแแแแแแแ, แแแแขแแ แแแแแแฃแกแขแแ cartridge-replicasets
.
แจแแแแคแแกแแ แฉแแแแ แซแแแแกแฎแแแแแก แจแแแแแ. แแฎแแแ แ แแแแแแแกแแก แแแแแ
Hooray!
แแฅแกแแแ แแแแแขแ แฉแแแขแแ แแ แแแกแขแแแชแแแแแก แแ แ แแแแแแแกแขแแแแก แฎแแแแฎแแแ แแแแคแแแฃแ แแชแแ แแ แแแฎแแ, แ แแแแ แแชแแแแแ แแแกแแขแฃแ แ แขแแแแแแแแ. แจแแแแซแแแแ แกแชแแแแ แกแฎแแแแแกแฎแแ แแแแ แแชแแฃแแ แกแชแแแแ แ, แแแแแแแแแ, memtx_memory
. แ แแแ แจแแแชแแแแ แแแแก แแแแแแแแแก แแแกแขแแแชแแแก แแแแแขแแแ แแแแก แแแ แแจแ, แ แแแ แจแแแแชแแ แแก แแฅแแแแ แแแแแชแฎแแแแก แจแแกแแซแแ แจแแคแแ แฎแแแแก แแ แ.
แแ แแแแแแแฌแงแแแ แกแแ แแแแ vagrant halt
แ แแแ แจแแแฉแแ แแ VM-แแแ, แ แแชแ แแแแกแ แฃแแแ แแแ.
แ แ แแ แแก แแแแแขแแก แฅแแแจ?
แแฅ แฃแคแ แ แแแขแก แแแกแแฃแแ แแ แแแแแ, แ แแช แแแฎแแ แฉแแแแ แแฅแกแแแ แแแแแขแแแแก แแ แแก แแแแแแ แฃแแ แ แแแแก แฅแแแจ.
แแแแแ แจแแแฎแแแแ แแแ แขแ แแฏแแก แแแแแแแชแแแก แแแแแแแแแแก แแขแแแแแ แแแแ.
แแแแแขแแก แแแงแแแแแ แแ แแแกแขแแแชแแแแแก แแแฌแงแแแ
แฏแแ แแฅแแแ แฃแแแ แแแแฌแแแแ แแแแแขแ แกแแ แแแ แก แแ แแแแแแกแขแแแแ แแ แแแ. แแฎแแ แ แแแก แจแแฃแซแแแ แแแฃแจแแแก RPM แแ DEB แแแแแขแแแแ.
แจแแแแแแ, แฉแแแ แแแฌแงแแแ แแแกแขแแแชแแแแก. แแฅ แงแแแแแคแแ แ แซแแแแแ แแแ แขแแแแ: แแแแแแฃแแ แแแกแขแแแชแแ แชแแแแแ systemd
- แกแแ แแแกแ. แแ แแกแแฃแแ แแ แแแแแแแแแ:
$ systemctl start myapp@storage-1
แแก แแ แซแแแแแ แแแแฌแงแแแก แแแแแแแแก storage-1
apps myapp
. แแแจแแแแฃแแ แแแกแขแแแชแแ แแแซแแแแแก แแแก /etc/tarantool/conf.d/
. แแแแแแแแแแแก แแฃแ แแแแแแแก แแแฎแแ แจแแกแแซแแแแแแแ แแแแแงแแแแแแ journald
.
แแ แแแฃแแแก แคแแแแ /etc/systemd/system/[email protected]
แกแแกแขแแแฃแ แ แกแแ แแแกแแกแแแแก แแแฌแแแแแฃแแ แแฅแแแแ แแแแแขแแ.
Ansible-แก แแฅแแก แฉแแจแแแแแฃแแ แแแแฃแแแแ แแแแแขแแแแก แแแงแแแแแแกแ แแ แกแแกแขแแแฃแ แ แกแแ แแแกแแแแก แแแ แแแแกแแแแก, แฉแแแ แแฅ แแฎแแแ แแ แแคแแ แ แแแแแแแแแแแแ.
แแแกแแขแฃแ แ แขแแแแแแแแแก แแแแคแแแฃแ แแชแแ
แแ แแฅ แแฌแงแแแ แงแแแแแแ แกแแแแขแแ แแกแ. แแแแแแแแฎแแแแแ, แฃแชแแแฃแ แ แแฅแแแแแแ แจแแฌแฃแฎแแแ แแแแแขแแแแก แแแกแขแแแแชแแแกแ แแ แแแจแแแแแกแแแแก แกแแแชแแแแฃแ แ แชแแแกแแฎแ แ แแแแ systemd
-แแแแกแแฎแฃแ แแแแแ.
แแฅแแแ แจแแแแซแแแแ แแแแงแแแแ แแแแกแขแแ แ แฎแแแแ:
- แแแ แแแแ แแแ แแแแขแ: แแแฎแกแแแแ Web UI แแ แแแแฌแแแแฃแแแ แฆแแแแแแแแ. แ แแแแแแแแ แแแกแขแแแชแแแก แแ แแฏแแ แแแ แแแฌแงแแแแกแแแแก, แแก แกแแแแแแ แจแแกแแคแแ แแกแแ.
- แแแแ แ แแแ แแแแขแ: แจแแแแซแแแแ แแแแแแงแแแแ GraphQl API. แแฅ แฃแแแ แจแแแแซแแแแ แ แแฆแแชแแก แแแขแแแแขแแแแชแแ, แแแแแแแแแ, แแแฌแแ แแ แกแแ แแแขแ แแแแแแจแ.
- แแแกแแแ แแแ แแแแขแ (แกแฃแแแ แซแแแแ แแแแกแแแแก): แแแแแแแ แกแแ แแแ แแ, แแแฃแแแแจแแ แแแ แแ แ-แแ แ แแแกแขแแแชแแแก แแแแแงแแแแแแ
tarantoolctl connect
แแ แจแแแกแ แฃแแแ แงแแแแ แกแแญแแ แ แแแแแแฃแแแชแแ แแฃแแก แแแแฃแแแcartridge
.
แฉแแแแ แแแแแแแแแแแก แแแแแแ แ แแแแชแแแแ แแก, แแฅแแแแแแแก แกแแแฃแจแแแก แงแแแแแแ แ แแฃแแ แแแฌแแแ.
Ansible แแแซแแแแ แกแแจแฃแแแแแแก แแแฌแแ แแ แกแแแฃแแแ แ แแแแฃแแ แแ แแแแแแงแแแแ แแแ แ แแแแแจแ. แฉแแแแ แ แแแ แแงแแแแแก แแกแแ แแแแฃแแแแก แแแแกแขแแ แแก แกแฎแแแแแกแฎแแ แแแแแแแแแขแแแแก แกแแแแ แแแแแ.
แฒ แแแแ แแฃแจแแแแก? แแฅแแแ แแฆแฌแแ แ แแแแกแขแแ แแก แกแแกแฃแ แแแ แแแแแแแ แแแแแก แแแแแแ แแชแแฃแ แแแแคแแแฃแ แแชแแแจแ แแ แ แแแ แแแแแแฃแ แแแแฃแแก แแซแแแแก แแแแคแแแฃแ แแชแแแก แแแแงแแคแแแแแแก, แ แแแแ แช แจแแงแแแแแก แกแแฎแแ. แแแแฃแแ แแฆแแแก แแแแกแขแแ แแก แแแแแแแแ แ แแแแแแแ แแแแแก แแ แแแแ แแแก แแแก แจแแงแแแแแกแแแ. แจแแแแแแ, แแแแ แแแแแก แแ แ-แแ แแ แแแกแขแแแชแแแก แกแแแแขแจแ, แ แแแแแแช แแแแกแขแแ แก แกแแกแฃแ แแแ แแแแแแแ แแแแแแแ แแแแฅแแก.
แจแแแแแแแ
แแฆแแก แฉแแแ แแฃแแฎแแ แแ แแ แแแฉแแแแแ, แแฃ แ แแแแ แฃแแแ แแแแแแแแกแแ แแฅแแแแ แแแแแแแชแแ Tarantool Cartridge-แแ แแ แแแแแงแแแแ แแแ แขแแแ แขแแแแแแแแ. แแแแกแแแแแก แฉแแแ แแแแแแแงแแแแ Ansible, แแซแแแแ แ แแแกแขแ แฃแแแแขแ, แ แแแแแแช แแแ แขแแแ แแแแแกแแงแแแแแแแแ แแ แกแแจแฃแแแแแแก แแแซแแแแ แแ แแแ แแฃแแแ แแแแแแแคแแแฃแ แแ แแ แแ แแแแแ แแแคแ แแกแขแ แฃแฅแขแฃแ แฃแแ แแแแแซแ (แฉแแแแก แจแแแแฎแแแแแจแ, แแก แแ แแก แแแแกแขแแ แฃแแ แจแแแแฎแแแแแแ).
แแแแแ, แฉแแแ แแแแแแฎแแแแ แแแกแแขแฃแ แ แแแแคแแแฃแ แแชแแแก แแฆแฌแแ แแก แแ แแแแแ แแแ Ansible-แแก แแแแแงแแแแแแ. แ แแแแ แช แแ แแแแแแแ, แ แแ แแแแ แฎแแ แ แฌแแแกแแแแกแแแแก, แแกแฌแแแแแ group_vars
ะธ host_vars
.
แซแแแแแ แแแแ แฉแแแ แแแขแงแแแ, แแฃ แ แแแแ แกแแแฃแแแแแ แแแแแฆแแ (แแแแแ แแชแฎแแ) แแแกแขแแแชแแแแ แขแแแแแแแแแแแ, แฉแแขแแแ แแแ vshard, แแแ แแแ แแแขแแแแขแฃแ แ แฉแแแแ แแแแก แ แแแแแ, แแแแแแแคแแแฃแ แแ แแ แแแขแแ แแแแชแแ แแ แแแแงแแแแ แแแแกแขแแ แแก แแแแคแแแฃแ แแชแแ. แแแแกแแแแจแ แจแแแแซแแแแ แแแแแฃแแแแแแแแ แแกแฌแแแแแ
แแฃ แ แแแ แแ แแฃแจแแแแก, แแแ แฌแแฃแแแแ
แฌแงแแ แ: www.habr.com