Anda dapat mencoba local_action pada host untuk melihat apakah Anda dapat terhubung ke masing-masing port dan mendaftarkan yang berhasil dan mengaturnya sebagai fakta. Anda ingin mematikan pengumpulan fakta karena jika tidak, modul pengaturan akan gagal saat mencoba terhubung dengan host yang telah dikonfigurasi ulang. Setelah Anda selesai memainkan ini, tambahkan saja yang lain di bawah ini dengan collect_facts dan yang lainnya.
- name: determine ssh port
hosts: all
gather_facts: false
vars:
custom_ssh_port: 222
tasks:
- name: test default ssh port
local_action: wait_for port=22 timeout=5 host={{inventory_hostname}}
register: default_ssh
ignore_errors: true
- name: set ansible_ssh_port to default
set_fact: ansible_ssh_port=22
when: default_ssh.elapsed < 5
- name: test ssh on high port
local_action: wait_for port={{custom_ssh_port}} timeout=5 host={{inventory_hostname}}
register: high_ssh
when: default_ssh.elapsed >= 5
ignore_errors: true
- name: set ansible_ssh_port high
set_fact: ansible_ssh_port={{custom_ssh_port}}
when: default_ssh.elapsed >= 5 and high_ssh.elapsed < 5
Telah ditunjukkan kepada saya bahwa ini akan meledakkan waktu untuk buku pedoman tempat Anda menggunakan ini. Anda juga dapat mengatur ansible_ssh_port di bagian vars dari lakon yang seharusnya hanya dijalankan pada host dengan port ssh yang dikonfigurasi ulang. misalnya
- name: change ssh ports
tasks:
- name: edit sshd_config
lineinfile ..
notify: restart ssh
handlers:
- name: restart ssh
service: sshd state=restarted
- name: continue setup
vars:
- ansible_ssh_port : 5422
tasks:
...