Ansible使用代理服务器本地IP地址,如何“绕过本地地址的代理服务器”

问题描述:

我正在运行jenkins服务器10.251.130.45:8080。 服务器位于代理之后。Ansible使用代理服务器本地IP地址,如何“绕过本地地址的代理服务器”

  • 我想用ansible模块安装一些詹金斯插件: jenkins_plugin
  • 的插件正在从标准位置获取:
    “updates_url”:“https://updates.jenkins-ci.org”所以需要通过去 代理。
  • 但是,基于IP地址的呼叫需要去本地jenkins 实例。

但是这失败了。我测试了使用ip和localhost作为jenkins实例的url。它看起来像所有去代理。

我该如何才能让通过代理运行基于DNS的查询?

此前我一直使用:

environment: 
    http_proxy: http://webproxy.ec.local:9090 
    https_proxy: http://webproxy.ec.local:9090 

,只是设置代理为“”对任务重新使用本地主机地址在哪里,但现在我需要同时使用本地主机和远程网址。 而当然我不想要代理的本地主机!

failed: [localhost] (item=authorize-project) => { 
    "details": "HTTP Error 502: cannotconnect", 
    "failed": true, 
    "invocation": { 
     "module_args": { 
      "attributes": null, 
      "backup": null, 
      "content": null, 
      "delimiter": null, 
      "directory_mode": null, 
      "follow": false, 
      "force": false, 
      "force_basic_auth": true, 
      "group": "jenkins", 
      "http_agent": "ansible-httpget", 
      "jenkins_home": "/var/lib/jenkins", 
      "mode": "0644", 
      "name": "authorize-project", 
      "owner": "jenkins", 
      "regexp": null, 
      "remote_src": null, 
      "selevel": null, 
      "serole": null, 
      "setype": null, 
      "seuser": null, 
      "src": null, 
      "state": "present", 
      "timeout": 500.0, 
      "unsafe_writes": null, 
      "updates_expiration": 86400, 
      "updates_url": "https://updates.jenkins-ci.org", 
      "url": "http://localhost:8080", 
      "url_password": "admin", 
      "url_username": "admin", 
      "use_proxy": true, 
      "validate_certs": true, 
      "version": null, 
      "with_dependencies": true 
     } 
    }, 
    "item": "authorize-project", 
    "msg": "Cannot get CSRF" 

使用curl一些测试:

本地主机通话给出了一个502就像ansible一样。

curl -X HEAD --proxy http://webproxy.ec.local:9090 -i localhost:8080 // 502 

curl -X HEAD --proxy http://webproxy.ec.local:9090 -i 10.251.130.45:8080 // FAIL, timeout 

curl -X HEAD -i http://10.251.130.45:8080 // 200 ok 

NO_PROXY环境变量通过添加必要的例外解决这个问题。

environment: 
    http_proxy: http://webproxy.ec.local:9090 
    https_proxy: http://webproxy.ec.local:9090 
    no_proxy: 127.0.0.1, localhost, 10.251.*.* 

https://github.com/ansible/ansible/issues/31307