
Salam untuk semua! Nama saya George. Saya bekerja untuk server.com. Saya datang untuk memberi tahu Anda tentang Ansible: tentang Ansible yang baik dan tentang Ansible yang buruk secara umum, yaitu tentang bagaimana orang dapat melakukan hal-hal buruk di Ansible.
Pertama, saya ingin mengajukan pertanyaan. Siapa yang tahu tentang apa ini?

Penonton menjawab: "Ini tentang rasa sakit"
Saya melihat tiga tangan. Saya tidak percaya ada tiga orang di ruangan itu yang bekerja dengan Ansible. Rupanya bukan gambar yang paling bagus.

. . .
R&D , .
, , : , - - , , . , : ยซ , ยป. : ยซ , ยป.
. - , . , , . Ansible.

Ansible? , R&D , production . CI/CD , , , . Ansible .
Ansible. Chef. CFengine.
: ยซ Ansible?ยป , .

, .
, 20 , -, . , . . ?
Ansible playbook, , . Chef - , . . , chef-. , Ansible .
, , .

, , - Ansible . , Ansible , - .
Chef , , Ansible.
, . , , Ansible , , .

, , Ansible . . , , , .
, , , . , . , , . , , , .
, Chef . - , .
Ansible . , Ansible .
, . , , , , . . , . . , , - , . Ansible .
Ansible โ . , Ansible API, Ansible , , - , . Ansible , .

Ansible, . , , , .

Computer Science โ .
. , , .
- .
- .
- .
- , .

Ansible. output Ansible. Ansible . โ Jinja Vars, .
, side effects . , , , Ansible.
Ansible . , :

, , side effects. , , Ansible, side effect.

Ansible โ Jinja, . X x. ? , , .
. .
, - , : , , . . , , .
, , , , .

, Ansible .
Ansible โ , , . , - .
, Ansible.

Ansible , . . . , , , .

Ansible, - , . Ansible.
. .
, , . , , , .
Ansible "", , , - includes. , .

, Ansible. . .

:
- .
- .
- .
- , .

.

, , Ansible. , , . : ยซ ? ยป. .
, Ansible, . .

. , play. . , /etc/foo .
. .

Ansible , .
, , , , - , .
. - .

โ . Ansible , playbook . , .
, , , .

, .
.
, , , , , - . .
, .
, .

โ . , .
, , inventory, , .
. , โ playbook, .
, , .

Ansible , , .
, Ansible. . , . , . . , , . . , , , , . .
, .
โ . , .

, . Kubernetes. YAML JSON.
Jinja YAML , YAML Jinja. , JSON YAML to_nice_yaml.
, , , Jinja YAML-.
. , Ansible .

. , , . .

coupling . . . , .
Ansible coupling. , .
โ .

.
, . , , . YAML-, .
1 2 , 2 , . 2, , . , , , , 2.

, 80 % Ansible, . . , , .
, . , , , - , - , - .
, , - , .
. . , , Ansible . . Playbook host. : host:
, . . inventory playbook . , .
, , playbook template, .

. . โ inventory.
inventory, , . hostvars , - . , - .
? . , play.
, , Ansible. Ansible . .
, (shadowing) .
vars .
set_facts, default. Ansible , .
โ , .

Ansible , . 5 , 3 playbooks, 1 inventory.
, .
, , , .
, inventory . , , . 0 changing. - , - .

Ansible, Ansible , . , Ansible, . . , .
, Ansible.

. 200 - , includes. includes, .
, , . . . 2, : ยซ 3ยป, 2. , 3. , Ansible : ยซ ยป, : ยซ ยป.
includes, import , , . , -.

. , , -. , .
Ansible , , , .
, , , includes , , Ansible .

, .
Ansible โ 2 playbooks 2 Ansible. - . , .
, Ansible C
. undefine behavior, .

