আপনি স্বতন্ত্র বন্দরগুলির সাথে সংযোগ স্থাপন করতে পারেন এবং সফল হওয়া একটিতে নিবন্ধন করতে পারেন এবং এটি সত্য হিসাবে সেট করতে পারেন কিনা তা দেখতে আপনি হোস্টগুলিতে লোকাল_অ্যাকশন চেষ্টা করতে পারেন। আপনি সংগ্রহের তথ্যগুলি বন্ধ করতে চান কারণ অন্যথায় সেটআপ মডিউলটি ব্যর্থ হবে যখন এটি ইতিমধ্যে পুনরায় কনফিগার করা হোস্টগুলির সাথে সংযোগ স্থাপনের চেষ্টা করবে। একবার আপনি এই নাটকটিটি সম্পন্ন করার পরে কেবল নীচে অন্যদের যুক্ত করুন_ফ্যাক্টগুলি এবং বাকি সমস্তগুলি যুক্ত করুন।
- 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
আমার দিকে ইঙ্গিত করা হয়েছিল যে এটি প্লেবুকগুলির জন্য সময়টি ফুটিয়ে তুলবে যেখানে আপনি এটি ব্যবহার করেন। আপনি নাটকগুলির ভার্স বিভাগে উত্তরযোগ্য_এসএইচ_পোর্ট সেট করতে পারেন যা পুনরায় কনফিগার করা এসএস পোর্ট সহ হোস্টগুলিতে চালানো উচিত। যেমন
- 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:
...