2017-10-13 4 views
0

J'ai un serveur distant avec un fichier dessus. Une ligne dans ce fichier est le suivant:Ansible: Comment peupler une variable avec la valeur d'un motif/sous-chaîne sur une ligne dans un fichier distant?

authorizationToken=<hash or empty string> 

Je voudrais définir une variable dans un rôle à la valeur de tout ce qui est après le signe égal sur cette ligne, si quelque chose (il pourrait être un hachage, ou ce pourrait être une chaîne vide).

Quelle est la manière la moins terrible de faire cela?

+0

dup https://stackoverflow.com/a/44260130/2795592? –

Répondre

1

Konstantin vous lié à une solution à l'aide des faits personnalisés, mais vous pouvez aussi obtenir la même valeur à l'aide d'une tâche simple comme:

- name: get authorizationToken 
    command: > 
    awk -F= '$1 == "authorizationToken" {print $2}' /path/to/configfile 
    register: token 

Maintenant, la valeur est disponible dans les tâches suivantes comme token.stdout.

+0

Hah, nous sommes arrivés à la même conclusion. :) – iLikeDirt

+0

Eh bien, bien sûr, même si j'ai posté cela il y a une heure. Comme il semble que vous ayez adopté cette solution, vous voulez peut-être la marquer comme la réponse acceptée? – larsks

0

Après avoir essayé pendant un certain temps à faire la « bonne », à la fin du chemin de moindre résistance utilisait un script shell:

- name: Record autorization Token 
    shell: "cat {{ buildagent_dir }}/conf/buildAgent.properties 2>/dev/null | grep authorizationToken | cut -d '=' -f 2" 
    register: token 
+0

Notez que vous n'avez pas besoin de 'cat' dans tous les cas, et en utilisant' awk' vous pouvez remplacer * both * le 'grep' et' cut', et puisque vous êtes maintenant à une seule commande, vous pouvez remplacer 'shell' avec' command'. – larsks

+0

Je sais que ce n'est pas la manière la plus efficace, mais je préfère généralement l'explicite et la lisibilité à l'efficacité lors de l'écriture de commandes shell, et je trouve que la syntaxe awk est plus difficile à analyser. Peut-être que je suis bizarre. – iLikeDirt