Ansible Playbook работает локально, но не может использовать ssh для размещения через AWX

РЕЗЮМЕ

У меня есть доступный и доступный AWX, установленный на том же экземпляре AWS EC2, и я пытаюсь развернуть сборку на другом экземпляре приложения AWS EC2. Я могу запустить playbook с помощью команды ansible-playbook, однако получаю Failed to connect to the host via ssh при использовании AWX

  • В инвентаре AWX только этот хост добавлен вместе с ansible_user: xxxxx, который является пользователем, которого я хочу развернуть с
  • хостом Ansible / AWX, имеет настройку пользователя xxxxx с меньшим паролем доступа к целевому хосту, у которого также есть тот же пользователь (открытые ключи скопированы)
  • Я также пытался создать этого пользователя в контейнерах aws_task и aws_web и скопировал открытые ключи на целевой хост
  • Выполнение команды ssh, выполняемой AWS при сбое сбора информации

    ssh -vvv -C -o ControlMaster = auto -o ControlPersist = 60s -o StrictHostKeyChecking = no - o KbdInteractiveAuthentication = no -o PreferredAuthentication = gssapi-with-mic, gssapi-keyex, hostbased, publickey -o PasswordAuthentication = no -o User = xxxxx -o ConnectTimeout = 10 -o ControlPath = / tmp / awx_108_dKOwxm35 'hostname / cpd9 / 6 / bin / sh -c '"'" 'echo ~ xxxxx && sleep 0' "'"' '

Вывод:

debug3: muxserver_listen: temporary control path /tmp/awx_72_VGFOPt/cp/61735cd9d3.16cjnTwr0hSE1mXc
bind: No such file or directory
unix_listener: cannot bind to path: /tmp/awx_72_VGFOPt/cp/61735cd9d3.16cjnTwr0hSE1mXc
  • Выполнение команды после сохранения некоторых параметров конфигурации - ControlPersist, ControlMaster, ssh работает -

    ssh -vvv -C -o StrictHostKeyChecking = no -o 'IdentityFile = "/ home / xxxxx / .ssh / id_rsa"' - o KbdInteractiveAuthentication = no -o PreferredAuthentication = gssapi-with-mic, gssapi-keyex, hostbased, publickey -o PasswordAuthentication = no -o User = xxxxx -o ConnectTimeout = 10 имя хоста

Вопросы

  1. Это проблема с разрешением, пока создание ControlPath? Контейнеры aws_web и aws_task имеют папку / tmp с разрешением 777
  2. Какую конфигурацию (ansible.cfg) выбирает AWX - из контейнеров aws_task / aws_web или с хоста, на котором она развернута. Я также попытался установить ssh_args = -C (удаление ControlMaster и ControlPersist) во всех трех местах в ansible.cfg и перезапустил контейнеры AWS, но безуспешно
  3. Почему он не работает с Control Params

Дополнительно Информация

Версия Ansible

ansible 2.7.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /bin/ansible
  python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

Конфигурация

ANSIBLE_SSH_ARGS(/etc/ansible/ansible.cfg) = -C

ОС / СРЕДА

ОС хоста Ansible и AWX -> CentOS Linux, выпуск 7.5.1804 (Core)

Целевая ОС -> CentOS Linux, выпуск 7.5.1804 ( Core)

Версия AWX: 2.1.0

AWX установлен через -> https://github.com/ansible/awx/blob/devel/INSTALL.md#docker-or-docker-compose

ШАГИ ДЛЯ ВОСПРОИЗВЕДЕНИЯ

1) Создан проект в AWX с типом SCM git.

2) Создан инвентарь в AWX, добавлен хост с переменной ansible_user: xxxxx

3) Создан шаблон задания с указанием типа задания и выбором проект и инвентарь, созданные на этапах 1 и 2. Предусмотрена дополнительная сборка переменных: в шаблоне, как требуется в playbook

