Kami menggunakan sederhana tugas gagal untuk memaksa pengguna menentukan opsi Batas yang memungkinkan , sehingga kami tidak mengeksekusi pada semua host secara default / tidak sengaja.
Cara termudah yang saya temukan adalah ini:
---
- name: Force limit
# 'all' is okay here, because the fail task will force the user to specify a limit on the command line, using -l or --limit
hosts: 'all'
tasks:
- name: checking limit arg
fail:
msg: "you must use -l or --limit - when you really want to use all hosts, use -l 'all'"
when: ansible_limit is not defined
run_once: true
Sekarang kita harus menggunakan -l
(= --limit
option) saat menjalankan playbook, mis
ansible-playbook playbook.yml -l www.example.com
Batasi dokumen opsi :
Batasi untuk satu atau lebih host. Ini diperlukan ketika seseorang ingin menjalankan playbook melawan grup host, tetapi hanya melawan satu atau lebih anggota grup itu.
Batasi untuk satu host
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit "host1"
Batasi untuk beberapa host
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit "host1,host2"
Batas dinegasikan.
CATATAN: Tanda kutip tunggal HARUS digunakan untuk mencegah interpolasi bash.
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit 'all:!host1'
Batasi untuk grup tuan rumah
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit 'group1'
hosts: "{{ variable_host | default('web')}}"