Вопрос или проблема
Я пытался установить XRoad с помощью ansible и LXD, следуя этим шагам:
Sudo snap install lxd
lxd init
$ sudo apt update $ sudo apt install software-properties-common $ sudo add-apt-repository –yes –update ppa:ansible/ansible $ sudo apt install ansible ansible-playbook hosts -i hosts/lxd_hosts.txt xroad_init.yml
Я получил эту ошибку: Attribute Error: NoneType has no attribute “items”, что привело к lxd_container.py
ansible-loop-var item: xroad-lxd-cs
Localhost ok=1 failed=1
В первый раз, когда я делал почти те же шаги, я не получил никакой ошибки. Теперь я пытался установить Xroad на другой ВМ (Ubuntu) и получил эту ошибку.
Я использую Ubuntu 22.04
Спасибо за любую помощь
Я пробовал:
Переустановить lxd, ansible (на другие версии)
Установить python 3.12
Apt update + upgrade
Переключиться с Bridged на NAT
Переустановить Ubuntu
Изображения ошибки:
введите описание изображения здесь
введите описание изображения здесь
введите описание изображения здесь
введите описание изображения здесь
Ответ или решение
Проблема, с которой вы столкнулись при установке XRoad с использованием Ansible и LXD, связана с ошибкой AttributeError: NoneType has no attribute 'items'
, что указывает на то, что в коде модуля lxd_container.py
происходит обращение к объекту, который равен None
. Это может быть вызвано множеством причин, но, как правило, это связано с неправильной конфигурацией или отсутствующими данными.
Вот несколько шагов, которые вы можете предпринять для решения этой проблемы:
-
Проверка конфигурации LXD:
Убедитесь, что у вас правильно настроен LXD. Выполните командуlxc info
, чтобы проверить статус LXD и наличие доступных локальных контейнеров. Еслиlxd init
не выполнялся должным образом, попробуйте перезапустить его и убедиться, что все необходимые параметры заданы правильно. -
Проверка версии Ansible:
Убедитесь, что версия Ansible, которую вы используете, совместима с версией LXD. Попробуйте использовать стабильную версию Ansible, такую как 2.10 или выше, и убедитесь, что вы используете соответствующую версию Python (Python 3.8, например). -
Убедитесь, что у вас есть необходимые переменные:
Проверьте вашhosts/lxd_hosts.txt
и файлxroad_init.yml
. Убедитесь, что все переменные, которые ожидаются вxroad_init.yml
, играют свою роль и не являются пустыми. Ошибка может возникнуть, если Ansible пытается обработать переменные, которые не были заданы или были определены неправильно. -
Отключение фактов Ansible:
Если вы используете факты Ansible в вашей плейбуке, попробуйте временно отключить сбор фактов, добавивgather_facts: no
в начало вашего плейбука. Это может помочь вам определить, связана ли ошибка с частью кода, которая собирает факты. -
Обновление и переустановка пакетов:
Так как вы пробовали переустанавливать LXD и Ansible, убедитесь, что вы очищаете все старые зависимости. Попробуйте также удалить папки и файлы конфигурации, если они остались после удаления пакетов, затем переустановите необходимые пакеты. -
Просмотр логов:
Проверьте логи Ansible для получения более подробной информации относительно ошибки. Запустите Ansible с повышенным уровнем подробности, добавив-vvv
к вашей команде запуска, это может помочь определить, в каком именно месте происходит ошибка. -
Обратитесь к документации XRoad:
Возможно, представители проекта XRoad предложат дополнительные решения для установки на Ubuntu 22.04, если проблема вызвана уникальными аспектами данной версии ОС.
Если все вышеперечисленные шаги не помогли, я рекомендую создать issue на GitHub в репозитории проекта XRoad или Ansible, предоставив подробные сведения о вашей среде и возникшей ошибке. अभिनेत्री, включите журналы ошибок и конфигурацию, чтобы разработчики могли помочь вам более конкретно.