てくなべ (tekunabe)

ansible / network / automation

[Ansible] 「つまずき Ansible 【Part12】実行順序などの制御」ふりかえり

はじめに

2020/08/08 に、YouTube Live で「つまずき Ansible 【Part12】実行順序などの制御」という配信をしました。 実際に作業しながらエラーと戦って進めるシリーズです。

tekunabe.connpass.com

今回は、forksや、order など、実行の方式や順序などに関わる機能を試しました。

やったことや、わかったことをふりかえります。

動画

www.youtube.com

今回のテーマの特性上、このブログの文章をり動画を見ていただいたほうが分かりやすいと思います・・。


■ やったこと

forks によ同時実行数の制御

設定名は DEFAULT_FORKS

デフォルトは 5。

ansible-playook コマンドでは -f または --fork オプションで指定可能。

配信時は試してませんが、ansible.cfg の場合は以下の設定。

[defaults]
forks=5

throttle によるによ同時実行数の制限

Play や Task 単位で指定できる。たとえば、Play 全体では forks5 だが、特定のタスクだけ throttle: 1 を指定すると、そのタスクだけ 1ホストずつ実行できる。

    - name: 2. sleep
      command: "sleep {{ wait }}"
      throttle: 1

order による実行ホスト順序の制御

各ホストの実行順序を制御できる。完了順(ログ表示順)ではないので注意。(fork 数を 1にすると、1ホストずつ実行するので、開始順=完了順になる)

デフォルトは inventory で、インベントリの定義順。

stragety による実行戦略の制御

デフォルトは lenerで、1タスクごとに各ホストの完了を待って次のタスクに進む。

他には、free がある。

serial による Play あたりの実行ホスト数の制御

1つの Play を何ホストずつ実行するかの指定。

---
- hosts: sv
  gather_facts: false
  serial: 1

  tasks:
    - name: 1. sleep
      command: "sleep {{ wait }}"
      
    - name: 2. sleep
      command: "sleep {{ wait }}"

    - name: 3. sleep
      command: "sleep {{ wait }}"
  • 実行ログ
(a29) [root@2a5505f15a98 stumble]# ansible-playbook -i sv.ini server.yml 

PLAY [sv] *********************************************************************************************************

TASK [1. sleep] ***************************************************************************************************
changed: [sv1]

TASK [2. sleep] ***************************************************************************************************
changed: [sv1]

TASK [3. sleep] ***************************************************************************************************
changed: [sv1]

PLAY [sv] *********************************************************************************************************

TASK [1. sleep] ***************************************************************************************************
changed: [sv2]

TASK [2. sleep] ***************************************************************************************************
changed: [sv2]

TASK [3. sleep] ***************************************************************************************************
changed: [sv2]

PLAY [sv] *********************************************************************************************************

TASK [1. sleep] ***************************************************************************************************
changed: [sv3]

TASK [2. sleep] ***************************************************************************************************
changed: [sv3]

TASK [3. sleep] ***************************************************************************************************
changed: [sv3]

PLAY [sv] *********************************************************************************************************

TASK [1. sleep] ***************************************************************************************************
changed: [sv4]

TASK [2. sleep] ***************************************************************************************************
changed: [sv4]

TASK [3. sleep] ***************************************************************************************************
changed: [sv4]

PLAY RECAP ********************************************************************************************************
sv1                        : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
sv2                        : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
sv3                        : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
sv4                        : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

strategy: linearstrategy: freeserial: 1 の動きまとめ

まとめてくださいました。


Part13 にむけて

以下のネタを検討中です。気が向いたものをやります。

  • connection: local ななにか
  • Ansible Toewr / AWX をコマンドがら操作する
  • ansible.cfg
  • Jinja2、フィルター
  • Windows