mcgrof.kdevops_vagrant

kdevops_vagrant

kdevops_vagrant est un rôle Ansible qui déploie un fichier Vagrant partagé par la communauté dans votre projet. Ce rôle Ansible copie le fichier Vagrant dans le répertoire de votre projet et peut également exécuter Vagrant pour vous.

L'objectif de ce rôle Ansible est de permettre le partage d'un même fichier Vagrant scalable facilement entre les projets, et d'offrir un espace pour que les contributeurs puissent l'améliorer et le documenter.

Répertoire de projet

Le répertoire de projet est le répertoire principal de votre projet, qui le définit. Par exemple, si vous avez un projet de développement appelé kdevops et que tous les fichiers sont stockés sous :

/home/user/devel/kdevops/

Dans ce cas, le répertoire de projet est kdevops. Par défaut, ce rôle Ansible déduit quel est votre répertoire de projet en utilisant le nom de base du répertoire où se trouve votre fichier playbook qui appelle ce rôle. Par exemple, si votre fichier playbook est stocké sous :

/home/user/devel/kdevops/playbooks/kdevops_vagrant_nodes.yml

Vous pouvez remplacer des données dans un autre fichier :

/home/user/devel/kdevops/playbooks/kdevops_vagrant_nodes_override.yaml

Le répertoire où se trouve votre fichier playbook est :

/home/user/devel/kdevops/playbooks/

Le nom de base de ce répertoire est :

/home/user/devel/kdevops/

Ceci serait le répertoire de projet déduit pour ce projet. Vous pouvez le remplacer en utilisant la variable de rôle force_project_dir décrite ci-dessous.

Namespace de projet

Le namespace de projet est utilisé dans le Vagrantfile géré par ce rôle pour vous permettre de remplacer les valeurs par défaut utilisées par Vagrant via des variables d'environnement. Le namespace de projet est déduit du répertoire de projet décrit ci-dessus. Par exemple, dans le cas où le répertoire de projet est :

/home/user/devel/kdevops/

Le namespace de projet est déduit comme étant kdevops. La version en majuscules de cela est utilisée comme préfixe pour les variables d'environnement, donc KDEVOPS. Les tirets sont remplacés par des underscores car les variables shell ne peuvent pas contenir de tirets. Ainsi, si le répertoire de projet était :

/home/user/devel/some-cool-project/

Le namespace de projet serait : SOME_COOL_PROJECT

Exigences

Vous devez avoir Vagrant installé.

Vagrant est utilisé pour déployer facilement des machines virtuelles non-cloud. Voici la liste des fournisseurs supportés :

  • Virtualbox
  • libvirt (KVM)

Les systèmes d'exploitation suivants sont supportés :

  • OS X
  • Linux

Exécuter libvirt en tant qu'utilisateur régulier

Nous utilisons le rôle Ansible libvirt-user pour activer un utilisateur régulier. Lisez la documentation à ce sujet pour plus de détails.

Remplacer la configuration des nœuds avec un autre fichier

La meilleure façon de prendre en charge le remplacement des variables utilisées dans Vagrant est à travers le fichier $(project)_node_override.yaml. Par exemple, pour le projet kdevops, vous pouvez remplacer des données dans un autre fichier optionnel situé en dehors de git :

/home/user/devel/kdevops/playbooks/kdevops_vagrant_nodes_override.yaml

Variables d'environnement

Seulement si l'utilisation d'un fichier de remplacement ne fonctionne pas, vous pouvez utiliser des variables d'environnement. L'utilisation de variables d'environnement se fait au cas par cas, étant donné que nous devons mettre en œuvre un support pour chaque nouvelle variable ajoutée. En utilisant le fichier de remplacement, vous pouvez tout remplacer, dès qu'une nouvelle fonctionnalité est ajoutée.

Les variables d'environnement sont préfixées par la version en majuscules du namespace de projet, comme décrit ci-dessus. Appelons cela ${PN_U}. En tenant compte de ce préfixe, les variables d'environnement suivantes modifient le fonctionnement du Vagrantfile :

  • ${PN_U}_VAGRANT_NODE_CONFIG: vous permet de remplacer le fichier de configuration par défaut utilisé
  • ${PN_U}_VAGRANT_PROVIDER: vous permet de remplacer le fournisseur utilisé par Vagrant
  • ${PN_U}_VAGRANT_LIMIT_BOXES: vous permet d'activer la limitation des boîtes
  • ${PN_U}_VAGRANT_LIMIT_NUM_BOXES: nombre de boîtes à limiter
  • ${PN_U}_VAGRANT_QEMU_GROUP: remplace l'utilisateur QEMU à utiliser

Limiter le nombre de boîtes de Vagrant

Par défaut, Vagrant essaiera de créer tous les nœuds spécifiés dans votre fichier de configuration des nœuds. En général, cela se trouve dans ${PN_L}_nodes.yml$PN_L est la version en minuscules de votre namespace de projet. Par exemple, pour le projet kdevops, cela serait kdevops_nodes.yml.

Par exemple, si vous voulez limiter Vagrant à créer seulement une boîte pour le projet kdevops, vous utiliseriez :

export KDEVOPS_VAGRANT_LIMIT_BOXES="yes"
export KDEVOPS_VAGRANT_LIMIT_NUM_BOXES=1

Vous utiliseriez évidemment un préfixe différent pour des projets portant des noms différents.

Cela garantira que seule la première machine, par exemple, sera créée et provisionnée. Cela peut être utile si vous développez sur un ordinateur portable, par exemple, et que vous souhaitez limiter la quantité de ressources utilisées.

Portée d'utilisation d'Ansible

kdevops dans son ensemble est conçu pour être indépendant de la façon dont vous configurez un système, que ce soit un système local virtualisé avec libvirt / Virtualbox, un système bare metal, ou un environnement cloud.

