Control de brillo mediante script

22 May, 2016

0 Comments

En esta entrada contare como controlar el brillo desde teclado mediante un script.

Para comenzar tendremos que localizar el directorio donde están los ficheros de configuración del brillo, en mi caso esta en:

/sys/class/backlight/intel_backlight/

 

Este ultimo directorio puede variar según nuestra maquina.

Dentro encontraremos:

actual_brightness  bl_power  brightness  device  max_brightness  power	subsystem  type  uevent

Nos quedamos con max_brightness y brightness. En brightness encontramos el brillo a modificar y en max_brightness encontraremos el brillo máximo, es importante tener en cuenta este ultimo para el modificador ya que nos podemos encontrar desde 99 hasta 4882.

Para comenzar descargamos el script: https://github.com/Tedezed/Codigo-variado/tree/master/control_brillo

Modificamos el valor de la variable modificador a nuestro antojo y la ruta de los ficheros brightness y max_brightness.

subir_brillo.sh

#!/bin/sh

modificador=30

brillo=$(cat /sys/class/backlight/intel_backlight/brightness)
max_brillo=$(cat /sys/class/backlight/intel_backlight/max_brightness)
brillo=$(expr $brillo + $modificador)

if [ "$brillo" -lt "$max_brillo" ]; then
echo $brillo > /sys/class/backlight/intel_backlight/brightness
else
echo $max_brillo > /sys/class/backlight/intel_backlight/brightness
fi

bajar_brillo.sh

#!/bin/sh

modificador=30

brillo=$(cat /sys/class/backlight/intel_backlight/brightness)
max_brillo=$(cat /sys/class/backlight/intel_backlight/max_brightness)
brillo=$(expr $brillo - $modificador)

if [ 0 -lt "$brillo" ]; then
echo $brillo > /sys/class/backlight/intel_backlight/brightness
else
echo 0 > /sys/class/backlight/intel_backlight/brightness
fi

Para instalarlo ejecutamos el instalador:

sh install_root.sh

 

install_root.sh

#!/bin/sh
mkdir /usr/local/bin/control_brillo
cp subir_brillo.sh /usr/local/bin/control_brillo
cp bajar_brillo.sh /usr/local/bin/control_brillo
chmod 755 -R /usr/local/bin/control_brillo

Por ultimo añadimos un atajo de teclado, en Configuración -> teclado.

sudo sh /usr/local/bin/control_brillo/subir_brillo.sh

 

sudo sh /usr/local/bin/control_brillo/bajar_brillo.sh

 

Asociar VIP (Virtual IP) a IP flotante OpenStack

22 May, 2016

0 Comments

En esta entrada tratare un problemas al que muchos nos hemos enfrentado al montar un cluster Activo/Activo o Activo/Pasivo con VIP dentro de de OpenStack. El problema reside en que la VIP que asignas es normalmente de una subnet de neutron, para poder acceder a este recurso podremos acceder desde otra maquina virtual en la misma subnet o asociando la IP de la VIP a una IP flotante.

Para poder realizar la asociación correctamente necesitaremos; la VIP, id IP flotante, id port de la VIP.

En primer lugar listamos las redes con neutron, para consultar la id de la red

(cli-openstack)debian-user@debian:~/$ neutron net-list
+--------------------------------------+--------------------------+--------------------------------------------------+
| id                                   | name                     | subnets                                          |
+--------------------------------------+--------------------------+--------------------------------------------------+
| 9734556d-XXXX-XXXX-XXXX-fdad435fff18 | red de usuario.xxxx | 56693ca1-XXXX-XXXX-XXXX-ee8074bb13b1 10.0.0.0/24 |
| a86fc437-XXXX-XXXX-XXXX-f37a7b05537f | ext-net                  | 3c8cdfb0-XXXX-XXXX-XXXX-c6c3e228b81c             |
+--------------------------------------+--------------------------+--------------------------------------------------+

Creamos un puerto para la VIP neutron port-create {net-id} --fixed-ip ip_address={ip}

neutron port-create 9734556d-XXXX-XXXX-XXXX-fdad435fff18 --fixed-ip ip_address=10.0.0.38

Podremos ver el resultado con

