【Ansible Tower/AWX】with_sequenceのフォーマットの使い方


この記事はプロモーションを含みます。

Ansible

ホーム > Ansible Tower・AWX リファレンス

Ansibleで使用出来るループ処理に「with_sequence」というものがあります。そのオプションの1つ「フォーマット(format)」について解説します。

フォーマットを使用することで、ループ中で使用する値の形式を変更することが可能です。
では、様々なフォーマットの指定方法と実行結果を見ていきましょう。

フォーマットと実行結果の早見表

with_sequence のフォーマットの指定方法とその実行結果を一覧にしました。
実際のプレイブックと実行結果については次項以降をご覧ください。

フォーマット実行結果説明
%d1,10,100値を10進数で取得
%2d 1,10,100値を10進数で取得し、1桁の場合は、2桁に半角スペースで桁揃えして取得
%3d 1, 10,100値を10進数で取得し、1~2桁の場合は、3桁に半角スペースで桁揃えして取得
%02d01,10,100値を10進数で取得し、1桁の場合は、2桁にゼロパディングして取得
%03d01,010,100値を10進数で取得し、1~2桁の場合は、3桁ゼロパディングして取得
%02x1,a,64値を16進数で取得し、1桁の場合は、2桁にゼロパディングして取得

10進数で取得

with_sequenceの結果を10進数で取得します。

プレイブック

2から開始し、20で終了、4ずつ増加するプレイブックです。

---
- hosts: all
  gather_facts: False
  tasks:

  - name: ループ処理【with_sequence】
    debug:
      msg: "{{ item }}"
    with_sequence: start=2 end=20 stride=4 format=%d

実行結果

サンプルの実行結果です。

SSH password: 
BECOME password[defaults to SSH password]: 

PLAY [all] *********************************************************************

TASK [ループ処理【with_sequence】] ****************************************************
ok: [192.168.56.105] => (item=2) => {
    "msg": "2"
}
ok: [192.168.56.105] => (item=6) => {
    "msg": "6"
}
ok: [192.168.56.105] => (item=10) => {
    "msg": "10"
}
ok: [192.168.56.105] => (item=14) => {
    "msg": "14"
}
ok: [192.168.56.105] => (item=18) => {
    "msg": "18"
}

PLAY RECAP *********************************************************************
192.168.56.105             : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

10進数、1桁の場合は2桁に桁揃えして取得

with_sequenceの結果を10進数で取得します。
また、結果が1桁の場合は、2桁に半角スペースで桁揃えして取得します。

プレイブック

2から開始し、20で終了、4ずつ増加するプレイブックです。

---
- hosts: all
  gather_facts: False
  tasks:

  - name: ループ処理【with_sequence】
    debug:
      msg: "{{ item }}"
    with_sequence: start=2 end=20 stride=4 format=%2d

実行結果

サンプルの実行結果です。

SSH password: 
BECOME password[defaults to SSH password]: 

PLAY [all] *********************************************************************

TASK [ループ処理【with_sequence】] ****************************************************
ok: [192.168.56.105] => (item= 2) => {
    "msg": " 2"
}
ok: [192.168.56.105] => (item= 6) => {
    "msg": " 6"
}
ok: [192.168.56.105] => (item=10) => {
    "msg": "10"
}
ok: [192.168.56.105] => (item=14) => {
    "msg": "14"
}
ok: [192.168.56.105] => (item=18) => {
    "msg": "18"
}

PLAY RECAP *********************************************************************
192.168.56.105             : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

10進数、2桁以下の場合は3桁に桁揃えして取得

with_sequenceの結果を10進数で取得します。
また、結果が2桁以下の場合は、3桁に半角スペースで桁揃えして取得します。

プレイブック

1から開始し、200で終了、66ずつ増加するプレイブックです。

---
- hosts: all
  gather_facts: False
  tasks:

  - name: ループ処理【with_sequence】
    debug:
      msg: "{{ item }}"
    with_sequence: start=1 end=200 stride=66 format=%3d

実行結果

サンプルの実行結果です。

このサンプルでは、1→67→133→199と66ずつ増加し、199に66を足すと、265となります。この場合、終了値の200を超えてしまうため、199で終了します。

