2016-08-11 1 views
2

Ich habe mehrere Zustände, die fast gleich sind. Alle stellen ein Projekt bereit, erstellen virtualenv und konfigurieren den Supervisor. Der Unterschied besteht nur in Repo, Projektname und einigen zusätzlichen Aktionen.Übergeben von Variablen mit Include im Salzstapel

Eine Menge Code ist doppelt vorhanden. Ist es möglich, dieselben Teile in eine Datei zu legen und sie mit zusätzlichen Variablen zu versehen?

In ansible kann es auf diese Art und Weise erfolgen: sieht

tasks: 
    - include: wordpress.yml 
    vars: 
     wp_user: timmy 
     ssh_keys: 
      - keys/one.txt 
      - keys/two.txt 

Antwort

4

Diese Frage zu this one

ähnlich Wenn ich Ihre Frage richtig verstanden - ich glaube, die beste Art und Weise wollen, was Sie zu erreichen, ist zu verwenden, Salt Macros.

Mit diesem meisten Ihrer Staat wird wie mit Platzhalter zu sein Parameter Makros gehen:

# lib.sls 
{% macro create_user(user, password) %} 
{{user}}: 
    user.present: 
    - home: /home/{{user}} 
    - password: {{password}} 
{% endmacro %} 

Dann wird Ihr Zustand wie folgt aussehen:

# john.sls 
{% from 'lib.sls' import create_user with context %} 
{{ create_user('john', '<password hash>') }} 

und:

# jane.sls 
{% from 'lib.sls' import create_user with context %} 
{{ create_user('john', '<password hash>') }} 
0

Wie ich herausfand, gibt es eine andere Möglichkeit, es zu archivieren, ohne mit Vorlagen zu verwirren (mehr Ansible Weg). Erstelle einen abstrakten Zustand "python-project". Erstellen Sie konkrete Rollen dann und bieten verschiedene Säulen auf diese Rollen:

Salz/top.sls:

base: 
    'roles:python-project-1': 
    - match: grain 
    - python-project 

    'roles:python-project-2': 
    - match: grain 
    - python-project 

Säule/top.sls:

base: 
    'roles:python-project-1': 
    - match: grain 
    - common-pillars 
    - pillars-for-the-first 

    'roles:python-project-2': 
    - match: grain 
    - common-pillars 
    - pillars-for-the-second 

Struktur:

pillar/top.sls 
pillar/common-pillars/init.sls 
pillar/pillars-for-the-first/init.sls 
pillar/pillars-for-the-second/init.sls 
salt/top.sls 
salt/python-project/init.sls 
Verwandte Themen