levantar openldap en docker

#!/bin/bash
# https://hub.docker.com/r/dinkel/openldap/

# standard run
docker run -d -p 389:389 -e SLAPD_PASSWORD=123456 -e SLAPD_DOMAIN=example.com dinkel/openldap

cat docker.sh

# ldif ADD
#ldapadd -D “cn=admin,dc=example,dc=com” -f exportacion/ldapuser_clean.ldif -W -x

# show inventory
#ldapsearch -x -b “dc=example,dc=com” “objectclass=*”
# show all data
# ldapsearch -x -D “cn=admin,dc=example,dc=com” -b “dc=example,dc=com” “objectclass=*” -W -x
# prepopulate ldiff
#docker run -d -p 389:389 –volume <path del host>/exportacion:/etc/ldap.dist/prepopulate \
# -e SLAPD_PASSWORD=123456 \
# -e SLAPD_DOMAIN=example.com \
# dinkel/openldap

Jenkins from command line

Jenkins from the command line

el que tiene las de ganar es el proyecto de Netflix.

esta hecho en perl, y tiene un ejecutable estatico. Este ejecutable estatico lo he renombrado a jenkins-cli, y lo he situado en /usr/local/bin/

tambien es necesario un fichero ~/.jenkins como:

#baseuri: http://localhost
baseuri: http://<hostname>/jenkins
#jobs:
# - <default jobs>
stoplight: 1

algunos comandos:

  • para ver todos los trabajos existentes:
./jenkins-cli ls --all --baseuri=http://localhost
  • para ver el “console output” de todas las tareas:
./jenkins-cli tail --all --baseuri=http://localhost
  • ver lista de tareas pendientes:
./jenkins-cli q --all --baseuri=http://localhost
  • ver la lista de tareas ya hechas:
./jenkins-cli history --all --baseuri=http://localhost
  • obtener el fichero XML de definicion de un job:
./jenkins-cli conf test01 --baseuri=http://localhost
  • crear un nuevo job, a partir de un fichero de configuracion test01.xml
./jenkins-cli create test02 test01.xml --baseuri=http://localhost
  • lanzar un job:
./jenkins-cli start test02  --baseuri=http://localhost
  • hacer login:
./jenkins-cli login --password

para que funcione el login sobre la version de Jenkins que tenemos en produccion ( 2.7.3 ), hay que aplicar este patch:

