Я настроил свои серверы с нестандартным портом 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
задача после того, как вы установили правильный порт.