Eu costumo apenas crontab -u user file
em algo como /etc/rc.local e tenho que carregar uma guia cron. Outros então, não há muito o que fazer.
Eu normalmente faria algo como: (em rc.local)
wget http://169.254.169.254/latest/meta-data/instance-id -O /tmp/instance
INSTANCE='cat /tmp/instance'
KEY="/etc/pk.pem"
CERT="/etc/cert.pem"
CONFIG='ec2-describe-tags -K $KEY -C $CERT -F "resource-id=$INSTANCE" -F "key=ConfigBucket" | awk '{print $5}''
if [ -n $CONFIG ]; then
s3cmd -c /etc/.s3cfg sync s3://$CONFIG/etc/ /etc
chmod +x /etc/post-ec2-start.sh
/etc/post-ec2-start.sh
fi
exit 0
Então, em /etc/post-ec2-start.sh
#!/bin/bash
wget http://169.254.169.254/latest/meta-data/instance-id -O /tmp/instance
INSTANCE='cat /tmp/instance'
KEY="/etc/pk.pem"
CERT="/etc/cert.pem"
VOL1="vol-12345678"
VOL2="vol-87654321"
IP="54.123.123.132"
ec2-attach-volume -K $KEY -C $CERT $VOL1 -i "$INSTANCE" -d /dev/sdf
ec2-attach-volume -K $KEY -C $CERT $VOL2 -i "$INSTANCE" -d /dev/sdg
ec2-associate-address -K $KEY -C $CERT -i "$INSTANCE" $IP
sleep 90
mount /dev/sdf1 /home/
mount /dev/sdg1 /var/lib/mysql
hostname some.fqdn.com
#register crontabs
#crontab -u coteyr /etc/coteyr.crontab
crontab -u root /etc/root.crontab
#fix home directoris
cd /home/
for i in *; do
useradd $i
chown -R $i:$i /home/$i
done
Isso tem o benefício de carregar a configuração do S3 e, em seguida, executar com base nessa configuração. Se eu precisasse de coisas para rodar no (re) boot, eu apenas adicionaria ele ao /etc/post-ec2-start.sh ou /etc/rc.local dependendo se eu precisasse dele como parte da configuração ou após o a configuração estava completa. Algo semelhante deve funcionar para você.