A l’air du tout automatique, penchons-nous sur une méthode qui fait ses preuves chez nos clients : incorporer Ansible dans les déploiements Big Data.
Pour cette série d’articles nous allons voir comment nous automatisons nos déploiements Big Data avec Ansible.
Episode 1 : HDFS
Contexte
Nous intervenons la majeure partie du temps sur des environnements sécurisés par Kerberos. Les clusters sont reliés à l’AD de l’entreprise et permettent donc une authentification sur les différents services du cluster.
Nous avons développé des rôles avec différents modules Ansible connus, tel que raw, shell ou command. Nous sommes aussi en cours d’écriture de nos propres modules Ansible Big Data.
Antinomie du distribué pour Ansible
Ansible repose sur le principe de parallélisation des tâches. Cela s’applique bien à des fermes d’instances cloud ou à des ensembles de VMs. Ici, avec Hadoop, le seul point d’entrée se fait par un client HDFS situé sur un serveur edge ; qui communique avec le Namenode.
Notre parti pris est d’utiliser Ansible exclusivement pour appeler un client HDFS. Ce qui ne permet pas de paralléliser les tâches pour un même cluster. En revanche, cela permet de provisionner à la chaîne des arborescences et de profiter des points fort d’Ansible : simplicité et efficacité.
Pour cela, nous veillons à appeler les playbooks sur les edges et à spécifier la propriété : run_once: yes
Kerberos
Afin de s’authentifier sur le cluster “kerberisé”, nous utilisons le module shell ou raw (selon les besoins) pour transférer un keytab valide sur le serveur qui exécute le client HDFS. Une fois nos actions effectuées sur HDFS, nous nous assurons que le keytab ne reste pas. Avec le module file, on le supprime. Voici en résumé ce que cela donne :
Ici vous pouvez remarquer l’utilisation des tags Ansible. Les tags “always” permettent une exécution des modules à chaque appel du playbook. Les tags sont très utiles pour lancer une partie des tâches d’un playbook. La doc est par ici : Ansible tags
Qu’est ce qu’un “keytab” ? Comment on l’utilise ? Comment on le génère ? Cet article vous expliquera tout : générer un keytab
Arborescence HDFS
Une fois le keytab accessible, nous faisons un kinit avec un keytab sur la machine distante, et lancons les commandes hdfs nécessaire au déploiement. Une idée de ce qu’on peut faire :
Sécurisation des répertoires : ACLs HDFS
Dans la même mesure, nous mettons en place une sécurité spécifique sur les répertoires déployés. Pour cela nous utilisons la commande hdfs setfacl pour spécifier les accès. Voici ce que cela peut donner :
Aller plus loin…
Dans ces exemples, il n’y a pas de gestion d’idempotence. Cela peut être fait grâce à des vérifications de type when: ou changed_when:
Dans un futur proche, nous gérerons mieux l’idempotence grâce à notre propre module HDFS Ansible. Un article y sera consacré !
Si vous êtes intéréssé par ces problématiques, n’hésitez pas à nous contacter, sur notre site, ou sur twitter via @cyresgroupe
—
Explore, enrich, make data yours !
—