, , Ansible.
, .
โ - Ansible. , , . - , - Ansible. : ยซ, ยป. , -.
, : - Ansible; .
, , , - - , . , , Ansible. , Ansible pythonโ . , pythonโ Ansible. . Ansible โ , .
, - Ansible, .
โ , , . , . Ansible.
, Ansible, . . Python , , Go, Ryby, .
stderr , stdout JSON โ . Ansible , , .
, , , Ansible playbook.
: , , - ; lookup- , -. Ansible -.

, , , - , -? โ .
:
- Ansible, , .
- Ansible .
, , .
- Ansible , , , - .
Ansible http, , , .
, , Ansible , , , .

! . . Gartner , . Ansible , , Chef Puppet . .
. , .
CFEngine , , Ansible , . .
ยซยป , Ansible : ยซ ?ยป. , , . , , , , , .
, - , - . , Ansible, . , , . , handlers, , , .
0 changes, , , , , - . . Ansible. , handler notify handler. handler when, event-, .
. Handlers - . , , , , , . Ansible .
. ? โ , , โฆ
. , . , , , . Debops , - , - , . - -. -, .
, Galaxy. , , . , 2 . 15-20 2 . โ Knife. , Chef โ cookbooks. Knife, , , .
, , . . . .
! . Tower AWX ? - ? - ?
. , Chef - ?
. Chef. , , Chef infrastructure as code. , infrastructure, . . - - , . , D+. , , kill -9 , .
. . , , . .
, , , . defense- , . .
, . , . .
, . , , 50 , , , , 50 , , , "". 50 , , 500 , , , 1 000 . , , , .
Tower โ , . Ansible jobโ Jenkins, Gitlab-CI . .
, .gitlab-ci.yml Tower.
- Ansible Red Hat. โ , , .
-, , Ansible , . , -, , , .
, RBAC - playbook โ production. Netflix, ssh- production-, production . , .
?
4 . 4 . , , tmp. , . . . , . - .
, , , , linter , . jobs ci .
Ansible, , Ansible Jinja. : Ansible โ Python, Jinja โ YAML. , . ( Ansible ) .
, Jinja. Ansible Jinja: if - true else false. Jinja. . YAML JSON. , - , YAML, , , , . : Javascript, PHP.
, Ansible , - , , ?
-, Ansible-lint โ , . , , Ansible. Ansible-lint , . Ansible , , .
, , , . Ansible . . overleaf. presage, , . ., set_facts , default. , . : ยซ ?ยป. , Ansible , . , .
, include c set_fact, , , , . , , . Ansible , . , 2.6, 2.7, 2.8 2.9 includes, -. , .
, , , -, include- delegate. , - delegate, - . . , , . , , . , , , . 2.6, -. 2.7, 2.8, 2.9.
, . playbook. Import role vars x=1. : set_facts x=2, debug var=x. : debug var=x. . . , , , , .
, , 2, 2. , , . , , . , 1, : set_fact x=2. ? 1. , , set_fact 2. , 1, , 2. . . .
-, include- . .
. Terraform? ?
Terraform . โ , , Terraform .
, Terraform state. Terraform states. n+1 provisioning. open source Terraform : ยซ, . Git, locks, โ ยป. .
, , , . docker. open source , .
Ansible dan Terraform sama sekali bukan pesaing di mana pun, karena Anda tidak dapat melakukan apa yang dilakukan Terraform dengan Ansible dan sebaliknya. Anda biasanya tidak dapat mengkonfigurasi server secara internal dengan Terraform.
Terraform sebenarnya adalah metode deklaratif untuk memesan layanan. Mereka menyebutnya penyediaan, tetapi kenyataannya, Anda menyediakan layanan ini untuk diri Anda sendiri, atau menyediakan penyedia pihak ketiga. Terraform adalah metode standar untuk memesan layanan dari penyedia pihak ketiga melalui antarmuka mesin yang kaya. Mereka sangat dekat satu sama lain, tetapi Terraform bekerja, secara kasar, sebelum Ansible datang.