Puncte:2

Ansible Căutare nume-directoare-părinte ale fișierelor

drapel id

Încerc să obțin directorul părinte Numele fișierelor identificate printr-un model.

bază/instrument1/sub/test.log
bază/tool2/abc/values.log
bază/instrument3/sub/test.log

Vreau să obțin fiecare cale absolută a directorului, unde trebuie să găsesc test.log. asa de bază/instrument1/sub/ și bază/instrument3/sub/ ar fi meciurile pe care vreau să le obțin ca rezultat.

- nume: „Loop-Playbook”
  gazde: toate
  sarcini:

  - nume: „Filtrați potrivirile fișierelor”
    găsi:
      căi: "/bază"
      file_type: „fișier”
      recurs: "da"
      modele: „*test.log”
    register: files_matched

  - nume: „Debug files_matched full”
    depanare:
var: files_matched.files

  - nume: „Depanați fișiere_articole potrivite”
    depanare:
      var: item.path | dirname 
    buclă: „{{ files_matched.files| flatten(levels=1) }}”
    loop_control:
      etichetă: „{{ item.path }}”

Cred că trebuie să folosesc ceva de genul {{ item.path | dirname }} dar sincer să fiu, habar n-am UNDE trebuie să definesc asta.

Ma poate ajuta cineva?

Zeitounator avatar
drapel fr
`debug: {var:varname}` este de a depana un conținut variabil identificat prin `varname`. În acest caz, doriți să utilizați `debug: {msg: "{{ item.path | dirname }}"}` deoarece calculați un conținut jinja2 care trebuie extins. De obicei, este de așteptat să furnizați rezultatul scriptului și să descrieți cum diferă de ceea ce vă așteptați pentru a ajuta oamenii să vă înțeleagă problema și să identifice erorile.
Alien Life Form avatar
drapel ru
Dacă doriți calea *absolută*, poate fi necesar să faceți ceva de genul acesta: https://stackoverflow.com/questions/53489453/get-absolute-path-of-file-on-local-host
Puncte:1
drapel cn

map() în Jinja poate extrage atribute sau aplica un filtru unei secvențe. Folosiți ambele pentru a transforma rezultatele găsirii într-un singur lanț de filtre.

---
- nume: „numele de bază al rezultatelor găsirii”
  gazde: localhost
  gather_facts: Fals

  vars:
    fisiere de testare:
    - bază/instrument1/sub/test.log
    - bază/tool2/abc/values.log
    - bază/instrument3/sub/test.log

  sarcini:
  - nume: „Configurați cazul de testare”
    bloc:

    - tempfile:
        stare: director
      înregistrare: mktemp

    - fisier:
        cale: „{{ ( mktemp.path ~ '/' ~ articol ) | dirname }}"
        stare: director
      buclă: „{{ fișiere de test }}”

    - fisier:
        cale: "{{ mktemp.path ~ '/' ~ element }}"
        stare: atingere
      buclă: „{{ fișiere de test }}”


  - nume: „Filtrați potrivirile fișierelor”
    găsi:
      căi: „{{ mktemp.path }}”
      file_type: „fișier”
      recurs: "da"
      # modele este deja potrivit cu numele de bază
      # Nu folosiți un wildcard în față, așa că doar „test.log” se potrivește
      modele: "test.log"
    register: files_matched

  - nume: „Depanați fișierele_potrivite complet”
    depanare:
       var: files_matched.files
       verbozitate: 1

  - nume: „Directoare găsite”
    depanare:
      msg: "{{ testdirnames }}"
    vars:
      # hartă pentru a extrage un atribut
      # hartă pentru a aplica un filtru
      # (poate face oricare)
      # list filtru pentru a consuma orice obiect generator returnat de Jinja
      testdirnames: „{{ files_matched.files | map(attribute='path') | map('dirname') | list }}”

Ieșire:

$ ansible-playbook sf1073762.yml

PLAY [numele de bază al rezultatelor găsirii] ******************************************* ********************************************

SARCINA [tempfile] ************************************************ **************************************************** *****
schimbat: [localhost]

SARCINA [fișier] ************************************************ **************************************************** *********
schimbat: [localhost] => (item=base/tool1/sub/test.log)
schimbat: [localhost] => (item=base/tool2/abc/values.log)
schimbat: [localhost] => (item=base/tool3/sub/test.log)

SARCINA [fișier] ************************************************ **************************************************** *********
schimbat: [localhost] => (item=base/tool1/sub/test.log)
schimbat: [localhost] => (item=base/tool2/abc/values.log)
schimbat: [localhost] => (item=base/tool3/sub/test.log)

SARCINA [Filtrați potrivirile fișierelor] ******************************************** ************************************************
ok: [localhost]

SARCINA [Depanare fișiere_potrivite complet] ******************************************** ******************************************
săriți peste: [localhost]

SARCINA [Directoare găsite] ********************************************* **************************************************** *****
ok: [localhost] => {
    "msg": [
        „/tmp/ansible.Nc0b6i/base/tool1/sub”,
        „/tmp/ansible.Nc0b6i/base/tool3/sub”
    ]
}

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.