与大厅Ansible

比什瓦吉·萨曼塔(Bishwajit Samanta)

我试图在Concourse中为远程主机运行ansible剧本,但是我不能这样做。以下是我的步骤:-

大堂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登录。

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 -----------------------------------------
Zeitounator

localhost通常是通过local连接插件访问的(除非您尝试做一些非常特别的事情,并且您已经通过ssh配置了访问,但上述错误消息似乎并非如此)。

如果未在清单中声明它,localhost是隐式的,使用local连接并且在all组中不匹配

但是,如果您localhost在清单中明确声明,则默认连接插件将变为,ssh并且该all组也与此主机匹配。local在这种情况下,您必须将连接设置回自己。

您有两种选择可以使当前的测试工作:

  1. 删除您的广告资源(或使用未明确声明的资源localhost)并修改您的剧本以localhost直接定位=>hosts: localhost
  2. 保持剧本不变并修改广告资源
    [test]
    localhost ansible_connection=local
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章