Diferencia entre revisiones de «Cloudy plug-ins»
De Guifi.net - Wiki Hispano
(Página creada.) |
|||
Línea 1: | Línea 1: | ||
− | == ¿Qué | + | == ¿Qué es un plug-in? == |
Cloudy es una distribución de Linux basada en Debian que proporciona a los usuarios una interfaz simple y cómoda para gestionar diferentes servicios que pueden usarse a través de una red comunitaria; en nuestro caso, Guifi. | Cloudy es una distribución de Linux basada en Debian que proporciona a los usuarios una interfaz simple y cómoda para gestionar diferentes servicios que pueden usarse a través de una red comunitaria; en nuestro caso, Guifi. | ||
+ | Al mismo tiempo, Cloudy ofrece una serie de herramientas que permiten a un usuario añadir un servicio de su agrado sin tener grandes conocimientos sobre redes e informática en general. Automaticamente, estos servicios se publican mediante Avahi, de manera que todo el que utilice Cloudy podrá hacer uso de estos servicios. | ||
+ | Otra manera de llamar estos servicios que se pueden poner y quitar de forma sencilla es ''plug-in''. Por tanto, entendemos por plug-in a un programa o software que un usuario quiere añadir a la distribución y que puede ser gestionado de forma simple des de la interfaz web que provee Cloudy. | ||
+ | |||
+ | == Añadir servicios a Cloudy == | ||
+ | |||
+ | === Una pequeña introducción === | ||
+ | |||
+ | Esta guía te enseñará el proceso para añadir un nuevo servicio en la distribución Cloudy. | ||
+ | |||
+ | Para serclaro y dar algunos ejemplos al mismo tiempo, integraremos un servicio bastante simple mostrando algunos trozos de código por el camino. Para seguir el tutorial con más facilidad o bien para integrar servicios más complejos, estaría bien tener algunos conocimientos de Bash<ref name="Bash">(http://www.tldp.org/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf)</ref> y de PHP<ref name="PHP">(https://php.net/manual/es/index.php)</ref>. | ||
+ | |||
+ | Por simplicidad utilizaremos Pastecat<ref name="Pastecat">(https://github.com/mvdan/pastecat)</ref>. Es un buen candidato ya que: | ||
+ | |||
+ | * Es independiente y no se ''federa'' ni se comunica con otros nodos. | ||
+ | * Está hecho en Go, es facil de distribuir e instalar. | ||
+ | * No necesita archivos de configuración. | ||
+ | * No necesita muchos recursos. | ||
+ | |||
+ | === Obtener el binario === | ||
+ | |||
+ | Lo primero que hemos de investigar es como descargar e instalar el binario en Cloudy. La mayoria de software que podemos encontrar está por defecto en los paquetes de Debian, pero Pastecat no está. Si se diera el caso de que estuviera, solo tendríamos que ejecutar el comando <code>apt-get install pastecat</code> desde PHP. | ||
+ | |||
+ | Pero como este no es el caso, tendremos que obtener el binario por otro lado. Una opcion es coger el código fuente y compilarlo nosotros mismos, pero el problema de esto es que Cloudy necesitaria incluir muchas herramientas y librerias de desarrollo, y este no es el objetivo. | ||
+ | |||
+ | La mejor opción si un paquete de Debian no está disponible en los repositorios es descargar los binarios de otro lugar seguro. Podemos utilizar el servicio de ''"releases"'' de Github para ello. Las dos opciones nos dan un archivo ejecutable que tendríamos que ser capaces de ejecutar directamente sobre Cloudy. | ||
+ | |||
+ | En este caso en particular descargaremos los binarios desde el repositorio git con la siguiente linea de comandos: | ||
+ | |||
+ | <code> | ||
+ | wget https://github.com/mvdan/pastecat/releases/download/v0.3.0/pastecat_linux_386 | ||
+ | </code> | ||
+ | |||
+ | Nótese que en este caso en concreto estamos descargando una versión específica para Linux con arquitectura i386. | ||
+ | |||
+ | Fijaos que tener un servicio en los paquetes de Debian tiene muchas ventajas: | ||
+ | |||
+ | * Las actualizaciones son simples y no necesitan trabajo extra desde Cloudy. | ||
+ | * El paquete está compilado para Debian de manera segura. | ||
+ | * Los archivos de ''init.d'' ya vienen por defecto. | ||
+ | * Los paquetes de Debian suelen contener correciones. | ||
+ | |||
+ | === Probarlo === | ||
+ | |||
+ | Antes de añadir un servicio deberíamos configurarlo y probarlo nosotros directamente para ver cómo funciona y que realmente funciona. También hemos de entender qué opciones de configuración o de linea de comandos necesitamos para hacer uso de este servicio en particular y como lo gestionariamos una vez este funcionando. | ||
+ | |||
+ | === Añadir el controlador === | ||
+ | |||
+ | En <code>web/plug/controllers</code> tenenmos un archivo PHP para cada servicio, llamado controlador (o 'controller' en inglés). Este archivo contiene el codigo que se ejecutará cuando se visite la página de nuestro servicio desde la interfaz de Cloudy. | ||
+ | |||
+ | ==== Añadir la función indice ==== | ||
+ | |||
+ | Lo que queremos es que nuestro servicio esté integrado en la estructura web de Cloudy. Para ello, necesitamos crear unos cuantos ''scripts'' en PHP y añadirlos a nuestro sistema. De momento crearemos dos ''scripts'': <code>pastecat.php</code> y <code>pastecat.menu.php</code>. El primer archivo es el controlador, es decir, el ''script'' que renderiza la página y tiene toda la información tal como botones o redireccionamientos. El otro es el que permite que nuestro servicio se muestre en los menus superiores desplegables de Cloudy. | ||
+ | |||
+ | El código del menú será similar a esto: | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | //peerstreamer.menu.php | ||
+ | addMenu('Pastecat','pastecat','Clommunity'); | ||
+ | </code> | ||
+ | |||
+ | Por ahora, utilizaremos un ''script'' muy simple en PHP como controlador: | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | //pastecat | ||
+ | $title="Pastecat"; | ||
+ | |||
+ | function index(){ | ||
+ | global $paspath,$title; | ||
+ | global $staticFile; | ||
+ | |||
+ | $page=hlc(t($title)); | ||
+ | $page .= hl(t("Minimalist pastebin engine written in Go"),4); | ||
+ | $page .= par(t("A simple and self-hosted pastebin service written in Go").' '.t("Can use a variety of storage backends").' '.t(" Designed to optionally remove pastes after a certain period of time.").' '.("If using a persistent storage backend, pastes will be kept between runs.").' '.t("This software runs the").' '."<a href='http://paste.cat'>".t("paste.cat")."</a>". t(" public service.")); | ||
+ | |||
+ | return(array('type' => 'render','page' => $page)); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | En nuestro sistema Cloudy estos archivos han de ponerse en los directorios dentro de <code>/var/local/cDistro/plug/</code>. El primero ha de ir en <code>menus</code> y el segundo en el directori <code>controllers</code>. Una vez hecho esto podemos ir a la web de nuestro Cloudy y acceder al nuevo menú Pastecat. | ||
+ | |||
+ | ==== Hacer que el controlador instale nuestro servicio ==== | ||
+ | |||
+ | Como se ha comentado anteriormente, este paso es mucho más sencillo de hacer si el servicio está entre los paquetes de Debian. Como que no es el caso de Pastecat, lo tendremos que hacer manualmente. Normalmente hacer este proceso manualmente incluye una combinación de los comandos <code>wget</code>, <code>mv</code> y <code>chmod</code>. En general, es buena idea mantener los archivos de este tipo de servicios en <code>/opt/SERVICENAME</code>. | ||
+ | |||
+ | En nuestro caso particular, lo primero que necesitamos es descargar el binario de la ''release'' de Github. Para ello utilizaremos el comando: <code>wget</code>. Dada una URL a un archivo, este comando permite descargar este archivo en nuestro sistema, i es lo que haremos con: | ||
+ | |||
+ | <code bash> | ||
+ | wget https://github.com/mvdan/pastecat/releases/download/v0.3.0/pastecat_linux_386 | ||
+ | </code> | ||
+ | |||
+ | Una vez tengamos el binario en nuestra máquina, lo moveremos al directorio /opt/pastecat/. Para mover los archivos por nuestro sistema usaremos el comando <code>mv</code>. Aun así, primero tendremos que crear el directorio donde pondremos el archivo. Para ello utilizaremos <code>mkdir</code> de la siguiente manera: | ||
+ | |||
+ | <code bash> | ||
+ | mkdir -p /opt/pastecat/ | ||
+ | </code> | ||
+ | |||
+ | Una vez hayamos creado el directorio, es hora de mover el binario: | ||
+ | |||
+ | <code bash> | ||
+ | mv current_directory/pastecat_linux_386 /opt/pastecat/ | ||
+ | </code> | ||
+ | |||
+ | Donde "current_directory" es el directorio donde previamente hemos descargado el binario. Como el nombre del binario depende de la arquitectura, para simplificar el código del controlador, cambiaremos el nombre del archivo ejecutable por algo más genérico y simple: | ||
+ | |||
+ | <code bash> | ||
+ | mv /opt/pastecat/pastecat_linux_386 /opt/pastecat/pastecat | ||
+ | </code> | ||
+ | |||
+ | Ahora nuestro binario se llama <code>pastecat</code> en lugar de <code>pastecat_linux_386</code>. | ||
+ | |||
+ | Estos pasos son los requisitos mínimos para instalar un servicio que no se ofrece directamente en los repositorios oficiales de Debian. Sin embargo, de cara a un usuario final, sería una pesadilla tener que hacer todos estos comandos en una consola conectado a través de <code>ssh</code> a su dispositivo, así que lo que haremos a continuación es crear un ''script'' en Bash que será llamado más adelante a traves de la interfaz web haciendo click en un botón. | ||
+ | |||
+ | Este ''script'' es la primera versión del controlador de Pastecat. Por ahora solo incluiremos una función para instalar Pastecat en nuestro dispositivo. Más adelante incluiremos otras funciones para proveer a nuestro ''script'' de más servicios: | ||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | PCPATH="/opt/pastecat/" | ||
+ | |||
+ | doInstall() { | ||
+ | if isInstall | ||
+ | then | ||
+ | echo "Pastecat is already installed." | ||
+ | return | ||
+ | fi | ||
+ | |||
+ | # Creating directory and switching | ||
+ | mkdir -p $pcpath && cd $pcpath | ||
+ | |||
+ | # Getting file | ||
+ | wget https://github.com/mvdan/pastecat/releases/download/v0.3.0/pastecat_linux_386 | ||
+ | |||
+ | # Changing name so controller can invoke it generically | ||
+ | mv pastecat_linux_386 pastecat | ||
+ | chmod +x pastecat | ||
+ | |||
+ | cd - | ||
+ | } | ||
+ | |||
+ | isInstalled() { | ||
+ | [ -d $pcpath ] && return 0 | ||
+ | return 1 | ||
+ | } | ||
+ | |||
+ | |||
+ | case $1 in | ||
+ | "install") | ||
+ | shift | ||
+ | doInstall $@ | ||
+ | ;; | ||
+ | esac | ||
+ | </code> | ||
+ | |||
+ | Podemos ver como los últimos pasos se han concentrado en una misma función, permmiténdonos instalar el software en el dispositivo de una manera mas sencilla. | ||
+ | |||
+ | ==== Hacer que el controlador utilitce Pastecat ==== | ||
+ | |||
+ | ===== Ejecutar el servicio ===== | ||
+ | |||
+ | WiP | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === Final === | ||
+ | |||
+ | Finalmente añadir que todos los archivos implementados en este tutorial se pueden encontrar en un repositorio Github, que aparece en el apartado de Enlaces Externos, junto a este mismo tutorial en formato Markdown (md). | ||
+ | |||
+ | |||
+ | |||
+ | == Referencias == | ||
+ | |||
+ | <references/> | ||
== Enlaces externos == | == Enlaces externos == | ||
+ | |||
https://github.com/Clommunity/Doc/tree/master/plugins/pastecat | https://github.com/Clommunity/Doc/tree/master/plugins/pastecat | ||
− | [[ | + | [[Categoría:Cloudy]] |
[[ca:Cloudy_plug-ins]] | [[ca:Cloudy_plug-ins]] | ||
[[en:Cloudy_plug-ins]] | [[en:Cloudy_plug-ins]] |
Revisión de 17:56 22 abr 2015
¿Qué es un plug-in?
Cloudy es una distribución de Linux basada en Debian que proporciona a los usuarios una interfaz simple y cómoda para gestionar diferentes servicios que pueden usarse a través de una red comunitaria; en nuestro caso, Guifi.
Al mismo tiempo, Cloudy ofrece una serie de herramientas que permiten a un usuario añadir un servicio de su agrado sin tener grandes conocimientos sobre redes e informática en general. Automaticamente, estos servicios se publican mediante Avahi, de manera que todo el que utilice Cloudy podrá hacer uso de estos servicios.
Otra manera de llamar estos servicios que se pueden poner y quitar de forma sencilla es plug-in. Por tanto, entendemos por plug-in a un programa o software que un usuario quiere añadir a la distribución y que puede ser gestionado de forma simple des de la interfaz web que provee Cloudy.
Añadir servicios a Cloudy
Una pequeña introducción
Esta guía te enseñará el proceso para añadir un nuevo servicio en la distribución Cloudy.
Para serclaro y dar algunos ejemplos al mismo tiempo, integraremos un servicio bastante simple mostrando algunos trozos de código por el camino. Para seguir el tutorial con más facilidad o bien para integrar servicios más complejos, estaría bien tener algunos conocimientos de Bash[1] y de PHP[2].
Por simplicidad utilizaremos Pastecat[3]. Es un buen candidato ya que:
- Es independiente y no se federa ni se comunica con otros nodos.
- Está hecho en Go, es facil de distribuir e instalar.
- No necesita archivos de configuración.
- No necesita muchos recursos.
Obtener el binario
Lo primero que hemos de investigar es como descargar e instalar el binario en Cloudy. La mayoria de software que podemos encontrar está por defecto en los paquetes de Debian, pero Pastecat no está. Si se diera el caso de que estuviera, solo tendríamos que ejecutar el comando apt-get install pastecat
desde PHP.
Pero como este no es el caso, tendremos que obtener el binario por otro lado. Una opcion es coger el código fuente y compilarlo nosotros mismos, pero el problema de esto es que Cloudy necesitaria incluir muchas herramientas y librerias de desarrollo, y este no es el objetivo.
La mejor opción si un paquete de Debian no está disponible en los repositorios es descargar los binarios de otro lugar seguro. Podemos utilizar el servicio de "releases" de Github para ello. Las dos opciones nos dan un archivo ejecutable que tendríamos que ser capaces de ejecutar directamente sobre Cloudy.
En este caso en particular descargaremos los binarios desde el repositorio git con la siguiente linea de comandos:
wget https://github.com/mvdan/pastecat/releases/download/v0.3.0/pastecat_linux_386
Nótese que en este caso en concreto estamos descargando una versión específica para Linux con arquitectura i386.
Fijaos que tener un servicio en los paquetes de Debian tiene muchas ventajas:
- Las actualizaciones son simples y no necesitan trabajo extra desde Cloudy.
- El paquete está compilado para Debian de manera segura.
- Los archivos de init.d ya vienen por defecto.
- Los paquetes de Debian suelen contener correciones.
Probarlo
Antes de añadir un servicio deberíamos configurarlo y probarlo nosotros directamente para ver cómo funciona y que realmente funciona. También hemos de entender qué opciones de configuración o de linea de comandos necesitamos para hacer uso de este servicio en particular y como lo gestionariamos una vez este funcionando.
Añadir el controlador
En web/plug/controllers
tenenmos un archivo PHP para cada servicio, llamado controlador (o 'controller' en inglés). Este archivo contiene el codigo que se ejecutará cuando se visite la página de nuestro servicio desde la interfaz de Cloudy.
Añadir la función indice
Lo que queremos es que nuestro servicio esté integrado en la estructura web de Cloudy. Para ello, necesitamos crear unos cuantos scripts en PHP y añadirlos a nuestro sistema. De momento crearemos dos scripts: pastecat.php
y pastecat.menu.php
. El primer archivo es el controlador, es decir, el script que renderiza la página y tiene toda la información tal como botones o redireccionamientos. El otro es el que permite que nuestro servicio se muestre en los menus superiores desplegables de Cloudy.
El código del menú será similar a esto:
<?php //peerstreamer.menu.php addMenu('Pastecat','pastecat','Clommunity');
Por ahora, utilizaremos un script muy simple en PHP como controlador:
<?php //pastecat $title="Pastecat"; function index(){ global $paspath,$title; global $staticFile; $page=hlc(t($title)); $page .= hl(t("Minimalist pastebin engine written in Go"),4); $page .= par(t("A simple and self-hosted pastebin service written in Go").' '.t("Can use a variety of storage backends").' '.t(" Designed to optionally remove pastes after a certain period of time.").' '.("If using a persistent storage backend, pastes will be kept between runs.").' '.t("This software runs the").' '."<a href='http://paste.cat'>".t("paste.cat")."</a>". t(" public service.")); return(array('type' => 'render','page' => $page)); }
En nuestro sistema Cloudy estos archivos han de ponerse en los directorios dentro de /var/local/cDistro/plug/
. El primero ha de ir en menus
y el segundo en el directori controllers
. Una vez hecho esto podemos ir a la web de nuestro Cloudy y acceder al nuevo menú Pastecat.
Hacer que el controlador instale nuestro servicio
Como se ha comentado anteriormente, este paso es mucho más sencillo de hacer si el servicio está entre los paquetes de Debian. Como que no es el caso de Pastecat, lo tendremos que hacer manualmente. Normalmente hacer este proceso manualmente incluye una combinación de los comandos wget
, mv
y chmod
. En general, es buena idea mantener los archivos de este tipo de servicios en /opt/SERVICENAME
.
En nuestro caso particular, lo primero que necesitamos es descargar el binario de la release de Github. Para ello utilizaremos el comando: wget
. Dada una URL a un archivo, este comando permite descargar este archivo en nuestro sistema, i es lo que haremos con:
wget https://github.com/mvdan/pastecat/releases/download/v0.3.0/pastecat_linux_386
Una vez tengamos el binario en nuestra máquina, lo moveremos al directorio /opt/pastecat/. Para mover los archivos por nuestro sistema usaremos el comando mv
. Aun así, primero tendremos que crear el directorio donde pondremos el archivo. Para ello utilizaremos mkdir
de la siguiente manera:
mkdir -p /opt/pastecat/
Una vez hayamos creado el directorio, es hora de mover el binario:
mv current_directory/pastecat_linux_386 /opt/pastecat/
Donde "current_directory" es el directorio donde previamente hemos descargado el binario. Como el nombre del binario depende de la arquitectura, para simplificar el código del controlador, cambiaremos el nombre del archivo ejecutable por algo más genérico y simple:
mv /opt/pastecat/pastecat_linux_386 /opt/pastecat/pastecat
Ahora nuestro binario se llama pastecat
en lugar de pastecat_linux_386
.
Estos pasos son los requisitos mínimos para instalar un servicio que no se ofrece directamente en los repositorios oficiales de Debian. Sin embargo, de cara a un usuario final, sería una pesadilla tener que hacer todos estos comandos en una consola conectado a través de ssh
a su dispositivo, así que lo que haremos a continuación es crear un script en Bash que será llamado más adelante a traves de la interfaz web haciendo click en un botón.
Este script es la primera versión del controlador de Pastecat. Por ahora solo incluiremos una función para instalar Pastecat en nuestro dispositivo. Más adelante incluiremos otras funciones para proveer a nuestro script de más servicios:
#!/bin/bash PCPATH="/opt/pastecat/" doInstall() { if isInstall then echo "Pastecat is already installed." return fi # Creating directory and switching mkdir -p $pcpath && cd $pcpath # Getting file wget https://github.com/mvdan/pastecat/releases/download/v0.3.0/pastecat_linux_386 # Changing name so controller can invoke it generically mv pastecat_linux_386 pastecat chmod +x pastecat cd - } isInstalled() { [ -d $pcpath ] && return 0 return 1 } case $1 in "install") shift doInstall $@ ;; esac
Podemos ver como los últimos pasos se han concentrado en una misma función, permmiténdonos instalar el software en el dispositivo de una manera mas sencilla.
Hacer que el controlador utilitce Pastecat
Ejecutar el servicio
WiP
Final
Finalmente añadir que todos los archivos implementados en este tutorial se pueden encontrar en un repositorio Github, que aparece en el apartado de Enlaces Externos, junto a este mismo tutorial en formato Markdown (md).
Referencias
- ↑ (http://www.tldp.org/LDP/Bash-Beginners-Guide/Bash-Beginners-Guide.pdf)
- ↑ (https://php.net/manual/es/index.php)
- ↑ (https://github.com/mvdan/pastecat)
Enlaces externos
https://github.com/Clommunity/Doc/tree/master/plugins/pastecat