起動時にファイルからcrontabをロードする

起動時にファイルからcrontabをロードする

AWS(Amazon Web Services)のAMI(Amazon Machine Image)からコンピュータを起動し、AMIのcrontabを使用する代わりに、ファイルからcrontabを動的にロードしようとしています。私が考えた1つの方法は、AMIのcrontabを次のように設定することです。

@reboot crontab [CRONTAB_FILE]

このアプローチの問題は、CRONTAB_FILEの@rebootプランがそれを実行するために使用されないことです。

これを達成する他の方法はありますか?デーモンが起動する前にcrontabを変更する方法はありますか?

私のコンピュータはDebianを実行しています。違いがあれば。

ベストアンサー1

私は通常crontab -u user file/etc/rc.localと同じ場所にcronタブをロードします。それ以外にはあまりやるべきことはありません。

私は通常次のことをします:(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

その後、/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

これの利点は、S3で構成をロードしてからその構成に基づいて実行できることです。 (再)起動時に実行する項目が必要な場合は、設定構成の一部として必要か、設定が完了した後に必要かどうかに応じて、/etc/post-ec2-start.shまたは/etc/rc.localに追加します。完璧。同様のものがあなたに役立ちます。

おすすめ記事