Howto ansible orquestacion
Sumario
Descripción[editar]
Ansible no utiliza el concepto cliente-servidor, para que el mismo funcione solo hay que instalar ansible en el equipo que va a oficiar de servidor y copiar su llave publica a los clientes.
Instalación[editar]
apt-get install ansible
Configuración[editar]
Ansible se basa en un archivo denominado hosts que se encuentra en /etc/ansible en el mismo se crear los grupos de host.
- Ejemplo: si queireo crear un grupo de webserver, defino lo siguiente;
[webserver] 192.168.0.30 192.168.0.10 prueba.ejemplo.com.ar prueba1.ejemplo.com.ar
Definicion de Playbook[editar]
Playbooks describen configuraciones, despliegue, y orquestación en Ansible.11 El formato del Playbook es YAML. Cada Playbook asocia un grupo de hosts a un conjunto de roles. Cada rol está representado por llamadas a lo que Ansible define como Tareas.
Playbook para un Servidor web[editar]
El ejemplo a continuación es un playbook para la orquestación de un web sever. el archivo se denomina webserver.yml y esta ubicado en el directorio /etc/ansible
--- - hosts: webservers user: root vars: domain: macaco.com.ar tasks: ## # Instalacion de paquetes necesarios. ## - name: Actualizacion de repositorios apt: update_cache: yes - name: Instalacion de Apache2. action: apt pkg={{ item }} state=installed with_items: - apache2 ## # Configuracion de Apache2. ## - name: Apache2 | Habilitar modulos action: command a2enmod rewrite vhost_alias - name: create virtual host file template: src=virtualhost.conf dest=/etc/apache2/sites-available/{{ domain }}.conf - name: a2ensite {{ domain }} command: a2ensite {{ domain }} args: creates: /etc/apache2/sites-enabled/{{ domain }}.conf ## # Reinicio de servicios ## - name: Restart Apache action: service name=apache2 state=restarted - name: 4. install web propia copy: src=index.html dest=/var/www/html/index.html mode=0664
En este caso el playbook utiliza dos archivos virtualhost.conf y index.html
- virtualhost.conf
<VirtualHost *:80> ServerAdmin webmaster@{{ domain }} ServerName {{ domain }} ServerAlias www.{{ domain }} DocumentRoot /var/www/{{ domain }} ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
- index.html
<html> <head> <title>Ansible WEB</title> </head> <body bgcolor="#FFF9B1"> <center><p><a href="http://www.ejemplo.edu.ar">Web ejemplo</a></p></center> <center><p>Web creada desde Ansible</p></center> </body> </html>
El resultado de esta orquestación sera instalar apache2, habilitar los modules rewrite y vhost_alias, crear el virtual host macaco.com.ar y que el index por default sea index.html en todos los equipos que pertenezcan a webservers
Playbook para un Servidor LAMP[editar]
El ejemplo a continuación es un playbook para la orquestación de un web sever. el archivo se denomina lamp.yml y esta ubicado en el directorio /etc/ansible
--- - hosts: lamp user: root vars: database: glpi usuario: usuario contrasena: 123456 tasks: ## # Instalacion de paquetes necesarios. ## - name: Actualizacion de repositorios apt: update_cache: yes - name: Instalacion de Apache2. apt: state=present name={{ item }} with_items: - apache2 - mysql-server - libapache2-mod-php5 - php5 - php5-gd - php5-mysql - python-mysqldb ## # Configuracion de Apache2. ## - name: Apache2 | Habilitar modulos action: command a2enmod rewrite vhost_alias ## # Reinicio de servicios ## - name: Restart Apache action: service name=apache2 state=restarted - name: 4. install Hello World PHP script copy: src=index.html dest=/var/www/html/index.html mode=0664 - name: 5. Start Mysql Service service: name=mysql state=started enabled=true # - name: 6. update mysql root password for all root accounts - name: 6. Create a new database mysql_db: db={{ database }} state=present collation=utf8_general_ci - name: 7. Create a database user mysql_user: user={{ usuario }} password={{ contrasena }} priv=*.*:ALL state=present - name: 8a. Copy sample data copy: src=dump.sql dest=/tmp/dump.sql - name: 8b. Insert sample data shell: cat /tmp/dump.sql | mysql -u {{ usuario }} --password={{ contrasena }} {{ database }}
- dump.sql
CREATE TABLE IF NOT EXISTS glpi ( message varchar(255) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO glpi (message) VALUES('Heeeeee GATOOO!');
El resultado de esta orquestación sera instalar apache2, mysql-server, libapache2-mod-php5, php5, php5-gd, php5-mysql, python-mysqldb, crear una base llamada glpi, crear el usuario sergio con la contraseña dsiredes sobre la base glpi y restaurar un backup que se encuentra en el archivo dump.sql