웹사이트 검색

Debian 11에 Saltstack Master 및 Minion을 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. Saltstack 마스터 설치
  3. Saltstack 마스터 구성
  4. Saltstack Minion 설치 및 구성
  5. 마스터의 미니언 제어
  6. 솔트 상태 파일을 사용하여 미니언 관리\n
  7. 결론

SaltStack은 무료 오픈 소스 Python 기반 자동화 및 구성 관리 소프트웨어입니다. 중앙 위치에서 인프라를 관리하는 데 도움이 되는 명령줄 도구입니다. SoltStack은 네 가지 구성 요소로 구성됩니다. 각 구성 요소에 대한 간략한 설명은 다음과 같습니다.

  • Salt Master는 미니언을 위한 명령줄 컨트롤러 역할을 합니다. 여러 미니언을 제어하고 관리하는 데 사용됩니다.\n
  • Salt Minions는 마스터로부터 구성 및 명령을 받는 슬레이브 데몬입니다.
  • Formula는 구성 관리 파일입니다.
  • 실행은 미니언에서 실행되는 여러 명령 및 모듈입니다.\n

이 기사에서는 Debian 11에 SaltStack Master 및 Minion 시스템을 설치하는 방법을 보여줍니다.

전제 조건

  • Debian 11을 실행하는 두 대의 서버.\n
  • 루트 암호는 서버에서 구성됩니다.\n

솔트스택 마스터 설치

기본적으로 SaltStack은 Debian 11 기본 리포지토리에 포함되어 있지 않습니다. 따라서 SaltStack 저장소를 APT에 추가해야 합니다. 다음 명령을 실행하여 추가할 수 있습니다.

curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/debian/11/amd64/latest/salt-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/debian/11/amd64/latest bullseye main" | tee /etc/apt/sources.list.d/salt.list

리포지토리가 추가되면 다음 명령을 사용하여 리포지토리 캐시를 업데이트합니다.

apt-get update -y

다음으로 다음 명령을 사용하여 필요한 종속 항목을 설치합니다.

apt-get install python3 salt-common -y

다음으로 다음 명령을 사용하여 SaltStack 마스터를 설치합니다.

apt-get install salt-master -y

성공적으로 설치한 후 다음 단계를 진행할 수 있습니다.

Saltstack 마스터 구성

다음으로 SaltSTack 구성 파일에서 바인드 인터페이스를 정의해야 합니다.

nano /etc/salt/master

다음 줄을 변경합니다.

interface: 0.0.0.0

파일을 저장하고 닫은 후 다음 명령을 사용하여 SaltStack 마스터를 다시 시작합니다.

systemctl restart salt-master

이제 다음 명령을 사용하여 SaltStack의 상태를 확인할 수 있습니다.

systemctl status salt-master

다음과 같은 결과가 표시됩니다.

