2016-03-19 9 views
0

リモートシステムにファイルをテンプレートアウトしようとしています。ファイルが呼び出されるべき:{{ var }}は番号が付けられた値である番号付きのコピー可能なコピーまたはテンプレート

app_healthcheck-{{ var }}.sh. 

、例えば01、02、03

は、リモートシステムがすでにこれらのファイルを持っているとしましょう:

app_healthcheck-01.sh 
app_healthcheck-02.sh 
app_healthcheck-03.sh 

私は」次のファイルをテンプレート化するときに次の利用可能な番号、つまり04を使用することができます。 不可能にするには、宛先に存在するファイルを調べ、使用する次の値を選択する必要があります。最初のファイルがある場合は01を選択します。

どのようにすればいいですか?

答えて

0

これは確かにAnsibleで可能ですが、私はAnsibleタスクでこれを行うことはちょっと複雑すぎると主張します。代わりに、あなたが好む言語でスクリプトを書いて、スクリプトモジュールでそれを単に実行することをお勧めします。あなたは、直接

  • コピーに以前に書き込まれた一時ファイル
  • をファイルを書き込むコピー/テンプレートタスク
  • に使用することができます

    • エコーそれ、:スクリプトは次のIDのいずれかを検出し、

      A最初のオプションをしているだけではbashスクリプトは次のようになります。

      #!/bin/bash 
      
      path=/tmp 
      name=app_healthcheck 
      
      i=1 
      while : ; do 
          j="00${i}" 
          j="${j: -2}" 
          if [ ! -f $path/$name-$j.sh ]; then 
          break 
          fi 
          let i++ 
      done 
      
      echo $j 
      

      をこれは、単に01をエコー、 02、...、99次の番号は無料です。

      スクリプトモジュールで実行してください。

      - script: myScript.sh 
          register: nextNumber 
      

      その後、私はその方向に向かっていた答えを{{ nextNumber.result }}

  • +0

    おかげで、その結果を使用しています。あなたのbashスクリプトがなぜi = 08のときに壊れているのか? 07より上のものを8進数として読み取るbashについて何かを読んでください。 – Narrabit10

    +0

    良い点は、3.までしかテストされていません;-)その場合、 'i'は変更しないでください。ちょうどそれを増やす。スクリプトを更新しました。 – udondan

    関連する問題