Skip to main content
deleted 2 characters in body; edited title
Source Link
Jamal
  • 35.2k
  • 13
  • 134
  • 238

tasks Tasks based on variable definition

I am creating a playbook that takes a variable ver at runtime and then runs tasks based on that variable. If that ver is defined, it takes the version number and installs a version according to that. If the ver is not defined, it defaults to a default version.

My playbook for now looks like  :

- 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

As you can see, based on whether a variable is defined or not, I have to write whole new tasks for it.

The above works but I think itsit's not optimized as ImI'm writing too much code to get this to work. One idea that I have is to create have main.yaml invoke a another task file when ver is defined and a separate task file when ver is not defined.

Is there another way to optimize this  ? I have many other tasks that deal with version number.

tasks based on variable definition

I am creating a playbook that takes a variable ver at runtime and then runs tasks based on that variable. If that ver is defined, it takes the version number and installs a version according to that. If the ver is not defined, it defaults to a default version.

My playbook for now looks like  :

- 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

As you can see, based on whether a variable is defined or not, I have to write whole new tasks for it.

The above works but I think its not optimized as Im writing too much code to get this to work. One idea that I have is to create have main.yaml invoke a another task file when ver is defined and a separate task file when ver is not defined.

Is there another way to optimize this  ? I have many other tasks that deal with version number.

Tasks based on variable definition

I am creating a playbook that takes a variable ver at runtime and then runs tasks based on that variable. If that ver is defined, it takes the version number and installs a version according to that. If the ver is not defined, it defaults to a default version.

My playbook for now looks like:

- 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

As you can see, based on whether a variable is defined or not, I have to write whole new tasks for it.

The above works but I think it's not optimized as I'm writing too much code to get this to work. One idea that I have is to create have main.yaml invoke another task file when ver is defined and a separate task file when ver is not defined.

Is there another way to optimize this? I have many other tasks that deal with version number.

Source Link

tasks based on variable definition

I am creating a playbook that takes a variable ver at runtime and then runs tasks based on that variable. If that ver is defined, it takes the version number and installs a version according to that. If the ver is not defined, it defaults to a default version.

My playbook for now looks like :

- 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

As you can see, based on whether a variable is defined or not, I have to write whole new tasks for it.

The above works but I think its not optimized as Im writing too much code to get this to work. One idea that I have is to create have main.yaml invoke a another task file when ver is defined and a separate task file when ver is not defined.

Is there another way to optimize this ? I have many other tasks that deal with version number.