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

时间:2016-02-04 10:21:22

标签: docker ansible

我正在使用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

2 个答案:

答案 0 :(得分:3)

在你的容器中在本地启动你的剧本:

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

答案 1 :(得分:0)

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

相关问题