targets セクションの hosts:
- play を実行する対象ホストを絞り込む
- 対象ホストは inventory ファイルに定義されていること
ansible-playbook コマンドの -l / --limit オプション
- targets セクションの hosts: で絞り込まれた対象ホストをさらに絞り込む
- 引数は host-pattern で指定する
-l / --limit オプションの host-pattern
host-pattern | 対象ホスト |
---|---|
all | target セクションの hosts: で絞りこまれたすべての対象ホスト(-l / --limit オプションを省略したときは all が指定されたと解釈される) |
グループ名 | target セクションの hosts: で絞りこまれた中の指定されたグループに含まれるすべての対象ホスト |
ホスト名 | target セクションの hosts: で絞り込まれた中の指定された対象ホスト |
組み合わせと実行対象になるホスト
hosts: | -l / --limit オプション | 実行対象になるホスト |
---|---|---|
all | all | inventory ファイル内のすべてのホスト |
all | グループ名 | オプションで指定したグループ内のすべてのホスト |
all | ホスト名 | オプションで指定したホスト |
グループ名 | all | hosts: で指定したグループ内のすべてのホスト |
グループ名 | hosts: と同じグループ名 | hosts: / オプションで指定したグループ内のすべてのホスト |
グループ名 | hosts: と異なるグループ名 | 実行対象ホストなし |
グループ名 | hosts: で指定したグループ内のホスト名 | オプションで指定したホスト |
グループ名 | hosts: で指定したグループと異なるグループのホスト名 | 実行対象ホストなし |
ホスト名 | all | hosts: で指定したホスト |
ホスト名 | hosts: で指定したホストを含むグループ名 | hosts: で指定したホスト |
ホスト名 | hosts: で指定したホストを含まないグループ名 | 実行対象ホストなし |
ホスト名 | hosts: と同じホスト名 | hosts: / オプションで指定したホスト |
ホスト名 | hosts: と異なるホスト名 | 実行対象なし |
例
■ inventory ファイル : hosts.ymlcentos: hosts: node-c0610: node-c0706: others: hosts: node-d0908: node-u1810:
■ hosts: all
--- - hosts: all tasks: - name: 対象ホスト名の表示 debug: msg: "{{ inventory_hostname }}"・ -l all
[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l all site.yml
PLAY [all] ****************************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [node-d0908]
ok: [node-u1810]
ok: [node-c0706]
ok: [node-c0610]
TASK [対象ホスト名の表示] **********************************************************************************
ok: [node-c0610] => {
"msg": "node-c0610"
}
ok: [node-c0706] => {
"msg": "node-c0706"
}
ok: [node-u1810] => {
"msg": "node-u1810"
}
ok: [node-d0908] => {
"msg": "node-d0908"
}
PLAY RECAP ****************************************************************************************
node-c0610 : ok=2 changed=0 unreachable=0 failed=0
node-c0706 : ok=2 changed=0 unreachable=0 failed=0
node-d0908 : ok=2 changed=0 unreachable=0 failed=0
node-u1810 : ok=2 changed=0 unreachable=0 failed=0
[ansibleman@ansiblesv ansible]$
・ -l グループ名
[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l others site.yml
PLAY [all] ****************************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [node-d0908]
ok: [node-u1810]
TASK [対象ホスト名の表示] **********************************************************************************
ok: [node-u1810] => {
"msg": "node-u1810"
}
ok: [node-d0908] => {
"msg": "node-d0908"
}
PLAY RECAP ****************************************************************************************
node-d0908 : ok=2 changed=0 unreachable=0 failed=0
node-u1810 : ok=2 changed=0 unreachable=0 failed=0
[ansibleman@ansiblesv ansible]$
・ -l ホスト名[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l node-u1810 site.yml
PLAY [all] ****************************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [node-u1810]
TASK [対象ホスト名の表示] **********************************************************************************
ok: [node-u1810] => {
"msg": "node-u1810"
}
PLAY RECAP ****************************************************************************************
node-u1810 : ok=2 changed=0 unreachable=0 failed=0
[ansibleman@ansiblesv ansible]$
■ hosts: グループ名
--- - hosts: others tasks: - name: 対象ホスト名の表示 debug: msg: "{{ inventory_hostname }}"・ -l all
[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l all site.yml
PLAY [others] *************************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [node-d0908]
ok: [node-u1810]
TASK [対象ホスト名の表示] **********************************************************************************
vok: [node-u1810] => {
"msg": "node-u1810"
}
ok: [node-d0908] => {
"msg": "node-d0908"
}
PLAY RECAP ****************************************************************************************
node-d0908 : ok=2 changed=0 unreachable=0 failed=0
node-u1810 : ok=2 changed=0 unreachable=0 failed=0
[ansibleman@ansiblesv ansible]$
・ -l hosts: と同じグループ名[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l others site.yml
PLAY [others] *************************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [node-d0908]
ok: [node-u1810]
TASK [対象ホスト名の表示] **********************************************************************************
ok: [node-u1810] => {
"msg": "node-u1810"
}
ok: [node-d0908] => {
"msg": "node-d0908"
}
PLAY RECAP ****************************************************************************************
node-d0908 : ok=2 changed=0 unreachable=0 failed=0
node-u1810 : ok=2 changed=0 unreachable=0 failed=0
[ansibleman@ansiblesv ansible]$
・ -l hosts: と異なるグループ名[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l centos site.yml
PLAY [others] *************************************************************************************
skipping: no hosts matched
PLAY RECAP ****************************************************************************************
[ansibleman@ansiblesv ansible]$
・ -l hosts: で指定したグループ内のホスト名[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l node-u1810 site.yml
PLAY [others] *************************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [node-u1810]
TASK [対象ホスト名の表示] **********************************************************************************
ok: [node-u1810] => {
"msg": "node-u1810"
}
PLAY RECAP ****************************************************************************************
node-u1810 : ok=2 changed=0 unreachable=0 failed=0
[ansibleman@ansiblesv ansible]$
・ -l hosts: で指定したグループと異なるグループのホスト名[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l node-c0706 site.yml
PLAY [others] *************************************************************************************
skipping: no hosts matched
PLAY RECAP ****************************************************************************************
[ansibleman@ansiblesv ansible]$
■ hosts: ホスト名
--- - hosts: node-u1810 tasks: - name: 対象ホスト名の表示 debug: msg: "{{ inventory_hostname }}"・ -l all
[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l all site.yml
PLAY [node-u1810] *********************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [node-u1810]
TASK [対象ホスト名の表示] **********************************************************************************
ok: [node-u1810] => {
"msg": "node-u1810"
}
PLAY RECAP ****************************************************************************************
node-u1810 : ok=2 changed=0 unreachable=0 failed=0
[ansibleman@ansiblesv ansible]$
・ hosts: 指定したホストを含むグループ名[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l others site.yml
PLAY [node-u1810] *********************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [node-u1810]
TASK [対象ホスト名の表示] **********************************************************************************
ok: [node-u1810] => {
"msg": "node-u1810"
}
PLAY RECAP ****************************************************************************************
node-u1810 : ok=2 changed=0 unreachable=0 failed=0
[ansibleman@ansiblesv ansible]$
・ hosts: 指定したホストを含まないグループ名[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l centos site.yml
PLAY [node-u1810] *********************************************************************************
skipping: no hosts matched
PLAY RECAP ****************************************************************************************
[ansibleman@ansiblesv ansible]$
・ -l hosts: と同じホスト名[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l node-u1810 site.yml
PLAY [node-u1810] *********************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [node-u1810]
TASK [対象ホスト名の表示] **********************************************************************************
ok: [node-u1810] => {
"msg": "node-u1810"
}
PLAY RECAP ****************************************************************************************
node-u1810 : ok=2 changed=0 unreachable=0 failed=0
[ansibleman@ansiblesv ansible]$
・ -l hosts: と異なるホスト名[ansibleman@ansiblesv ansible]$ ansible-playbook -i hosts.yml -l node-c0706 site.yml
PLAY [node-u1810] *********************************************************************************
skipping: no hosts matched
PLAY RECAP ****************************************************************************************
[ansibleman@ansiblesv ansible]$
まとめ
- -l / --limit オプションを targets セクションの hosts: と同じように使用する場合、hosts: all にする( hosts: による対象ホストの絞り込みをしない)
- 対象ホストの絞り込みは targets セクションの hosts: か -l / --limit オプションのどちらかの一方に統一する(両方使用すると煩雑、対象ホストがゼロ件になる組み合わせがある)
- targets セクションの hosts: と -l / --limit オプションを併用する場合、playbook の実行前に --list-hosts オプションで実行対象になるホストを確認する