在Dockerfile中本地运行Ansible SSH身份验证问题

编程之家收集整理的这篇文章主要介绍了在Dockerfile中本地运行Ansible SSH身份验证问题编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

搜索热词

由于身份验证问题,我无法在Dockerfile中运行我的ansible playbook.

这是我的dockerfile:

FROM ubuntu:14.04
MAINTAINER hyperfocus

# Update system and install ansible
RUN apt-get -y update
RUN apt-get install -y python-yaml python-jinja2 git
RUN git clone http://github.com/ansible/ansible.git /tmp/ansible

# Set environment
WORKDIR /tmp/ansible
ENV PATH /tmp/ansible/bin:/sbin:/usr/sbin:/usr/bin
ENV ANSIBLE_LIBRARY /tmp/ansible/library
ENV PYTHONPATH /tmp/ansible/lib:$PYTHON_PATH

# Add repo key and add it to known hosts
ADD id_rsa /root/.ssh/id_rsa
RUN chmod 700 /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts

# Bootstrap playbook
RUN git clone git@bitbucket.org:xxx/xxx.git /tmp/playbook
ADD hosts /etc/ansible/hosts
WORKDIR /tmp/playbook

# Bootstrap
RUN ansible-playbook /tmp/playbook/site.yml -c local -t bootstrap

# Debug
# RUN ansible all -m ping -i /etc/ansible/hosts -vvvvvv

# Container settings
EXPOSE 22 3000
ENTRYPOINT [“/usr/bin/foo”]

我的主机文件

[web]
localhost ansible_connection=local

[database]
localhost ansible_connection=local

[cache]
localhost ansible_connection=local

输出

PLAY [bootstrap installer] ****************************************************

GATHERING FACTS ***************************************************************
fatal: [localhost] => Authentication or permission failure.  In some cases,you may have been able to authenticate and did not have permissions on the remote directory. Consider changing the remote temp path in ansible.cfg to a path rooted in "/tmp". Failed command was: mkdir -p $HOME/.ansible/tmp/ansible-tmp-1403661775.03-87881370436819 && echo $HOME/.ansible/tmp/ansible-tmp-1403661775.03-87881370436819,exited with result 127

我在这里想念的是什么?

最佳答案
Ansible正在容器中运行,试图连接到容器,因此您需要同时授权容器和root用户.容器必须是已知主机,并且必须授权root的公钥.例如:

RUN ssh-keyscan -t rsa 127.0.0.1 >>/root/.ssh/known_hosts
RUN cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys 

我正在使用Docker 1.1.2版,构建d84a070.登录到我的容器(作为root)我发现pip使用了/.pip而不是/root/.pip;虽然ssh按预期使用/root/.ssh而不是像Gekkie建议的/.ssh.

总结

以上是编程之家为你收集整理的在Dockerfile中本地运行Ansible SSH身份验证问题全部内容,希望文章能够帮你解决在Dockerfile中本地运行Ansible SSH身份验证问题所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢寻找一群志同道合、互帮互助的学习伙伴,可以点击下方链接加入:
编程之家官方1群
编程之家官方2群
编程之家官方3群
编程之家官方4群

相关文章

猜你在找的Docker相关文章

第一步,创建一个空文件夹,我们命名为django,路径我们采用在home文件夹下 python@ubuntu:~$ mkdir django python@ubuntu:~$ cd django py
Docker 安装运行 FastDFS 获取 FastDFS 镜像 # 从远端仓库拉取镜像 # 其中 delron 是仓库名. # fastdfs 是镜像名 sudo docker image pul
FastDFS 介绍 用c语言编写的一款开源的轻量级分布式文件系统。 功能包括:文件存储、文件访问(文件上传、文件下载)、文件同步等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,
问题背景 这里讲解了如何同步容器和主机的时间:https://www.cnblogs.com/poloyy/p/13967532.html 其中使用方法二 docker cp /etc/lo
问题背景 在 Linux 已登录自己的 Docker hub 账号 上传本地镜像但是报错了 docker push tomcat 解决方案 docker tag tomcat poloyy/tomca
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 前言 默认情况下,Docker
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 作用 从 Docker Hub
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 作用 显示 Docker 版本信