我正在使用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上被拒绝?
请不要将下面的行视为错误原因,只是ansible在抛出错误之前执行了几行。实际上,它无法运行,因此,该变量的值为空。
fatal: [localhost] => One or more undefined variables: 'ansible_os_family' is undefined
最佳答案
在您的容器中,在本地启动您的剧本:
$ ansible-playbook jenkins.yml -c local -k -vvv
关于docker - 如何在Docker容器中运行Ansible脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35198355/