SaltStack 구성관리 – Jinja

Salt에는 Salt 스테이트 파일, Salt 필러 파일 및 Salt에서 관리하는 기타 파일에 사용할 수 있는 Jinja2 템플릿 엔진이 포함되어 있습니다.

솔트를 사용하면 Minion 구성 값, 알갱이 및 솔트 필러 데이터에 액세스하고 솔트 실행 모듈을 호출할 수 있습니다. 이는 이미 Jinja에서 사용 가능한 표준 제어 구조 및 Python 데이터 유형에 추가됩니다.

Jinja2
Jinja2가 널리 쓰이고 있고, Jinja2 docs에는 훨씬 더 많은 세부사항들이 있다.

조건부

Jinja의 가장 일반적인 용도는 솔트 필러 파일에 조건문을 삽입하는 것입니다.

대부분의 배포에는 서로 다른 패키지 이름이 있으므로 OS를 사용하여 플랫폼별 경로, 패키지 이름 및 기타 값을 설정할 수 있습니다.

예:

{% if grains['os_family'] == 'RedHat' %}
apache: httpd
git: git
{% elif grains['os_family'] == 'Debian' %}
apache: apache2
git: git-core
{% endif %}

보다시피, 솔트 그레인은 소금 필러과 매우 비슷한 사전에서 구할 수 있다. 이 예에서는 Salt Grain 값을 확인하여 OS별 Salt Pillar 키를 설정합니다.

위의 조각을 saltstack/pillar/common.sls 파일에 저장한 후 다음 명령을 실행하여 새로 고친 후 각 minion의 salt pillar 값을 나열하십시오.

salt '*' saltutil.refresh_pillar
salt '*' pillar.items

당신의 미니언들은 Debian OS 제품군에 대해 설정된 값을 나열해야 한다.

이러한 값을 설정한 후 다음 Salt 상태를 적용할 수 있습니다.

install apache:
  pkg.installed:
    - name: {{ pillar['apache'] }}

httpd 패키지는 RedHat에 설치되고 apache2 패키지는 Debian에 설치됩니다.

반복

반복(loop)은 솔트 스테이트에서 사용자 및 폴더를 생성하는 데 유용합니다.

{% for usr in ['moe','larry','curly'] %}
{{ usr }}:
  user.present
{% endfor %}
{% for DIR in ['/dir1','/dir2','/dir3'] %}
{{ DIR }}:
  file.directory:
    - user: root
    - group: root
    - mode: 774
{% endfor %}

일반적으로, 여러분은 솔트 스테이트를 가능한 한 단순하게 유지하도록 노력해야 합니다. 복잡한 Jinja를 작성하는 경우 작업을 여러 Salt 상태로 분할하거나 작업을 위한 사용자 지정 Salt 실행 모듈을 작성하는 것을 고려해야 합니다.

솔트를 사용하여 데이터 가져오기

시스템에서 실시간 데이터를 가져오기 위해 진자에서 소금 실행 기능을 호출할 수 있습니다.

{{ salt.cmd.run('whoami') }}
출처 : https://docs.saltproject.io/en/getstarted/config/jinja.html
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

Agentless Salt – 소개

솔트 에이전트리스를 사용하여 솔트 미니언을 설치하지 않고도 시스템에서 Salt 명령을 실행할 수 있습니다. 원격 시스템의 유일한 요구 사항은…