DEV Community

Roy
Roy

Posted on

ansible Lazy Evaluation

frp_version: "{% if frpc_version is defined %}{{ frpc_version.replace('v', '') }}{% elif frps_version is defined %}{{ frps_version.replace('v', '') }}{% endif %}"

frp_release_name: frp_{{frp_version}}_{{frp_os}}_{{frp_arch}}
frp_release_ext: "{{ 'tar.gz' if frp_os == 'linux' else 'zip' }}"
frp_release_url: https://github.com/fatedier/frp/releases/download/v{{frp_version}}/{{frp_release_name}}.{{frp_release_ext}}

In same case, the value of frp_version may be empty string, so the value of frp_release_url will not be right,

the playbook later changed the value of frp_version if it is empty, before execute the following code where frp_release_url is expected to have the right value

- name: Download frp
  unarchive:
    remote_src: yes
    src: "{{ frp_release_url }}"
    dest: "{{ frp_tmp_dir }}"
  environment:
    https_proxy: '{{ frpc_http_proxy|default("") }}'
  when: frpc_outdated or frps_outdated

this is called lazy evaluation

Top comments (0)