Страницы

Поиск по вопросам

воскресенье, 12 января 2020 г.

Перебирать порты для соединения по ssh в Ansible

#ansible


Есть, к примеру, хост:

[api]
10.0.0.1 ansible_connection=ssh ansible_ssh_user=root ansible_ssh_port=22


Здесь мы указываем 22 порт для ssh. Но на некоторых серверных стоит другой порт,
скажем 220.

Возможно как-то задать дополнительный порт для соединения по ssh на случай, если
не смог присоединиться по 22? Каким-нибудь списком, чтоб Ansible по очереди перебирал.
    


Ответы

Ответ 1



Частично воспользовался примером от Nick Volynkin. Вначале плейбука проверяем порты, выбираем тот, что доступен и устанавливаем в ansible_ssh_port, после чего Ansible будет уже подсоединяться к машине по этому порту. Единственный минус - использованием wait_for. То есть, в данном случае мы ждём 15 секунд (т.к. проверяем 3 порта), пока порты проверятся. - name: just test hosts: server gather_facts: false vars: list_of_ssh_ports: [22, 220, 234] tasks: - name: test ssh on port sudo: no local_action: wait_for port={{item}} timeout=5 host={{inventory_hostname}} register: ssh_checks with_items: "{{list_of_ssh_ports}}" ignore_errors: true - debug: msg = "{{item}}" with_items: "{{ssh_checks.results}}" - name: set available ansible_ssh_port sudo: no set_fact: ansible_ssh_port={{item.item}} when: ssh_checks is defined and {{item.elapsed}} < 5 with_items: "{{ssh_checks.results}}" - hosts: server roles: - остальные таски

Комментариев нет:

Отправить комментарий