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.*.*