Estoy en un entorno de trabajo “algo” cerrado en el cual solo me dejan conectar a los repositorios de ubuntu(web), rubygems(web) y el repositorio git(ssh). El acceso entre servidores es abierto totalmente.
.
Para solucionar el tema de la actualización e instalación de paquetes vía aptitude a través del proxy web. Creamos el fichero /etc/apt/apt.conf y ponemos lo siguiente:
Acquire::http:Proxy "http://nuestro.web.proxy:puerto";
.
La actualización de las gemas pasando por el proxy web hay que jugar con la variable de entorno HTTP_PROXY:
export HTTP_PROXY=http://nuestro.web.proxy:puerto
Nota: Si queremos lo podemos poner en nuestro /etc/profile para que quede configurado globalmente.
.
El acceso al repositorio Git lo hacemos a través de un proxy SOCKS, las anteriores estrategias no nos sirven de nada. He tenido que usar tsocks, que captura las peticiones y las hace pasar por el proxy SOCKS que le indiques en la configuración.
Lo instalamos con aptitude. El fichero de configuración es autoexplicativo (/etc/tsocks.conf). Y su funcionamiento es sencillo, por ej:
$ tsocks git pull --rebase
.
.
¡Capistrano extraball!
En este entorno para que Capistrano funcione usando tsocks (conectar al repositorio través del proxy SOCKS) sólo he tenido que configurar la variable scm_command:
set :scm_command, "tsocks git"
Y así ha ido como la seda
.
Otra cosa que leí de aquí[1] y que me pareció interesante para un entorno totalmente cerrado(en el que haya que pasar por el proxy SOCKS incluso para conectar entre los servidores locales). Es la de hacer que todas las conexiones pasen por el proxy SOCKS modificando el config/deploy.rb de Capistrano:
require 'net/ssh/proxy/socks5'
sshproxy = Net::SSH::Proxy::SOCKS5.new('proxy.com', 1080)
set :ssh_options, { :proxy => sshproxy }
.
[1] http://michaelshadle.com/2010/04/30/getting-apistranos-ssh-method-to-work-behind-a-socks-proxy