chouseknecht.cluster-up-role
cluster-up-role
Instala el cliente de OpenShift y crea una instancia local usando oc cluster up
.
Creado para apoyar las necesidades de demostración y prueba de Ansible Container automatizando las tareas en la guía de Instalación y Configuración de OpenShift.
Específicamente, realiza las siguientes tareas:
- Descarga e instala el cliente oc.
- Instala
socat
, si se ejecuta en OSX. - Agrega un nombre de host asociado a tu IP pública en /etc/hosts.
- Inicia el clúster.
- Otorga permisos de administrador del clúster a la cuenta developer.
- Crea una ruta para exponer el registro local.
- Crea un volumen persistente.
- Usando el cliente
oc
, inicia sesión en el clúster como developer y establece el proyecto como default.
Plataformas soportadas y pruebas
Hasta la fecha, este rol ha sido probado principalmente en OSX utilizando Docker para Mac. De hecho, casi funciona en Travis, que es una plataforma Ubuntu. Teniendo esto en cuenta, si intentas usarlo fuera de OSX, es probable que encuentres un error. Si lo haces, por favor, abre un problema o envía un PR, para que podamos mantener el rol actualizado.
Nombre de host
Por defecto, el nombre de host local.openshift
se agrega a tu archivo /etc/hosts y se asocia con tu dirección IP actual. Usa el parámetro openshift_hostname si prefieres un nombre diferente.
Cuando se crea el clúster, se asocia con tu dirección IP de red local. Si trabajas en una laptop u otro dispositivo móvil, es posible que debas recrear el clúster cada vez que cambies de red. Crear un nombre de host asociado con tu dirección IP actual facilita un poco las cosas.
Registro inseguro
Si no has agregado la opción de registro inseguro a Docker, el rol dará un error la primera vez que lo ejecutes. Proporcionará un mensaje informándote sobre el subred que necesita ser añadida. También necesitarás agregar el valor de openshift_hostname. Por defecto, el valor es local.openshift. Después de hacer el cambio y reiniciar Docker, ejecuta el rol nuevamente y esta vez se completará.
Requisitos previos
Necesitarás tener instalado lo siguiente:
- Docker Engine o Docker para Mac.
- Acceso sudo, para actualizar /etc/hosts e instalar el binario
oc
en /usr/local/bin.
NOTA: Si estás en una plataforma Linux, asegúrate de seguir las instrucciones para crear un grupo docker, para que puedas ejecutar comandos docker
directamente sin usar sudo.
Ejemplo de Playbook
Cuando ejecutes el rol, asegúrate de dejar gather_facts
en un valor verdadero. Sin los hechos, el rol no puede determinar la dirección IP del host ni la familia del sistema operativo.
A continuación, se muestra un ejemplo de playbook que incluye todos los parámetros predeterminados. Encontrarás este ejemplo exacto en files/cluster-up.yml. Cópialo y ajústalo para que se adapte a tu entorno.
---
- 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
Después de instalar el rol, copia file/cluster-up.yml a tu directorio de proyecto y ejecútalo con la opción --ask-sudo-pass
. Aquí tienes un ejemplo de cómo podría verse eso:
# Instalar el rol
$ ansible-galaxy install chouseknecht.cluster-up-role
# Copiar el playbook desde tu ruta de roles al directorio de trabajo actual
$ cp ${ANSIBLE_ROLES_PATH}/chouseknecht.cluster-up-role/files/cluster-up.yml .
# Crear un archivo de inventario localhost
$ echo "localhost">./inventory
# Ejecutar el playbook
$ ansible-playbook -i inventory --ask-sudo-pass cluster-up.yml
Desplegando tu proyecto de Ansible Container
En el siguiente ejemplo, crearemos un nuevo proyecto, instalaremos el rol Container Enabled jenkins-container y desplegaremos el servicio Jenkins en nuestro clúster OpenShift local.
NOTA: para ejecutar este ejemplo, necesitarás instalar Ansible Container 0.3.0. Consulta Instalación desde el Código Fuente si necesitas ayuda.
# Crear una nueva carpeta de proyecto
$ mkdir jenkins
# Establecer el directorio de trabajo
$ cd jenkins
# Inicializar el proyecto
$ ansible-container init
# Instalar el rol jenkins-container
$ ansible-container install awasilyev.jenkins-container
# Construir las imágenes
$ ansible-container build
# Generar el playbook de despliegue y rol
$ ansible-container shipit openshift --local-images
# Establecer el directorio de trabajo en ansible
$ cd ansible
# Ejecutar el playbook de shipit
$ ansible-playbook shipit-openshift.yml
Lo anterior creó un nuevo proyecto en OpenShift llamado jenkins
. Para ver el proyecto, inicia sesión en la consola de OpenShift abriendo https://local.openshift:8443/console. El nombre de usuario es developer
y la contraseña es developer
. Haz clic en jenkins
para ver la descripción general del proyecto.
Haz clic en la siguiente imagen para ver un video del despliegue del servicio Jenkins:
Variables del rol
Usa las siguientes variables para modificar el comportamiento del rol:
openshift_github_user: openshift
El propietario del repositorio de GitHub donde se pueden encontrar los destinos de descarga del cliente oc.
openshift_github_name: origin
El nombre del repositorio de GitHub.
openshift_github_url: https://api.github.com/repos
El punto de acceso de la API de GitHub a utilizar.
openshift_release_tag_name: ""
La etiqueta para la versión deseada del binario
oc
. Si no se proporciona, se instalará la última versión.
openshift_client_dest: /usr/local/bin
El directorio donde se instalará
oc
. Debe estar en tu PATH.
openshift_force_client_install: yes
Si el binario
oc
ya existe, ¿debería sobrescribirse?
openshift_volume_name: project-data
Nombre del volumen.
openshift_volume_path: "{{ lookup('env','HOME') }}/volumes/project/data"
Una ruta local donde se asignará espacio para el nuevo volumen.
openshift_hostname: local.openshift
El nombre de host que usarás para hacer referencia al registro local cuando estés listo para subir imágenes.
openshift_recreate: yes
Si ya hay un clúster en funcionamiento, ¿debería eliminarse y recrearse?
openshift_up_options: ''
Agrega cualquier opción que desees pasar a
oc cluster up
. Separa múltiples opciones con un espacio, como lo harías en la línea de comandos.
Dependencias
Ninguna
Licencia
Apache v2
Autor
Install the latest oc client and create a local OpenShift cluster using `oc cluster up`.
ansible-galaxy install chouseknecht.cluster-up-role