Ansible uri模块替换版本字符串实现filebeat包正确下载
你可以直接使用Jinja2内置的replace过滤器对文件名中的版本号做临时替换,不会修改原filebeat_version变量的值,完全符合你仅在uri模块转换格式的需求。
具体修改方案
只需要调整Download scripts from artifactory任务的url和creates两个参数即可,路径部分的release_url不需要修改(路径中的版本号本身就是7-15-2格式,符合存储规则):
- 把文件名中引用
filebeat_version的部分,替换为{{ filebeat_version | replace('-', '.') }} - 顺便修正
creates参数的路径(原写法路径少了/filebeat二级目录,会导致文件存在性判断失效,每次都会重复下载)
修改后的完整任务代码如下:
- name: Download scripts from artifactory uri: url: "{{ release_url }}/filebeat-{{ filebeat_version | replace('-', '.') }}-linux-x86_64.tar.gz" method: GET validate_certs: no force_basic_auth: true return_content: no force: no user: "{{ arti_username }}" password: "{{ arti_pass }}" dest: "{{ env_select[env_param].deployment_path }}/filebeat" creates: "{{ env_select[env_param].deployment_path }}/filebeat/filebeat-{{ filebeat_version | replace('-', '.') }}-linux-x86_64.tar.gz"
修改后生成的下载地址会自动匹配实际存储路径:example.com/artifactory/mvn-public-local/com/dbdb/rf/devops/filebeat/7-15-2/filebeat-7.15.2-linux-x86_64.tar.gz
内容的提问来源于stack exchange,提问作者Priya
相关产品推荐
相关产品推荐

