Carregando o crontab do arquivo na inicialização

1

Estou iniciando máquinas de uma AMI (Amazon Machine Image) no AWS (Amazon Web Services) e quero carregar o crontab dinamicamente de um arquivo em vez de usar o crontab da AMI. Uma abordagem que pensei foi configurar o crontab da AMI para algo como:

@reboot crontab [CRONTAB_FILE]

O problema com essa abordagem é que as programações do @reboot em CRONTAB_FILE não serão executadas usando-a.

Qualquer outra maneira de conseguir isso? Alguma maneira de alterar o crontab antes do daemon começar?

Minhas máquinas estão rodando Debian se isso faz diferença.

    
por lribinik 16.06.2015 / 11:48

1 resposta

0

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ê.

    
por 16.06.2015 / 12:06

Tags