PlayBook

https://github.com/sandeepdharembra/play books / blob / master / installnodejs.yml

ФАКТИЧЕСКИЕ РЕЗУЛЬТАТЫ при запуске шаблона задания

ansible-playbook 2.7.1
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/var/lib/awx/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
Using /etc/ansible/ansible.cfg as config file
setting up inventory plugins
Parsed /tmp/awx_108_dKOwxm/tmpo_yCMg inventory source with script plugin
Loading callback plugin awx_display of type stdout, v2.0 from /usr/lib/python2.7/site-packages/awx/lib/awx_display_callback/module.pyc
1 plays in installnodejs.yml
PLAY [all] *********************************************************************
META: ran handlers
TASK [Created new build directory] *********************************************
task path: /var/lib/awx/projects/_6__festaging/installnodejs.yml:10
<hostname> ESTABLISH SSH CONNECTION FOR USER: xxxxx
<hostname> SSH: EXEC ssh -vvv -C -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=xxxxx -o ConnectTimeout=10 -o ControlPath=/tmp/awx_108_dKOwxm/cp/61735cd9d3 hostname '/bin/sh -c '"'"'echo ~xxxxx && sleep 0'"'"''
<hostname> (255, '', 'OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 58: Applying options for *\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: Control socket "/tmp/awx_108_dKOwxm/cp/61735cd9d3" does not exist\r\ndebug2: resolving "hostname" port 22\r\ndebug2: ssh_connect_direct: needpriv 0\r\ndebug1: Connecting to hostname [hostname] port 22.\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug1: fd 3 clearing O_NONBLOCK\r\ndebug1: Connection established.\r\ndebug3: timeout: 9997 ms remain after connect\r\ndebug1: permanently_set_uid: 0/0\r\ndebug1: key_load_public: No such file or directory\r\ndebug1: identity file /root/.ssh/id_rsa type -1\r\ndebug1: key_load_public: No such file or directory\r\ndebug1: identity file /root/.ssh/id_rsa-cert type -1\r\ndebug1: key_load_public: No such file or directory\r\ndebug1: identity file /root/.ssh/id_dsa type -1\r\ndeb…
fatal: [hostname]: UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 58: Applying options for *\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: Control socket \"/tmp/awx_108_dKOwxm/cp/61735cd9d3\" does not exist\r\ndebug2: resolving \"hostname\" port 22\r\ndebug2: ssh_connect_direct: needpriv 0\r\ndebug1: Connecting to hostname [172.16.5.91] port 22.\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug1: fd 3 clearing O_NONBLOCK\r\ndebug1: Connection established.\r\ndebug3: timeout: 9997 ms remain after connect\r\ndebug1: permanently_set_uid: 0/0\r\ndebug1: key_load_public: No such file or directory\r\ndebug1: identity file /root/.ssh/id_rsa type -1\r\ndebug1: key_load_public: No such file or directory\r\ndebug1: identity file /root/.ssh/id_rsa-cert ty…
PLAY RECAP *********************************************************************
hostname   : ok=0    changed=0    unreachable=1    failed=0  
2
задан 29 November 2018 в 08:13
2 ответа

Наконец-то я смог найти решение этой проблемы -

В созданном мной шаблоне задания не были назначены учетные данные. Я создал учетные данные, с которыми я хотел получить доступ к целевому хосту (пользователь, присутствующий на целевом хосте), назначил закрытый ключ и добавил эти учетные данные в шаблон задания. Теперь задание могло быть запущено (ssh на удаленном хосте)

0
ответ дан 3 December 2019 в 13:51

я столкнулся с подобной проблемой. Оказалось, что это настройка в плейбуке asible.cfg:

[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes

-o IdentitiesOnly=yes оказалась причиной. Надеюсь, это поможет кому-нибудь другому...

0
ответ дан 3 December 2019 в 13:51

Теги

Похожие вопросы