Ansible模块失败并显示'无路由到主机'

时间:2018-06-01 10:51:06

标签: ansible ansible-2.x ansible-inventory

我正在针对位于代理后面的RHEL 7.4图像运行一个剧本。 SELINUX和防火墙已被禁用。我正在使用Ansible 2.5.3

这是任务

- name: Add Docker repository.
get_url:
  url: "{{ docker_yum_repo_url }}"
  dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo'
  owner: root
  group: root
  mode: 0644
  use_proxy: yes

错误

fatal: [10.40.12.136]: FAILED! => changed=false 
invocation:

module_args:

  attributes: null

  backup: null

  checksum: ''

  client_cert: null

  client_key: null

  content: null

  delimiter: null

  dest: /etc/yum.repos.d/docker-ce.repo

  directory_mode: null

  follow: false

  force: false

  force_basic_auth: false

  group: root

  headers: null

  http_agent: ansible-httpget

  mode: 420

  owner: root

  regexp: null

  remote_src: null

  selevel: null

  serole: null

  setype: null

  seuser: null

  sha256sum: ''

  src: null

  timeout: 10

  tmp_dest: null

  unsafe_writes: null

  url: https://download.docker.com/linux/centos/docker-ce.repo

  url_password: null

  url_username: null

  use_proxy: true

  validate_certs: true

 msg: 'Failed to connect to download.docker.com at port 443: [Errno 113] No route to host'

如果我进入服务器,我可以完全没有问题地忘记或卷曲文件,你可以看到该模块已被配置为使用我的代理。

更新:它似乎试图使用我的代理

<10.47.69.136> EXEC /bin/sh -c 'http_proxy=http://192.168.1.240:8080 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1527849642.94-177395007646298/get_url.py && sleep 0'

感谢。

2 个答案:

答案 0 :(得分:0)

尝试在此特定任务中设置代理,如下所示:

- name: Add Docker repository.
  get_url:
    url: "{{ docker_yum_repo_url }}"
    dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo'
    owner: root
    group: root
    mode: 0644
    use_proxy: yes
  environment:
    http_proxy: http://yourproxy:3128

但是如果您还需要在其他任务上使用代理,请在您的剧本中设置环境变量,而不仅仅是在该任务中......

---
- hosts: all
  environment:
    http_proxy: [...]
  tasks:
    - name: Add docker repo
      [...]

答案 1 :(得分:0)

我在ansible 2.4.6中遇到了相同的问题,以下修复程序对我有效:

- name: Add Docker repository.
  get_url:
    url: "{{ docker_yum_repo_url }}"
    dest: '/etc/yum.repos.d/docker-{{ docker_edition }}.repo'
    owner: root
    group: root
    mode: 0644
    use_proxy: yes
    validate_certs: no

here所述,它可以与validate_certs: no一起为我工作。