Из коробки нет опции, такой как cloud-init
, но вы можете создать свой собственный образ и использовать firstboot
, например, этот скрипт используется для bootstrap виртуальной машины с saltstack in AWS:
#!/bin/sh
# KEYWORD: firstboot
# PROVIDE: set_hostname
# REQUIRE: NETWORKING
# BEFORE: login
. /etc/rc.subr
name="set_hostname"
rcvar=set_hostname_enable
start_cmd="set_hostname_run"
stop_cmd=":"
export AWS_ACCESS_KEY_ID=key
export AWS_SECRET_ACCESS_KEY=secret
export AWS_DEFAULT_REGION=region
TAG_NAME="Salt"
INSTANCE_ID=$(/usr/local/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id)
REGION=$(/usr/local/bin/curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/.$//')
TAG_VALUE=$(/usr/local/bin/aws ec2 describe-tags --filters "Name=resource-id,Values=${INSTANCE_ID}" "Name=key,Values=$TAG_NAME" --region ${REGION} --output=text | cut -f5)
set_hostname_run()
{
hostname ${INSTANCE_ID}
sysrc hostname="${INSTANCE_ID}"
sysrc salt_minion_enable="YES"
echo ${INSTANCE_ID} > /usr/local/etc/salt/minion_id
pw usermod root -c "root on ${INSTANCE_ID}"
if [ ! -z "${TAG_VALUE}" ]; then
echo "node_type: ${TAG_VALUE}" > /usr/local/etc/salt/grains
fi
service salt_minion start
}
load_rc_config $name
run_rc_command "$1"
Для создания ваших собственных изображений вы можете использовать этот скрипт в качестве отправной точки: https://github.com/fabrik-red/images/blob/master/fabrik.sh#L124, подробнее здесь: https://fabrik.red/post/creating-the-image/
Вы также можете просто установить FreeBSD в Virtualbox, настроить сценарии, относящиеся к firstboot
, протестировать и, когда вы будете довольны результатами, экспортировать их, просто будьте осторожны перед экспортом, что /firstboot
существует (touch /firstboot
), так как после первой загрузки он будет удален, и может случиться так, что после экспорта, если его нет, он не будет вызывать сценарии.
После того, как вы создали образ вы можете использовать его несколько раз, нет необходимости каждый раз создавать новую «настраиваемую» виртуальную машину, все зависит от скриптов, которые вы используете для bootstrap и загружаете скрипты при «первой загрузке».