automatizando a configuração do CentOS 7 usando shell scripts

1

Noto que passo muito tempo usando tutoriais para configurar manualmente um servidor do CentOS 7. Como posso converter as etapas manuais de um tutorial em um script de shell automatizado que pode ser usado para configurar vários servidores CentOS 7 com as mesmas configurações?

Vamos usar este tutorial como exemplo, mas a resposta deve ser generalizável para outros scripts shell de configuração, além de simplesmente fornecer um script de shell funcional para automatizar este tutorial.

Aqui está minha primeira tentativa no shell script:

#!/bin/bash
yum update
yum install yum-utils bzip2 bzip2-devel wget curl tar
sudo yum install gcc-c++
cd /opt
wget http://nodejs.org/dist/v0.12.7/node-v0.12.7.tar.gz
tar zxf node-v0.12.7.tar.gz
cd node-v0.12.7
./configure --prefix=/usr/local
make
make install  
npm install bower -g  
npm install gulp -g  

Como escrevo corretamente o script de shell acima? E como verifico, por exemplo, que cada etapa é feita corretamente? Eu tenho que ser root para executar o acima. Se eu executar como sudoer, como faço para lidar com as solicitações periódicas de senhas? Ou o fato de estar em um shell script significa que você só precisa fornecer a senha sudoer quando chamar o script pela primeira vez?

Eu sou novato em shell scripts, então, por favor, seja paciente e explique na linguagem que outras pessoas que são novas no shell de scripts também podem entender.

Além disso, isso não é específico do CentOS 7 com coisas como yum install , etc.

    
por CodeMed 21.08.2015 / 21:23

2 respostas

2

Você tem várias peças para a sua pergunta, e eu não posso reivindicar familiaridade com todos os comandos que você executa, mas aqui está minha opinião:

Execute o script inteiro como root (diretamente) ou via sudo. Dessa forma, você não precisará executar o sudo no próprio script. Se você precisar de sudo para uma etapa específica, será necessário configurar sua ID com um sinalizador NOPASSWD em sudoers ou aceitar um prompt interativo para sua senha durante a execução do script.

Para responder a sua outra pergunta geral sobre cada passo executando corretamente, a maneira de fazer isso é checar o código de retorno do passo e esperar que o programa exiting defina o código de retorno apropriadamente.

Por exemplo:

Short-hand notation:

yum update && \
yum install yum-utils bzip2 bzip2-devel wget curl tar

Longer-hand:

yum update
RC=$?
if [ $RC -ne 0 ]
then
  print "Some error message here"
  exit 1 ## or some other identifying error code
fi

yum install yum-utils bzip2 bzip2-devel wget curl tar
RC=$?
if [ $RC -ne 0 ]
then
  print "Some other error message here"
  exit 2 ## or some other identifying error code
fi
...
    
por 21.08.2015 / 21:35
1

Como você mencionou que deve ser um script de shell automatizado, pelo menos para os dois comandos yum você precisaria adicionar -y , então yum assumirá uma resposta de " yes " para todas as questões ele perguntará.

Veja a página de manual do yum , trecho relevante:

   -y, --assumeyes
          Assume yes; assume that the answer to any question which would be asked is yes.
          Configuration Option: assumeyes

Para informações mais detalhadas sobre isso, incluindo algumas dicas importantes para prestar atenção, consulte a pergunta existente:

    
por 26.08.2015 / 19:48