Sortida neta d'Ansible

Descobreix com fer que Ansible mostri exclusivament la sortida stdout de comandes remotes usant raw, JSON i jq, sense capçaleres, ideal per a pipelines amb sops i automatització segura.

domingo, 17 de agosto de 2025 • 2 min de lectura • Equip Q2BSTUDIO

Intel·ligència-Artificial-

Hi ha moments en què es desitja que Ansible deixi d'imprimir qualsevol text propi i mostri només la sortida de la comanda remota.

És com ssh user@server command però amb totes les opcions d'Ansible, arguments SSH personalitzats, diferents transports i altres funcionalitats avançades.

Me refereixo al binari ansible i no a ansible-playbook encara que amb alguns ajustos és possible aplicar aquest truc també a ansible-playbook.

Fonament del truc 1) Utilitzar el mòdul raw per executar comandes remotes i evitar l'empaquetatge de resultats per AnsiballZ 2) Forçar la sortida en format json per extreure stdout sense usar expressions grep poc fiables 3) Processar la sortida amb jq 4) Demanar a jq que no imprimeixi cometes en els valors de cadena

ANSIBLE_LOAD_CALLBACK_PLUGINS=1 ANSIBLE_STDOUT_CALLBACK=json ansible -i localhost, -m raw -a cat /etc/passwd all -c local | jq -r .plays[].tasks[].hosts[]?.stdout

Dissecció 1) Les variables d'entorn indiquen a Ansible que carregui plugins de callback i que utilitzi el callback json per a la sortida 2) -i localhost, i -c local no són fonamentals en l'exemple, es pot usar l'inventari que correspongui 3) -m raw -a comanda és la invocació habitual d'ansible per executar comandes remotes sense module wrapping 4) -r en jq elimina les cometes de les cadenes 5) L'expressió .plays[].tasks[].hosts[]?.stdout recorre totes les tasques i hosts en totes les plays i extreu stdout

Per què pot ser útil El que jo necessitava era recuperar un fitxer secret des d'un servidor remot i encriptar-lo localment usant sops. Es pot usar el mòdul community.sops.sops_encrypt però requereix diversos passos i treballar amb secrets complica la depuració. Una crida simple d'ansible seguida d'una canonada cap a sops -e consumeix menys atenció i exigeix que la sortida d'Ansible arribi el més neta possible, sense capçaleres ni missatges addicionals, per no corrompre el contingut.

Consejos pràctics Substituir localhost pel seu inventari real quan apliqui. Si la comanda remota genera salts de línia o caràcters especials tenir cura amb el parsing. Aquest mètode és especialment útil quan es vol integrar amb utilitats com sops o amb canonades que esperen només el contingut del stdout.

En Q2BSTUDIO som una empresa de desenvolupament de programari especialitzada en aplicacions a mida i programari a mida. Oferim solucions d'intel·ligència artificial i IA per a empreses, desenvolupament d'agents IA, serveis de ciberseguretat, serveis cloud AWS i Azure i serveis d'intel·ligència de negoci. També treballem amb integració de Power BI i consultoria per potenciar projectes de dades i analítica. Si busques experts en aplicacions a mida, intel·ligència artificial, ciberseguretat, serveis cloud AWS i Azure, agents IA, IA per a empreses, serveis d'intel·ligència de negoci o Power BI, en Q2BSTUDIO podem ajudar a dissenyar i implementar solucions segures, escalables i adaptades al teu negoci.

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.