GNU/Linux >> Linux の 問題 >  >> Linux

ansible コマンドでワイルドカードに言及する方法

コマンドラインで ansible を使用してアドホック コマンドを実行する場合、ワイルドカードは非常に便利です。ファイルがすべてのシステムに存在するかどうかを確認します。

私も苦労しました:$ ansible production -a "ls /mypath/*xxx*"

しかし、それを bash -c '...' でラップすると動作します:$ ansible production -a "bash -c 'ls /mypath/*xxx*'"


このように定義されたタスクは、トリックを行います:

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

Larsks が書いたように、キーは register を使用することです 、しかし、コードは現在の ansible バージョンでは機能していませんでした。これが修正されたものです:

- shell: ls -d solr*
  register: dir_name

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

いいえ、chdir= たとえば、 command へのパラメーター モジュールはワイルドカードをサポートしていません。

ls の出力を格納するレジスタ変数を使用して、目的を達成できます。 コマンド:

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

しかし、率直に言って、これは醜い解決策です。実際のディレクトリ名だけを使用する方がよいでしょう。ホストによって異なる場合は、ホスト変数を使用して適切に設定できます。


Linux
  1. AからZのLinuxコマンド

  2. システムをクラッシュさせる方法:危険なLinuxコマンド

  3. 5 Linux での Modem At コマンドの例 (Minicom の設定方法)

  1. LinuxでSuコマンドを使用する方法

  2. Linux でユーザー コマンドを制限する方法

  3. Linux コマンドを記録するにはどうすればよいですか?

  1. ワイルドカード*はコマンドとしてどのように解釈されますか?

  2. コマンド出力をAnsibleの配列に保存する方法は?

  3. bashrcエイリアスでコマンドをエスケープするには?