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

Моя сборная игра работает для меня, чтобы раскомментировать определенные строки в файле.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'

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

2 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам