В первой части цикла я показал, как автоматизировать тестирование микроконтроллеров вручную, во второй — как развернуть CI/CD стенд с помощью Docker-контейнера. Но даже с Docker остаётся много рутинных шагов при настройке среды на новых машинах. Решение — автоматизация через Ansible, чтобы практически полностью избавиться от ручных команд.
Ansible позволяет описать все шаги настройки среды в виде ролей и запускать их одной командой. Теперь я больше НИКОГДА не буду проделывать эти шаги руками и вспоминать, что ещё нужно доустановить в систему прежде чем ставить нужную мне утилиту.
Что входит в коллекцию
Коллекция содержит роли для установки:
arm-none-eabi-gcc (кросс-компилятор для ARM)
SEGGER J-Link (отладчик и программатор)
can-utils и драйвер PEAK CAN (для работы с CAN-шиной)
Роли можно комбинировать, расширять, использовать выборочно.
Быстрый старт
Настройте целевую машину (Ubuntu, OpenSSH, Ansible). Установите Ansible:
sudo apt update && sudo apt install ansibleУстановите коллекцию через Ansible Galaxy:
ansible-galaxy collection install paulfirs.baremetalСоздайте playbook, например,
site.yml, либо возьмите готовый изexmples:- hosts: all become: yes roles: - paulfirs.baremetal.install_eabi_arm_gcc - paulfirs.baremetal.install_jlink - paulfirs.baremetal.install_can_toolsЗапустите playbook:
ansible-playbook -i "user@host," site.yml --ask-pass --ask-become-pass-i "user@host,"— инвентори в виде строки (можно использовать файл inventory)--ask-pass— запрос пароля пользователя для SSH (если не используется ключ)--ask-become-pass— запрос пароля для sudo (root-доступ) Можно использовать inventory-файл для массовой настройки.
Особенности реализации
PEAK CAN драйвер всегда скачивается с официального сайта, актуальная версия.
Все роли используют
become: yesдля работы с системными файлами и пакетами.Все зависимости устанавливаются автоматически.
README содержит подробные инструкции по установке и запуску.
Преимущества подхода
Быстрая и повторяемая настройка любого baremetal-окружения.
Минимум ручных действий — всё делается одной командой.
Легко расширять: можно добавить новые роли для других инструментов, либо исключить ненужные из
site.yml.Легко интегрировать в CI/CD пайплайны.
Заключение
Если вы часто настраиваете Linux-машины для embedded-разработки — попробуйте автоматизировать этот процесс с помощью Ansible. Экономьте время и избегайте ошибок!
Репозиторий: GitHub
Ansible Galaxy: paulfirs.baremetal
