🐙

Ansible Lintがコケるようになったので解決した

2022/03/06に公開

概要

GitHub Pull Request作成時にGitHub ActionsでAnsible Lintを実行するようにしていたのですが、久しぶりに実行したら以下のエラーが出ていました。

ansible-lint -p playbooks
  shell: /usr/bin/bash -e {0}
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.8.12/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.8.12/x64/lib
Traceback (most recent call last):
  File "/opt/hostedtoolcache/Python/3.8.12/x64/bin/ansible-lint", line 8, in <module>
    sys.exit(_run_cli_entrypoint())
  File "/opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/ansiblelint/__main__.py", line 299, in _run_cli_entrypoint
    sys.exit(main(sys.argv))
  File "/opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/ansiblelint/__main__.py", line 211, in main
    from ansiblelint.generate_docs import rules_as_rich, rules_as_rst, rules_as_str
  File "/opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/ansiblelint/generate_docs.py", line 6, in <module>
    from rich.console import render_group
ImportError: cannot import name 'render_group' from 'rich.console' (/opt/hostedtoolcache/Python/3.8.12/x64/lib/python3.8/site-packages/rich/console.py)
Error: Process completed with exit code 1.

実行環境

  • Ansible 4.5.0
  • Ansible Lint 5.1.3
  • Python 3.8.12

原因

以下のIssueに上げられていますが、Ansible Lintが依存しているRich[1]のバージョンがv11.0.0に上がったことで名前空間が変更されたためです。

ImportError: cannot import name 'render_group' from 'rich.console' · Issue #1795 · ansible-community/ansible-lint

対処方法

修正PRがすでにマージされていますので、Ansible Lintのバージョンを5.3.2以上にすれば解決です。

Make code compatible with rich 11 by rabi · Pull Request #1797 · ansible-community/ansible-lint

Release v5.3.2 · ansible-community/ansible-lint

脚注
  1. ターミナル上にリッチなテキストを出力するライブラリ ↩︎

Discussion