
Saudações a todos! Meu nome é George. Eu trabalho para a servers.com. Vim falar sobre o Ansible: sobre o bom Ansible e principalmente sobre o mau Ansible, isto é, sobre como as pessoas podem se sair mal no Ansible.
Primeiro, quero fazer uma pergunta. Quem sabe do que se trata?

O público responde: "Isso é sobre dor"
Eu vi três mãos. Não acredito que haja três pessoas na sala trabalhando com Ansible. Aparentemente, não é a imagem mais decente.

. . .
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 , .
O Ansible e o Terraform não são concorrentes em lugar nenhum, porque você não pode fazer o que o Terraform faz com o Ansible e vice-versa. Você não pode configurar servidores normalmente internamente com Terraform.
Terraform é na verdade um método declarativo para solicitar serviços. Eles chamam isso de provisionamento, mas, na verdade, você fornece esses serviços a si mesmo ou fornece fornecedores terceirizados. Terraform é um método padronizado para solicitar serviços de fornecedores terceirizados por meio de uma interface rica em máquina. Eles são muito próximos um do outro, mas o Terraform funciona, falando grosso modo, antes de Ansible chegar.