我正在使用docker来测试我的剧本。
我现在创建了一个容器,当我在容器内运行命令时,它给我下面的错误
ansible-playbook jenkins.yml
错误: -
[root@db1e9105692d jenkins-playbook]# ansible-playbook jenkins.yml -k -vvv
SSH password:
PLAY [localhost] **************************************************************
GATHERING FACTS ***************************************************************
<localhost> ESTABLISH CONNECTION FOR USER: root
<localhost> REMOTE_MODULE setup
<localhost> EXEC sshpass -d4 ssh -C -tt -v -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/root/.ansible/cp/ansible-ssh-%h-%p-%r" -o StrictHostKeyChecking=no -o GSSAPIAuthentication=no -o PubkeyAuthentication=no -o ConnectTimeout=10 localhost /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1454580537.38-114451000565344 && echo $HOME/.ansible/tmp/ansible-tmp-1454580537.38-114451000565344'
EXEC previous known host file not found for localhost
fatal: [localhost] => SSH Error: ssh: connect to host localhost port 22: Connection refused
while connecting to 127.0.0.1:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
TASK: [jenkins | Include OS-Specific variables] *******************************
<localhost> ESTABLISH CONNECTION FOR USER: root
fatal: [localhost] => One or more undefined variables: 'ansible_os_family' is undefined
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/root/jenkins.retry
localhost : ok=0 changed=0 unreachable=2 failed=0
但是,如果我在主机上运行此命令,它运行正常。我需要做任何事情,以便连接不会被拒绝在端口22.inside docker container
请不要将下面的行视为错误的原因。只是ansible在抛出错误之前已经执行了几行。实际上它无法运行,因此该变量的值为空。
fatal: [localhost] => One or more undefined variables: 'ansible_os_family' is undefined
答案 0 :(得分:3)
在你的容器中在本地启动你的剧本:
$ ansible-playbook jenkins.yml -c local -k -vvv
答案 1 :(得分:0)
您是否为localhost定义了connection=local?它试图通过ssh进行连接,因为您可能没有在容器中运行sshd,因此无法正常工作。