如果没有指定,ansible-playbook会强制限制任务的执行(可以使用-l / –limit选项)并终止执行
简而言之
-
- ansible-playbook で –limit または -l を強制させたい
ansible-playbookでlimitオプションを強制する(無指定の場合失敗させる)のように ungrouped を使うのは、ダイナミックインベントリ使用時や管理外の(でも対象になってしまう)インスタンスがある場合に不便
余計な制限を playbook 以外にかけたくない(playbookだけで完結したい)
玩
- name: limit
hosts: all
gather_facts: no
pre_tasks:
- name: force use limit
fail:
msg: "use -l or --limit option when run."
when: ansible_limit is not defined
run_once: True
tasks:
- name: ansible_limit
debug:
msg: "{{ ansible_limit }}"
没关系,小事情不要紧。
$ ansible-playbook playbooks/limit.yml
PLAY [limit] ************************************************************************************************************
TASK [force use limit] ************************************************************************************************************
fatal: [xxxxxxxxxx]: FAILED! => {"changed": false, "msg": "use -l or --limit option when run."}
NO MORE HOSTS LEFT ************************************************************************************************************
PLAY RECAP ************************************************************************************************************
xxxxxxxxxx : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
$ ansible-playbook playbooks/limit.yml -l localhost
PLAY [limit] *********************************************************************************************************
TASK [force use limit] *********************************************************************************************************
skipping: [localhost]
TASK [ansible_limit] *********************************************************************************************************
ok: [localhost] => {
"msg": "localhost"
}
PLAY RECAP *********************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
冗长不必要的细节
-
- pre_tasks にすることで早い段階で処理(もちろんどこにでも書けるのでいくつか処理してから止めるのもできる)
-
- -l に何も値を与えないと ansible がエラーにしてくれる
-
- -l に値を与えてターゲットホストがなくなっても ansible がエラーにしてくれる
- ansible_limit は 2.5 くらいからの機能 see Special Variables