Главное помнить, что в цель
команды выполняются в chroot
среда. Они не выполняются в полностью загруженной системе, где запущены и доступны основные процессы, такие как systemd.
Тестирование
Я настроил playbook на основе задач STIG на скриншоте и запустил его из preseed. Я видел те же результаты, что и вы.
---
- хосты: локальный
собрать_факты: нет
подключение: местное
задачи:
- имя: проверьте, установлен ли rsyslog.service
ракушка: ! systemctl list-unit-files | grep "^rsyslog.service[ \t]\+"
изменено_когда: Ложь
check_mode: нет
регистрация: результат
failed_when: результат.rc > 1
- имя: стигруле_219160_rsyslog_enable
оказание услуг:
имя: rsyslog.service
включено: "да"
d-i pkgsel/include строка доступна
d-i preseed/late_command строка \
wget -P /target/ http://REDACTED/my_playbook.yml ; \
in-target ansible-playbook -i /dev/null -b -v /my_playbook.yml
Доступные бионические пакеты 2.5.1
и эта версия сервисного модуля кажется, выполняет systemctl показать rsyslog.service
. Это не работает в среде chroot. Чтобы продемонстрировать, если я открою терминал в среде установщика и запущу in-target systemctl показать rsyslog.service
то файл журнала покажет вывод
in-target: работает в chroot, игнорируя запрос: показать
Возможное исправление
Я нашел патч в Ansible 2.3, который решает проблему что systemctl будет игнорировать команды при работе в среде chroot. Это применялось только к системад
модуль хоть и не тот оказание услуг
модуль. Я обновил свою пьесу, и она успешно работает.
---
- хосты: локальный
собрать_факты: нет
подключение: местное
задачи:
- имя: проверьте, установлен ли rsyslog.service
ракушка: ! systemctl list-unit-files | grep "^rsyslog.service[ \t]\+"
изменено_когда: Ложь
check_mode: нет
регистрация: результат
failed_when: результат.rc > 1
- исправлено имя: stigrule_219160_rsyslog_enable
системный:
имя: rsyslog.service
включено: "да"
Таким образом, вы можете продвинуться дальше, изменив задачу (задачи) STIG, не используя оказание услуг
модуль для использования системад
модуль.