Ansible local_action на хосте без локального демона s sh - PullRequest
0 голосов
/ 18 апреля 2020

Как запустить локальную команду на управляющем сервере Ansible, если на этом управляющем сервере не запущен демон S SH?

Если я запускаю следующую книгу воспроизведения:

- name: Test commands
  hosts: localhost
  connection: local
  gather_facts: false
  tasks:
    - name: Test local action
      local_action: command echo "hello world"

Я получаю следующую ошибку:

fatal: [localhost]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host localhost port 22: Connection refused", "unreachable": true}

Кажется, что local_action совпадает с delegate_to: 127.0.0.1, поэтому Ansible пытается s sh к местному хозяину. Однако на хосте локального контроллера не работает демон S SH (только на удаленных машинах).

Поэтому мой непосредственный вопрос - как запустить указанную команду c из Ansible, без Ansible сначала пытается S SH к localhost.


Важное дополнение, не в первоначальном вопросе:

Мои host_vars содержали следующую строку:

ansible_connection: ssh

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

как запустить указанную c команду из Ansible, без Ansible, сначала пытаясь S SH к localhost.

connection: local достаточно, чтобы сделать задачи выполняются в контроллере без использования S SH.

Попробуйте,

- name: Test commands
  hosts: localhost
  connection: local
  gather_facts: false
  tasks:
    - name: Test local action
      command: echo "hello world"
0 голосов
/ 21 апреля 2020

Я сам отвечу на детали, возможно, это кому-нибудь пригодится:

В моем случае:

  1. ansible_connection было установлено на ssh в host_vars.
  2. ansible_host был установлен на localhost с помощью local_action.

Это объединенное значение для ssh до localhost, которое не удалось.

Дополнительные соображения:

  • delegate_to, local_action set ansible_host и ansible_connection, но любые настройки в host_vars, playbook или task отменяют это.
  • connection: local только устанавливает ansible_connection (ansible_host не изменено), но любой параметр ansible_connection в host_vars, playbook или задаче переопределяет его.

Поэтому я решил либо удалить ansible_connection в host_vars или установка переменной ansible_connection в задаче.

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