본문 바로가기
DevOps/Infra

(IaC) SaltStack Tutorial

by 정보봇따리 2023. 3. 1.
728x90
반응형
SMALL
TODO - 전체 minion 에 timezone 을 설정하고, webserver 역할인 minion 에만 nginx 를 구성한다

 

  1. master - minion 구성
    - VM 환경이나 클라우드에 구성한다
    - Vagrant / Terraform 

  2. [master] environment 확인
    - state file, pillar file base directory 확인 (/etc/salt/master)



  3. [minion] custom grain 으로 webserver role 할당
    - minion config 파일 수정 (/etc/salt/minion) 
     
master: saltmaster
grains:
  roles:
    - webserver

4. [master] state 파일 작성
 4.1 ) timezone (/srv/salt/timezone/init.sls)

{%- set timezone = salt.pillar.get('timezone:name', 'Asia/Seoul') %}
{%- set utc      = salt.pillar.get('timezone:utc' , True) %}

timezone_setting:
  timezone.system:
    - name: {{ timezone }}
    - utc: {{ utc }}

timezone_packages:
  pkg.installed:
    - name: tzdata

timezone_symlink:
  file.symlink:
    - name: /etc/localtime
    - target: /usr/share/zoneinfo/{{ timezone }}
    - force: true
    - require:
      - pkg: tzdata


4.2 ) nginx (/srv/salt/nginx/init.sls)

# Name: nginx.sls
# Description: Installs nginx

nginx:
# Installs the nginx package
  pkg:
    - installed

# Copy nginx conf to minion
  file.managed:
    - name: /etc/nginx/nginx.conf
    - source: salt://nginx/nginx.conf
    - user: vagrant
    - group: root
    - mode: 640

# Checks the nginx service is running and watches the nginx.conf file
  service.running:
    - watch:
      - pkg: nginx
      - file: /etc/nginx/nginx.conf

5. [master] HighState 명세 (/srv/salt/top.sls)

base:
  '*':
    - timezone
  'G@roles:webserver':
    - nginx

 

6. [master] 배포

salt '*' state.highstate

 

7. [minion] 확인
 - timezone : 전체 미니언에 적용

slave1, slave2 모두 적용

 - nginx : webserver Role 이었던 slave1 에만 적용

 

728x90
반응형
LIST