Blockinfileがアンサーブルでは機能しません。

Blockinfileがアンサーブルでは機能しません。

ansibleを使用してリモートホストにデータブロックを入力する必要がありますが、「blockinfile」を試しましたが、成功しませんでした。

しかし、localhostで同じタスクを実行すると、うまく機能しますが、なぜそうなのかわかりません。

---
 - hosts: 1.1.0.1
   tasks:
   - name: putting /tmp/fire.txt File on all machine.
     blockinfile:
      dest: /tmp/fire.txt
      Block: | 


 *filter
    :INPUT   DROP   [0:0]
    :FORWARD DROP   [0:0]
    :OUTPUT  ACCEPT [0:0]
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
    -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
    -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
    -A INPUT -p udp --sport 53 -j ACCEPT
    -A INPUT -p tcp --dport 80   -j ACCEPT
    -A INPUT -p tcp --dport 443  -j ACCEPT
    -A INPUT -p tcp --dport 23   -j ACCEPT
    -A INPUT -p tcp --dport 22   -j ACCEPT
    -A INPUT -p tcp --dport 3260   -j ACCEPT --comment "Enable iscsi port"
    -A INPUT -p tcp --dport 119   -j ACCEPT --comment "Enable nfs TCP  port"
    -A INPUT -p tcp --dport 2049   -j ACCEPT --comment "Enable nfs UDP port"
    COMMIT

答え1

あなたのスクリプトには2つの(おそらく3つの)問題があるようです。このパラメーターはBlock存在せず、block小文字です。 b。これにより、ブロックが正しくインデントされなくなります。ブロックパラメータのインデントよりもブロックをインデントする必要があります。ファイルが/tmp/fire.txt存在しない場合でも失敗します。

動作するスクリプトは次のとおりです。

---
 - hosts: 1.1.0.1
   tasks:
   - name: putting /tmp/fire.txt File on all machine.
     blockinfile:
      dest: /tmp/fire.txt
      block: | 


       *filter
          :INPUT   DROP   [0:0]
          :FORWARD DROP   [0:0]
          :OUTPUT  ACCEPT [0:0]
          -A INPUT -i lo -j ACCEPT
          -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
          -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
          -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
          -A INPUT -p udp --sport 53 -j ACCEPT
          -A INPUT -p tcp --dport 80   -j ACCEPT
          -A INPUT -p tcp --dport 443  -j ACCEPT
          -A INPUT -p tcp --dport 23   -j ACCEPT
          -A INPUT -p tcp --dport 22   -j ACCEPT
          -A INPUT -p tcp --dport 3260   -j ACCEPT --comment "Enable iscsi port"
          -A INPUT -p tcp --dport 119   -j ACCEPT --comment "Enable nfs TCP  port"
          -A INPUT -p tcp --dport 2049   -j ACCEPT --comment "Enable nfs UDP port"
          COMMIT

答え2

コンピュータの/ tmp / fire.txtにローカルにwhileファイルを保存し、コピーモジュールを使用する代わりにblockinfileモジュールを使用する特別な理由はありますか?

---
 - hosts: 1.1.0.1
   tasks:
    - name: putting /tmp/fire.txt File on all machine.
      copy:
          src: /tmp/fire.txt
          dest: /tmp/fire.txt

それ以外の場合は、ブロックキンファイルを使用するときにそのファイルが実際にターゲットに存在しますか?

関連情報