(cli-openstack)debian-user@debian:~/Descargas$ neutron port-list | grep 10.0.0.38
2821603c-POPP-POPP-POPP-bd2349b29e63 | | fa:16:3e:94:a9:bd | {"subnet_id":"56693ca1-XXXX-XXXX-XXXX-ee8074bb13b1","ip_address":"10.0.0.38"}

Para poder asociar la IP flotante necesitaremos su id, para ello podemos listar las existentes con

(cli-openstack)debian-user@debian:~/$ neutron floatingip-list
+--------------------------------------+------------------+---------------------+--------------------------------------+
| id                                   | fixed_ip_address | floating_ip_address | port_id                              |
+--------------------------------------+------------------+---------------------+--------------------------------------+
| 03eeacd9-XXXX-XXXX-XXXX-71a1182ee838 |                  | 172.22.205.249      |                                      |
| 0f36bd32-XXXX-XXXX-XXXX-e41867c5b8d4 | 10.0.0.50        | 172.22.205.246      | 0a10a744-XXXX-XXXX-XXXX-b8ecdcd8bac0 |
| 1f8d124a-XXXX-XXXX-XXXX-101c148a348d | 10.0.0.44        | 172.22.205.241      | 8c306c2b-ZZZZ-ZZZZ-ZZZZ-b64bb5753e6f |
| 2cc63597-XXXX-XXXX-XXXX-45e8e85034fa | 10.0.0.46        | 172.22.205.243      | 2f56c5a4-YYYY-YYYY-YYYY-541916af4b92 |
| 61b53f55-XXXX-XXXX-XXXX-4ca9c90479d5 | 10.0.0.45        | 172.22.205.242      | 8b628bdc-VVVV-VVVV-VVVV-b1608f29624d |
| 75619867-CCCC-CCCC-CCCC-2ac0907329ee | 10.0.0.48        | 172.22.205.244      | 469b1a30-XXXX-XXXX-XXXX-ba487da79e3f |
| acd9ba03-RRRR-RRRR-RRRR-f535dcf0c769 | 10.0.0.43        | 172.22.205.240      | 40f6ad24-JJJJ-JJJJ-JJJJ-7be049772175 |
| d6f96986-EEEE-EEEE-EEEE-563823df3216 |                  | 172.22.205.248      |                                      |
| e4d55da9-WWWW-WWWW-WWWW-308d9b147b13 | 10.0.0.53        | 172.22.205.247      | 8da8d613-BBBB-BBBB-BBBB-96e89e31d8f5 |
| ea9033b1-XXXX-XXXX-XXXX-6dc56a6b9cea | 10.0.0.52        | 172.22.205.245      | c219e492-NNNN-NNNN-NNNN-62ee771c5700 |
+--------------------------------------+------------------+---------------------+--------------------------------------+

Finalmente la asociamos con la IP flotante con la VIP con neutron floatingip-associate --fixed-ip-address {ip} {float-ip-uuid} {port-uuid}

neutron floatingip-associate --fixed-ip-address 10.0.0.38 d6f96986-EEEE-EEEE-EEEE-563823df3216 2821603c-POPP-POPP-POPP-bd2349b29e63

Resultado final

