chouseknecht.cluster-up-role

Estado de Construcción

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:

Desplegar 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

@chouseknecht

Acerca del proyecto

Install the latest oc client and create a local OpenShift cluster using `oc cluster up`.

Instalar
ansible-galaxy install chouseknecht.cluster-up-role
Licencia
apache-2.0
Descargas
159
Propietario
Ansible Galaxy Engineering Manager