Piores práticas para Ansible. Georgy shuklin







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.








All Articles