Como evitar a repetição de comandos sed ao adicionar sites ao Varnish?

1

Este é o meu script para instalar o Varnish. Eu corro cada vez que eu levanto um novo ambiente de servidor em um VPS.

cd ~
apt-get update
apt-get install varnish -y
sed -i 's/Listen 80/Listen 8080/g' /etc/apache2/ports.conf
sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/000-default.conf
sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/domain1.tld.conf && a2ensite domain1.tld.conf
sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/domain2.tld.conf && a2ensite domain2.tld.conf
sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/domain3.tld.conf && a2ensite domain3.tld.conf
sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/domain4.tld.conf && a2ensite domain4.tld.conf
mkdir -p /etc/systemd/system/varnish.service.d # Be aware! You might not need this in the future.
cat <<-'VARNISH' > /etc/systemd/system/varnish.service.d/customexec.conf
[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
VARNISH
systemctl restart apache2.service && systemctl daemon-reload && systemctl restart varnish.service

Este segmento de código parece bastante "pesado", especialmente a repetitividade das operações sed em relação ao domain.tld.

Esse get é ainda mais "pesado" porque eu tenho um segmento de código que é semelhante em comprimento e que usa para mim desinstalar o verniz e reverter todas as alterações apenas em caso de desejo.

Minha pergunta:

Qual estratégia você tomará para tornar o script de instalação mais curto em geral (pelo menos menos linhas, talvez também menos comandos) e, em particular, para diminuir a quantidade de operações sed.

Notas:

  • Eu diria que a primeira coisa a fazer é, de alguma forma, unificar o ports.conf, 000-default.conf e cada arquivo .conf de cada site, tudo em uma única operação. Talvez através de um loop for em /etc/apache2/ports.conf/ && /etc/apache2/sites-available/*/ .
por JohnDoea 18.05.2017 / 08:13

1 resposta

0

Usando uma função e o GNU Parallel você substitui a seção repetitiva:

cd ~
apt-get update
apt-get install varnish -y
sed -i 's/Listen 80/Listen 8080/g' /etc/apache2/ports.conf

myfunc() {
    sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/$1 && 
      a2ensite $1
}
export -f myfunc

parallel myfunc  {/} ::: /etc/apache2/sites-available/*

mkdir -p /etc/systemd/system/varnish.service.d # Be aware! You might not need this in the future.
cat <<-'VARNISH' > /etc/systemd/system/varnish.service.d/customexec.conf
[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
VARNISH
systemctl restart apache2.service && systemctl daemon-reload && systemctl restart varnish.service
    
por 18.05.2017 / 18:43