Ansible - Проверить, существует ли строка в файле с регулярным выражением - PullRequest
2 голосов
/ 27 сентября 2019

Мне нужно проверить, что параметр PermitRootLogin равен «нет», например:

PermitRootLogin no

Но иногда между этими словами есть несколько пробелов.По этой причине я использую регулярное выражение, но, видимо, я делаю это неправильно.Это строка, которая кажется плохой:

when: check_config.stdout.find('PermitRootLogin\s+no') != -1

Есть идеи, как это исправить?

- hosts: redhat
  tasks:

  - name: check file
    shell: cat /etc/ssh/sshd_config
    register: check_config

  - name: compare string 
    when: check_config.stdout.find('PermitRootLogin\s+no') != -1
    debug: msg="this server is ok"

1 Ответ

1 голос
/ 27 сентября 2019

Q: Мне нужно проверить, что параметр PermitRootLogin равен «нет»

A: Использовать lookup и выберите , чтобы узнать, в порядке ли сервер.Например,

- debug:
    msg: 'this server is ok'
  when: lookup('file', '/etc/ssh/sshd_config').splitlines()|
        select('match', '^PermitRootLogin\s+no$' )|list

Если вы хотите поместить / заменить строку в конфигурации, используйте lineinfile .Например,

- lineinfile:
    path: /etc/ssh/sshd_config
    regexp: '^PermitRootLogin(.*)$'
    line: 'PermitRootLogin no'

(не проверено)


Примечания
  • Плагины поиска оцениваются на управляющем компьютере Ansible, а не на цели / удаленном устройстве.Используйте делегат_в для проверки удаленного хоста.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...