웹사이트 검색

Rocky Linux에서 SaltStack Master 및 Minion을 설정하는 방법


이 페이지에서

  1. 전제 조건
  2. /etc/hosts 파일 설정
  3. SaltStack 저장소 추가
  4. SaltStack 마스터 설치
  5. SaltStack Minion 설치
  6. SaltStack 마스터에 Minion 서버 추가
  7. SaltStack으로 임의 명령 실행\n
  8. SaltStack 상태로 LEMP 스택 설치
  9. 결론

Salt 또는 Saltstack은 관리자가 원격으로 여러 시스템에 직접 명령을 실행할 수 있는 오픈 소스 IT 자동화 프레임워크입니다. Salt는 주로 Python으로 작성되었으며 Master 및 Minion 아키텍처로 설계되었습니다. SaltStack 마스터는 Salt 구성 관리의 중앙 컨트롤러이고 미니언은 SaltStack 마스터가 관리하거나 미니언을 대상 서버로 명명한 서버입니다.

SaltStack 마스터는 기본적으로 Linux OS에서 실행되지만 미니언은 모든 운영 체제가 될 수 있습니다. Saltstack은 자동화 배포, 원격 작업 실행 및 코드형 인프라를 위한 혁신적인 구성 관리입니다. SaltStack은 또한 여러 인프라 서버를 프로비저닝하는 데 사용할 수 있으며 여기에는 물리적 및 가상 서버와 클라우드도 포함됩니다.

이 가이드에 따라 Rocky Linux 서버에 SaltStack Master 및 Minion을 설치합니다. 또한 Salt Minions에 대해 SaltStack Master에서 임의 명령을 실행하기 위해 Salt를 사용하는 방법을 배웁니다. 그리고 마지막에는 기본 LEMP 스택(Linux, Nginx, MariaDB 및 PHP-FPM)을 설치하기 위한 솔트 상태를 생성하는 방법도 배우게 됩니다.

전제 조건

Tom이 이 튜토리얼을 완료하면 적어도 두 개 이상의 Rocky Linux 서버가 필요합니다. 이러한 모든 서버에는 루트/관리자 권한이 있는 루트가 아닌 사용자가 있어야 합니다.

/etc/hosts 파일 설정

이 예에서는 SaltStack 설치를 위해 3개의 Rocky Linux 서버를 사용합니다. 한 서버는 마스터로, 두 서버는 미니언으로 사용됩니다.

다음은 우리가 사용할 자세한 Rocky Linux 서버입니다.

Hostname    IP Address      Used as
---------------------------------------------
master      192.168.5.10    SaltStack Master
minion1     192.168.5.15    SaltStack Minion
minion2     192.168.5.16    SaltStack Minion

SaltStack 패키지를 설치하기 전에 모든 Linux 호스트에 /etc/hosts 파일을 설정합니다.

다음 명령을 사용하여 /etc/hosts 파일을 편집합니다.

sudo nano /etc/hosts

이제 파일에 다음 구성을 추가합니다.

master 192.168.5.10
minion1 192.168.5.15
minion2 192.168.5.16

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

SaltStack 리포지토리 추가

SaltStack 패키지는 공식 저장소에서 사용할 수 있습니다. 모든 Rocky Linux 서버에 SaltStack 리포지토리와 GPG 키를 추가합니다.

다음 명령을 실행하여 SaltStack 리포지토리의 GPG 키를 가져옵니다. 그런 다음 SaltStack 리포지토리를 추가합니다. 이 예에서는 최신 버전의 SaltStack 리포지토리를 추가합니다.

sudo rpm --import https://repo.saltproject.io/py3/redhat/8/x86_64/latest/SALTSTACK-GPG-KEY.pub
curl -fsSL https://repo.saltproject.io/py3/redhat/8/x86_64/latest.repo | sudo tee /etc/yum.repos.d/salt.repo

이제 다음 명령을 실행하여 Rocky Linux 서버의 리포지토리 목록을 확인하고 확인하십시오. 그런 다음 사용 가능한 모든 리포지토리에 대한 새 메타데이터를 업데이트하고 생성합니다.

