ansible을 사용하여 원격 호스트에 데이터 블록을 입력해야 합니다. "blockinfile"을 시도했지만 실패했습니다.
하지만 로컬 호스트에서 동일한 작업을 실행하면 잘 작동하는데 이유는 모르겠습니다.
---
- 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
while 파일을 컴퓨터의 /tmp/fire.txt에 로컬로 저장한 다음 복사 모듈을 사용하는 것과 반대로 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을 사용할 때 파일이 실제로 대상에 존재합니까?