Blockinfile не работает в ansible

Blockinfile не работает в ansible

Мне нужно ввести блок данных на удаленном хосте с помощью 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, существует ли файл на самом деле в месте назначения?

Связанный контент