Ansible es idempotente. Alexey Sokolov







¡Hola! Mi nombre es Alexey Sokolov. Represento a la empresa mail.ru. Y hoy hablaremos de Ansible.















Primero, una pequeña encuesta. ¿Quién ha trabajado con Ansible? Maravilloso, casi todo. Y esto es algo muy revelador. Ansible suele ser la herramienta que las personas comienzan a usar cuando conocen la historia de DevOps.







¿Quién dejó Ansible en favor de otras herramientas? Por ejemplo, Salt, Chef? ¿Por qué?







. , 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 .







En nuestras condiciones, no existe tal volumen. Ansible no cubre toda la infraestructura. Usado puntualmente. Y si realmente necesita algún tipo de solución de alto rendimiento diseñada para una gran cantidad de servidores, entonces sí, probablemente valga la pena dejar Ansible en favor de otras soluciones centralizadas que puedan manejar todo esto de manera mucho más confiable. Ansible no se trata de administrar varios cientos, miles de servidores.







PD: Además de este informe, el autor tiene un taller publicado en GitHub , que puede ser útil.








All Articles