GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie man Platzhalter in Ansible-Befehlen erwähnt

Wenn Sie ansible auf der Befehlszeile verwenden, um Ad-hoc-Befehle auszuführen, ist ein Platzhalter sehr nützlich, z. um zu sehen, ob eine Datei auf allen Systemen vorhanden ist.

Ich habe mich auch schwer getan:$ ansible production -a "ls /mypath/*xxx*"

Aber das Verpacken in bash -c '...' funktioniert:$ ansible production -a "bash -c 'ls /mypath/*xxx*'"


Eine so definierte Aufgabe würde den Zweck erfüllen:

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

Wie Larsks geschrieben hat, ist der Schlüssel die Verwendung von register , aber der Code funktionierte nicht auf meiner aktuellen Ansible-Version. Also hier ist eine korrigiert:

- shell: ls -d solr*
  register: dir_name

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

Nein. Die chdir= Parameter auf z. B. command Modul unterstützt keine Platzhalter.

Sie könnten erreichen, was Sie wollen, indem Sie eine Registervariable verwenden, um die Ausgabe von ls zu speichern Befehl:

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

Aber das ist, ehrlich gesagt, eine hässliche Lösung. Verwenden Sie am besten einfach den tatsächlichen Verzeichnisnamen. Wenn es auf verschiedenen Hosts unterschiedlich ist, können Sie Hostvariablen verwenden, um es entsprechend einzustellen.


Linux
  1. A bis Z Linux-Befehle

  2. So bringen Sie Ihr System zum Absturz:Gefährliche Linux-Befehle

  3. 5 Beispiele für Modem-At-Befehle unter Linux (So konfigurieren Sie Minicom)

  4. Wie speichere ich die Befehlsausgabe in Ansible in einem Array?

  5. Wie kann man Befehlen in einem Bashrc-Alias ​​entkommen?

So korrigieren Sie einfach falsch geschriebene Bash-Befehle in Linux

So finden Sie die am häufigsten verwendeten Befehle unter Linux

So überprüfen Sie den Verlauf der Linux-Befehle nach Datum

3 nützliche Tipps zur Verwendung des Verlaufsbefehls unter Linux

So führen Sie mehrere Linux-Befehle in einem einzigen Befehl aus

So führen Sie mehrere Linux-Befehle gleichzeitig im Linux-Terminal aus