Ansible - ustaw fakt ze zmiennych dynamicznych
Nov 19 2020
Określony plik zmiennych nazywam z faktu
- name: Load vars - {{ ansible_distribution }} {{ ansible_distribution_major_version }} package list
include_vars:
file: "{{ ansible_distribution | lower }}-pkglist.yml"
# if vars file is not found we continue
ignore_errors: yes
Zmienne w tym pliku mogą mieć różne nazwy w zależności od dystrybucji
#package for all debians server
prefix_debian:
- pkgname
- pkgname
...
#package for all debian 10 server
prefix_10 :
- specific major version pkgname
- specific major version pkgname
- specific major version pkgname
...
Mam też „wspólną” listę pakietów, która jest używana dla wszystkich dystrybucji Linuksa
Muszę połączyć te 3 różne listy z listą pakietów, które mają być zainstalowane na hoście
common_pkg_list + {{ansible_ distribution}} - pkglist + {{ansible_distribution_major_version}} - pkglist
Aby to osiągnąć, starałem się ustawić fakt dla każdej listy z nazwy zmiennej dynamiki:
-name:
set_fact:
common_pkg: "{{ prefix_commonpkglist }}"
ditro_pkg: "prefix_{{ ansible_distribution | lower }}"
version_pkg: "prefix_{{ ansible_distribution_major_version }}"
Ale po fakcie lista przepadła ...
Jak mogę ustawić nazwę mojej listy dynamicznej (zmiennych) jako fakt?
Odpowiedzi
LeXaNZ Nov 24 2020 at 22:31
Tutaj ostatni set_fact, którego użyłem:
- name: Building package list for {{ ansible_distribution }} {{ ansible_distribution_major_version }}
set_fact:
common_pkg: "{{ prefix_commonpkglist }}"
ditro_pkg: "{{ lookup('vars', 'prefix_' + ansible_distribution | lower) }}"
version_pkg: "{{ lookup('vars','prefix_' + ansible_distribution_major_version) }}"
- name: Installing packages
package:
name: "{{ common_pkg + ditro_pkg + version_pkg }}"
state: present