Модуль замены 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'

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

0
задан 27 November 2018 в 18:24
2 ответа

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

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

   - name: uncomment virtualhost starting line
     replace:
       path: /opt/conf/httpd.conf
       regexp: '^#(.*<VirtualHost \*:443>.*)'
       replace: '\1'
0
ответ дан 5 December 2019 в 05:01

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

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

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

0
ответ дан 5 December 2019 в 05:01

Теги

Похожие вопросы