chouseknecht.cluster-up-role
cluster-up-role
Installez le client OpenShift et créez une instance locale en utilisant oc cluster up
.
Ce projet a été créé pour répondre aux besoins de démonstration et de test d'Ansible Container en automatisant les tâches du guide d'installation et de configuration d'OpenShift.
Il réalise spécifiquement les tâches suivantes :
- Télécharge et installe le client oc
- Installe
socat
, si vous êtes sur OSX - Ajoute un nom d'hôte associé à votre adresse IP publique dans /etc/hosts
- Démarre le cluster
- Accorde des droits d'administrateur du cluster au compte developer
- Crée une route pour exposer le registre local
- Crée un volume persistant
- Utilise le client
oc
pour se connecter au cluster en tant que developer et définit le projet sur default
Plateformes supportées et tests
À ce jour, ce rôle a principalement été testé sur OSX en utilisant Docker pour Mac. Il fonctionne également presque sur Travis, qui est une plateforme Ubuntu. Gardez donc cela à l'esprit : si vous essayez de l'utiliser en dehors de OSX, vous risquez de rencontrer un bug. Si c'est le cas, merci d'ouvrir un problème ou de soumettre une PR, afin que nous puissions mettre à jour le rôle.
Nom d'hôte
Par défaut, le nom d'hôte local.openshift
est ajouté à votre fichier /etc/hosts et associé à votre adresse IP actuelle. Utilisez le paramètre openshift_hostname si vous préférez un autre nom.
Lorsque le cluster est créé, il est associé à votre adresse IP réseau locale. Si vous utilisez un ordinateur portable ou un autre appareil mobile, vous pourriez devoir recréer le cluster chaque fois que vous passez à un nouveau réseau. Créer un nom d'hôte associé à votre adresse IP réelle rend la vie un peu moins compliquée.
Registre non sécurisé
Si vous n'avez pas ajouté l'option de registre non sécurisé à Docker, le rôle renverra une erreur la première fois que vous l'exécutez. Un message vous indiquera le sous-réseau à ajouter. Vous devrez également ajouter la valeur openshift_hostname. Par défaut, cette valeur est local.openshift. Après avoir effectué la modification et redémarré Docker, exécutez à nouveau le rôle, et cette fois tout fonctionnera.
Prérequis
Vous devez avoir les éléments suivants installés :
- Docker Engine ou Docker pour Mac
- Accès sudo pour mettre à jour /etc/hosts et installer le binaire
oc
dans /usr/local/bin.
REMARQUE : Si vous utilisez une plateforme Linux, assurez-vous de suivre les instructions pour créer un groupe docker, afin de pouvoir exécuter des commandes docker
directement sans utiliser sudo.
Exemple de Playbook
Lorsque vous exécutez le rôle, assurez-vous de bien laisser gather_facts défini sur une valeur vraie. Sans ces faits, le rôle ne peut pas déterminer l'adresse IP de l'hôte ni la famille d'OS.
Voici un exemple de playbook qui inclut tous les paramètres par défaut. Vous trouverez cet exemple exact dans files/cluster-up.yml. Copiez-le et ajustez-le pour l'adapter à votre environnement.
---
- hosts: localhost
remote_user: root
connection: local
gather_facts: yes
roles:
- role: chouseknecht.cluster-up-role
openshift_github_user: openshift
openshift_github_name: origin
openshift_github_url: https://api.github.com/repos
openshift_release_tag_name: ""
openshift_client_dest: /usr/local/bin
openshift_force_client_install: yes
openshift_volume_name: project-data
openshift_volume_path: "{{ lookup('env','HOME') }}/volumes/project/data"
openshift_hostname: local.openshift
openshift_recreate: yes
Après avoir installé le rôle, copiez file/cluster-up.yml dans votre répertoire projet et exécutez-le avec l'option --ask-sudo-pass
. Voici un exemple :
# Installer le rôle
$ ansible-galaxy install chouseknecht.cluster-up-role
# Copier le playbook depuis votre chemin de rôles vers le répertoire de travail actuel
$ cp ${ANSIBLE_ROLES_PATH}/chouseknecht.cluster-up-role/files/cluster-up.yml .
# Créer un fichier d'inventaire pour localhost
$ echo "localhost">./inventory
# Exécuter le playbook
$ ansible-playbook -i inventory --ask-sudo-pass cluster-up.yml
Déploiement de votre projet Ansible Container
Dans l'exemple suivant, nous allons créer un nouveau projet, installer le rôle Container Enabled jenkins-container, et déployer le service Jenkins sur notre cluster OpenShift local.
REMARQUE : pour exécuter cet exemple, vous devez installer Ansible Container 0.3.0. Consultez Installation à partir de la source si vous avez besoin d'aide.
# Créer un nouveau dossier de projet
$ mkdir jenkins
# Définir le répertoire de travail
$ cd jenkins
# Init du projet
$ ansible-container init
# Installer le rôle jenkins-container
$ ansible-container install awasilyev.jenkins-container
# Construire les images
$ ansible-container build
# Générer le playbook de déploiement et le rôle
$ ansible-container shipit openshift --local-images
# Définir le répertoire de travail sur ansible
$ cd ansible
# Exécuter le playbook shipit
$ ansible-playbook shipit-openshift.yml
Cela a créé un nouveau projet sur OpenShift appelé jenkins
. Pour voir le projet, connectez-vous à la console OpenShift en ouvrant https://local.openshift:8443/console. Le nom d'utilisateur est developer
et le mot de passe est developer
. Cliquez sur jenkins
pour voir l'aperçu du projet.
Cliquez sur l'image suivante pour regarder une vidéo du déploiement du service Jenkins :
Variables du rôle
Utilisez les variables suivantes pour modifier le comportement du rôle :
openshift_github_user: openshift
Le propriétaire du dépôt GitHub où se trouvent les cibles de téléchargement du client oc
openshift_github_name: origin
Le nom du dépôt GitHub
openshift_github_url: https://api.github.com/repos
L'URL de l'API GitHub à utiliser.
openshift_release_tag_name: ""
Le tag pour la version désirée du binaire
oc
. Si non fourni, la version la plus récente sera installée.
openshift_client_dest: /usr/local/bin
Le répertoire où
oc
sera installé. Doit être dans votre PATH.
openshift_force_client_install: yes
Si le binaire
oc
existe déjà, doit-il être écrasé ?
openshift_volume_name: project-data
Nom du volume.
openshift_volume_path: "{{ lookup('env','HOME') }}/volumes/project/data"
Un chemin local où de l'espace sera alloué pour le nouveau volume.
openshift_hostname: local.openshift
Le nom d'hôte que vous utiliserez pour référencer le registre local lorsque vous serez prêt à pousser des images.
openshift_recreate: yes
Si un cluster fonctionne déjà, doit-il être arrêté et recréé ?
openshift_up_options: ''
Ajoutez toutes les options que vous souhaitez passer à
oc cluster up
. Séparez plusieurs options par un espace, tout comme vous le feriez en ligne de commande.
Dépendances
Aucune
License
Apache v2
Auteur
Install the latest oc client and create a local OpenShift cluster using `oc cluster up`.
ansible-galaxy install chouseknecht.cluster-up-role