Ansible multiple hosts with port forwarding
(stackoverflow.com)
遇到這個問題是在用 Azure Cloud Service 遇到的。因為 Cloud Service 是透過 1 個 FQDN 去溝通的,它看起來會像是:
yourdomain.cloudapp.net
當你有多台 vm 在裡面的時候,就會把 ssh port 對應到不同的 port,例如:
vm1:22 => yourdomain.cloudapp.net:2021
vm2:22 => yourdomain.cloudapp.net:2022
vm3:22 => yourdomain.cloudapp.net:2023
vm4:22 => yourdomain.cloudapp.net:2024
那麼寫 ansible inventory 時就要寫成這樣子(原來的 host 就隨意取個代號就行了):
[service4azurecloud]
vm1 ansible_ssh_port=2021 ansible_ssh_host=yourdomain.cloudapp.net ...
vm2 ansible_ssh_port=2022 ansible_ssh_host=yourdomain.cloudapp.net ...
vm3 ansible_ssh_port=2023 ansible_ssh_host=yourdomain.cloudapp.net ...
vm4 ansible_ssh_port=2024 ansible_ssh_host=yourdomain.cloudapp.net ...
IngramChen
積分 0
咦?在 inventory 裡我一直都會替每個 host 做別名,而不是直接用 domain,即使是不用 azure。像是 kaif 就是:
kaif ansible_ssh_host=104.155.193.153
然後 ansible_ssh_host
我也是傾向直接寫 IP,不用 domain。
haocheng
積分 0
我是寫 domain 耶,想說這樣換機器只要在 route53 換 IP 就好,不用改 inventory...
IngramChen
積分 1
果然我的習慣跟大家不同...
嘛,寫 domain 的話,我覺得有兩個地方不便。
一是當機器掛掉時,你想馬上補一台,在這緊要當口,換 route53 緩不濟及,因為 dns 要一段時間才會生效 (再快也要幾分鐘) ,而且 dns 常常是在這切換的十幾分鐘內,一下指向舊的 IP ,一下指向新的 IP。這完全不能精準復機啊。
二是要移機時,移機的過渡期會有新舊共存的時段 (看服務性質) ,你會先 provision 一台新的,再慢慢引導流量過去。新舊主機共存,自然只能先用 IP provision,等全部好了才會切換 dns。