de forma bastante simples - adicione-o como um script de inicialização - última linha do script depois de verificar tudo ok etc:
rm $ 0
Estou configurando alguns servidores que basicamente precisam gerenciar a si mesmos depois que eu saio da empresa, já que sou apenas o cara de TI contratado. Quem gerencia isso basicamente deve ser capaz de clonar uma imagem de VM no ESXi, e quando ela é inicializada, ela precisa se configurar.
Eu sei, você provavelmente está dizendo "Use Puppet ou Chef" ou "Use Docker", bem, foi o que eu pensei também, mas isso é aparentemente muito complicado para essa configuração, eles estão indo com o "menos é mais" abordagem.
Esses servidores precisam ter um endereço IP estático, então, o que eu estava pensando é quando ele é iniciado na primeira vez, eu poderia fazer com que ele puxasse um IP via DHCP e, em seguida, reconfigurasse o arquivo /etc/sysconfig/network-scripts/ifcfg-enp0s3
, usando o endereço IP atual como DHCP, e talvez até fique super chique, como testar se funciona, senão reverter o arquivo ifcfg-en0s3
, pegá-lo na rede, então mandar um email para alguém que o servidor precisa de alguma atenção manual, seja qual for o trabalho. / p>
O acima pode ser mais informação do que você precisa, porque tudo que eu preciso saber é ter um script rodando na primeira inicialização. Adicioná-lo a qualquer nível de execução fará com que ele seja executado toda vez que for iniciado nesse nível de execução.
Eu estava pensando que eu poderia tê-lo no nível de execução 3, então uma vez configurado, basta remover o link simbólico na pasta rc3.d
para o script ... Mas isso é meio que minha opção de backup, se eu não conseguir encontrar uma maneira de executá-lo na "próxima inicialização".
Eu também pensei em usar apenas @reboot
com um cron job, mas, novamente, isso tem que ser removido do crontab.
Se alguém me ajudar a encontrar uma solução diferente para a configuração de IP estático, tudo bem, mas eu ainda preciso saber a melhor maneira de ter um script iniciado na próxima inicialização (em runlevels especificados), porque é necessário para outros tarefas também.
Obrigado!
PS Eu percebo que ter o script fazendo coisas como remover-se dos diretórios crontab ou rc.d não é necessariamente um grande problema, eu só meio que achei que ele estava manipulando-o, e pensei que talvez já existisse uma maneira alternativa, algo que deveria ser executado uma vez, na próxima reinicialização. Mas se não, então qualquer uma das duas abordagens anteriores seria suficiente
PSS Encontrei um tópico semelhante aqui , que tem um script de execução @reboot
, e verifica se há arquivos / scripts em um diretório especificado que precise ser executado e, em seguida, os move para desativá-los. Eu suponho que isso funcionaria, eu posso fazer algo como links simbólicos para o diretório em vez de mover os arquivos por si mesmos, mas se essa é a melhor solução, então será suficiente. (qualquer que seja o trabalho feito :-))
de forma bastante simples - adicione-o como um script de inicialização - última linha do script depois de verificar tudo ok etc:
rm $ 0
Eu escrevi o script 'firstboot' para vários dispositivos de armazenamento físico e virtual nos últimos quinze anos e sempre usei o 'rm' do link simbólico após a conclusão bem-sucedida da primeira inicialização para garantir que ele não fosse executado em botas futuras.
A outra possibilidade é configurar um arquivo sentinela como '/ FIRSTBOOT' ao terminar a primeira inicialização, depois adicionar uma linha 'if [-f / FIRSTBOOT]; então ; saída 0; fi 'para o topo do script. Isso daria a opção de remover o arquivo sentinela e reinicializar caso você precise reconfigurar a máquina virtual novamente, o que é mais fácil para a maioria das pessoas do que ligar um arquivo obscuro a um diretório obscuro em algum lugar do sistema.
Você está no Centos 7, então você tem o systemd ao invés do SysV init. Então, o arquivo sentinela pode ser mais fácil para você.