GNU/Linux >> Znalost Linux >  >> Linux

Jak zmínit zástupný znak v příkazech ansible

Použitím ansible na příkazovém řádku k provádění ad hoc příkazů je zástupný znak velmi užitečný, např. abyste zjistili, zda soubor existuje na všech systémech.

Také jsem se snažil udělat:$ ansible production -a "ls /mypath/*xxx*"

Ale zabalit to do bash -c '...' funguje:$ ansible production -a "bash -c 'ls /mypath/*xxx*'"


Takto definovaná úloha by stačila:

- name: Move internal directories and files
  command: bash -c 'mv /tmp/parent-dir/*  /opt/destination/'

Jak napsal Larsks, klíčem je použití register , ale kód nefungoval na mé aktuální verzi ansible. Takže tady je jedna opravená:

- shell: ls -d solr*
  register: dir_name

- command: chdir={{ item }} some_command
  with_items: dir_name.stdout_lines

Ne. chdir= parametr na, např. command modul nepodporuje zástupné znaky.

Můžete dosáhnout toho, co chcete, pomocí proměnné registru k uložení výstupu ls příkaz:

- shell: ls -d solr*
  register: dir_name
- command: some_command
  args:
    chdir: "{{ dir_name.stdout }}"

Ale to je, upřímně řečeno, ošklivé řešení. Je lepší použít skutečný název adresáře. Pokud se na různých hostitelích liší, můžete ji vhodně nastavit pomocí hostitelských proměnných.


Linux
  1. Linuxové příkazy od A do Z

  2. Jak zničit váš systém:Nebezpečné příkazy Linuxu

  3. 5 příkladů Modem At Command v Linuxu (Jak nakonfigurovat Minicom)

  1. Jak používat Su Command v Linuxu

  2. Jak omezit uživatelské příkazy v Linuxu

  3. Jak uložit výstup příkazu do pole v Ansible?

  1. Jak je zástupný znak * interpretován jako příkaz?

  2. Jak uniknout příkazům v aliasu bashrc?

  3. Jak mohu zaznamenat příkazy Linuxu?