SSH password: 
BECOME password[defaults to SSH password]: 

PLAY [all] *********************************************************************

TASK [ループ処理【with_sequence】] ****************************************************
ok: [192.168.56.105] => (item=  1) => {
    "msg": "  1"
}
ok: [192.168.56.105] => (item= 67) => {
    "msg": " 67"
}
ok: [192.168.56.105] => (item=133) => {
    "msg": "133"
}
ok: [192.168.56.105] => (item=199) => {
    "msg": "199"
}

PLAY RECAP *********************************************************************
192.168.56.105             : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

10進数、1桁の場合はゼロパディングして取得

with_sequenceの結果を10進数で取得します。
また、結果が1桁の場合は、ゼロパディングして取得します。

プレイブック

2から開始し、20で終了、4ずつ増加するプレイブックです。

---
- hosts: all
  gather_facts: False
  tasks:

  - name: ループ処理【with_sequence】
    debug:
      msg: "{{ item }}"
    with_sequence: start=2 end=20 stride=4 format=%02d

実行結果

サンプルの実行結果です。

SSH password: 
BECOME password[defaults to SSH password]: 

PLAY [all] *********************************************************************

TASK [ループ処理【with_sequence】] ****************************************************
ok: [192.168.56.105] => (item=02) => {
    "msg": "02"
}
ok: [192.168.56.105] => (item=06) => {
    "msg": "06"
}
ok: [192.168.56.105] => (item=10) => {
    "msg": "10"
}
ok: [192.168.56.105] => (item=14) => {
    "msg": "14"
}
ok: [192.168.56.105] => (item=18) => {
    "msg": "18"
}

PLAY RECAP *********************************************************************
192.168.56.105             : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

10進数、2桁以下の場合はゼロパディングして取得

with_sequenceの結果を10進数で取得します。
また、結果が2桁以下の場合は、3桁にゼロパディングして取得します。

プレイブック

1から開始し、200で終了、66ずつ増加するプレイブックです。

---
- hosts: all
  gather_facts: False
  tasks:

  - name: ループ処理【with_sequence】
    debug:
      msg: "{{ item }}"
    with_sequence: start=1 end=200 stride=66 format=%03d

実行結果

サンプルの実行結果です。

SSH password: 
BECOME password[defaults to SSH password]: 

PLAY [all] *********************************************************************

TASK [ループ処理【with_sequence】] ****************************************************
ok: [192.168.56.105] => (item=001) => {
    "msg": "001"
}
ok: [192.168.56.105] => (item=067) => {
    "msg": "067"
}
ok: [192.168.56.105] => (item=133) => {
    "msg": "133"
}
ok: [192.168.56.105] => (item=199) => {
    "msg": "199"
}

PLAY RECAP *********************************************************************
192.168.56.105             : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

16進数、1桁の場合はゼロパディングして取得

with_sequenceの結果を16進数で取得します。
また、結果が1桁の場合は、2桁にゼロパディングして取得します。

プレイブック

2から開始し、20で終了、4ずつ増加するプレイブックです。

---
- hosts: all
  gather_facts: False
  tasks:

  - name: ループ処理【with_sequence】
    debug:
      msg: "{{ item }}"
    with_sequence: start=2 end=20 stride=4 format=%02x

実行結果

サンプルの実行結果です。

SSH password: 
BECOME password[defaults to SSH password]: 

PLAY [all] *********************************************************************

TASK [ループ処理【with_sequence】] ****************************************************
ok: [192.168.56.105] => (item=02) => {
    "msg": "02"
}
ok: [192.168.56.105] => (item=06) => {
    "msg": "06"
}
ok: [192.168.56.105] => (item=0a) => {
    "msg": "0a"
}
ok: [192.168.56.105] => (item=0e) => {
    "msg": "0e"
}
ok: [192.168.56.105] => (item=12) => {
    "msg": "12"
}

PLAY RECAP *********************************************************************
192.168.56.105             : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

記事は以上です。他にもフォーマットがあれば随時追記していきたいと思います。

コメント

タイトルとURLをコピーしました