When running an Ansible playbook on a Linux Mint host I found that the variable distribution_release
returned the Mint code name of ulyssa
. This isn’t very helpful with adding things like hte docker repository as that needs the underlying Ubuntu codename.
To get the Ubuntu code name I resorted to reading the /etc/os-releases
file.
---
- name: Create a temporary file
ansible.builtin.tempfile:
prefix: .fetched_
state: file
register: tempfile
- name: Fetch os-release
ansible.builtin.fetch:
src: /etc/os-release
dest: "{{ tempfile.path }}"
flat: yes
register: fetched
- name: Set Ubuntu Code Name
set_fact:
ubuntu_codename: "{{ lookup('ini', 'UBUNTU_CODENAME type=properties file=' + fetched.dest) }}"
---
- name: Add Docker Repository
apt_repository:
repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ubuntu_codename }} stable"
state: present
when: ubuntu_codename is defined
register: docker_list
This fetches the file into a random named temporary file – so as not to clash if our task is running on multiple hosts simultaneously. It then carries out a lookup
for the property UBUNTU_CODENAME
in the temporary file and sets a new variable ubuntu_codename
which we can now use as our real code name.