11:59 $ diff jenkins-static ../../jenkins-cli/jenkins-static 
597c597
< if ( $res->decoded_content =~ />log in</ ) {
---
> if (index($res->decoded_content, "log in") == -1) {

y listo!

para hacer busquedas con cadenas,

jenkins-cli ls --all reports

muestra todos los jobs que contienen la cadena “reports”. Si solo tenemos un resultado, podemos ver el historico de builds con

jenkins-cli hist --all reports

el problema se plantea si queremos hacer un build con parametros…

jenkins-cli start test01 --param param01=12 --param param02='casa de'

 

cada pareja de parametro y valor se incluye en un –param, y listo!

ahora lo siguiente seria ver la lista de parametros de cada job, y preparar scripts locales para lanzar cada uno de ellos….

…aunque bien pensado, casi seria mas razonable lanzar los Ansibles directamente, pero entonces no habria en mismo nivel de traza uniforme…

solo faltaria tener un “build history” para que la herramienta fuera perfecta.

pythonista, los viejos bucles de procesado de ficheros de texto

#!/usr/bin/python

with open("lista.txt") as f:
    data = f.read()
    for linea in data.split('\n'):
        if linea:
            linea = linea.split(',')
            print ' - Se actualiza "{0}" a "{1}"'.format(linea[0], linea[1])

Usando “with” se consigue reducir de codigo, y usando “if linea” se evita que salten errores en caso de lineas vacias. Lo “de todos estos años” era:

#!/usr/bin/python

a=open("lista.txt", "r")
lista = a.read()
a.close()
lista = lista.split('\n')
for linea in lista:
    if len(linea)>0:
    linea = linea.split(',')
    print ' - Se actualiza "{0}" a "{1}"'.format(linea[0], linea[1])

…update 20180610

el metodo aun se puede mejorar mas, juntando la lectura con la iteracion de lineas, con:

with open('/your/path/file') as f:
    for line in f:
        process(line)

 

google drive desde fuse

podemos montar un google drive desde FUSE, con un sencillo procedimiento.

para que los compartidos esten disponibles (eso si, dentro del subdirectorio .shared/), hay que poner a “true” el valor

shared_with_me=true

en ~/.gdfuse/default/config

despues de primeras pruebas, el acceso no es rapido pero se puede usar.

rm no funciona, pero si mv (!)

parece que cuando añadimos subidrectorios al conjunto “shared with me”, y suponiendo que tengamos permisos adecuados, ya podemos borrar ficheros.

preguntas sobre etica hacker

 

On 28/03/17 20:34, Fran A100 wrote:
Te pongo un poco en contexto. Estoy haciendo un trabajo de Ética
Hacker, algo así como un resumen de lo que pone en el libro de Pekka.
Como tu has sido Hacktivista me gustaría que hablases en que consiste,
como lo has vivido tu. Las preguntas son (puedes añadir y quitar
preguntas xD):

* ¿Qué entiendes tu por ser un Hacker?

un hacker es una persona que disfruta investigando sobre el funcionamiento de la tecnologia, y como derivada, planteando usos alternativos (es decir, usos diferentes de aquellos para los que una tecnologia fue diseñada inicialmente). Es una iniciativa “pasional”, basada en el disfrute más que en otros factores más queridos del capitalismo, como la eficiencia, la productividad o la busqueda del beneficio. La búsqueda en este caso es del goce que proporciona el aprendizaje. Se centra más en el recorrido que en el resultado final. Aunque inicialmente el hacker trabaja sobre aquellos elementos que no tenemos dificultad en identificar como “tecnologia”, se puede centrar en otras ramas del saber, de forma que se puede ser un hacker de cualquier ambito del conocimiento humano

* ¿Que es el Hacktivismo, en consistea? (tu experiencia personal)

Podemos definir hacktivismo como la componente social de ser hacker: toda actividad humana tiene una dimensión individual y una dimensión social, colectiva, que enriquece la práctica individual por medio de la confrontación/comparación/puesta en comun, de los avances, y/o problemas encontrados en el trabajo individual. Ante todo, y gracias al trabajo de las comunidades centradas en el software libre, se busca la componente comunitaria.  Tambien hay un componente “mítico”, “heróico” en la dimensión social del movimiento hacker por medio del cual nos podemo retrotraer  a las primeras epopeyas escritas, como el caso de Gilgamesh, en las cuales el heroe civilizador no solo realiza el viaje iniciatico en busqueda del conocimiento (sería la practica individual del hacker), sino que después vuelve a la comunidad de donde salió para compartir con los demás el conocimiento adquirido.

* ¿Por qué existe la ética hacker en nuestra sociedad, cuando el
capitalismo es totalmente lo contrario?

Porque el capitalismo, aun siendo el sistema  dominante en la mayor parte de nuestros intercambios económicos, no ha podido dar satisfacción a todos los variados tipos de intercambio que se dan entre las personas. Muchas de las formas de intercambio, apoyo mutuo y colaboración provienen de otros marcos conceptuales diferentes al capitalismo, unos previos a él, y otros cuyo nacimiento ha sido convergente, como la propia ética hacker: como puede ser la familia, la comunidad física o las comunidades de interés (sean locales o remotas).

El capitalismo no tiene un marco conceptual que de satistacción a las motivaciones del hacker: no hay “beneficio” ni “productividad” en la investigación desinteresada que anima al hacker a profundizar en el conocimiento, más allá de intentos limitados como el concepto de “ocio”, que pretende separar el tiempo productivo del no productivo convirtiendo a éste último en una mercancia, en una “commodity”, algo que es posible empaquetar, etiquetar y distribuir por medio de intercambios económicos. El hacker pretende (aun inconscientemente) la liberación del tiempo productivo, del tiempo reglado por el contrato y la productividad, para poder dedicarse al 100% a lo que produce placer: la investigación y el aprendizaje.

 

* ¿Importancia de la ética Hacker en la sociedad?

En si, y por si, la ética hacker es uno más de los múltiples vectores de cambio dentro de un mainstream capitalista que ha demostrado su incapacidad para ser la  única lógica de organización de las sociedades humanas. De hecho esta siendo una alternativa válida a la “sociedad del ocio” (que se plantea como utopia ante el avance de la automatización en todos los ámbitos de la producción), en la que el tiempo no es una mercancia, sino un ámbito de decisión de cada individuo. Como producto maduro y ya dominante en su entorno, la ética hacker ha dado lugar a las licencias  libres (la GPL principalmente), que han permitido el desarrollo del software libre, hoy por hoy de uso universal.

Muchas otras formas de colaboración, más antiguas que el capitalismo, forman parte del acervo cultural comun, como las fiestas, o las jornadas de trabajo colectivo, y para estas formas de colaboración no económica no hay cabida en el capitalismo “de libro contable”. De hecho, durante la crisis global que estamos atravesando, parte de las herramientas que han garantizado la supervivencia de sociedades al borde del colapso provienen de este repertorio “pre-capitalista”, como ha sucedido con los sistemas de ayuda mutua derivados de los bancos de tiempo, y las comunidades locales en las que se han articulado mecanismos de reparto de excedente ajenos al intercambio basado en compraventa y/o producción de beneficio.

Gracias de antebrazo

 

swarm mode routing mesh

cuando publicamos un servicio en un swarm de docker (despues de la version 1.12), y exponemos un puerto, ese puerto estará visible en todos los hosts del swarm (incluso en los que no tienen instancias del container corriendo)

swarm mode routing mesh

Para dar servicio sigue siendo necesario el uso de un balanceador (el ngnix de “front”), pero la carga se puede repartir…

aqui un tutorial y video de swarm en un cluster de Raspberry pi(s).