Rocky Linux 서버에 SaltStack 리포지토리가 추가된 것을 볼 수 있습니다.

sudo dnf repolist
sudo dnf makecache

SaltStack 마스터 설치

모든 Rocky Linux 서버에 SaltStack 리포지토리를 추가했습니다. 이제 "마스터" 서버에 SaltStack 마스터를 설치하고 설정합니다.

먼저 아래의 DNF 명령을 실행하여 "salt-master" 패키지를 설치합니다. 이 패키지는 SaltStack 마스터를 설정하기 위한 기본 패키지입니다.

Y를 입력하여 설치를 확인하고 ENTER를 누르면 설치가 시작됩니다.

sudo dnf install salt-master

설치가 완료되면 아래 명령을 사용하여 SaltStack Master 구성 "/etc/salt/master"을 편집합니다.

sudo nano /etc/salt/master

"인터페이스:" 옵션의 주석을 제거하고 "마스터" 서버 IP 주소로 IP 주소를 변경하십시오. 이 예에서 SaltStack Master의 IP 주소는 \192.168.5.10\입니다.

interface: 192.168.5.10

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

그런 다음 "salt-master" 서비스가 시스템 부팅 시 실행되도록 활성화하고 "salt-master" 서비스를 시작합니다. 그런 다음 "salt-master" 서비스를 확인하고 확인합니다.

"salt-master" 서비스가 활성화되어 실행 중이어야 합니다.

sudo systemctl enable salt-master && sudo systemctl start salt-master
sudo systemctl status salt-master

SaltStack 마스터에서 SaltStack Minions가 SaltStack 마스터에 연결하는 데 사용되는 TCP 포트 4505 및 4506을 열어야 합니다.

아래의 "firewall-cmd" 명령을 실행하여 포트 4505 및 4506을 엽니다. 그런 다음 방화벽을 다시 로드합니다.

sudo firewall-cmd --zone=public --permanent --add-port={4505,4506}/tcp
sudo firewall-cmd --reload

마지막으로 다음 명령을 사용하여 Firewalld 규칙을 확인하고 확인합니다. 그리고 Firewalld에서 포트 4505 및 4506을 사용할 수 있어야 합니다.

sudo firewall-cmd --list-all

솔트스택 미니언 설치

SaltStack 마스터를 설치 및 구성했습니다. 이제 "minion1" 및 "minion2" 서버 모두에 SaltStack Minion을 설치하고 설정합니다.

"minion1" 및 minion2" 서버를 이동한 다음 아래 DNF 명령을 실행하여 "salt-minion" 패키지를 설치합니다. 이 패키지는 모든 SaltStack Minion 호스트에 설치되어야 합니다.

Y를 입력하여 설치를 확인하고 ENTER를 누르십시오. 그리고 \salt-minion\ 설치가 시작됩니다.

sudo dnf install salt-minion

설치를 완료한 후 아래 명령을 사용하여 SaltStack Minion 구성 파일 "/etc/salt/minion"을 편집합니다.

sudo nano /etc/salt/minion

"master:" 옵션의 주석을 제거하고 SaltStack 마스터 IP 주소 또는 호스트 이름을 추가합니다. 이 예에서 SaltStack 마스터는 서버 IP 주소 "192.168.5.10"에서 실행 중입니다.

master: 192.168.5.10

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

그런 다음 다음 명령을 실행하여 "salt-minion" 서비스를 활성화하고 서비스를 시작합니다. 그런 다음 "salt-minion" 서비스를 확인하고 확인합니다.

"salt-minion" 서비스가 활성화되어 있고 시스템 시작 시 자동으로 실행되는 것을 볼 수 있습니다. 그리고 "salt-minion" 서비스의 현재 상태가 실행 중입니다.

sudo systemctl enable salt-minion && sudo systemctl start salt-minion
sudo systemctl status salt-minion

SaltStack 마스터에 미니언 서버 추가

