Référence rapide

Aide-mémoire de la gem Ruby Do (exécution distante)

Guide rapide pour la gem Ruby DO : connexions serveur SSH, exécution de commandes à distance, inspection de fichiers, transferts et modifications de contenu.

· Publié le

DO est une gem Ruby offrant un DSL clair et chaînable pour exécuter des commandes et gérer des fichiers en SSH sur des serveurs Linux distants.

Connexion au serveur

require 'do'

# Initialiser la connexion par clé SSH
server = DO::Server.new('srv1', 'node1.example.com', 'root', key: ['~/.ssh/id_rsa'])

Exécuter des commandes

# Commande unique
output = server.run 'uname -a'

# Plusieurs arguments de commande
server.run 'apt-get', 'update', '-y'

# Commandes avec réponses sur stdin
server.run 'passwd user', 'newpassword', 'newpassword'

Inspection et transfert de fichiers

# Vérifier l’existence d’un fichier
server.exist?('/etc/nginx/nginx.conf') # → true / false

# Lire le contenu d’un fichier distant
content = server.read('/etc/os-release')

# Téléverser un fichier local vers le serveur
server.upload('/local/app.tar.gz', '/var/www/app.tar.gz')

# Télécharger un fichier distant sur le disque local
server.download('/var/log/nginx/access.log', './logs/access.log')

Manipulation distante de contenu

# Remplacer tout le contenu
server.replace :all, 'new configuration text', '/etc/app/config.env'

# Remplacement par expression régulière
server.replace /^PORT=\d+$/, 'PORT=8080', '/etc/app/config.env'

# Ajouter du contenu (en bas par défaut, ou en haut)
server.append 'export PATH=$PATH:/opt/bin', '~/.bashrc'
server.append '# Autogenerated File', '/etc/motd', :top

Invites interactives

# Demander une saisie à l’utilisateur
answer = server.ask 'Enter deployment tag:'

# Confirmation Oui/Non
if server.yes? 'Do you want to run database migrations?'
  server.run 'bundle exec rake db:migrate'
end

# Attendre l’appui sur Entrée
server.wait

Sujets associés