
Preciso de uma pequena ajuda.
No exemplo abaixo, preciso substituir shell
pelo command
módulo. Mas estou confuso porque command
não está funcionando com pipe.
Então, por favor, me dê a solução desta tarefa. Por exemplo:
- name: Get the version
become: true
run_once: true
shell: zypper pa | grep eric-odl | awk -F {'print $4'}
register: odl_version
Como dividirei esta tarefa porque cada saída de comando depende do próximo comando?
Responder1
Preciso substituir
shell
porcommand
módulo.
Talvez você possa fornecer mais informações básicas sobre o porquê e o que você tenta alcançar.
Atualmente eu acho que de acordo com man zypper
você tenta
pacotes (pa) [opções] [repositório]...
Lista todos os pacotes disponíveis ou todos os pacotes dos repositórios especificados. Igual a
zypper search -s -t package
.
primeiro e gostaria de prosseguir com algo depois.
Mas estou confuso
command
se não está funcionando com pipe.
Certo, esse é o caso e o comportamento pretendido. Veja no exemplo
command
módulo – Executa comandos em alvosO(s) comando(s) não serão processados através do shell, portanto variáveis como
$HOSTNAME
e operações como "*
", "<
", ">
", "|
", ";
" e "&
" não funcionarão. Use oansible.builtin.shellmódulo se você precisar desses recursos.shell
módulo – Executa comandos shell em alvosÉ quase exatamente igual aoansible.builtin.commandmódulo, mas executa o comando através de um shell (
/bin/sh
) no nó remoto.
Então, por favor, me dê a solução desta tarefa
Não haverá "essa solução", mas você pode dar uma olhada na lista a seguir, das abordagens mais preferidas para as menos preferíveis:
- Usando
package_facts
módulo para obter informações do pacote como fatos - Avalie
zypper
módulo para gerenciar pacotes no SUSE e openSUSE - Usando o
zypper
comando em outra sintaxe que não precisagrep
e ouawk
como em - Ouescrevendo um próprio módulo personalizado
- Ou usando
script
módulo para executar um script local em um nó remoto após transferi-lo
Ou, pelo menos, continue com shell
os comandos for com pipes (e seu exemplo como está atualmente)