Thank you for reading this post, don't forget to subscribe!
Ansible – это инструмент автоматизации ИТ.
Ansible Lint – это инструмент командной строки, который анализирует код плейбука на предмет потенциальных ошибок.
Ansible – это инструмент автоматизации ИТ с открытым исходным кодом.
Цель этого инструмента – конфигурирование систем, развертывание программного обеспечения и многое другое.
Обычно Ansible подключается к другим узлам через SSH и проталкивает в них модули Ansible. Ansible хранит свои конфигурации в файлах .yml.
Он определяет, как Ansible должен работать на узлах. Поэтому ошибки в YAML-файлах могут повлиять на работу Ansible.
Именно здесь мы используем инструмент командной строки, ansible-lint. Мы используем эту команду для линтинга плейбуков или файлов .yml в Ansible.
Процесс линтинга запускает программу, которая анализирует код и находит потенциальные ошибки в коде Ansible.
То есть она обнаруживает поведение и методы, которые нуждаются в улучшении.
Он может обнаружить синтаксические ошибки, неопределенные переменные и т.д.
Установка инструмента линтинга Ansible
Ansible-lint – это инструмент командной строки.
Он не входит в пакет Ansible, поэтому нам необходимо установить его. Мы можем установить его различными способами.
Чтобы установить его с помощью встроенного менеджера пакетов в Ubuntu, выполните команду,
apt install ansible-lint
Поскольку ansible-lint – это пакет Python, мы можем установить его с помощью команды,
pip install ansible-lint
Теперь давайте посмотрим, как его использовать!
Как использовать ansible-lint?
Чтобы получить полную информацию об использовании команды linting, мы используем,
ansible-lint --help
И вывод выглядит следующим образом:
Существует множество правил по умолчанию, используемых при линте плейбука.
Чтобы перечислить их, мы используем команду:
ansible-lint -L
Всего существует 18 правил по умолчанию.
Некоторые из них:
1 2 3 4 5 6 7 8 9 10 11 12 |
ANSIBLE0002: Trailing whitespace There should not be any trailing whitespace ANSIBLE0004: Git checkouts must contain explicit version All version control checkouts must point to an explicit commit or tag, not just "latest" ANSIBLE0005: Mercurial checkouts must contain explicit revision All version control checkouts must point to an explicit commit or tag, not just "latest" ANSIBLE0006: Using command rather than module Executing a command when there is an Ansible module is generally a bad idea ANSIBLE0007: Using command rather than an argument to e.g. file Executing a command when there is are arguments to modules is generally a bad idea ANSIBLE0008: Deprecated sudo Instead of sudo/sudo_user, use become/become_user. |
Например, если в плейбуке есть пробелы в конце, вывод линта будет выглядеть так:
ANSIBLE0002: Trailing whitespace
Выводится список нарушенных правил вместе с точным номером строки, где это произошло.
Аналогично, синтаксические ошибки в playbook выглядят следующим образом,
1 2 3 4 5 6 7 8 9 10 |
Syntax Error while loading YAML. did not find expected '-' indicator The error appears to be in '/etc/ansible/playbook.yml': line 14, column 6, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: name: Disable SELinux ^ here |
Здесь отображается ошибочная строка вместе с точной ошибкой.
Самое главное, пользователь должен запустить команду linting в том же месте, где находится файл .yml.
Для сканирования всех файлов .yml в данном месте мы можем использовать команду,
ansible-lint *.yml
Как его настроить?
Далее рассмотрим возможность пользовательской настройки инструмента линтинга.
Мы можем настроить ansible-lint в соответствии с нашими требованиями.
Помимо правил по умолчанию, мы можем указать дополнительные правила в файле.
А флаг командной строки -c <путь к файлу> приведет к линтингу плейбука на основе пользовательской конфигурации.