Привязки libse linux - python не являются простым python модулем. Модуль должен быть скомпилирован как с целевой версией Python , так и с целевой версией libse linux. Приятные люди, обслуживающие репозитории RedHat 5 EPEL, не генерировали модуль Python 2.6 / libse linux 1.33.
«Существующий» модуль libse linux - python из стандартных репозиториев не будет работать, потому что он указан c для поставляемого Python 2.4 интерпретатора. Если вы скопировали модуль из другой установки Python 2.6 - скажем, из системы RedHat 6 - это тоже не сработает, поскольку она построена на неправильной версии libse linux. В то время как вы можете развлекаться различными ошибками, создаваемыми различными комбинациями, Ansible не станет различать guish между ними; он просто скажет, что привязки недоступны.
Решение состоит в том, чтобы создать модуль 'stub' se linux python для усмирения Ansible. Создайте файл
/usr/lib64/python2.6/site-packages/selinux/__init__.py
со следующим содержимым:
def is_selinux_enabled():
return False
def is_selinux_mls_enabled():
return False
(это код Python, так что помните про отступы.) Это фактически отключает Ansible от работы с se linux. Кроме того, задачи, выполняемые в этих системах, не должны включать какие-либо атрибуты se linux, такие как setype или seuser . (Честно говоря, я не проверял это полностью.) Но основные c модули, такие как lineinfile или команда , теперь работают должным образом.
Это не требует отключения selinux; он только запрещает Ansible манипулировать se linux атрибутами. При необходимости вы всегда можете использовать один из модулей command для создания сценария вокруг него.