+--------------------------------------+------------------+---------------------+--------------------------------------+
| id                                   | fixed_ip_address | floating_ip_address | port_id                              |
+--------------------------------------+------------------+---------------------+--------------------------------------+
| 03eeacd9-XXXX-XXXX-XXXX-71a1182ee838 |                  | 172.22.205.249      |                                      |
| 0f36bd32-XXXX-XXXX-XXXX-e41867c5b8d4 | 10.0.0.50        | 172.22.205.246      | 0a10a744-XXXX-XXXX-XXXX-b8ecdcd8bac0 |
| 1f8d124a-XXXX-XXXX-XXXX-101c148a348d | 10.0.0.44        | 172.22.205.241      | 8c306c2b-ZZZZ-ZZZZ-ZZZZ-b64bb5753e6f |
| 2cc63597-XXXX-XXXX-XXXX-45e8e85034fa | 10.0.0.46        | 172.22.205.243      | 2f56c5a4-YYYY-YYYY-YYYY-541916af4b92 |
| 61b53f55-XXXX-XXXX-XXXX-4ca9c90479d5 | 10.0.0.45        | 172.22.205.242      | 8b628bdc-VVVV-VVVV-VVVV-b1608f29624d |
| 75619867-CCCC-CCCC-CCCC-2ac0907329ee | 10.0.0.48        | 172.22.205.244      | 469b1a30-XXXX-XXXX-XXXX-ba487da79e3f |
| acd9ba03-RRRR-RRRR-RRRR-f535dcf0c769 | 10.0.0.43        | 172.22.205.240      | 40f6ad24-JJJJ-JJJJ-JJJJ-7be049772175 |
| d6f96986-EEEE-EEEE-EEEE-563823df3216 | 10.0.0.38        | 172.22.205.248      | 2821603c-POPP-POPP-POPP-bd2349b29e63 |
| e4d55da9-WWWW-WWWW-WWWW-308d9b147b13 | 10.0.0.53        | 172.22.205.247      | 8da8d613-BBBB-BBBB-BBBB-96e89e31d8f5 |
| ea9033b1-XXXX-XXXX-XXXX-6dc56a6b9cea | 10.0.0.52        | 172.22.205.245      | c219e492-NNNN-NNNN-NNNN-62ee771c5700 |
+--------------------------------------+------------------+---------------------+--------------------------------------+ 

Migración de maquina virtual KVM en vivo

17 May, 2016

0 Comments

En esta entrada podremos ver la migración de una maquina en kvm (VM-1) con dos volúmenes, a otra maquina (VM-2) redimensionando de camino sus volúmenes lógicos y aumentando su capacidad en vivo.

La maquina VM-1 contara de dos volúmenes; el raíz donde se encuentra la instalación de Debian y otro con Postgres. A continuación expongo el orden de la migración:

Orden de migración:

  • Snapshot de de disco raíz VM-1.
  • Nuevo volumen de 2GB.
  • Con dd pasamos el snapshot de raiz de VM-1 al volumen de 2GB (VM-2-raiz).
  • Creamos nueva maquina con VM-2-raiz.
  • Paramos Postgres.
  • Desmontamos volumen Postgres.
  • Redimensionamos volumen Postgres.
  • Montamos en VM-2 el volumen de Postgres.
  • Arrancamos Postgres en VM-2.
  • Cambio de regla DNAT.

Instalación y configuración de VM-1

En primer lugar explicare la instalación de la maquina VM-1.

En anfitrión:

Creamos dos volúmenes lógicos: lvcreate -n VM-1-raiz -L 1G LVD-Debian lvcreate -n postgres-lvm -L 1G GLVM

Copiamos configuración previa: cp /etc/libvirt/qemu/Debian-Test.xml /etc/libvirt/qemu/VM-1.xml

Buscar y remplazar (Cambio de nombre, eliminar uuid y mac): sed -i 's/Debian-Test/VM-1/' /etc/libvirt/qemu/VM-1.xml; sed -i /uuid/d /etc/libvirt/qemu/VM-1.xml; sed -i '/mac address/d' /etc/libvirt/qemu/VM-1.xml

Añadimos los volúmenes: nano /etc/libvirt/qemu/VM-1.xml

Arrancamos la red: virsh net-start default

Definir VM-1: virsh define /etc/libvirt/qemu/VM-1.xml

Arrancar VM-1: virsh start VM-1

En VM-1:

Instalamos Debian, en el volumen raíz.

Damos formato xfs al volumen: mkfs.xfs /dev/vdb

Añadimos el volumen a /etc/fstab /dev/vdb /var/lib/postgresql xfs defaults 0 1

Reiniciamos la maquina:


Instalamos Postgres:
```apt-get install postgresql-9.4```
Configuración de Postgres:

Entramos en el directorio main de Postgres 9.4:
```nano /etc/postgresql/9.4/main/postgresql.conf```

Editamos el archivo de configuración postgresql.conf:
Buscamos la siguiente linea:
```#listen_addresses = 'localhost'```

Ponemos especificar la IP remota:
```listen_addresses = '172.22.7.88'```

También la podemos cambiar por '\*' para que se puedan conectar todas las IP:
```listen_addresses = '*'```

Buscamos al siguiente linea:
```#password_encryption = on```

Habilitamos el cifrado de la contraseña:
```password_encryption = on```

Editamos el siguiente archivo:

```nano /etc/postgresql/9.4/main/pg_hba.conf```

