Loading search data...

Soutenez moi :) En achetant à partir de ce lien je toucherai une toute petite comm.

Ajouter des disques à vagrant tournant sous libvirt

Dans un mes précédents billets je vous proposait de vous monter un environnement de dev linux sous windows utilisant vagrant et libvirt/kvm. Et après une introduction à l’utilisation de vagrant je vous propose ici de provisionner des disques supplémentaires et de les intégrer à vos via ansible.

J’utilise packer pour construire mes box vagrant intégrant tous les outils que j’utilise pour mettre au point mes roles et playbooks Ansible entre autre. Mais par souci de place je les ai provisionné avec seulement 5Go de disque. Mais parfois je dois construire des machines intégrant plusieurs applications ou utilisant des belles bases de données. Alors je vous propose de vous montrer comment ajouter facilement du disque à vos box vagrant.

Voici le fichier Vagrantfile ajoutant deux disques à ma box ol8.

Vagrant.configure("2") do |config|

  config.vm.box = "ol8"

  config.vm.provider "libvirt" do |hv|
    hv.cpus = "5"
    hv.memory = "6656"
    hv.storage :file, :size => "20G"
    hv.storage :file, :size => "10G"
  end
  config.vm.synced_folder '.', '/vagrant', disabled: true
  config.vm.define "host1" do |host1|
    host1.vm.network :forwarded_port, guest: 80, host: 8080
    host1.vm.network :private_network, ip: "192.168.3.10"
    host1.vm.hostname = "host1"
    host1.vm.provision "ansible" do |a|
      a.verbose = "v"
      a.playbook = "provision-playbook.yml"
    end
  end
end

Dans un premier temps il faut ajouter dans la partie provider libvirt ajouter la création de deux disques :

  config.vm.provider "libvirt" do |hv|
    hv.cpus = "5"
    hv.memory = "6656"
    hv.storage :file, :size => "20G"
    hv.storage :file, :size => "10G"
  end

Ensuite il suffit de soit ajouter ces disques à vos volume logique soit à créer des partitions. Je le fais avec Ansible ent installant les collections de la communauté.

ansible-galaxy collection install -f community.general:==2.0.0

Ici je demande d’installer le version 2.0.0 en forçant l’installation car parfois il refuse de mettre à jour la collection.

Ensuite dans votre playbook pour ajouter un disque à un volume logique existant. Il faut dans un premier temps créer la partition en le flagant lvm, puis l’assigner au volume groupe, au volume logique et pour finir étendre la partition ici au format xfs.

  - name: create vdc1
    parted:
      device: /dev/vdc
      number: 1
      state: present
      flags: [ lvm ]

  - name: add sdc1 to volume group
    lvg:
      vg: ol_ol8
      pvs:
        - /dev/vdc1
        - /dev/vda2
      pesize: 13.88G

  - name: add sdc1
    lvol:
      vg: ol_ol8
      lv: root
      size: 13G

  - name: grow xfs
    filesystem:
      dev: /dev/mapper/ol_ol8-root
      fstype: xfs
      resizefs: yes

Une autre possibilité est de ne pas utiliser des volumes logique mais de formater des partitions classiques et de les monter. Ce qui donne dans le playbook ceci, je coupe le disque vdb en partition égale et je les monte sur deux filesystem (/opt /data) :

  - name: partition 1
    parted:
      device: /dev/vdb
      number: 1
      state: present
      part_start: 0%
      part_end: 50%

  - name: partition 2
    parted:
      device: /dev/vdb
      number: 2
      state: present
      part_start: 50%
      part_end: 100%

  - name: Create a ext4 filesystem on /dev/sdb1
    filesystem:
      fstype: ext4
      dev: /dev/vdb1

  - name: Create a ext4 filesystem on /dev/sdb1
    filesystem:
      fstype: ext4
      dev: /dev/vdb2

  - name: mount /opt
    mount:
      path: /opt
      src: /dev/vdb1
      fstype: ext4
      state: mounted

  - name: mount /data
    mount:
      path: /data
      src: /dev/vdb2
      fstype: ext4
      state: mounted

Voilà ca vous évitera de chercher. A bientôt.

Mots clés :

devops, ansible, vagrant,

Autres Articles


Alimenter un blog comme celui-ci est aussi passionnant que chronophage. En passant votre prochaine commande (n'importe quel autre article) au travers du lien produit ci-contre, je touche une petite commission sans que cela ne vous coûte plus cher. Cela ne me permet pas de gagner ma vie, mais de couvrir les frais inhérents au fonctionnement du site. Merci donc à vous!