我正在创建一个游戏手册,它在运行时接受变量ver,然后根据该变量运行任务。如果定义了该ver,它将获取版本号并根据此设置一个版本。如果未定义ver,则默认为默认版本。
我的剧本现在看起来是:
- 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时创建一个单独的任务文件。
还有别的方法来优化这个吗?我还有许多处理版本号的其他任务。
发布于 2018-08-04 20:51:21
使用过滤器默认设置。例如
- set_fact:
version: "{{ ver | default(default_version) }}"如果您也想使用default_version,以防ver为空,则将第二个参数设置为true
version: "{{ ver | default(default_version, true) }}"参见不可用-如果未定义变量,请使用默认值。的更多详细信息
https://codereview.stackexchange.com/questions/200902
复制相似问题