Pires pratiques pour Ansible. Georgy Shuklin







Salutations à tous! Je m'apelle George. Je travaille pour servers.com. Je suis venu vous parler d'Ansible: du bon Ansible et du mauvais Ansible en général, c'est-à-dire de la façon dont les gens peuvent faire de mauvaises choses sur Ansible.









Tout d'abord, je veux poser une question. Qui sait de quoi il s'agit?













Le public répond: "C'est une question de douleur"







J'ai vu trois mains. Je ne crois pas qu'il y ait trois personnes dans la salle qui travaillent avec Ansible. Apparemment pas l'image la plus décente.













. . .







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 et Terraform ne sont pas du tout des concurrents, car vous ne pouvez pas faire ce que Terraform fait avec Ansible et vice versa. Vous ne pouvez normalement pas configurer les serveurs en interne avec Terraform.







Terraform est en fait une méthode déclarative pour commander des services. Ils appellent cela l'approvisionnement, mais en fait, vous fournissez ces services à vous-même ou vous êtes fournis par des fournisseurs tiers. Terraform est une méthode standardisée pour commander des services auprès de fournisseurs tiers via une interface riche en machines. Ils sont très proches les uns des autres, mais Terraform fonctionne, en gros, avant l'arrivée d'Ansible.








All Articles