首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible替换uri模块中的字符串变量

Ansible替换uri模块中的字符串变量
EN

Stack Overflow用户
提问于 2021-11-17 13:11:52
回答 1查看 121关注 0票数 0

我想从artifactory下载文件beat7.15.2二进制文件。我在我的攻略中传递版本为7-15-2,但只想在uri模块中将攻略中的版本更改为7.15.2。我的二进制文件存储在example.com/artifactory/mvn-public-local/com/dbdb/rf/devops/filebeat/7-15-2/filebeat-7.15.2-linux-x86_64.tar.gz中

我的攻略:

代码语言:javascript
复制
- hosts: "{{ deployment_environment }}"
  remote_user: "{{ user }}"
  gather_facts: no
  
  vars_files:
    - params.yml
  vars:
    artifactory_url: "example.com/artifactory/mvn-public-local/com/dbdb/rf/devops"
    artifact_name: "filebeat"
    release_url: "{{ artifactory_url }}/{{ artifact_name }}/{{ filebeat_version }}"

  tasks:
    - set_fact:
        env_param: "{{ deployment_environment }}"

    - name: Create filebeat directory if not exist.
      file: 
        path: "{{ env_select[env_param].deployment_path }}/filebeat"
        state: directory
        mode: 0755
        recurse: yes
        
    - name: remove old scripts from box
      shell: "cd {{ env_select[env_param].deployment_path }}/filebeat; rm -rf *"
      
      
    - name: Download scripts from artifactory
      uri:
        url: "{{ release_url }}/filebeat-{{ filebeat_version }}-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_version}}-linux-x86_64.tar.gz"

我的策略是这样运行的

代码语言:javascript
复制
ansible-playbook download_filebeat.yml deployment_environment user filebeat_version
代码语言:javascript
复制
ansible-playbook download_filebeat.yml uat1 user1 7-15-2

我收到错误,因为找不到url:"url":"example.com/artifactory/mvn-public-local/com/dbdb/rf/devops/filebeat/7-15-2/filebeat-7-15-2-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更改为example.com/artifactory/mvn-public-local/com/dbdb/rf/devops/filebeat/7-15-2/filebeat-7.15.2-linux-x86_64.tar.gz的任何建议

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-17 14:00:33

你试过了吗?

代码语言:javascript
复制
#...
- name: Download scripts from artifactory
      uri:
        url: "{{ release_url }}/filebeat-{{ filebeat_version | regex_replace('-','.') }}-linux-x86_64.tar.gz"
        creates: "{{ env_select[env_param].deployment_path }}/filebeat-{{ filebeat_version | regex_replace('-','.') }}-linux-x86_64.tar.gz"
#...

您还可以将解析后的filebeat版本存储为任务自己的变量/事实,如下所示

代码语言:javascript
复制
- name: "Set filebeat semver"
  set_fact:
    filebeat_semver: "{{ filebeat_version | regex_replace('-','.') }}"

然后,您可以在需要解析的语义版本时使用filebeat_semver

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70005041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档