Con este archivo podemos configurar las relaciones de confianzas de host y redes.
```host all all 127.0.01/32 md5```

También podemos dar acceso a todas las redes con:
```host all all 0.0.0.0 0.0.0.0 md5```

Reiniciamos el servicio con:
```service postgresql restart```

Creamos usuario morrigan para realizar una prueba:

CREATE USER morrigan PASSWORD ‘morrigan’; ALTER ROLE morrigan CREATEDB; \q psql -h localhost -d postgres -U morrigan CREATE DATABASE programas; \q


**En anfitrión:**

Modificamos iptables:
Limpiamos FORDWARD:
```iptables -F FORWARD```

**DNAT:**
```iptables -t nat -A PREROUTING -p tcp --dport 5432 -i wlan0 -j DNAT --to 192.168.122.232```

Desde otro equipo probamos la configuración anterior:
```psql -h IP-anfitrion -U morrigan```

### Migración de VM-1 a VM-2

**En el anfitrión:**

Creamos un snapshot a un volumen logico:
```lvcreate --snapshot -L1G -n VM-1-raiz-snapshot LVD-Debian/VM-1-raiz```

Creamos un volumen final para VM-2 con 2GB:
```lvcreate -n VM-2-raiz -L 2G LVD-Debian```

Volcamos de VM-1-raiz-snapshot a VM-2-raiz
```dd if=/dev/LVD-Debian/VM-1-raiz-snapshot of=/dev/LVD-Debian/VM-2-raiz```
Creamos una nueva maquina VM-2:
Copiamos configuración previa:
```cp /etc/libvirt/qemu/VM-1.xml /etc/libvirt/qemu/VM-2.xml```

Buscar y remplazar:
```sed -i 's/VM-1/VM-2/' /etc/libvirt/qemu/VM-2.xml; sed -i /uuid/d /etc/libvirt/qemu/VM-2.xml; sed -i '/mac address/d' /etc/libvirt/qemu/VM-2.xml; sed -i 's/524288/1048576/' /etc/libvirt/qemu/VM-2.xml```

Añadimos el volumen anterior:
```nano /etc/libvirt/qemu/VM-2.xml```

Definimos el nuevo server VM-2:
```virsh define /etc/libvirt/qemu/VM-2.xml```

Arrancamos el nuevo server VM-2:
```virsh start VM-2```

**En VM-2:**

Modificamos la tabla de particiones:
```fdisk /dev/vda```

Eliminamos la partición con: d
Creamos una nueva con: n
Abarcamos el disco entero.
Finalmente escribimos los cambios: w

Extendemos con xfs_growfs la partición xfs:
```xfs_growfs -d /dev/vda1```

Comprobamos el resultado con:

root@debian:/home/debian# df -h S.ficheros Tamaño Usados Disp Uso% Montado en /dev/vda1 2,0G 821M 1,2G 41% / ```

Con esto, ya tendríamos montado el disco raíz de la maquina en producción VM-1 en VM-2, mientras VM-1 sigue prestando servicio.

En VM-1:

Paramos postgres: service postgresql stop

Desmontamos el directorio: umount /var/lib/postgresql

En anfitrión:

Desacoplamos el disco vdb de VM-1: virsh detach-disk VM-1 vdb

Redimensionamos el volumen: lvresize -L +1GB /dev/LVD-Debian/postgres-lvm

Acoplamos el volumen de VM-1 en VM-2: virsh attach-disk VM-2 /dev/LVD-Debian/postgres-lvm sdb

En VM-2:

Cambiamos vdb por sda nano /etc/fstab /dev/sda /var/lib/postgresql xfs defaults 0 1

Montamos con: mount -a

Redimensionamos xfs: xfs_growfs -d /dev/sda

Iniciamos Postgresql: /etc/init.d/postgresql start

Por ultimo modificamos iptables para cambiar el trafico del puerto 5432: Eliminamos la regla anterior: iptables -t nat -D PREROUTING -p tcp --dport 5432 -i wlan0 -j DNAT --to 192.168.122.232

Añadimos la regla nueva: iptables -t nat -A PREROUTING -p tcp --dport 5432 -i wlan0 -j DNAT --to 192.168.122.73

Con esto terminamos las migración.