Pour cela, il y a 3 étapes pour le déploiement :

  • Déploiement : virtuel / cloud / bare metal
  • Configuration et installation des dépendances : ajouter les systèmes à ~/.ssh/config, et installer les scripts bash, .gitconfig et les packages de développement de choix. Cela est géré par les rôles Ansible update_ssh_config_vagrant et devconfig.
  • Procéder : faites votre travail, et cela est maintenant généralement encouragé par Ansible.

Notre utilisation de Vagrant avec Ansible est limitée aux deux premières parties mentionnées ci-dessus. Ainsi, nous utilisons Ansible uniquement pour utiliser les deux rôles Ansible suivants :

Nous ne souhaitons pas étendre cette pratique, car nous voulons que les utilisateurs utilisent Ansible directement pour les objectifs ultérieurs. Le travail de déploiement et de configuration, d'installation des dépendances des développeurs doit être géré soit par Vagrant, Terraform, ou l'utilisateur qui configure manuellement les systèmes bare metal.

Pour cette raison, nous ne recommandons pas d'ajouter plus de rôles Ansible pour l'utilisation de Vagrant. Ces deux rôles devraient suffire pour les configurations typiques, et le reste de l'utilisation d'Ansible doit se faire manuellement.

Interpréteur Python d'Ansible

Ansible dépend de Python sur les systèmes distants. Quelle version de Python doit être utilisée peut varier, mais par défaut Ansible essaiera d'utiliser une ancienne version de l'interpréteur Python, afin d'aider à supporter les anciens systèmes. Cette décision n'est pas la meilleure pour les nouveaux systèmes ; il est donc recommandé de spécifier l'interpréteur. Cela doit être fait dans le fichier d'inventaire. Le Vagrantfile suppose que vous avez un fichier d'inventaire appelé ../hosts, vous pouvez cependant le remplacer dans la configuration d'Ansible comme suit :

ansible_playbooks:
  # Si ce fichier existe, vous pouvez remplacer n'importe quelle variable Ansible là-dedans.
  # Ce fichier est optionnel.
  extra_vars: "../extra_vars.yml"
  inventory: "../hosts"
  playbooks:
    - name: "../playbooks/update_ssh_config_vagrant.yml"
    - name: "../playbooks/devconfig.yml"

Votre fichier d'hôtes peut ressembler à quelque chose comme ceci :

[all]
newsystem1
oldsystem1
[all:vars]
ansible_python_interpreter = "/usr/bin/python3"

[new]
newsystem1
[new:vars]
ansible_python_interpreter = "/usr/bin/python3"

[old]
oldsystem1
[dev:vars]
ansible_python_interpreter = "/usr/bin/python2"

Dans ce cas, tous les systèmes du groupe [all] utilisent l'interpréteur Python 3, mais la dernière entrée garantit que l'ancien système utilise Python 2 à la place.

Utilisation des variables supplémentaires d'Ansible avec Vagrant

Ansible a sa propre hiérarchie de priorité pour les variables, que ce soit à travers la ligne de commande ou les fichiers de rôle, etc., et cela est documenté sur la page de documentation des variables des playbooks d'Ansible.

Bien que cela convienne à la plupart des cas d'utilisation, cela ne vraiment pas aider les projets qui souhaitent permettre aux utilisateurs de spécifier leurs propres variations par rapport aux valeurs par défaut dans un fichier non présent dans le contrôle de version, et sans avoir à les développer sur la ligne de commande.

Étant donné que kdevops consiste en un ensemble unifié de rôles Ansible, nous soutenons une manière unifiée de définir les remplacements pour Ansible. Nous faisons cela en permettant à l'utilisateur de remplacer les variables Ansible dans le répertoire racine du projet dans un fichier appelé :

  • extra_vars.yml

Ainsi, dans l'exemple du projet kdevops, cela serait :

/home/user/devel/kdevops/extra_vars.yml

Lorsque ce fichier est défini, le plugin Ansible Vagrant s'assure que seul ce fichier est transmis directement à Ansible sur la ligne de commande via --extra-vars=@file. Le préfixe @ est requis lors de la spécification d'un fichier. Vous n'avez pas à fournir le @, nous le faisons pour vous.

Tous les rôles Ansible utilisés avec kdevops prennent en charge la recherche de ce fichier extra_vars.

Variables des rôles Ansible

  • run_vagrant: par défaut, c'est False, si c'est mis à True, nous exécuterons Vagrant pour vous
  • force_project_dir: si défini, cela sera utilisé comme le répertoire où nous rechercherons le répertoire Vagrant et éventuellement copier le Vagrantfile. Par défaut, c'est vide, et nous déduisons votre répertoire de projet comme étant le répertoire parent où se trouvait le fichier playbook.

Dépendances

Aucune.

Exemple de Playbook

Voici un exemple de playbook, utilisé dans le projet kdevops, donc dans le fichier kdevops/playbooks/kdevops_vagrant.yml :

---
- hosts: localhost
  roles:
    - role: kdevops_vagrant

Dans ce cas particulier, notez la façon dont localhost est utilisé. Cela est dû au fait que nous provisionnons le Vagrantfile dans le répertoire kdevops/vagrant/ localement. Vous pourriez évidemment utiliser un hôte différent.

Informations complémentaires

Pour plus d'exemples, référez-vous à l'un des utilisateurs de ce rôle, le projet kdevops ou le projet oscheck d'où provient ce code à l'origine.

Licence

GPLv2

À propos du projet

Deploy kdevops Vagrantfile and optionally runs vagrant

Installer
ansible-galaxy install mcgrof.kdevops_vagrant
Licence
Unknown
Téléchargements
285
Propriétaire
https://www.do-not-panic.com/p/hacking.html