? salt-master.service - The Salt Master Server
     Loaded: loaded (/lib/systemd/system/salt-master.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-02-12 07:39:48 UTC; 9s ago
       Docs: man:salt-master(1)
             file:///usr/share/doc/salt/html/contents.html
             https://docs.saltproject.io/en/latest/contents.html
   Main PID: 19403 (salt-master)
      Tasks: 32 (limit: 2341)
     Memory: 201.5M
        CPU: 6.109s
     CGroup: /system.slice/salt-master.service
             ??19403 /usr/bin/python3 /usr/bin/salt-master
             ??19407 /usr/bin/python3 /usr/bin/salt-master
             ??19431 /usr/bin/python3 /usr/bin/salt-master
             ??19434 /usr/bin/python3 /usr/bin/salt-master
             ??19435 /usr/bin/python3 /usr/bin/salt-master
             ??19436 /usr/bin/python3 /usr/bin/salt-master
             ??19437 /usr/bin/python3 /usr/bin/salt-master
             ??19444 /usr/bin/python3 /usr/bin/salt-master
             ??19445 /usr/bin/python3 /usr/bin/salt-master
             ??19446 /usr/bin/python3 /usr/bin/salt-master
             ??19448 /usr/bin/python3 /usr/bin/salt-master
             ??19451 /usr/bin/python3 /usr/bin/salt-master
             ??19454 /usr/bin/python3 /usr/bin/salt-master

Feb 12 07:39:48 debian11 systemd[1]: Starting The Salt Master Server...
Feb 12 07:39:48 debian11 systemd[1]: Started The Salt Master Server.

완료되면 다음 단계로 진행할 수 있습니다.

Saltstack Minion 설치 및 구성

이 시점에서 SaltStack Master가 설치되고 구성됩니다. 이제 다른 머신에 로그인하고 다음 명령을 사용하여 SaltStack Minion 리포지토리를 추가합니다.

curl -fsSL -o /usr/share/keyrings/salt-archive-keyring.gpg https://repo.saltproject.io/py3/debian/11/amd64/latest/salt-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/salt-archive-keyring.gpg arch=amd64] https://repo.saltproject.io/py3/debian/11/amd64/latest bullseye main" | tee /etc/apt/sources.list.d/salt.list

리포지토리가 추가되면 다음 명령을 사용하여 리포지토리 캐시를 업데이트합니다.

apt-get update -y

다음으로 다음 명령을 사용하여 SaltStack Minion을 설치합니다.

apt-get install salt-minion -y

성공적으로 설치한 후 SaltStack Minion 구성 파일을 편집하고 마스터 IP 주소를 정의하십시오.

nano /etc/salt/minion

다음 줄을 변경합니다.

master: salt-master-ip

완료되면 파일을 저장하고 닫습니다.

다음으로 마스터의 공개 지문을 사용하여 미니언을 인증해야 합니다.

Salt Master 시스템에서 다음 명령을 사용하여 모든 지문을 나열합니다.

salt-key --finger-all

다음과 같은 결과가 표시됩니다.

Local Keys:
master.pem:  b7:f0:ed:19:bf:e8:e0:9d:c3:9c:a2:09:2c:97:2f:6b:0f:cb:eb:76:3d:d7:d5:a9:7d:0c:3a:60:6e:9f:d7:78
master.pub:  5e:4f:2b:37:41:cc:4b:9c:b0:ed:cb:0a:fb:c7:59:54:5f:11:34:ab:d2:99:96:c1:e7:ef:4d:95:b0:7c:d3:d1

이제 master.pub 지문 줄을 복사하여 Minion 구성 파일에 추가합니다.

Minion 시스템에서 구성 파일을 편집합니다.

nano /etc/salt/minion

아래와 같이 마스터 지문을 추가합니다.

master_finger:  '5e:4f:2b:37:41:cc:4b:9c:b0:ed:cb:0a:fb:c7:59:54:5f:11:34:ab:d2:99:96:c1:e7:ef:4d:95:b0:7c:d3:d1'

Minion의 이름도 정의해야 합니다.

id: Minion1

파일을 저장하고 닫은 후 다음 명령을 사용하여 SaltStack Minion을 다시 시작합니다.

systemctl restart salt-minion

다음 명령을 사용하여 SaltStack Minion의 상태를 확인할 수도 있습니다.

systemctl status salt-minion

다음과 같은 결과가 표시됩니다.

? salt-minion.service - The Salt Minion
     Loaded: loaded (/lib/systemd/system/salt-minion.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-02-12 07:46:04 UTC; 7s ago
       Docs: man:salt-minion(1)
             file:///usr/share/doc/salt/html/contents.html
             https://docs.saltproject.io/en/latest/contents.html
   Main PID: 2324 (salt-minion)
      Tasks: 8 (limit: 2341)
     Memory: 59.9M
        CPU: 1.185s
     CGroup: /system.slice/salt-minion.service
             ??2324 /usr/bin/python3 /usr/bin/salt-minion
             ??2326 /usr/bin/python3 /usr/bin/salt-minion
             ??2328 /usr/bin/python3 /usr/bin/salt-minion

Feb 12 07:46:04 debian11 systemd[1]: Starting The Salt Minion...
Feb 12 07:46:04 debian11 systemd[1]: Started The Salt Minion.

다음 명령을 사용하여 미니언 지문을 확인할 수도 있습니다.

salt-call key.finger --local

다음과 같은 결과가 표시됩니다.

local:
    14:12:ef:33:d2:1e:49:23:7b:a2:74:8d:19:fc:be:5e:6d:a6:57:ec:4f:a9:da:23:69:3f:62:1b:6b:4b:2f:27

SaltStack Master 시스템에서 다음 명령을 사용하여 지문을 일치시킵니다.

salt-key --finger-all

다음과 같은 결과가 표시됩니다.

Local Keys:
master.pem:  b7:f0:ed:19:bf:e8:e0:9d:c3:9c:a2:09:2c:97:2f:6b:0f:cb:eb:76:3d:d7:d5:a9:7d:0c:3a:60:6e:9f:d7:78
master.pub:  5e:4f:2b:37:41:cc:4b:9c:b0:ed:cb:0a:fb:c7:59:54:5f:11:34:ab:d2:99:96:c1:e7:ef:4d:95:b0:7c:d3:d1
Unaccepted Keys:
Minion1:  14:12:ef:33:d2:1e:49:23:7b:a2:74:8d:19:fc:be:5e:6d:a6:57:ec:4f:a9:da:23:69:3f:62:1b:6b:4b:2f:27

SaltStack Master에서 다음 명령을 사용하여 Minion을 수락합니다.

salt-key -a Minion1

다음과 같은 결과가 표시됩니다.

The following keys are going to be accepted:
Unaccepted Keys:
Minion1
Proceed? [n/Y] Y
Key for minion Minion1 accepted.

이제 다음 명령을 사용하여 Master와 Minion 간의 연결을 확인합니다.

salt Minion1 test.ping

다음과 같은 결과가 표시됩니다.

Minion1:
    True

완료되면 다음 단계로 진행할 수 있습니다.

마스터의 미니언 제어

마스터와 미니언 간의 성공적인 연결 후. Minion에서 몇 가지 명령을 실행해 보겠습니다.

다음 명령을 실행하여 Minion에서 사용 가능한 디스크 공간을 나열하십시오.

salt '*' disk.usage

다음과 같은 결과가 표시됩니다.

Minion1:
    ----------
    /:
        ----------
        1K-blocks:
            51538400
        available:
            47658628
        capacity:
            4%
        filesystem:
            /dev/sda1
        used:
            1661604
    /dev:
        ----------
        1K-blocks:
            998936
        available:
            998936
        capacity:
            0%
        filesystem:
            udev
        used:
            0
    /dev/shm:
        ----------
        1K-blocks:
            1015232
        available:
            1015152
        capacity:
            1%
        filesystem:
            tmpfs
        used:
            80

Minion에 Apache 패키지를 설치하려면 다음 명령을 실행하십시오.

salt Minion1 pkg.install apache2

다음과 같은 결과가 표시됩니다.

Minion1:
    ----------
    apache2:
        ----------
        new:
            2.4.52-1~deb11u2
        old:
    apache2-bin:
        ----------
        new:
            2.4.52-1~deb11u2
        old:
    apache2-data:
        ----------
        new:
            2.4.52-1~deb11u2
        old:
    apache2-utils:
        ----------
        new:
            2.4.52-1~deb11u2
        old:
    libapr1:
        ----------
        new:
            1.7.0-6+deb11u1
        old:
    libaprutil1:
        ----------
        new:
            1.6.1-5
        old:
    libaprutil1-dbd-sqlite3:
        ----------
        new:
            1.6.1-5
        old:
    libaprutil1-ldap:
        ----------
        new:
            1.6.1-5
        old:

Minion의 여유 메모리를 확인하려면 다음 명령을 실행하십시오.

salt '*' cmd.run 'free -m'

다음과 같은 결과가 표시됩니다.

Minion1:
                   total        used        free      shared  buff/cache   available
    Mem:            1982         140        1392           2         450        1691
    Swap:              0           0           0

솔트 상태 파일을 사용하여 미니언 관리

상태 파일은 Minion을 구성하고 관리하는 데 사용되는 구성 관리 파일이라고도 합니다.

상태 파일을 생성하려면 SaltStack에 대한 환경 기반을 생성해야 합니다.

mkdir /src/salt

다음으로 다음 명령을 사용하여 상태 파일을 만듭니다.

nano /src/salt/setup.sls

다음 코드를 추가하여 Minions에 PHP, UNZIP 및 Apache 패키지를 설치합니다.

network_utilities: 
 pkg.installed: 
   - pkgs: 
     - php 
     - unzip 

apache2_pkg: 
 pkg.installed: 
   - name: apache2 

apache2_service: 
 service.running: 
   - name: apache2 
   - enable: True 
   - require: 
     - pkg: apache2_pkg

파일을 저장하고 닫은 후 다음 명령을 사용하여 모든 Minion에 구성을 적용합니다.

salt '*' state.apply setup

다음과 같은 출력이 표시됩니다.

Minion1:
----------
          ID: network_utilities
    Function: pkg.installed
      Result: True
     Comment: The following packages were installed/updated: php, unzip
     Started: 07:51:22.424504
    Duration: 17349.907 ms
     Changes:   
              ----------
              libapache2-mod-php7.4:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php:
                  ----------
                  new:
                      2:7.4+76
                  old:
              php-common:
                  ----------
                  new:
                      2:76
                  old:
              php7.4:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php7.4-cli:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php7.4-common:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php7.4-json:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php7.4-opcache:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              php7.4-readline:
                  ----------
                  new:
                      7.4.25-1+deb11u1
                  old:
              psmisc:
                  ----------
                  new:
                      23.4-2
                  old:
              unzip:
                  ----------
                  new:
                      6.0-26
                  old:
----------
          ID: apache2_pkg
    Function: pkg.installed
        Name: apache2
      Result: True
     Comment: All specified packages are already installed
     Started: 07:51:39.780956
    Duration: 1029.457 ms
     Changes:   
----------
          ID: apache2_service
    Function: service.running
        Name: apache2
      Result: True
     Comment: The service apache2 is already running
     Started: 07:51:40.812210
    Duration: 35.61 ms
     Changes:   

Summary for Minion1
------------
Succeeded: 3 (changed=1)
Failed:    0
------------
Total states run:     3
Total run time:  18.415 s

결론

축하합니다! Debian 11 서버에 SaltStack Master 및 Minion을 성공적으로 설치하고 구성했습니다. 또한 상태 파일과 명령줄을 사용하여 Minion을 관리하는 방법도 설명했습니다. 이것이 중앙 위치에서 인프라를 자동화하고 관리하는 데 도움이 되기를 바랍니다. 궁금한 점이 있으면 언제든지 문의해 주세요.