📜 Как использовать Ansible Lint для сканирования плейбуков

Мануал

Вы хотите узнать, как использовать Ansible Lint?

Ansible – это инструмент автоматизации ИТ.

Ansible Lint – это инструмент командной строки, который анализирует код плейбука на предмет потенциальных ошибок.

Сегодня мы расскажем о том, как помогает процесс линтинга.

Что такое ansible-lint?

Прежде чем перейти к ansible-lint, давайте посмотрим на Ansible.

Ansible – это инструмент автоматизации ИТ с открытым исходным кодом.

Цель этого инструмента – конфигурирование систем, развертывание программного обеспечения и многое другое.

Обычно Ansible подключается к другим узлам через SSH и проталкивает в них модули Ansible. Ansible хранит свои конфигурации в файлах .yml.

Важным файлом YAML является плейбук Ansible.

Он определяет, как 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 правил по умолчанию.

Некоторые из них:

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 выглядят следующим образом,

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 <путь к файлу> приведет к линтингу плейбука на основе пользовательской конфигурации.

Заключение

Итак, мы рассмотрели, как использовать инструмент командной строки ansible-lint

см. также:

Добавить комментарий