Comment groupe ensemble de tâches dans un bloc en ansible playbook?
Je suis entrain de créer un ansible playbook pour la configuration de nos systèmes de construction. Une partie de ce que j'ai commencé d'écrire des rôles pour l'installation de java (open JDK et Oracle JDK) pour CentOS. Open JDK est disponible via YUM gestionnaire de paquets, donc pas de problème pour idempotence là. Pour oracle Java, j'ai besoin de télécharger, d'installer, de lien symbolique et le nettoyage. Afin de créer idempotence je suis à la recherche de plus propre manière de faire, par exemple voici mon code. Fondamentalement, je suis vérification pour un lien symbolique afin de déterminer si java est installé ou non et l'enregistrement d'une variable pour l'utiliser dans le LORSQUE les modules plus tard. Ce que je ne suis pas du goût est à l'aide de Quand déclaration pour l'ensemble des quatre étapes de l'installation de jdk. comment puis-je groupe tous les quatre étapes (télécharger, installer, lien symbolique et de nettoyage) dans un bloc et de les exécuter sur un quand déclaration?
- name: Check if Java 8 is instaled
stat: path=~/java/oraclejdk8
register: oraclejdk8_sym
- name: Download Java 8
command: "wget --no-cookies -O {{ jdk_download_path }}/{{ oraclejdk8.jdk_rpm_file }} --no-check-certificate --header 'Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie' {{ oraclejdk8.jdk_rpm_url }}"
when: oraclejdk8_sym.stat.islnk is not defined
- name: Install Java 8
yum: name={{ java_archive }} state=present
when: oraclejdk8_sym.stat.islnk is not defined
- name: Symlink to ~/java/oraclejdk8
file: path=~/java/state=directory mode=0755
command: "ln -s /usr/java/jdk{{ oraclejdk8.jdk_version }} ~/java/oraclejdk8"
when: oraclejdk8_sym.stat.islnk is not defined
- name: Clean up
file: state=absent path={{ jdk_download_path}}/{{ oraclejdk8.jdk_rpm_file }}
when: oraclejdk8_sym.stat.islnk is not defined
Vous devez vous connecter pour publier un commentaire.
Si vous êtes sur Ansible 2.0 vous pouvez utiliser le nouveau "bloc" (se reporter à la présentation des nouvelles fonctionnalités ici: http://www.slideshare.net/jimi-c/whats-new-in-v2-ansiblefest-london-2015). Sur 1.x vous pourriez package java des choses dans un rôle et de faire un "lors de la" déclaration sur le rôle.
Dans Ansible 2.x, vous pouvez le faire comme ceci:
block
etwith_items
au lieu dewhen
. Vous avez une erreurERROR! Syntax Error while loading YAML. did not find expected key
pointant vers- block
. Essayé de supprimer-
de- block
, a reçu l'erreur de pointage dewith_items
. (ansible v2.7)