在[Ansible]代理环境下使用get_url模块
在[Ansible]代理环境下使用get_url模块
造成的原因
-
- proxy環境下でplaybookを実行した際につまづいたことを外部記憶として残したかったため。
- 自宅がproxy環境下ではないため、十中八九忘れてしまうため。
操作环境
# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
# ansible --version
ansible 2.8.5
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /bin/ansible
python version = 2.7.5 (default, Aug 7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
使用playbook在代理环境下执行get_url模块。
- name: get_url under proxy enviroment
hosts: $inventoryファイルに定義しているparam
enviroment:
http_proxy: http://proxy_ip:port_num
https_proxy: http://proxy_ip:port_num
tasks:
- name: Download the specified file under proxy environment
get_url:
url: $ダウンロードしたいファイルのURL
dest: /usr/local/src
mode: '0755'
use_proxy: yes
validate_certs: no
register: download_result
until: download_result | succeeded
retries: 3
备忘录1
由于只提供了最基本的参数,可能会导致下载失败,因此在下面明确说明。
get_url:
(省略)
use_proxy: yes
validate_certs: no
关于下载失败的原因,我将引用参考URL中的wget给出的解决方法:
使用不支持SSL的wget从HTTPS网站下载会导致错误,但可以使用–no-check-certificate参数来忽略并下载。
顺便提一下,如果将手动操作比作wget命令,下面是一个类似的例子。
# wget <$ダウンロードしたいファイルのURL> --no-check-certificate
备忘录2
在”_result”的状态变为”succeeded”之前,最多重试3次下载。
register: download_result
until: download_result | succeeded
retries: 3
由于下载失败了几次,所以我已经添加了重试处理。
请提供网站链接
-
- 【docs.ansible.com】get_url – Downloads files from HTTP, HTTPS, or FTP to node
-
- 【docs.ansible.com】Retrying a task until a condition is met
-
- 【docs.ansible.com】The When Statement
-
- wgetでこういう時はこうする!!
- ansible のダウンロード処理のリトライ(と既存コードの書き換えスクリプト)