Назад | Перейти на главную страницу

Модуль замены ansible не работает должным образом

моя доступная книга для игр работает на меня, чтобы раскомментировать определенные строки в файле .conf, но его ошибка для одной конкретной строки не вносит никаких изменений.

ниже моя часть файла .conf.

   #<VirtualHost *:443>
      #SSLEnable
   #Header always set Strict-Transport-Security "max-age=31536000 includeSubDomains; preload"
   #</VirtualHost>

Ожидаемый результат


       <VirtualHost *:443>
          SSLEnable
       #Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        </VirtualHost>

ниже моя игра

   - name: uncomment virtualhost starting line
     replace:
       path: /opt/conf/httpd.conf
       regexp: '^#(.*<VirtualHost *:443>.*)'
       replace: '\1'
   - name: uncomment virtualhost end line
       replace:
         path: /opt/conf/httpd.conf
         regexp: '^#(.*</VirtualHost>.*)'
         replace: '\1'

Здесь моя конечная строка виртуального хоста раскомментируется, а начальная строка - нет ... не могли бы вы направить меня сюда ...

Попытайтесь убежать от * в *:443. В противном случае он будет интерпретирован как управляющий символ для регулярного выражения:

regexp: '^#(.*<VirtualHost \*:443>.*)'

https://docs.python.org/2/library/re.html

* - специальный символ в регулярном выражении, это подстановочный знак.

Замените первую задачу следующей (я изменил только параметр regexp):

   - name: uncomment virtualhost starting line
     replace:
       path: /opt/conf/httpd.conf
       regexp: '^#(.*<VirtualHost \*:443>.*)'
       replace: '\1'