Puncte:0

Condițional Ansible cu variabile și metacaractere

drapel au

Am încercat să adaugi un condițional cu un wildcard și o variabilă Ansible și am primit un mesaj de eroare. Ideea este de a declanșa cererea API cu numele containerului care începe cu „android-”, aceasta este o continuare a unui manual de creare a unui container docker.

Cartea mea de joc:

---
- nume: agent de mutare Android
  gazde: server1; server2
  vars:
    containere: „{{ containere }}” #variabilă într-un alt fișier

sarcini:
    - nume: agent de mutare Android
      comandă: curl „solicitare API către un server”
      când: "containers.startswith('android-*')"

eroarea:

SARCINA [mutare agent Android] ******************************************** *********
  fatal: [server1]: FAILED! => {"msg": "Verificarea condiționată 'containers.startswith('android-*')' a eșuat. Eroare a fost: eroare la evaluarea condițională (containers.startswith('android-*')): 'obiect listă' nu are atributul „startswith”\n\nEroarea pare să fie în „/directory/were/the/playbook/is/move-agent-android.yml”: rândul 13, coloana 7, dar poate\nsă fie în altă parte a fișierului în funcție de problema exactă de sintaxă.\n\nRândul ofensator pare să fie:\n\n\n - nume: mutați agentul Android\n ^ aici\n"}

Am încercat să schimb condiționalele în versiuni diferite și toate au aceeași eroare.

alte versiuni:

când: „containers se potrivește(’android-*’)”

când: item.name.startswith('android-*')

când: „{{ containere }}” se potrivește ('android-*')

Ai idee cum să rezolvi eroarea?

Puncte:1
drapel br

Încerca

când: „containers se potrivește ('^android-.*$')”

Este o expresie regex Python. Punctul '.' lipsea în fața stelei „*”. De asemenea, trebuie să începeți „^” și să încheiați „$” expresia în cazul potrivirii.

flowerysong avatar
drapel th
Deși nu doare, din punct de vedere tehnic trebuie doar să ancorați sfârșitul pentru „meci”, deoarece este implicit ancorat de început. În acest caz particular, ancora de capăt este, de asemenea, inutilă, deoarece `.*` se va potrivi oricum cu sfârșitul. Cea mai ușoară soluție este de fapt să omiteți `*`: `is match('android-')` va potrivi toate șirurile care încep cu `android-`, care este rezultatul dorit.
drapel br
Consultați [Pentru ce sunt comentariile și când nu ar trebui să comentez?](https://meta.stackexchange.com/questions/19756/how-do-comments-work). Nu cereți lămuriri, informațiile nu sunt nici minore, nici trecătoare și nu voi „îmbunătăți” postarea cu privire la critica dumneavoastră „constructivă”.Fără raționament. Îți sugerez să postezi răspunsul tău.
flowerysong avatar
drapel th
Este o critică constructivă asupra modului în care vă puteți îmbunătăți postarea. Nu ești obligat să-l iei.
drapel br
Ce te împiedică să postezi răspunsul tău?

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.