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

귀하의 스크립트에 두 가지(아마도 세 가지) 문제가 있는 것으로 보입니다. 이 매개변수는 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

그렇지 않으면 blockinfile을 사용할 때 해당 파일이 실제로 대상에 존재합니까?

관련 정보