Referencia rápida

Hoja de referencia de la gema Ruby Do de ejecución remota

Guía rápida para la gema Ruby DO: conexiones SSH a servidores, ejecución remota de comandos, inspección de archivos, subidas y reemplazos de contenido.

· Publicado

DO es una gema de Ruby que proporciona un DSL limpio y encadenable para ejecutar comandos y gestionar archivos por SSH en servidores Linux remotos.

Conexión al servidor

require 'do'

# Inicializar conexión con autenticación por clave SSH
server = DO::Server.new('srv1', 'node1.example.com', 'root', key: ['~/.ssh/id_rsa'])

Ejecución de comandos

# Comando único
output = server.run 'uname -a'

# Múltiples argumentos de comando
server.run 'apt-get', 'update', '-y'

# Comandos con respuestas por stdin
server.run 'passwd user', 'newpassword', 'newpassword'

Inspección y transferencia de archivos

# Comprobar existencia de archivo
server.exist?('/etc/nginx/nginx.conf') # → true / false

# Leer contenido de archivo remoto
content = server.read('/etc/os-release')

# Subir archivo local al servidor remoto
server.upload('/local/app.tar.gz', '/var/www/app.tar.gz')

# Descargar archivo remoto al disco local
server.download('/var/log/nginx/access.log', './logs/access.log')

Manipulación remota de contenido

# Reemplazar todo el contenido
server.replace :all, 'new configuration text', '/etc/app/config.env'

# Reemplazo mediante expresión regular
server.replace /^PORT=\d+$/, 'PORT=8080', '/etc/app/config.env'

# Añadir contenido (al final por defecto, o al principio)
server.append 'export PATH=$PATH:/opt/bin', '~/.bashrc'
server.append '# Autogenerated File', '/etc/motd', :top

Indicaciones interactivas

# Solicitar entrada al usuario
answer = server.ask 'Enter deployment tag:'

# Confirmación Sí/No
if server.yes? 'Do you want to run database migrations?'
  server.run 'bundle exec rake db:migrate'
end

# Esperar a pulsar Enter
server.wait

Temas relacionados