
皆さんこんにちは!私の名前はジョージです。私はservers.comで働いています。私はAnsibleについてあなたに話すようになりました:良いAnsibleと悪いAnsible一般について、つまり人々がAnsibleで悪いことをする方法について。
まず、質問したいのですが。これが何であるか誰が知っていますか?

聴衆は答えます:「これは痛みについてです」
私は3つの手を見ました。部屋にAnsibleで働いている人が3人いるとは思わない。どうやら最もまともな絵ではありません。

. . .
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 , .
テラフォームがアンシブルで行うことはできないため、アンシブルとテラフォームはどこでも競合他社ではありません。その逆も同様です。通常、Terraformを使用してサーバーを内部で構成することはできません。
Terraformは、実際にはサービスを注文するための宣言的な方法です。彼らはそれをプロビジョニングと呼んでいますが、実際には、これらのサービスを自分自身に提供するか、サードパーティプロバイダーによって提供されます。Terraformは、豊富なマシンインターフェイスを介してサードパーティプロバイダーにサービスを注文するための標準化された方法です。それらは互いに非常に接近していますが、大まかに言えば、Ansibleが登場する前にTerraformは機能します。