Le Labo #15 - 2nde partie | Industrialisation d'infrastructure Cloud sur AWS
14/Jun 2016
Industrialisation d’infrastructure Cloud sur AWS - 2nde partie
Petite introduction
Je continue mon tour d’horizon des outils existants d’industrialisation/orchestration d’infrastructure Cloud.
Après avoir fais un tour du côté de DigitalOcean à l’aide de Terraform, Je continue l’aventure du côté d’Amazon.
Après avoir expliqué la création du template pour Packer, c’est au tour des playbook d’Ansible.
Avant d’aller plus loin
Dans l’article précédent, j’avais évoqué le déploiement de serveurs LDAP, Web, MySQL et Docker Registry.
Comme je vais déployer quatre images, je vais avoir besoin de quatre playbook différents.
Du côté d’Ansible - Les playbooks
LDAP
---
- hosts: localhost
tasks:
- name: 1. Deploy LDAP Server
sudo: true
apt: pkg=slapd state=installed update_cache=true
- name: 2. Deploy LDAP Server
sudo: true
apt: pkg=ldap-utils state=installed update_cache=true
Docker Registry
---
- hosts: localhost
tasks:
- name: Download UCP
command: wget https://packages.docker.com/caas/ucp-1.1.0_dtr-2.0.0.tar.gz
- name: Load UCP in docker
command: docker load < ucp-1.1.0_dtr-2.0.0.tar.gz
- name: Deploy registry
command: docker run docker/trusted-registry:1.4.3 install | bash
MySQL
---
- hosts: localhost
vars:
mysql_root_password: <password>
tasks:
- name: 1. Install MySQL Server
sudo: yes
apt: name=mysql-server update_cache=yes cache_valid_time=3600 state=present
- name: 2. Install Python MySQL
sudo: yes
apt: name=python-mysqldb update_cache=yes cache_valid_time=3600 state=present
- name: Start the MySQL service
sudo: yes
service:
name: mysql
state: started
enabled: true
- name: update mysql root password for all root accounts
sudo: yes
mysql_user:
name: root
host: "{{ item }}"
password: "{{ mysql_root_password }}"
login_user: root
login_password: "{{ mysql_root_password }}"
check_implicit_admin: yes
priv: "*.*:ALL,GRANT"
with_items:
- 127.0.0.1
- ::1
- localhost
Web
---
- hosts: localhost
sudo: yes
tasks:
- name: install apache2
apt: name=apache2 update_cache=yes state=latest
- name: enabled mod_rewrite
apache2_module: name=rewrite state=present
notify:
- restart apache2
handlers:
- name: restart apache2
service: name=apache2 state=restarted
Du côté de Packer
Retournons du côté de Packer.
Maintenant que les playbooks pour chaque images ont été créés, je vais pouvoir démarrer la création des images.
Avant cela, à l’aide de la commande packer inspect, je vais pouvoir vérifier qu’il n’y a aucune erreur :
Variables:
<No variables>
Builders:
amazon-ebs
Provisioners:
ansible-local
Note: If your build names contain user variables or template
functions such as 'timestamp', these are processed at build time,
and therefore only show in their raw form here.
Ensuite, à l’aide de la commande packer build, la création des images démarre.
Si la création des images est un succès, on peut obtenir quelque chose comme ce qui suit en fin de création:
==> amazon-ebs: Stopping the source instance
==> amazon-ebs: Waiting for the instance to stop
==> amazon-ebs: Creating the AMI: pack_ladp_1465981424
amazon-ebs: AMI: ami-c733daa8
==> amazon-ebs: Waiting for AMI to become ready
==> amazon-ebs: Adding tags to AMI (ami-c733daa8)
amazon-ebs: adding tag: "OS_Version": "Ubuntu"
amazon-ebs: adding tag: "Release": "Latest"
==> amazon-ebs: Tagging snapshot: snap-2eca0024
==> amazon-ebs: Terminating the source AWS instance...
==> amazon-ebs: Cleaning up any extra volumes...
==> amazon-ebs: Deleting temporary security groups...
Build 'amazon-ebs' finished.
==> Build finished. The artifacts of successful builds are:
--> amazon-ebs: AMIs were created