이제 "master" 서버에 SaltStack Master를 설치하고 "minion1" 및 "minion2" 서버에 SaltStack Minion을 설치했습니다. SaltStack Minions를 SaltStack Master에 추가하려면 "master" 서버에서 "minion1" 및 "minion2" 서버의 키 지문을 수락해야 합니다.

"마스터" 서버로 돌아가서 아래의 salt 명령을 실행하여 사용 가능한 모든 키 지문을 확인합니다. "minion1" 및 "minion2" 서버에서 두 개의 "허용되지 않은 키"가 표시되어야 합니다.

salt-key --finger-all

"minion1" 및 "minion2" 서버의 키 지문을 수락하려면 아래 salt-key 명령을 실행합니다. 키 지문을 수락하라는 메시지가 표시되면 Y를 입력하여 키를 확인하고 추가합니다.

salt-key -a minion1
salt-key -a minion2

다음으로 아래 명령을 사용하여 사용 가능한 모든 키 지문을 확인하고 확인합니다. 그리고 SaltStack 마스터에 추가된 "minion1" 및 "minion2" 서버의 지문 키를 모두 가져와야 합니다. 두 키 지문 모두 "허용된 키" 섹션에서 사용할 수 있습니다.

salt-key --finger-all

SaltStack Master에 SaltStack Minion 서버를 추가한 후 "master" 서버에서 다음 salt 명령을 실행하여 "minion1" 및 "minion2" 서버를 테스트하고 ping합니다.

구성이 성공하면 "True" 메시지가 출력되어야 합니다. 이는 SaltStack Minion 서버가 SaltStack 마스터에 추가되었음을 의미합니다.

salt minion1 test.ping
salt minion2 test.ping

별표 *를 사용하여 모든 SaltStack Minion 서버를 대상으로 지정할 수도 있습니다.

salt '*' test.ping

아래 명령을 사용하여 "minion1" 및 "minion2" 서버 모두에 설치된 현재 SaltStack 버전을 확인할 수도 있습니다.

이 글을 쓰는 시점에서 SaltStack 소프트웨어의 최신 버전은 모든 SaltStack 서버에 설치된 v3004.2입니다.

salt '*' test.version

SaltStack으로 임의 명령 실행

Saltstack을 사용하면 마스터 서버에서 모든 미니언 서버로 임의의 명령을 실행할 수 있습니다. 이를 위해서는 Saltstack에서 제공하는 실행 모듈을 사용해야 합니다.

마스터 서버에서 아래의 salt 명령을 실행합니다. 그러면 모든 minion 서버에서 uname -a 명령이 실행되며 이 명령은 cmd 모듈을 통해 실행됩니다.

salt '*' cmd.run 'uname -a'

다음 스크린샷에서 볼 수 있듯이 각 minion 서버는 uname -a 명령의 출력을 반환합니다.

또 다른 예는 패키지 설치, 리포지토리 및 패키지 관리와 관련된 모든 것을 관리하기 위해 pkg 모듈을 사용할 수 있는 경우입니다. 이는 CentOS 및 Rocky Linux와 같은 RHEL 기반 배포와 Ubuntu와 같은 Debian 기반 시스템을 포함한 여러 Linux 배포를 지원합니다.

모든 minion 서버에서 사용 가능한 저장소를 새로 고칩니다.

salt '*' pkg.refresh_db

아래의 salt 명령을 사용하여 패키지 bash를 확인하십시오.

salt '*' pkg.show bash

모든 minion 서버에 chrony라는 패키지를 설치합니다.

salt '*' pkg.install chrony

모든 서버 미니언의 저장소 목록을 확인하십시오.

salt '*' pkg.list_repos

모든 minion 서버에서 사용 가능한 패키지 업데이트 목록을 확인하십시오.

salt '*' pkg.list_upgrades

또 다른 훌륭한 예는 systemd를 사용한 배포를 포함하여 여러 Linux 배포판에서 서비스를 관리할 수 있게 해주는 서비스 모듈입니다.

chronyd 서비스를 사용할 수 있는지 확인하십시오.

