由于 Centos6 上的 GMP 软件包版本导致的 Ansible 错误
Posted
技术标签:
【中文标题】由于 Centos6 上的 GMP 软件包版本导致的 Ansible 错误【英文标题】:Ansible error due to GMP package version on Centos6 【发布时间】:2014-08-04 07:32:15 【问题描述】:我有一个基于CentOS
(标签:centos6
)构建映像的 Dockerfile:
FROM centos
RUN rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
RUN yum update -y
RUN yum install ansible -y
ADD ./ansible /home/root/ansible
RUN cd /home/root/ansible;ansible-playbook -v -i hosts site.yml
在 Docker 到达最后一行之前一切正常,然后我收到以下错误:
[WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
Traceback (most recent call last):
File "/usr/bin/ansible-playbook", line 317, in <module>
sys.exit(main(sys.argv[1:]))
File "/usr/bin/ansible-playbook", line 257, in main
pb.run()
File "/usr/lib/python2.6/site-packages/ansible/playbook/__init__.py", line 319, in run
if not self._run_play(play):
File "/usr/lib/python2.6/site-packages/ansible/playbook/__init__.py", line 620, in _run_play
self._do_setup_step(play)
File "/usr/lib/python2.6/site-packages/ansible/playbook/__init__.py", line 565, in _do_setup_step
accelerate_port=play.accelerate_port,
File "/usr/lib/python2.6/site-packages/ansible/runner/__init__.py", line 204, in __init__
cmd = subprocess.Popen(['ssh','-o','ControlPersist'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__
errread, errwrite)
File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Stderr from the command:
package epel-release-6-8.noarch is already installed
我想错误的原因是 gmp
包不是最新的。
GitHub上有一个相关问题:https://github.com/ansible/ansible/issues/6941
但目前似乎没有任何解决方案... 有任何想法吗 ? 提前致谢!
我的site.yml
剧本:
- hosts: all
pre_tasks:
- shell: echo 'hello'
【问题讨论】:
这看起来不像 gmp 与我的问题有关。看起来ssh
命令在我不存在的文件上失败。
我不确定在这种情况下该怎么做。我的Dockerfile
是相当基本的,所以它不应该真的阻塞 ssh 连接吗?
该问题似乎来自 ansible-playbook 本身。 hosts
文件是否存在于 ansible-playbook 正在寻找的任何地方?除此之外,还需要更熟悉 ansible(或者可能是 docker,尽管我对此表示怀疑)的人需要参与进来。
【参考方案1】:
确保文件site.yml
和hosts
存在于您要添加到/home/root/ansible
的目录中。
旁注,您可以使用WORKDIR
来简化您的Dockerfile:
WORKDIR /home/root/ansible
RUN ansible-playbook -v -i hosts site.yml
【讨论】:
以上是关于由于 Centos6 上的 GMP 软件包版本导致的 Ansible 错误的主要内容,如果未能解决你的问题,请参考以下文章