Назад | Перейти на главную страницу

Ansible настройка идемпотентного playbook с нестандартным портом ssh

Я настроил свои серверы с нестандартным портом ssh. Я хотел бы найти способ создать независимую мастер-книгу, но, похоже, у меня проблемы с UNREACHABLE ошибка при сборе фактов.

Я пытался использовать этот пост в качестве руководства: https://dmsimard.com/2016/03/15/changing-the-ssh-port-with-ansible/

Однако я даже не могу перейти к этому первому шагу, если мой порт настроен иначе.

Моя основная игра выглядит так:

# master playbook
---
- name: Install all the packages for a server
  hosts: test-collection-01
  vars_files:
    - vars/test_collection.yml
  remote_user: foo_user
  roles:
    - debugger

Далее, руководство по отладке содержит в значительной степени то, что содержится в вышеупомянутом сообщении в блоге.

---
- name: DEBUG FACTS
  debug:
    msg: 'ansible port: {{ ansible_port }}\,Configured Hostname: {{ inventory_hostname }}'


- name: Try initial ssh port
  set_fact:
    ansible_port: 22

...

Однако, если на моем сервере уже был ssh порт изменился на что-то другое, playbook даже не запускается, и он не работает на этапе «Сбор фактов».

TASK [Gathering Facts] 
***
fatal: [198.199.x.x]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host 198.199.x.x port 22: Connection refused\r\n", "unreachable": true}

Есть ли способ запустить код проверки порта во время сбора фактов или раньше?

Перед любой из ваших задач Ansible по умолчанию неявно запускает setup задача (сбор фактов), которая использует параметры соединения по умолчанию, и именно здесь ваша игра не удалась.

Добавить gather_facts: false к вашей игре, чтобы избежать этого:

---
- name: Install all the packages for a server
  hosts: test-collection-01
  gather_facts: false
  vars_files:
    - vars/test_collection.yml
  remote_user: foo_user
  roles:
    - debugger

Затем, если вам нужны факты, явно добавьте setup задача после того, как вы установили правильный порт.