systemadmin.es > Gestión de cofiguración > Ejecución de comandos con mcollective

Ejecución de comandos con mcollective

En mcollective no tenemos un método directo para ejecutar comandos al conjunto de servidores, pero podemos hacer un modulo para ello

Dicho modulo lo vamos a llamar rmrf y esta compuesto por los siguientes ficheros:

  • rmrf.ddl con la definición del modulo:
    metadata :name        => 'rmrf',
             :description => 'rmrf service for MCollective',
             :author      => 'Jordi Prats',
             :license     => 'GPLv2',
             :version     => '1.0',
             :url         => 'http://systemadmin.es',
             :timeout     => 60
    
    action 'run', :description => 'executes commands it receives' do
        display :always
    
        input :cmd,
              :prompt      => 'command',
              :description => '$ ',
              :type        => :string,
              :validation  => '.*',
              :optional    => false,
              :maxlength   => 1024
    
        output :msg,
            :description => 'command output',
            :display_as  => 'output',
            :default     => ''
    end
    
  • rmrf.rb contiene el código a ejecutar, en este caso un simple run:
    module MCollective
      module Agent
        class Rmrf :out, :stderr => :err)
          end
        end
      end
    end
    

Para instalar dicho modulo deberemos instalarlo dónde tengamos el cliente y el agente en función del libdir que encontraremos en el fichero de configuración de mcollective, por ejemplo:

# grep libdir /etc/mcollective/client.cfg 
libdir = /usr/share/mcollective/plugins

Los ficheros a instalar según el rol que tengan son:

  • cliente:
    • ${libdir}/mcollective/agent/rmrf.ddl
  • agente:
    • ${libdir}/mcollective/agent/rmrf.ddl
    • ${libdir}/mcollective/agent/rmrf.rb

Una vez desplegado, podemos ejecutar los comandos mediante mco, por ejemplo:

# mco rpc rmrf run --arg cmd='cat /proc/sys/kernel/hostname' -I example1

 * [ ============================================================> ] 1 / 1


example1                                      
      err:
   output: 0
      out: example1



Finished processing 1 / 1 hosts in 40.28 ms

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>