Ansible с Concourse

Я пытаюсь запустить доступные playbooks в Concourse для удаленных хостов, но я не могу этого сделать. Ниже мои шаги: -

Файл Concourse Yaml: -

---
resource_types:
- name: ansible-playbook
  type: docker-image
  source:
    repository: troykinsella/concourse-ansible-playbook-resource
    tag: latest

resources:
- name: ansible
  type: ansible-playbook
  source:
    debug: true
    user: cloud_user
    ssh_private_key: ((ssh-key))
    verbose: vvv

- name: source-code
  type: git
  source:
    uri: ((git-repo))
    branch: master
    private_key: ((ssh-key))

jobs:
  - name: ansible-concourse
    plan:
    - get: source-code # git resource
    - put: ansible
      params:
        check: true
        diff: true
        become: true
        become_user: root
        inventory: inventory/hosts
        playbook: site.yml
        path: source-code

Хост-файл: -

[test]
localhost

Внутри контейнера: -

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

Пособие по Ansible: -

---
- name: "Running Current Working Directory"
  hosts: test
  gather_facts: no

  tasks:
     - name: "Current Working Directory"
       shell: pwd
       register: value

     - debug:
          msg: "The Current Working Directory {{value.stdout_lines}}"

Выходные данные поступают в зал: -

ansible-playbook       -i inventory/hosts --private-key /tmp/ansible-playbook-resource-ssh-private-key   --user cloud_user   -vvv site.yml
ansible-playbook 2.9.0
  config file = /tmp/build/put/source-code/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
  executable location = /usr/local/bin/ansible-playbook
  python version = 3.6.8 (default, Oct  7 2019, 12:59:55) [GCC 8.3.0]
Using /tmp/build/put/source-code/ansible.cfg as config file
host_list declined parsing /tmp/build/put/source-code/inventory/hosts as it did not pass its verify_file() method
script declined parsing /tmp/build/put/source-code/inventory/hosts as it did not pass its verify_file() method
auto declined parsing /tmp/build/put/source-code/inventory/hosts as it did not pass its verify_file() method
Parsed /tmp/build/put/source-code/inventory/hosts inventory source with ini plugin

PLAYBOOK: site.yml *************************************************************
1 plays in site.yml

PLAY [Running Current Working Directory] ***************************************
META: ran handlers

TASK [Current Working Directory] ***********************************************
task path: /tmp/build/put/source-code/site.yml:7
Monday 18 November 2019  12:38:49 +0000 (0:00:00.084)       0:00:00.085 ******* 
<localhost> ESTABLISH SSH CONNECTION FOR USER: cloud_user
<localhost> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'IdentityFile="/tmp/ansible-playbook-resource-ssh-private-key"' -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="cloud_user"' -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/dc52b3112c localhost '/bin/sh -c '"'"'echo ~cloud_user && sleep 0'"'"''
<localhost> (255, b'', b'')
fatal: [localhost]: UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: ",
    "unreachable": true
}

PLAY RECAP *********************************************************************
localhost                  : ok=0    changed=0    unreachable=1    failed=0    skipped=0    rescued=0    ignored=0   

Monday 18 November 2019  12:38:49 +0000 (0:00:00.029)       0:00:00.114 ******* 
=============================================================================== 
Current Working Directory ----------------------------------------------- 0.03s
/tmp/build/put/source-code/site.yml:7 -----------------------------------------

person Bishwajit Samanta    schedule 18.11.2019    source источник


Ответы (1)


Доступ к localhost обычно осуществляется через local подключаемый модуль подключения (если вы пытаются сделать что-то действительно особенное, и вы настроили доступ через ssh, что не похоже на ваше сообщение об ошибке выше).

Если вы не декларируете его в своем инвентаре, localhost является неявным, использует соединение local и не соответствует в группе all.

Однако, если вы явно укажете localhost в своем инвентаре, плагин подключения по умолчанию станет ssh и группа all также соответствует этому хосту. В этом случае вы должны сами установить соединение на local.

У вас есть два варианта выполнения текущего теста:

  1. Удалите свой инвентарь (или используйте тот, который явно не объявляет localhost) и измените свой playbook так, чтобы он был нацелен прямо на localhost = ›hosts: localhost
  2. Сохраняйте учебник как есть и модифицируйте инвентарь
    [test]
    localhost ansible_connection=local
    
person Zeitounator    schedule 18.11.2019
comment
Привет, привет, спасибо за ответ ... на самом деле localhost запущен, если я объявлю это в / etc / ansible / hosts через локальный метод подключения. Однако моя главная цель - у меня много серверов, на которых мне нужно запускать плейбуки Ansible из контейнера. Я могу подключиться к этим системам по ssh через этот контейнер для собраний, но я не могу сделать ansible -m ping ‹group-name› Имя группы состоит из нескольких хостов, например [test] 1.1.1.1 - person Bishwajit Samanta; 19.11.2019
comment
В этом случае отредактируйте свой вопрос и добавьте необходимую информацию, описывающую реальную проблему, с которой вы столкнулись и пытаетесь решить. Посмотрите Как задать вопрос в разделе справки. - person Zeitounator; 19.11.2019