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을 사용할 때 해당 파일이 실제로 대상에 존재합니까?