首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于变量定义的任务

基于变量定义的任务
EN

Code Review用户
提问于 2018-08-03 14:22:40
回答 1查看 370关注 0票数 1

我正在创建一个游戏手册,它在运行时接受变量ver,然后根据该变量运行任务。如果定义了该ver,它将获取版本号并根据此设置一个版本。如果未定义ver,则默认为默认版本。

我的剧本现在看起来是:

代码语言:javascript
复制
- name: Download Maven from remote repository.
  unarchive:
    src: "{{ baseurl }}/{{ versions[ver] }}"
    dest: /usr/local/
    remote_src: yes
  become: yes
  when: ver is defined

- name: Rename maven folder.
  command: mv /usr/local/apache-maven-{{ver}} /usr/local/maven-{{ver}}
  become: yes
  when: ver is defined

- name: Create symbolic link to maven folder.
  file:
    src: "/usr/local/maven-{{ver}}"
    dest: "/usr/local/maven"
    state: link
  become: yes
  when: ver is defined


- name: Download Default Maven from remote repository.
  unarchive:
    src: "{{ baseurl }}/{{ versions[default_version] }}"
    dest: /usr/local/
    remote_src: yes
    list_files: yes
  become: yes
  when: ver is not defined

- name: Rename maven folder.
  command: mv /usr/local/apache-maven-{{default_version}} /usr/local/maven-{{default_version}}
  become: yes
  when: ver is not defined

- name: Create symbolic link to maven folder.
  file:
    src: "/usr/local/maven-{{default_version}}"
    dest: "/usr/local/maven"
    state: link
  become: yes
  when: ver is not defined

正如您所看到的,基于是否定义了变量,我必须为它编写全新的任务。

上面的工作,但我认为它没有优化,因为我写了太多的代码,以使这一工作。我的一个想法是创建main.yaml,在定义ver时调用另一个任务文件,在未定义ver时创建一个单独的任务文件。

还有别的方法来优化这个吗?我还有许多处理版本号的其他任务。

EN

回答 1

Code Review用户

回答已采纳

发布于 2018-08-04 20:51:21

使用过滤器默认设置。例如

代码语言:javascript
复制
    - set_fact:
        version: "{{ ver | default(default_version) }}"

如果您也想使用default_version,以防ver为空,则将第二个参数设置为true

代码语言:javascript
复制
        version: "{{ ver | default(default_version, true) }}"

参见不可用-如果未定义变量,请使用默认值。的更多详细信息

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

https://codereview.stackexchange.com/questions/200902

复制
相关文章

相似问题

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