Error Screen: There Is No Screen to Be Resumed Matching

Si al momento de querer recuperar una sesión screen donde tenemos un proceso corriendo y utilizamos el comando scren -r, como resultado de la operación obtenemos el siguiente mensaje:

1
2
3
4
[root@mail-old ~]$ screen -r '1866.zimbra-mta'
There is a screen on:
1866.zimbra-mta (Attached)
There is no screen to be resumed matching 1866.zimbra-mta

La solución es pasar el comando con la opción ‘-D’ que nos permite desatachar la sessión remota y atacharla en nuestra tty.

1
[root@mail-old ~]$ screen -r -D '1866.zimbra-mta'

Eliminar VM Vagrant

En Vagrant nuestra máquinas virtuales son borradas con el comando vm destroy pero sucede que aveces hemos borrado el directorio de la VM o el Vagrantfile y esta ya no puede ser referenciada mediante Vagrant para ser eliminada. Como Vagrant trabaja con VirtualBox podemos utilizar el comando VBoxManage para que la podamos eliminar.

Listamos todas la VM

1
2
3
4
5
6
7
8
9
Miguel:zimbra$ VBoxManage list vms
"puppetserver" {3830b010-4fca-4c29-9225-6647b1edcd7f}
"nagiosserver" {3178a761-0c61-4ffb-8fc8-d4bd4853be22}
"nagiosnode1" {90da5db9-2538-4fe5-b76f-af68f83a8397}
"nagiosnode2" {e32fb9be-fb34-4663-befb-900f43b60cfb}
"samba4" {f5c753c3-c8e0-4117-b05c-f635ebcae06d}
"docker.example.com" {0c5213d4-6d1a-40b9-9e44-cff9c3829d73}
"zimbra_default_1413222975386_53519" {969175c2-451c-42fc-98fd-7946d6796bcc}
"zimbra" {35ed5012-4b33-4b30-869b-35654b3e88b8}

Vamos a eliminar la máquina de la línea nº8 UID 969175c2-451c-42fc-98fd-7946d6796bcc

1
2
Miguel:zimbra$ VBoxManage unregistervm 969175c2-451c-42fc-98fd-7946d6796bcc -delete
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

Y ahora vemos que ya no esta

1
2
3
4
5
6
7
8
9
10
Miguel:zimbra$ VBoxManage list vms
"puppetserver" {3830b010-4fca-4c29-9225-6647b1edcd7f}
"CentOS-6.4-x86_64_1407080394847_1407" {bd5b11c8-a7e4-4c6e-b6f2-1646775e7f9a}
"nagiosServer_default_1407266455588_52667" {2f3d8ae9-c8e5-4557-a79e-503a1af4646a}
"nagiosserver" {3178a761-0c61-4ffb-8fc8-d4bd4853be22}
"nagiosnode1" {90da5db9-2538-4fe5-b76f-af68f83a8397}
"nagiosnode2" {e32fb9be-fb34-4663-befb-900f43b60cfb}
"samba4" {f5c753c3-c8e0-4117-b05c-f635ebcae06d}
"docker.example.com" {0c5213d4-6d1a-40b9-9e44-cff9c3829d73}
"zimbra" {35ed5012-4b33-4b30-869b-35654b3e88b8}

Eliminar Y Purgar Nodo De PuppetDB (Storeconfig)

Error:

1
2
3
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: A duplicate resource was found while collecting exported resources, with the type and title Nagios_host[next-haproxy-1.domain.org] on node nagios.domain.org
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

