Обновление политики контекста файла и состояние гонки при использовании

man sedскажу вам:

Sed commands can be given with... one address, in which case the
command will only be executed for input lines which match that address;
...
/regexp/
          Match lines matching the regular expression regexp.

Так что можно:

sed '/Package/ s/replace/stuff/'
0
12.09.2020, 16:58
1 ответ

Это действительно зависит от того, как вызывается Ansible.

Даже если мультиплексирование SSH (включено по умолчанию )и конвейерная обработка SSH -(часто рекомендуется ), Ansible (с версии 2.9.11 )относительно -входов и запусков каждая задача в новом процессе Python.

В этой среде добавленный файловый контекст сразу виден в файловой задаче.

Однако при запуске playbook с включенным подключаемым модулем подключения Mitogen последовательные задачи выполняются в одном и том же процессе Python. И тогда изменение контекста файла фактически кэшируется на уровне процесса.

Он кэшируется, потому что Ansible вызываетselinux.matchpathcon()selinux_default_context(), module_utils/basic.py), чтобы получить контекст файла по умолчанию. Оказывается, matchpathcon()устарел и внутренне кэширует все файловые контексты при первом вызове. Возможное исправление состоит в том, что модуль sefcontextвызываетselinux.matchpathcon_fini()после того, как он вызывает перезагрузку политики.

Это происходит с подключаемым модулем подключения Mitogen , поскольку он очень хорошо подходит для повторного использования соединений ssh ​​и процессов python. И это хорошо, потому что это значительно ускоряет выполнение плейбука.

См. также

Аналогичная проблема в Puppet -, так как Puppet работает как агент -все задачи всегда выполняются в одном и том же процессе -и Puppet также использовал matchpathcon()API без сброса кэша при изменении контекста файла в системной памяти. Политика SELinux.

0
18.03.2021, 23:05

Теги

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