Ansible Lint для сканирования плейбуков

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 пра­вил по умолчанию.

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

Напри­мер, если в плей­бу­ке есть про­бе­лы в кон­це, вывод лин­та будет выгля­деть так:

ANSIBLE0002: Trailing whitespace

Выво­дит­ся спи­сок нару­шен­ных пра­вил вме­сте с точ­ным номе­ром стро­ки, где это произошло.

Ана­ло­гич­но, син­так­си­че­ские ошиб­ки в playbook выгля­дят сле­ду­ю­щим образом,

Здесь отоб­ра­жа­ет­ся оши­боч­ная стро­ка вме­сте с точ­ной ошибкой.

Самое глав­ное, поль­зо­ва­тель дол­жен запу­стить коман­ду linting в том же месте, где нахо­дит­ся файл .yml.

Для ска­ни­ро­ва­ния всех фай­лов .yml в дан­ном месте мы можем исполь­зо­вать команду,

ansible-lint *.yml

Как его настроить?

Далее рас­смот­рим воз­мож­ность поль­зо­ва­тель­ской настрой­ки инстру­мен­та линтинга.

Мы можем настро­ить ansible-lint в соот­вет­ствии с наши­ми требованиями.

Поми­мо пра­вил по умол­ча­нию, мы можем ука­зать допол­ни­тель­ные пра­ви­ла в файле.

А флаг команд­ной стро­ки -c <путь к фай­лу> при­ве­дет к лин­тин­гу плей­бу­ка на осно­ве поль­зо­ва­тель­ской конфигурации.