본문 바로가기
Linux

SaltStack - 2. Grains 그룹기반 관리

by 올엠 2021. 3. 12.
반응형

지난번 작성한 기본 설치에 이어 2번째로, 별칭과 그룹으로 구성하여 운영할 수 있는 Grain에 대해서 알아보도록 하겠다.

설치 관련된 글이 궁금하신 분은 아래 글을 참고하기 바란다. https://asecurity.dev/entry/SaltStack-1-Basic-Install-and-Join

 

SaltStack - 1. Basic Install and Join

최근에 SaltStack에 대해서 업무적으로 활용을 해야 하는 상황이라 관련 자료를 찾아 스터디를 하게 되었다. saltstack 홈페이지에 가면 많은 자료를 확인할 수 있지만, 여기에서는 중요한 부분만 요

asecurity.dev

Grains

만약 100대의 서버를 Saltstack으로 관리한다고 할 때, 특정 서버들, 즉 Nigix 가 설치된 서버라던가 DB 서버만 설정을 변경해야 하는 경우가 발생하거나, 운영하는 역활에 맞춰서 구성을 변경해야 하는 경우가 발생한다. 이와 같은 Minion들의 그룹화 구성을 Grains은 통해  Saltstack의 Minion들을 그룹화 하여 설정 관리할 수 있도록 기능을 제공한다.

기본적으로 현재 사용가능한 그룹화 옵션은 grains.items 을 통해서 검색이 가능하다.

sudo salt '*' grains.items

위 명령을 실행하면 각 Minion 별로 사용할 수 있는 Grains 옵션을 확인 할 수 있다.

$ sudo salt '*' grains.items
asecurity01:
    ----------
    biosreleasedate:
        10/16/2017
    biosversion:
        1.0
    cpu_flags:
        - fpu
        - vme
        - de
        - pse
        - tsc
        - msr
        - pae
        - mce
        - cx8
        - apic
        - sep
        - mtrr
        - pge
        - mca
        - cmov
        - pat
        - pse36
        - clflush
        - mmx
        - fxsr
        - sse
....

위 그룹화가 가능한 값은 정말 다양한데, 운영체제 종류부터, 설치된 서비스까지 다양하게 그룹화를 기본적으로 제공하고 있기 때문에, 만약 특정 OS에서 실행해야 한다거나, 특정 서비스가 설치된 서버에서 실행해야하는 명령이 있다면 기본 명령만으로도 활용이 가능하다.

특정 그룹을 지정하는 방법은 salt -G 옵션을 통해 사용이 가능하다. 만약 Ubuntu 서버를 선택하고자 한다면 다음과 같이 지정할 수 있다.

sudo salt -G 'os:Ubuntu' test.ping

이외에도 사용 환경에 맞도록 역활이나 지역등과 같이 사용자 정의 지정도 가능하다.

역활과 같이 사용자 정의를  Grains에서 사용하기 위해서는 먼저 Minion의 구성 파일인 /etc/salt/minion 파일에 grains 항목을 추가하거나 grains 파일의 /etc/salt/에 추가한 후 roles(사용자 정의)을 추가할 수 있으며, etc/salt/minion 의 경우 식별자(id)가 기본적으로 호스트 이름인데 이를 변경해주는 것도 가능하다.

id: asecurity01
grains:
  roles:
    - asecurity-web
  region: korea

만약 grains 파일을 통해  생성하는 경우 grains는 이후 roles와 region을 아래 처럼 사용이 가능하다.

roles:
  - asecurity-web
region: korea

다만 Minion 식별자인 id를 변경은 한 경우, /etc/salt/minion 를 통해서만 가능하고, 기존에 Master와 이미 연결이 되어 있다면, ID를 삭제하고 새로 Accept을 해주어야 한다. 기존 Minion에 대한 삭제는 Master에서 salt-key -d (minion-id) 통해서 가능하다.

추가한 Grains을 이용하고자 한다면 앞서 동일한 방법으로 사용이 가능하다.

sudo salt -G 'roles:asecurity-web' test.ping

 

마지막으로 각각의 Minion에 설정된 특정 그룹 값을 확인하고자 한다면 grains.get 이후 설정한 그룹 이름을 통해 가능하다.

sudo salt '*' grains.get roles
반응형