portal-andino

Instalación

Teniendo en cuenta la dificultad de implementación e incluso la cantidad de pasos para lograr un deploy existoso, existen dos formas de instalar esta distribución de CKAN.

Indice

Dependencias

Para la instalación, usamos un script de python llamado install.py. El mismo requiere algunos parámetros específicos, y existen otros que son opcionales:

# Parametros de install.py
    [-h]                    Mostrar la ayuda del script
    --error_email           Email donde se mandaran los errores del portal de ser necesario
    --site_host             Dominio o IP del la aplicación *sin el protocolo*
    --database_user         Nombre del usuario de la base de datos a crear
    --database_password     Contraseña de la base de datos a crear
    --datastore_user        Nombre del usuario de la base de datos del datastore a crear
    --datastore_password    Contraseña de la base de datos del datastore a crear
    [--nginx-extended-cache]
        Configura nginx con una configuración extendida y configura el hook de
        invalidación de cache de Andino para notificar a nginx
    [--nginx_ssl]
        Aplica la configuración HTTPS en nginx. Requiere ambos archivos del certificado SSL para poder lograrlo; en 
        caso contrario, se utilizará la configuración default
    [--ssl_key_path SSL_KEY_PATH]
        Path dentro del host donde está ubicado el archivo .key para el certificado SSL; será copiado al contenedor 
        de nginx si tanto éste como el .crt pueden ser encontrados
    [--ssl_crt_path SSL_CRT_PATH]
        Path dentro del host donde está ubicado el archivo .crt para el certificado SSL; será copiado al contenedor 
        de nginx si tanto éste como el .key pueden ser encontrados
    [--nginx_port NGINX_PORT]
        Puerto del servidor "Host" que se desea que se tome para recibir llamadas HTTP.
        Por defecto es el 80.
    [--nginx_ssl_port NGINX_SSL_PORT]
        Puerto del servidor "Host" que se desea que se tome para recibir llamadas HTTPS.
        Por defecto es el 443.
        Es importante para los administradores saber que Andino tomará el puerto especificado (o el default) ya sea que el portal use o no use HTTPS. En caso de no querer usar HTTPS y que el host tenga erl puerto 443 tomado por un servidor web, es requisito especificar un puerto distinto (ejemplo: 8443) que será reservado por Andino, pero no utilizado.
    [--datastore_port DATASTORE_PORT]
        Puerto del servidor "Host" que se desea que se tome para recibir llamadas HTTP al "datastore".
        Por defecto es el 8800.
    [--install_directory INSTALL_DIRECTORY]
        Directorio donde se desea instalar la aplicación.
        Por defecto es `/etc/portal` (recomendado)
    [--file_size_limit FILE_SIZE_LIMIT]
        Configura el límite de tamaño para subida de archivos en recursos. 

Instalación simplificada de andino

La idea detrás de esta implementación de CKAN es que sólo te encargues de tus datos, nada más. Por eso, si “copiás y pegás” el comando de consola, en sólo unos momentos tendrás un Andino listo para usar. Esta clase de instalación no requiere que clones el repositorio, ya que usamos contenedores alojados en DockerHub.

Para esta instalación de ejemplo, usaremos los siguientes parámetros para la aplicación:

Para los demás, usaremos los valores por defecto.

Nota: Si usamos una IP para la variable HOST, el envío de mails no funcionará. Postfix require un “fully-qualified domain name (FQDN)”. Ver la documentación de Postfix para más detalles.

Nota 2: Si se utiliza el nombre ‘localhost’ para la variable site_host, es posible que ocurra un error al intentar subir un archivo perteneciente a un recurso al Datastore. Para evitar este problema, se debe utilizar un hostname diferente.

# Primero especificamos los valores necesarios

EMAIL=admin@example.com
HOST=andino.midominio.com.ar
DB_USER=my_database_user
DB_PASS=my_database_pass
STORE_USER=my_data_user
STORE_PASS=my_data_pass

wget https://raw.github.com/datosgobar/portal-andino/master/install/{install,installation_manager}.py

sudo python ./install.py \
    --error_email "$EMAIL" \
    --site_host="$HOST" \
    --database_user="$DB_USER" \
    --database_password="$DB_PASS" \
    --datastore_user="$STORE_USER" \
    --datastore_password="$STORE_PASS"

Instalación avanzada de andino

La instalación avanzada está pensada para usuarios que quieren ver cómo funciona internamente Andino.

Para instalar y ejecutar Andino, seguiremos estos pasos:

sudo mkdir /etc/portal
cd /etc/portal
sudo git clone https://github.com/datosgobar/portal-andino.git .

NOTA: Debemos usar un dominio válido para la variable DOMINIO, de otra forma el envio de mails no funcionará. Postfix require un “fully-qualified domain name (FQDN)”. Ver la documentación de Postfix para más detalles.

DB_USER=<my user>
DB_PASS=<my pass>
DOMINIO=andino.midominio.com.ar
ANDINO_VERSION=<version que deseamos instalar>
sudo su -c "echo POSTGRES_USER=$DB_USER > .env"
sudo su -c "echo POSTGRES_PASSWORD=$DB_PASS >> .env"
sudo su -c "echo NGINX_HOST_PORT=80 >> .env"
sudo su -c "echo DATASTORE_HOST_PORT=8800 >> .env"
sudo su -c "echo maildomain=$DOMINIO >> .env"
sudo su -c "echo ANDINO_TAG=$ANDINO_VERSION >> .env"
EMAIL=admin@example.com
HOST=datos.gob.ar
DB_USER=<my db user>
DB_PASS=<my db pass>
STORE_USER=<my datastore user>
STORE_PASS=<my datastore password>
sudo docker-compose -f latest.yml exec portal /etc/ckan_init.d/init.sh -e "$EMAIL" -h "$HOST" \
        -p "$DB_USER" -P "$DB_PASS" \
        -d "$STORE_USER" -D "$STORE_PASS"

Desinstalar andino

Esta secuencia de comandos va a ELIMINAR TODOS LOS CONTENEDORES, IMÁGENES y VOLUMENES de la aplicación de la vm donde está instalada la plataforma.

Esta operación no es reversible. Perderás todos tus datos si realizas esta operación.

app_dir="/etc/portal/"
cd $app_dir
docker-compose -f latest.yml down -v
cd ~/
sudo rm $app_dir -r