¡Scotty no tenemos potencia! Debian backports

Logo de la pelicula regreso al futuro

Después de nuestros primeros pinitos en ansible, estaremos deseando instalar hasta la cafetera con ansible, sobre todo los que instalamos cafeteras muy a menudo, así que es el momento de empezar a dar vueltas por internet y buscar cómo hacer más cosas, imaginemos que queremos instalar dbmail (que lo haremos más adelante), el primer paso es añadir el repositorio de paquetes de dbmail (http://debian.nfgd.net/debian), esto puede hacerse fácilmente en ansible con las siguientes lineas en un playbook:

- hosts: dbmail-all
  user: ansible
  sudo: yes
  tasks:
    tasks:
  - name: añadir repositorios de Dbmail
    apt_repository: repo={{item}} state=present
    with_items:
      - deb http://debian.nfgd.net/debian jessie main
      - deb-src http://debian.nfgd.net/debian jessie main

Y cuando intentamos felices de nosotros ejecutar nuestro playbook nos encontramos con los siguiente:

ERROR: repo is not a legal parameter in an Ansible task or handler

¿mande? Pero si repo es una etiqueta obligatoria de apt_repository, ¿como no va a ser un parámetro legal? La respuesta: versión muy vieja de ansible, efectivamente, la versión que viene de serie en Jessie es la 1.7.2 y la última estable en github es la 2.2, eso es una diferencia muuuuuy grande.

Para añadir los backports en Jessie (a lo Debian) creamos un nuevo fichero: /etc/apt/sources.list.d/001_jessie_backports.list:

deb http://httpredir.debian.org/debian jessie-backports main contrib non-free

De esta manera, al hacer apt-get update veremos:

Get:1 http://httpredir.debian.org jessie-backports InRelease [166 kB]
Get:2 http://httpredir.debian.org jessie-backports/main amd64 Packages [791 kB]
Get:3 http://httpredir.debian.org jessie-backports/contrib amd64 Packages [9,804 B]
Get:4 http://httpredir.debian.org jessie-backports/non-free amd64 Packages [27.7 kB]

Ya tenemos las fuentes de backports disponibles y podremos instalar los paquetes desde ellas, es necesario dejar claro, que seguiremos instalando los paquetes del repositorio de Jessie, y que solo los paquetes que indiquemos expresamente se instalarán desde backports:

 

apt-get install -t jessie-backports ansible
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
ieee-data python-kerberos python-netaddr python-xmltodict
Suggested packages:
cowsay ipython python-netaddr-docs
Recommended packages:
python-winrm
The following NEW packages will be installed:
ieee-data python-kerberos python-netaddr python-xmltodict
The following packages will be upgraded:
ansible
1 upgraded, 4 newly installed
...
Setting up python-xmltodict (0.9.0-1) ...
Setting up ieee-data (20150531.1~deb8u2) ...
Setting up python-netaddr (0.7.18-1~bpo8+1) ...
Setting up ansible (2.2.0.0-1~bpo8+1) ...
Installing new version of config file /etc/ansible/ansible.cfg ...
Setting up python-kerberos (1.1.5-0.1+deb8u1) ...

 

Ya tenemos ansible 2.2.0 en nuestro sistema.

Con esto ya podemos ejecutar nuestro playbook sin problemas:

PLAY [dbmail] ******************************************************************

TASK [setup] *******************************************************************

ok: [10.0.15.13]

TASK [añadir repositorios de Dbmail] *******************************************
changed: [10.0.15.13] => (item=deb http://debian.nfgd.net/debian jessie main)
changed: [10.0.15.13] => (item=deb-src http://debian.nfgd.net/debian jessie main)

PLAY RECAP *********************************************************************
10.0.15.13 : ok=2 changed=1 unreachable=0 failed=0

 

 

Etiquetas