在[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 のダウンロード処理のリトライ(と既存コードの書き換えスクリプト)
广告
将在 10 秒后关闭
bannerAds