Мне нужно ввести блок данных на удаленном хосте с помощью 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
Есть ли какая-то конкретная причина, по которой вы используете модуль blockinfile, а не сохраняете файл while локально на своей машине в /tmp/fire.txt, а затем используете модуль copy?
---
- 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, существует ли файл на самом деле в месте назначения?