Ansible est idempotent. Alexey Sokolov







salut! Je m'appelle Alexey Sokolov. Je représente la société mail.ru. Et aujourd'hui, nous parlerons d'Ansible.















Tout d'abord, une petite enquête. Qui a déjà travaillé avec Ansible? Merveilleux, presque tout. Et c'est une chose très révélatrice. Ansible est généralement l'outil que les gens commencent à utiliser lorsqu'ils arrivent pour la première fois à l'histoire DevOps.







Qui a quitté Ansible au profit d'autres outils? Par exemple, Salt, Chef? Pourquoi?







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













- , . : Chef, Puppet. ? , , . , Ansible – . , – .







Ansible , . . , , . . , .







, -, , . .













. .













Ansible. . , Ansible, , .







.







, , . - , , . , , .







, , Ansible, .













. , -, , . .













? . . , , .







. , . - , - - . , .













, . . . , .







– ?







  • – . , - , .
  • , . - , - . . , .
  • , , , .
  • , , - . , . , .








, , .







  • -, , . . , . , , , , , , .
  • -, . , . , : git blame + - .








?







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


, , :













, Ansible, : Ansible – Shell.







Ansible , shell-. Ansible – . Ansible – , , - .













Ansible , .







  • , SSH. SSH, - Ansible’ , .
  • Ansible . Python, , .
  • . . , shell’, . .








  • , , . . , , . , - , , .
  • . , . , , .








. , - , - , .







, - . , - , - . .







, - .













: shell. . . Ansible , shell- makefile, - , . . .













shell . ? .













.







  • shell. Ansible - .
  • , , , , - .
  • , .


, Ansible , .













, ? , , ? .













? , . .













Ansible : , , . . . Ansible .













: – , – .













? , Ansible ?







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








?







. , . .







. register, . . register, , . - : « ». , , .













:







  • , Ansible .
  • .
  • .








, - . diff, , , , . .







, . ? ? -?













, . , . , .







, . , .







- . - . . - - . . Ignore_errors – .







, - , . , , . , ?













, . . .







, , , , shell: Ansible . : « , ? rm, shell- Ansible? . !»













? , . ignore_errors .













:







  • -, - . , , . - , . . . 0 - , .
  • , (. race condition). - . . , . Ignore_errors – .
  • . , - . , . , .








, ?







register. , exit code . . , . Ansible failed_when. , , , .







, . , . - . : « , ». - , , , , .













. , 124- . : « 124, ». 124, , 124, - . 124 , Ansible , .







, , , . .







. . Ansible , - . «exit 124» - ? , . .



















  • changed_when, . . , , - . , , , : changed_when: false Ansible , , .







  • , . : creates removes. , , , , -, -.







    , , : - creates , Ansible , . , .







    removes. , , .







  • , , . , stdout, stderr . – .















? . . , changed_when: false. . Ansible . : «, ».













, - . , . , , - . .







, pause. , , .







. wait_for. : «, , ». Ansible . . - . tcp, , . . . , - .







, . . , - , . , .













? . , . , Ansible. Ansible , .













. : «Pause», - . , . , , , -.













. : « , . , ».













. , exit 0. . exit 0 , . , , , . , , .







.













, - . . . , - .







, . , . , .













. - . , . , . , , .







, , , .







: failed_when: true. , . : « ». , - . , , , « ».













. , , .













-, handler.







Handler – - , . .







- playbook, . - handlers, . . . , , , . - , handlers , .







, - . , handlers . , flush_hundlers , – when: changed. - , , .







, , .













. . , – . . . , , playbook, . port, port, port, , , .







  • . , . , .
  • – .








– «». , - . , . ? Ansible . , , .













. hash_behavior. Ansible, .







, . , - , - , . , . .













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







. , - .













, , , , .













, , , .







, . – - , - , , . – , .







changes 0, , - , . , - , - - .







, - , - .







Ansible , . . , , .













  • . , Ansible shell, Ansible .
  • , . , .
  • , - . , - . , - , - .
  • . .








: , , . , , , .













! .













. Ansible. ? , , ?







, . . - , , , , Kubernetes. .







! ! ? , . ?







. .







, , . branch. branch – galaxy- = - .







! . : « : - YAML, Ansible-lint ?».







YAML-lint – . , , .







, – - , - . , - - , . . , , – , , , .







. , .







! - hash_behavior merge, , ? , , ?







defaults, , . . , .







. , . , , , .







- hash_behavior, - . , hash_behavior – , , .







, . ?







, .







! Ansible-? ? root Ansible-? ?







, , SystemD, sudo, - root.







! , , include_task, import_task? , , , - ? common?*







common .







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







?







. .







?







. - .







, …







, . , . . ., , - , .







. ?







, , . .







?







.







! Ansible ? ? ?







Ansible-vault, .







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







Ansible . , , , .







. . Ansible, ? , ?







, .







! ! ? , Ansible, , 300-400-500 .







Dans nos conditions, un tel volume n'existe pas. Ansible ne couvre pas toute l'infrastructure. Utilisé ponctuellement. Et si vous avez vraiment besoin d'une sorte de solution haute performance conçue pour un grand nombre de serveurs, alors - oui, il vaut probablement la peine de s'éloigner d'Ansible au profit d'autres solutions centralisées qui peuvent gérer tout cela de manière beaucoup plus fiable. Ansible ne consiste pas à gérer plusieurs centaines, milliers de serveurs.







PS En plus de ce rapport, l'auteur a mis en ligne un atelier sur GitHub , ce qui peut s'avérer utile.








All Articles