ホーム > Ansible Tower・AWX リファレンス
Ansibleで使用出来るループ処理に「with_sequence」というものがあります。そのオプションの1つ「フォーマット(format)」について解説します。
フォーマットを使用することで、ループ中で使用する値の形式を変更することが可能です。
では、様々なフォーマットの指定方法と実行結果を見ていきましょう。
フォーマットと実行結果の早見表
with_sequence のフォーマットの指定方法とその実行結果を一覧にしました。
実際のプレイブックと実行結果については次項以降をご覧ください。
フォーマット | 実行結果 | 説明 |
---|---|---|
%d | 1,10,100 | 値を10進数で取得 |
%2d | 1,10,100 | 値を10進数で取得し、1桁の場合は、2桁に半角スペースで桁揃えして取得 |
%3d | 1, 10,100 | 値を10進数で取得し、1~2桁の場合は、3桁に半角スペースで桁揃えして取得 |
%02d | 01,10,100 | 値を10進数で取得し、1桁の場合は、2桁にゼロパディングして取得 |
%03d | 01,010,100 | 値を10進数で取得し、1~2桁の場合は、3桁ゼロパディングして取得 |
%02x | 1,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
実行結果
サンプルの実行結果です。
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
記事は以上です。他にもフォーマットがあれば随時追記していきたいと思います。
コメント