salt '*' service.available chronyd

모든 minion 서버에서 시스템 시작 시 chronyd 서비스가 시작되도록 활성화합니다.

salt '*' service.enabled chronyd

모든 서버에서 실행 중인 서비스 목록을 확인합니다.

salt '*' service.get_running

모든 서버에서 사용 가능한 모든 서비스에 대해 ExecStart= 명령을 확인하십시오.

salt '*' service.execs

SaltStack 상태로 LEMP 스택 설치

모든 SaltStack Minion 서버에 대해 임의의 명령을 실행하는 기본 salt 명령을 배웠습니다. 이제 기본 LEMP 스택(Linux, Nginx, MariaDB 및 PHP-FPM)을 설치하기 위한 새 SaltStack 상태 파일을 생성합니다. 여기에서 SaltStack을 서버 인프라 및 자동 애플리케이션 배포를 위한 구성 관리로 사용할 수 있습니다.

Rocky Linux 리포지토리는 여러 버전의 Nginx, MariaDB 및 PHP-FPM 패키지를 제공합니다. 해당 패키지의 최신 버전을 설치하려면 DNF 패키지 관리자 모듈을 통해 활성화해야 합니다.

이 글을 쓰는 시점에는 RHEL 기반 배포를 위한 "dnf module" 명령과 동일한 SaltStack 모델이 없습니다. 따라서 SaltStack 임의 명령을 통해 모듈을 수동으로 활성화합니다.

다음 명령을 실행하여 Nginx v1.20, MariaDB v10.5 및 PHP 패키지 v8.0용 모듈을 활성화합니다.

salt '*' cmd.run 'sudo dnf module enable nginx:1.20 -y'
salt '*' cmd.run 'sudo dnf module enable mariadb:10.5 -y'
salt '*' cmd.run 'sudo dnf module enable php:8.0 -y'

이제 새 중앙 구성 관리 디렉터리 "/srv/salt/lemp"를 만들고 아래 명령을 사용하여 새 파일 "init.sls"을 만듭니다.

mkdir -p /srv/salt/lemp
nano /srv/salt/lemp/init.sls

파일에 다음 구성을 추가합니다. 이 예에서는 LEMP Stack 패키지를 설치하기 위해 "lemp"라는 솔트 상태를 생성합니다. 또한 모든 LEMP 스택 서비스(Nginx, MariaDB 및 PHP-FPM)가 모든 SaltStack Minion 서버에서 활성화되고 실행되도록 할 것입니다.

lemp_stack:
 pkg.installed:
   - pkgs:
     - nginx
     - mariadb-server
     - php
     - php-fpm

nginx:
  service.running:
    - enable: True
    - reload: True

mariadb:
  service.running:
    - enable: True
    - reload: True

php-fpm:
  service.running:
    - enable: True
    - reload: True

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

이제 솔트 상태 구성을 확인하려면 아래 솔트 명령을 사용하십시오. 이 명령은 SaltStack Minion 서버에 대해 Salt 상태 구성을 테스트하고 확인합니다.

sudo salt * state.show_sls lemp

모든 SaltStack Minion 서버에 Salt 상태를 적용하려면 아래 salt 명령을 사용할 수 있습니다. 이제 LEMP 스택이 \minion1\ 및 \minion2\ 서버에 자동으로 설치됩니다.

sudo salt '*' state.apply lemp

다음 스크린샷에서 LEMP 스택이 \minion1\ 및 \minion2\ 서버 모두에 설치된 것을 볼 수 있습니다.

결론

이 튜토리얼에서는 Rocky Linux 서버에 SaltStack Master 및 SaltStack Minion 설치를 완료했습니다. SaltStack Minion에 대해 임의의 명령을 실행하기 위해 salt 명령의 기본 사용법도 배웠습니다. 마지막으로 LEMP Stack을 자동으로 설치하기 위한 Salt 상태 구성을 생성하고 SaltStack을 애플리케이션 배포를 위한 구성 관리로 설정하는 방법도 배웠습니다.