Lo anterior era por que el node estaba registrado dos veces en PuppetDB una con el fqdn completo next-haproxy-1.domain.org y otra sin el dominio next-haproxy-1 lo que generaba error al exportar los recursos. La solución fue eliminar uno y luego purgar el contenido de la base de datos:

  • Remover el nodo de PuppetDB
  • 1
    
    [root@nagios servers]$ puppet node deactivate next-haproxy-1
    

  • Remover el nodo de la DB
  • 1
    2
    3
    4
    5
    
    [root@puppet ~]$ psql -h 127.0.0.1 puppetdb puppetdb
    Password for user puppetdb: <colocar password>
    #EJECUTAR
    puppetdb=> delete from catalogs where certname in (select name from certnames where deactivated is not null);
    DELETE 1
    

    Error Kerberos Y Bind Con Samba4

    Al momento de validar la configuración de kerberos del usuario admin arrojaba lo siguiente:

    1
    2
    
    [root@samba ~]$ kinit administrator@EXAMPLE.LOCAL
    kinit: Cannot resolve servers for KDC in realm "EXAMPLE.LOCAL" while getting initial credentials
    

    Al chequear las configuraciones DNS de de Samba arrojaba

    1
    2
    3
    4
    5
    6
    7
    8
    
    [root@samba ~]$ samba_dnsupdate --verbose --all-names
    IPs: ['10.0.2.15', '10.10.0.200']
    Traceback (most recent call last):
      File "/usr/local/samba/sbin/samba_dnsupdate", line 511, in <module>
        get_credentials(lp)
      File "/usr/local/samba/sbin/samba_dnsupdate", line 124, in get_credentials
        raise e
    RuntimeError: kinit for SAMBA$@EXAMPLE.LOCAL failed (Cannot contact any KDC for requested realm)
    

    Solución ELIMINAR Bind

    1
    
    [root@samba ~]$ yum remove bind -y
    

    Comprobamos

    1
    2
    3
    
    [root@samba ~]# kinit administrator@EXAMPLE.LOCAL
    Password for administrator@EXAMPLE.LOCAL:
    Warning: Your password will expire in 41 days on Wed Oct  1 17:54:00 2014
    

    Y chequeamos la configuracion de DNS de Samba

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    [root@samba ~]# samba_dnsupdate --verbose --all-names
    IPs: ['10.0.2.15', '10.10.0.200']
    Calling nsupdate for A example.local 10.0.2.15
    Outgoing update query:
    ;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id:      0
    ;; flags:; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
    ;; UPDATE SECTION:
    example.local.        900 IN  A    10.0.2.15
    
    ; TSIG error with server: tsig verify failure
    Failed nsupdate: 2
    Calling nsupdate for A samba.example.local 10.0.2.15
    Outgoing update query:
    ;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id:      0
    ;; flags:; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
    ;; UPDATE SECTION:
    samba.example.local.    900 IN  A    10.0.2.15
    

    SAMBA4.localo Controlador De Dominio A/D

    Para Centos 6 tenemos que complilar las fuentes para instalar Samba4:

    Instalar paqueteria necesaria

    1
    
    [root@samba ~]$ yum -y install gcc make wget python-devel gnutls-devel openssl-devel libacl-devel krb5-server krb5-libs krb5-workstation bind bind-libs bind-utils
    

    Descargamos y lo compilamos

    1
    2
    3
    4
    
    [root@samba ~]$ git clone git://git.samba.org/samba.git samba4
    [root@samba ~]$ cd samba4
    [root@samba ~]$ ./configure --enable-selftest
    [root@samba ~]$ make && make install #Esto demora bastante
    

    Terminado lo anterior y si no arroja ningún error, tendremos instalado Samba4. Ahora necesitamos configurar el controlador de dominio, lo primiero que tenemos que hacer es el Provisioning para el nuevo dominio.

    Unas cosas antes a considerar: Configuramos el hostname en la tabla hosts /etc/hosts

    1
    2
    3
    4
    5
    
    [root@samba ~]$ cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    10.10.0.200 samba.example.local samba
    

    Y el servidor de nombres en el /etc/resolv.conf

    1
    2
    3
    4
    
    [root@samba ~]$ cat /etc/resolv.conf
    search example.local
    domain example.local
    nameserver 127.0.0.1
    

    Esto es necesario para los servicios Samba y Kerberos, además, tenemos que configurar el parámetro dns forwarder dentro del archivo de configuración del servicio (esto si no lo hacemos dentro del proceso del provisionamiento).

    NOTA: El servidor tiene que tener correctamente sincronizada la hora (utilizar NTP)

    Provisionando el nuevo dominio

    1
    
    /usr/local/samba/bin/samba-tool domain provision
    

    Y completamos con los datos solicitados

    1
    2
    3
    4
    5
    6
    7
    
    Realm [EXAMPLE.LOCAL]: (press Enter)
    Domain [EXAMPLE]: (press Enter) #CON MAYUSCULAS
    Server Role (dc, member, standalone) [dc]: (press Enter)
    DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: (press Enter)
    DNS forwarder IP address (write 'none' to disable forwarding) [10.10.0.1]: 10.10.0.1
    Administrator password: <set_password>
    Retype password:
    

    Con todo el proceso anterior realizado, al final de todo veremos algo como lo siguiente

    1
    2
    3
    4
    5
    6
    7
    8
    
    Fixing provision GUIDs
    A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
    Once the above files are installed, your Samba4 server will be ready to use
    Server Role:           active directory domain controller
    Hostname:              samba
    NetBIOS Domain:        EXAMPLE
    DNS Domain:            example.local
    DOMAIN SID:            S-1-5-21-3438009546-7273XXXX-XXXXXXXXX
    

    Y luego reiniciamos el servidor

    El path de instalación de Samaba4 queda bajo /usr/local/samba/ los mismo sucede con los binarios /usr/local/samba/bin/ y /usr/local/samba/sbin/ para lo cual vamos a configurar la variable $PATH en nuestro bash.

    1
    2
    3
    
    [root@samba ~]# vim ~/.bashrc
    #Dentro colocamos
    export PATH="/usr/local/samba/sbin:/usr/local/samba/bin:$PATH"
    

    Para ver que quedó todo en orden ejecutamos

    1
    2
    3
    4
    
    [root@samba ~]# samba -V
    Version 4.1.11
    [root@samba ~]# smbclient -V
    Version 4.1.11
    

    Chequeamos la configuración local al Samba y los procesos corriendo

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [root@samba ~]#  ps -ef | grep samba
    root     23010     1  1 12:32 ?        00:00:00 samba
    root     23011 23010  0 12:32 ?        00:00:00 samba
    root     23012 23010  0 12:32 ?        00:00:00 samba
    root     23013 23010  0 12:32 ?        00:00:00 samba
    root     23014 23010  0 12:32 ?        00:00:00 samba
    root     23015 23011  1 12:32 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground
    root     23016 23010  2 12:32 ?        00:00:00 samba
    root     23017 23010  0 12:32 ?        00:00:00 samba
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    [root@samba ~]# /usr/local/samba/bin/smbclient -L localhost -U%
    Domain=[EXAMPLE] OS=[Unix] Server=[Samba 4.1.11]
    
            Sharename       Type      Comment
            ---------       ----      -------
            netlogon        Disk
            sysvol          Disk
            IPC$            IPC       IPC Service (Samba 4.1.11)
    Domain=[EXAMPLE] OS=[Unix] Server=[Samba 4.1.11]
    
            Server               Comment
            ---------            -------
    
            Workgroup            Master
            ---------            -------
    

    El proceso de configuración del Samba va a crear un archivo kerberos de la configuración relaizada, tenemos que enlazarlo al directorio /etc

    1
    2
    
    [root@samba ~]$ mv /etc/krb5.conf /etc/krb5.conf.ORG
    [root@samba ~]$ ln -s /usr/local/samba/private/krb5.conf  /etc/
    

    Comprobamos el funcionamiento en kerberos

    1
    2
    
    [root@samba ~]# host -t SRV _ldap._tcp.example.local.
    _ldap._tcp.example.local has SRV record 0 100 389 samba.example.local.
    

    Comprobamos la autentificación contra kerberos

    1
    2
    3
    
    [root@samba ~]# kinit administrator@EXAMPLE.LOCAL 
    Password for administrator@EXAMPLE.LOCAL:
    Warning: Your password will expire in 41 days on Wed Oct  1 16:28:11 2014
    

    Si por el contrario nos arroja algún error, tenemos que ver las configuraciones realizadas o reconfigurar el servicio samba

    Script de arranque

    Para el control del servicio creamos el siguiente script

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    
    [root@samba ~]$ cat /etc/init.d/samba4
    #! /bin/bash
    #
    # samba4 Bring up/down samba4 service
    #
    # chkconfig: - 90 10
    # description: Activates/Deactivates all samba4 interfaces configured to#
    # chkconfig: - 90 10
    # description: Activates/Deactivates all samba4 interfaces configured to
    # start at boot time.
    #
    ### BEGIN INIT INFO
    # Provides:
    # Should-Start:
    # Short-Description: Bring up/down samba4
    # Description: Bring up/down samba4
    ### END INIT INFO
    # Source function library.
    . /etc/init.d/functions
    
    if [ -f /etc/sysconfig/samba4 ]; then
    . /etc/sysconfig/samba4
    fi
    
    CWD=$(pwd)
    prog="samba4"
    
    start() {
    # Attach irda device
    echo -n $"Starting $prog: "
    /usr/local/samba/sbin/samba
    sleep 2
    if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then success $"samba4 startup"; else failure $"samba4 startup"; fi
    echo
    }
    stop() {
    # Stop service.
    echo -n $"Shutting down $prog: "
    killall samba
    sleep 2
    if ps ax | grep -v "grep" | grep -q /samba/sbin/samba ; then failure $"samba4 shutdown"; else success $"samba4 shutdown"; fi
    echo
    }
    status() {
    /usr/local/samba/sbin/samba --show-build
    }
     
    # See how we were called.
    case "$1" in
    start)
    start
    ;;
    stop)
    stop
    ;;
    status)
    status irattach
    ;;
    restart|reload)
    stop
    start
    ;;
    *)
    echo $"Usage: $0 {start|stop|restart|status}"
    exit 1
    esac
     
    exit 0
    

    Configuramos los permisos

    1
    
    [root@samba ~]$ chmod +x /etc/init.d/samba4
    

    Finalmente dejamos los servicios para correr por defecto

    1
    2
    3
    
    [root@samba ~]$ chkconfig --levels 235 samba4 on
    [root@samba ~]$ chkconfig --levels 235 ntp on
    [root@samba ~]$ chkconfig --levels 235 named on
    

    Ahora ya tenemos configurado el Samba, desde ahora podemos empezar a conectar a los usuarios.

    Uniendo una máquina al dominio

    Getión remota del controlado de dominio (Remote Server Administration Tool)

    Para la gestión remota del controlador de dominio descargamos Remote Server Administration Tool desde acá: Instalación

    1. Lo instalamos como cualquier exe
    2. Panel de control
    3. Programas y caracteristicas
    4. Activar o desactivar caracteristicas
    5. Seleccionamos las caracteristicas asociadas al A/D
    6. Reinciamos la máquina Windows
    7. Inicio -> Ejecutar -> “Usuarios y Equipos de Active Directory” y veremos el arbol de nuestro Samba4

    Para mas detalles del RSTA acá

    Creando Un Box Para Vagrant

    En mi caso la máquina virtual no fue creada desde cero, ya que bajé un Box de Vagrant y lo customicé por lo que me salté los pasos previos de la creación del box https://docs.vagrantup.com/v2/boxes/base.html. Lo realizado para la creación del box fue lo siguiente:

  • Optimización de tamaño de la VM
  • 1
    2
    3
    
    $ sudo dd if=/dev/zero of=/EMPTY bs=1M
    $ sudo rm -f /EMPTY
    $ sudo shutdown -h now
    

  • Creación del Box
  • 1
    2
    
    Miguel:PuppetMaster$ cd ~/VirtualBox\ VMs/ # directorio donde quedan alojadas las vms
    Miguel:VirtualBox VMs$ vagrant package --base puppetserver ##puppetserver es el nombre de la vm en virtualbox
    

  • Testing del Box
  • Agreagamos nuestro Box a nuestro Vagrant

    1
    2
    3
    4
    
    Miguel:PuppetMaster$ vagrant box add Centos6PuppetServer ~/VirtualBox\ VMs/package.box
    ==> box: Adding box 'Centos6PuppetServer' (v0) for provider:
        box: Downloading: file:///Users/Miguel/VirtualBox%20VMs/package.box
    ==> box: Successfully added box 'Centos6PuppetServer' (v0) for 'virtualbox'!
    

    Verificamos

    1
    2
    
    Miguel:PuppetMaster$ vagrant box list
    Centos6PuppetServer (virtualbox, 0) # nuestro box
    

    Nos dirigimos a nuestro directorio de trabajo de Vagrant y crearemos un nuevo proyecto testing

    1
    2
    
    Miguel:VagrantVM$ mkdir testing
    Miguel:VagrantVM$ cd testing/
    

    Iniciamos una nueva VM

    1
    2
    3
    
    Miguel:testing$ vagrant init Centos6PuppetServer ##la iniciamos
    Miguel:testing$ vagrant up #la arrancamos
    Miguel:testing$ vagrant ssh #nos conectamos
    

    Red Pública Para Máquinas Virtuales en Vagrant

    Por defecto las máquinas virtuales creadas en Vagrant quedan configuradas con una ip “privada” y el acceso a la VM es por medio de NAT. Si deseamos configurar una ip “publica” en nuestra máquina virtual tenemos que editar nuestro Vagranfile y adicionar el parámetro vm.network dentro de nuestro apartado config.vm.define.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    VAGRANTFILE_API_VERSION = "2"
    
    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    
      config.vm.define :puppet do |puppet_config|
         puppet_config.vm.box = "Centos"
         puppet_config.vm.hostname  = "puppetmaster.example.com"
         puppet_config.vm.network :public_network,  bridge: 'en1: Wi-Fi (AirPort)', ip: "192.168.1.36"
    
       config.vm.provider "virtualbox" do |vboxpuppet|
            vboxpuppet.name = "puppetmaster"
        end ##cierra config.vm.provider
      end ##cierra config.vm.define
    
    end ##cierra file
    

    Y si nos conectamos

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Miguel:Puppet$ vagrant ssh
    [vagrant@puppetmaster ~]$ ifconfig
    eth0      Link encap:Ethernet  HWaddr 08:00:27:97:35:D8
              inet addr:192.168.1.36  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::a00:27ff:fe97:35d8/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:36 errors:0 dropped:0 overruns:0 frame:0
              TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:5256 (5.1 KiB)  TX bytes:998 (998.0 b)
    

    Ref: https://docs.vagrantup.com/v2/networking/public_network.html

    Path Global Para Todos Los Execs en Puppet

    En Puppet si tenemos varios Exec para ejecutar comandos del sistema operativo podemos configurar el atributo path de forma global dentro del site.pp y con ello evitamos repetir código.

    1
    2
    3
    4
    5
    
    exec { "restart-dns":
    command => "service named restart"
    creates => "/var/named",
    refreshonly => true
    }
    

    site.pp

    1
    
    Exec { path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ] }
    

    Controlando La Ejecución De Exec en Puppet

    En Puppet podemos ejecutar comando a nivel del sistema operativo por medio de Exec, en ocasiones sucede que tenemos declarada la sintaxis a ejecutar pero sucede que esta se aplica cada vez que corre el agente Puppet, Ejemplo:

    1
    2
    3
    4
    
    exec{"install-rpm":
      ensure  => present,
      command => 'rpm -Uvh /root/package.rpm',
    }
    

    Lo anterior instalará un rpm llamado package.rpm cada vez que corra el agente, lo que pisará las configuraciones ya realizadas en la instalación y post-instalación del rpm. Para evitar que esto suceda Exec maneja dos atributos creates y onlyif ambos como condicionantes para que se puede ejecutar el comando.

  • creates
  • Funciona del modo que para ejecutar el atributo command no tiene que existir “algo” que se define con el atributo creates, ejemplo:

    1
    2
    3
    4
    5
    
    exec{"install-rpm":
    ensure  => present,
    creates => '/opt/rpm-directory/',
    command => 'rpm -Uvh /root/package.rpm',
    }
    

    Lo anterior dice que; para que se ejecute el exec no tiene que estar creado el directorio /opt/rpm-directory/, si este ya esta creado, es por que ya tenemos instalado el rpm y no es necesario volver a instalarlo.

  • onlyif
  • Funciona del modo que para ejecutar el atributo command el resultado del atributo onlyif debe retornar value 0 “nada” como respuesta a la condición, ejemplo:

    1
    2
    3
    4
    5
    
    exec{"install-rpm":
    ensure  => present,
    onlyif => "ls /opt/ |grep rpm-directory"
    command => 'rpm -Uvh /root/package.rpm',
    }
    

    Lo anterior dice que; para que se ejecute el exec la salida del onlyif debe retornar 0. Si el rpm ya lo tenemos instalado, este va a crear el directorio por lo que para evitar que se siga instalando solo vemos si este ya fue creado. Si el rpm fue instalado, el onlyif retornará un 1 por lo que no se volverá a ejecutar nuevamente.

    Link documentación

    Configurando Vagrant en OSX

    En la búsqueda de correr máquinas virtuales de forma mas simple me he decidido instalar Vagrant, que es un entorno para la gestión de máquinas virtuales bajo mbiente VirtualBox. La mágia de Vagrant viene de la mano de VirtualBox ya que este tiene soporte para correr máquinas virtuales del tipo headless (algo así como máquinas que corren en un servidor pero no sabes donde).

    Instalación de Vagrant en OSX 10.9.3

    Lo primero es bajar la versión correspondiente de Vagrant y lo mismo para VirtualBox. Una vez descargado ambos paquetes (dmg) se instalan como cualquier otra programa para mac. Es necesario tener instalado una librerias Ruby para el trabajo con Vagrant, proceso que se realiza con el comando:

    1
    
    gem install vagrant
    

    La gestión de las máquinas virtuales en Vagrant se realizan mediante el comando vagrant (init, up, destroy, ssh, resume, suspend, halt y muchas más), todas las opciones que tiene este comando figuran en la documentación

    Instalando nuestro primer Box

    Lo primero que tenemos que hacer es bajar nuestro Box, que será la imagen base desde donde crearemos nuestras máquinas virtuales:

    1
    
    vagrant box add CentOS  https://github.com/2creatives/vagrant-centos/releases/download/v6.4.2/centos64-x86_64-20140116.box
    

    Bajamos y agregamos un nuevo Box de sistema que se llama “Centos” que se encuentra hosteado remotamente, puedes ver la infinidad de Box disponibles acá Podemos ver los Box instalados con el siguiente comando

    1
    2
    
    vagrant box list
    CentOS (virtualbox, 0)
    

    Corriendo nuesta máquina virtual

    Teniendo nuestro Box, podemos instanciar nuesta primera máquina virtual para lo cual tenemos que ejecutar el comando vagrant init

    1
    2
    3
    4
    5
    
    Miguel:Puppet$ vagrant init
    A `Vagrantfile` has been placed in this directory. You are now
    ready to `vagrant up` your first virtual environment! Please read
    the comments in the Vagrantfile as well as documentation on
    `vagrantup.com` for more information on using Vagrant.
    

    Lo anterior creará un archivo de configuración base llamado Vagrantfile, donde se definieran una seríe de instrucción con las caracteristicas internas (ip, hostname, puertos, servicios) asociadas al SO, como las externas (memoria, cpu, etc) asociadas a VirtualBox, para el caso la dejaremos por defecto esta configurción. Luego de tener creado nuestro Vagrantfile creado, podemos iniciar nuestra nueva instancia de máquina virtual:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    Miguel:Puppet$ vagrant up
    Bringing machine 'default' up with 'virtualbox' provider...
    ==> default: Importing base box 'Centos'...
    ==> default: Matching MAC address for NAT networking...
    ==> default: Setting the name of the VM: Puppet_default_1404758552103_56627
    ==> default: Clearing any previously set network interfaces...
    ==> default: Preparing network interfaces based on configuration...
        default: Adapter 1: nat
    ==> default: Forwarding ports...
        default: 22 => 2222 (adapter 1)
    ==> default: Booting VM...
    ==> default: Waiting for machine to boot. This may take a few minutes...
        default: SSH address: 127.0.0.1:2222
        default: SSH username: vagrant
        default: SSH auth method: private key
        default: Warning: Remote connection disconnect. Retrying...
    ==> default: Machine booted and ready!
    ==> default: Checking for guest additions in VM...
    ==> default: Mounting shared folders...
        default: /vagrant => /Users/Miguel/VagrantVM/Puppet
    

    Ahora, la VM se encuentra corriendo en nuestro equipo. Podemos conectarnos con el comando vagrant ssh

    1
    2
    
    Miguel:Puppet$ vagrant ssh
    [vagrant@vagrant-centos64 ~]$
    

    Por defecto el nombre con que queda la VM y se puede ver mediante la GUI de VirtualBox no es para nada descriptivo, pero puede ser modificado editando el archivo Vagranfile adicionando la variable name de la sección config.vm.provider (líneas nº 9,10,11) .

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    Miguel:Puppet$ cat Vagrantfile
    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    VAGRANTFILE_API_VERSION = "2"
    
    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
      config.vm.box = "Centos"
      config.vm.provider "virtualbox" do |puppetmaster|
         puppetmaster.name = "puppetmaster"
      end
    end
    

    Podemos ver el nuevo nombre por línea de comando (Nombre que será también el de la GUI de VirtualBox)

    1
    2
    3
    
    Miguel:Puppet$ VBoxManage list runningvms
    "puppetmaster" {c980cd9e-3329-4aa8-8d58-b84e389fff68}
    Miguel:Puppet$
    

    No esta demás el link de la documentación