Hallo! Ich heiße Alexey Sokolov. Ich vertrete die Firma mail.ru. Und heute werden wir über Ansible sprechen.
Zunächst eine kleine Umfrage. Wer hat jemals mit Ansible gearbeitet? Wunderbar, fast alles. Und das ist eine sehr aufschlussreiche Sache. Ansible ist normalerweise das Tool, das Benutzer verwenden, wenn sie zum ersten Mal zur DevOps-Story kommen.
Wer hat Ansible zugunsten anderer Tools verlassen? Zum Beispiel Salz, Koch? Warum?
. , 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 .
Unter unseren Bedingungen gibt es kein solches Volumen. Ansible deckt nicht die gesamte Infrastruktur ab. Punktweise verwendet. Und wenn Sie wirklich eine Hochleistungslösung benötigen, die für eine große Anzahl von Servern entwickelt wurde, dann - ja, wahrscheinlich lohnt es sich, sich von Ansible zu entfernen, um andere zentralisierte Lösungen zu finden, die all dies viel zuverlässiger handhaben können. Bei Ansible geht es nicht darum, mehrere Hunderttausende von Servern zu verwalten.
PS Zusätzlich zu diesem Bericht hat der Autor einen Workshop auf GitHub veröffentlicht , der nützlich sein kann.