--- # tasks file for install terraform on Linux and Unix system - name: Linux/Unix | Find all versions of Terraform uri: url: https://releases.hashicorp.com/terraform/index.json return_content: yes register: terraform_index when: terraform_version == "latest" check_mode: no - name: Linux/Unix | Finds the latest Terraform version when latest var is define set_fact: terraform_version_to_install: "{{ (terraform_index.content | from_json).versions | reject('search','-') | list | sort_versions | last }}" when: terraform_version == 'latest' - name: Linux/Unix | Use the specified Terraform version when latest var is not define set_fact: terraform_version_to_install: "{{ terraform_version }}" when: terraform_version != 'latest' # This task avoids downloading Terraform every time - name: Linux/Unix | Check if Terraform is present with the right version command: "{{ terraform_path }}/terraform -version" register: terraform_installed_version ignore_errors: yes changed_when: false failed_when: false - name: Linux/Unix | Install Terraform unarchive: src: "{{ terraform_pkg_url }}" dest: "{{ terraform_path }}" remote_src: yes when: terraform_version_to_install not in ( terraform_installed_version.stdout_lines | default(['empty'], true) | first ) - name: Link terraform to /usr/local/bin become: true file: src: "{{ terraform_path }}/terraform" dest: "/usr/local/bin/terraform" state: link force: yes mode: 744