dimanche 23 novembre 2014

[Vagrant]Créer un entrepôt de box - partie 2 - installation

Arborescence

  • Création d'un dossier /data/mibin-boxs/vagrant/boxs
  • Copie dans ce dossier des boxs existantes
  • Organisation en sous-dossiers (libre à vous de définir votre plan de classement): 
boxes
..linux
...._templates
....projet1
....projet2
.... etc
.. windows
....projet1
....projet2
.... etc

Installation de mongoose

J'utilise ici Mongoose comme serveur HTTP pour exposer l'entrepôt de box. C'est simple et efficace. Bien sûr, rien empêche de monter un apache, un nginx ou même un IIS (lol).
  • Installation (ici sous redhat6 via yum)
yum install mongoose.x86_64

  • Création d'un fichier de conf mongoose_vagrant.conf
document_root   /data/mibin-boxs/vagrant
listening_ports 81
extra_mime_types    .json=application/json

  • Création d'un batch de lancement mibin.sh (start|stop|status). Exemple :
#!/bin/sh
startup="mongoose ./mongoose_vagrant.conf"
start() {
  echo -n $"Starting Mongoose service: "
  # sh $startup
  nohup $startup &
  echo $?
}
stop() {
  echo -n $"Stopping Mongoose service: "
  #echo -n $"NEED TO DO IT MANUALLY. "
  # sh $shutdown
  kill -9 `ps -aef | grep "$startup" | grep -v mibin.sh | grep -v grep | awk '{print $2}'`
  echo $?
}
restart() {
  stop
  start
}
status() {
  test=$(ps -aef | grep "$startup" | grep -v grep)
  if [ -z "$test" ] ; then
    echo "Stopped"
  else
        echo "Running"
        echo $test
  fi
}
# Handle the different input options
case "$1" in
start)
  start
  ;;
stop)
  stop
  ;;
status)
  status
  ;;
restart)
  restart
  ;;
*)
  echo $"Usage: $0 {start|stop|restart|status}"
  exit 1
esac
exit 0


Qualification des boxs

Pour chaque box :
  • nommage du fichier box en : <nombox>_AA.MM.JJ.box ou AA, MM, JJ correspondent à la date de création de la box dans le repo (tient lieu d'indice de version)
  • création d'un fichier <nombox>.json
exemple, avec 2 versions :
{
    "name""lifeplus",
    "description""lifeplus : centos64, postgres9, liferay6.2.0.",
    "versions": [{
        "version""14.2.25",
        "providers": [{
                "name""virtualbox",
                "checksum_type""sha1",
                "checksum""e348c36dd40e45eb111ad88417e7bb45ba2c6e99"
                    }]
        },{
        "version""14.10.21",
        "providers": [{
                "name""virtualbox",
                "checksum_type""sha1",
                "checksum""cf4a4d0bf06070b15253b0c80feeccd1d3f363a5"
                    }]       
     }]
}
Pour calculer le checksum d'une box :
openssl sha1 nomdelabox.box

  • création d'un Vagrantfile
Exemple :
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "lifeplus"
  config.vm.post_up_message = "
                              Centos6.4 64 bits
                              2 cpus
                              ram 4 Go
                              HD 8 Go
                              IP : 192.168.100.10
                              hostname : lifeplus.mibin.bzh
                              Root : root/*****
                              Liferay : mibin/*****
                              "
  config.vm.hostname = "centos64.mibin.bzh"
  # The url from where the 'config.vm.box' box will be fetched if it
  # doesn't already exist on the user's system.
  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  config.vm.network :private_network, ip: "192.168.100.10"
   
  config.vm.provider :virtualbox do |vb|
     vb.customize ["modifyvm", :id, "--memory""4096"]
       vb.customize ["modifyvm", :id, "--cpus"2]
       vb.customize ["modifyvm", :id, "--macaddress2""08002755A4B5"]
  end
   
end


note : description de box
Plutôt qu'un fichier "lisezmoi.txt", il est plus judicieux de reporter les informations de la box dans le Vagrantfile, sous le paramètre config.vm.post_up_message.
Ainsi ces informations seront présentés à l'utilisateur de la box à chaque démarrage de la VM (en plus d'être lisible dans le Vagrantfile)


Aucun commentaire:

Enregistrer un commentaire