Ansible - Setzt eine Tatsache aus dynamischen Variablen
Ich rufe eine bestimmte Variablendatei aus einer Tatsache auf
- 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
Variablen in dieser Datei können je nach Verteilung unterschiedliche Namen haben
#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
...
Ich habe auch eine "gemeinsame" Paketliste, die für alle Linux-Distributionen verwendet wird
Ich muss diese 3 verschiedenen Listen mit der Paketliste verknüpfen, die auf dem Host installiert werden muss
common_pkg_list + {{ansible_ Distribution}} - pkglist + {{ansible_distribution_major_version}} - pkglist
Um dies zu erreichen, habe ich versucht, für jede Liste den Namen der Dynamikvariablen festzulegen:
-name:
set_fact:
common_pkg: "{{ prefix_commonpkglist }}"
ditro_pkg: "prefix_{{ ansible_distribution | lower }}"
version_pkg: "prefix_{{ ansible_distribution_major_version }}"
Aber nach dem Sefakt geht die Liste verloren ...
Wie kann ich meinen dynamischen Listennamen (Variablen) als Fakt festlegen?
Antworten
Hier das letzte set_fact, das ich verwendet habe:
- 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