如何在docker容器中运行ansible脚本

如何在docker容器中运行ansible脚本,docker,ansible,Docker,Ansible,我正在使用docker测试我的剧本 我现在创建了一个容器,当我在容器中运行below命令时,它会给我below错误 ansible剧本jenkins.yml 错误:- [root@db1e9105692d jenkins-playbook]# ansible-playbook jenkins.yml -k -vvv SSH password: PLAY [localhost] **********************************************************

我正在使用docker测试我的剧本

我现在创建了一个容器,当我在容器中运行below命令时,它会给我below错误

ansible剧本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

您是否为localhost定义了?它正在尝试通过ssh进行连接,但ssh无法工作,因为您的容器中可能没有运行sshd。

您是否定义了localhost?它试图通过ssh连接,但ssh无法工作,因为您的容器中可能没有运行sshd。

在容器中本地启动playbook:

$ ansible-playbook jenkins.yml -c local -k -vvv

在容器中,在本地启动playbook:

$ ansible-playbook jenkins.yml -c local -k -vvv

是的,这是一个有效点,但它是在我从/etc/ansible/hosts文件中删除localhost时开始运行的。为什么?我不知道。那里定义了什么?在我的默认主机文件中只有几个示例,但没有localhost。是的,这是一个有效点,但它是在我从/etc/ansible/hosts文件中删除localhost时开始运行的。为什么?我不知道。那里定义了什么?在我的默认主机文件中,只有几个示例,但没有本地主机。