Можно ли запустить Ansible на голом железе для установки ОС на нескольких машинах вместе с установкой ПО и развертыванием КОДА?
Чтобы установить ОС на «голом железе» с помощью Ansible, потребуются как 1) модули для управления хостами, так и 2) модули для подготовки инфраструктуры обеспечения.
Есть список Модули удаленного управления в том числе, например Hpilo. Но я не знаю ни одного системного списка модулей Ansible для управления голым железом.
Существуют также модули Ansible для управления хорошо известными фреймворками, обеспечивающими инфраструктуру обеспечения. Например Сапожник или OpenStack Ironic. Но здесь это не так важно. Разумеется, такую инфраструктуру обеспечения можно построить любыми способами.
К сожалению, Оголенный метал раздел «Платформы инфраструктуры» не очень полезен и указывает на все Облачные модули.
Без доступного модуля управления невозможно запустить Ansible на голом железе. На управляемом хосте Ansible нуждается в предустановленное ПО, включен связь и эскалация. FWIW, в качестве примера, ниже мой сценарий firstboot.sh для включения Ansible во FreeBSD.
#!/bin/sh
VERSION="1.0.0"
USERNAME="admin"
# Install packages
env ASSUME_ALWAYS_YES=YES pkg install security/sudo
env ASSUME_ALWAYS_YES=YES pkg install lang/perl5.30
env ASSUME_ALWAYS_YES=YES pkg install lang/python37
env ASSUME_ALWAYS_YES=YES pkg install security/py-openssl
env ASSUME_ALWAYS_YES=YES pkg install archivers/gtar
# Create user
if (! getent passwd ${USERNAME} > /dev/null); then
if (pw useradd -n ${USERNAME} -s /bin/sh -m); then
printf "[OK] user ${USERNAME} created\n"
else
printf "[ERR] can not create user ${USERNAME}\n"
fi
else
printf "[OK] user ${USERNAME} exists\n"
fi
# Create directories and files
# $HOME/.ssh
if [ ! -e /home/${USERNAME}/.ssh ]; then
if (mkdir /home/${USERNAME}/.ssh); then
printf "[OK] dir /home/${USERNAME}/.ssh created\n"
else
printf "[ERR] can not create dir /home/${USERNAME}/.ssh\n"
fi
else
printf "[OK] dir /home/${USERNAME}/.ssh exists\n"
fi
[ -e /home/${USERNAME}/.ssh ] && chmod 0700 /home/${USERNAME}/.ssh
# $HOME/.ssh/authorized_keys
[ ! -e /home/${USERNAME}/.ssh/authorized_keys ] && \
touch /home/${USERNAME}/.ssh/authorized_keys
[ -e /home/${USERNAME}/.ssh/authorized_keys ] && \
chmod 0600 /home/${USERNAME}/.ssh/authorized_keys
chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}
# Configure sudoers
cp /usr/local/etc/sudoers.dist /usr/local/etc/sudoers
chown root:wheel /usr/local/etc/sudoers
chmod 0440 /usr/local/etc/sudoers
echo "${USERNAME} ALL=(ALL) NOPASSWD: ALL" >> /usr/local/etc/sudoers
# EOF
Возможен голый металл, в составе подготовка сценариев использования. Ansible может работать на многих платформах и взаимодействовать со многими операционными системами и API-интерфейсами оркестратора. Примеры:
ansible-pull
сценарий оболочки.Вам понадобится интерпретатор Python для запуска Ansible, некоторые учетные данные для систем и некоторые процедуры, которые можно автоматизировать для этого. Обычно предварительным условием для начала работы является некоторая система управления, даже если это всего лишь ноутбук, с которого запускается Ansible.
Количество усилий зависит от того, что вы пытаетесь сделать. Экземпляры AWS EC2 на чистом металле можно создавать аналогично виртуальным. Стойка с оборудованием без красивого API может оказаться довольно длинным учебником.