Andres Vargas - zodman

Agregando una regla de configuración masivamente al nginx

Fácil fácil en mi trabajo tenemos como 300 sitios configurados en un servidor proxy de nginx.
Sitios de java, estáticos, python, php etc etc…. un chingo.
Ahora me surge un problema, que es agregar masivamente una regla para que google no indexe todas los dominios.

Modificar 300 archivitos de uno en uno poniendo dentro del server { conf } la configuración, así nunca acabaré.

#/etc/nginx/robots.conf
location /robots.txt {
      alias /export/web/robots.txt; 
}

Así que encontré el modulo python-nginx el cual es un parser de configuración del nginx. El cual hara la magia.

# /etc/nginx/addrobotst.py 
import nginx
import sys

filename = sys.argv[1]
nginx_server = nginx.loadf(filename)
nginx_server.server.add(nginx.Key("include","robots.conf"))
with open(filename, "w") as f:
     f.write("".join(nginx_server.as_strings))

Ya con el script ejecuto:

$ grep -L "robots" sites-enabled* -R
...

$ grep -L "robots" sites-enabled* -R | xargs -i[] python addrobots.py []
$ nginx -t 
$ service nginx restart

El grep -L “robots” me busca todos los archivos que no tengan el string robots. Así me facilita las cosas.

#Opensource #Python #Sysadmin #Tips #Pythonninja