
こんにちは!私の名前はアレクセイソコロフです。私はmail.ruという会社を代表しています。そして今日はAnsibleについてお話します。

まず、小さな調査。誰がAnsibleで働いたことがありますか?素晴らしい、ほとんどすべて。そして、これは非常に明白なことです。Ansibleは通常、人々が最初にDevOpsの話に来たときに使い始めるツールです。
他のツールを支持してAnsibleを離れたのは誰ですか?たとえば、ソルト、シェフ?どうして?
. , 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 .
私たちの条件では、そのようなボリュームはありません。Ansibleはインフラストラクチャ全体をカバーしていません。ポイントごとに使用されます。そして、多数のサーバー用に設計されたある種の高性能ソリューションが本当に必要な場合は、そうです。おそらく、Ansibleから離れて、これらすべてをはるかに確実に処理できる他の集中型ソリューションを採用する価値があります。Ansibleは、数十、数千のサーバーを管理することではありません。
PSこのレポートに加えて、著者はGitHubに投稿されたワークショップを持っています。これは役に立つかもしれません。