2017-10-17 10 views
0

J'ai une liste avec certains hôtes/utilisateurs:Appliquer le nom d'utilisateur de liste comme variable dans un état de sel

myhos1: 
    host: 192.168.1.1 
    user: foouser 

myhost2: 
    host: 192.168.1.2 
    user: bazuser 

maintenant dans le fichier d'état, je voudrais utiliser le nom d'utilisateur de la liste pour faire des choses , par exemple

Install VNC script: 
    file.managed: 
    - name: /home/<user>/test.sh 
    - source: salt://files/test.sh 
    - user: <user> 
    - group: <user> 

Comment puis-je utiliser la langue de modèle pour remplacer <user> avec le réel ID utilisateur de l'hôte que je demande à l'État?

Serait bien si je peux accéder en quelque sorte directement aux informations de la liste, mais je n'ai rien trouvé qui fonctionnerait dans les pages de docu pertinentes.

Répondre

1

Vous avez deux options auxquelles je peux penser.

Si vous avez pas beaucoup d'utilisateurs l'option la plus simple serait de boucler un peu plus d'une liste à l'aide Jinja

{% for user in ['foouser', 'bazuser'] %} 
/home/{{ user }}/test.sh: 
    file.managed: 
    - source: salt://files/test.sh 
    - user: {{ user }} 
    - group: {{ user }} 
{% endfor %} 

ou vous devriez être en mesure de faire quelque chose comme l'utilisation cmd.run pour obtenir une liste des utilisateurs:

{% for user in salt['cmd.run']('ls /home/').split('\n') %} 
    ... snipped 
{% endfor %} 

J'ai testé ce qui précède et cela fonctionne pour moi.

cmd.run in jinja - google salt-users forum

Useful reading if you're unsure about using Jinja with Salt

+0

Merci pour la suggestion! Idéalement, je voudrais obtenir le seul utilisateur qui est utilisé pour se connecter à la machine dans le fichier de la liste, mais votre deuxième approche sera probablement une solution de contournement utile dans l'intervalle. – centic

+0

@centic ah, désolé je devrais vraiment mettre mes lunettes. Avez-vous essayé d'utiliser un fichier de piliers et de faire une boucle sur le contenu? Voir la réponse à: https://stackoverflow.com/questions/27169509/saltstack-load-pillar-in-a-for-loop. Je devrais probablement modifier ma question pour inclure cette –