Puncte:0

Ieșirea sarcinii Ansible într-un fișier pe serverul ansible

drapel sd

Scriu un manual care va verifica versiunea aplicației pe diferite gazde și va scrie rezultatul într-o variabilă Ansible.

Cerința mea este că vreau să scot variabila ansible într-un fișier output.logO bucată de cod ansible pentru a scrie variabila ansible în output.log.

Problema este ca variabila este scrisă în fișier numai pentru ultima gazdă din inventarul gazdelor, dar vreau ca toate gazdele să fie atașate în fișierul output.log

Ref. imagine

drapel in
Vă rog, nu postați capturi de ecran cu text pe care ați putea să copiați și să lipiți. Doar copiați și lipiți textul.
Puncte:2
drapel in

Delegați sarcina localhost și utilizați lineinfile pentru a-l adăuga la fișierul dvs.:

- nume: informații despre magazin
  lineinfile: 
    cale: „/tmp/out.log”
    regexp: „\s{{ inventory_hostname }}$”
    rând: „{{ java_version.msg }} {{ inventory_hostname }}”
    creați: da
  delegate_to: localhost

The expresie regulată Atributul se va asigura că vechile intrări sunt înlocuite atunci când rulați din nou playbook-ul și versiunea sa schimbat.

Puncte:2
drapel cn

Instalați un script de fapte la /etc/ansible/facts.d/java.fact pe gazde la distanță și să îl faceți executabil.Evadarea JSON pentru a imprima pe o ieșire standard este puțin urâtă. De asemenea, urâtă, analizarea unei versiuni „număr” din versiunea java. Deși este posibil să colectați versiunea într-un mod diferit, ajustați scriptul după cum este necesar.

#!/bin/sh
JAVA_VERSION=$(java -versiune 2>&1 | versiune grep | cut -d '"' -f 2)
printf "{\"java_version\": \"${JAVA_VERSION}\"}\n"

Scrieți un șablon Jinja pentru a imprima liniile cu numărul versiunii în formatul dorit. Spune că fișierul este templates/javaversionreport.txt

  • groups este un dict magic al inventory_hostname indexat după grup
  • hostvars este un dict magic cu variabilele altor gazde
  • ansible_local este variabila „fapte locale”.
  • java este de la java.fapt nume de fișier
{% pentru gazdă în grupuri['gazde'] %}
{{ hostvars[host].ansible_local.java.java_version }} {{ host }}
{% endfor %}

Și joacă pentru a colecta fapte și a scrie raportul. Ajustați modelul gazdelor după cum doriți.

---
- gazde: gazde
  gather_facts: Adevărat
  calea_fact: /etc/ansible/facts.d


- gazde: localhost
  gather_facts: Fals

  sarcini:
  - șablon:
      src: javaversionreport.txt
      dest: /tmp/out.log

Randarea unui șablon rulează mai rapid decât rescrierea fișierelor cu linefinfile. Deși strângerea faptelor poate fi lentă. De asemenea, șabloanele Jinja pot fi scrise în orice format doriți.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.