Automation Config을 설치할 때 Automation Config 설치 관리자에 제공된 오케스트레이션 highstate를 실행합니다. highstate는 Salt 마스터에서 실행되며 다중 노드 환경을 설정합니다. 이는 PostgreSQL, Redis 및 RaaS 노드를 호스팅할 세 개의 다른 노드에 핵심 Automation Config 아키텍처를 설치합니다.

주의: 컨테이너에 Automation Config를 배포하는 것은 지원되지 않거나 권장되지 않습니다.

설치의 최종 목표는 각각 다른 호스트 기능을 가진 4개의 노드를 갖는 것입니다. 각 노드는 Salt 마스터의 미니언이기도 합니다.

  • Salt 마스터 노드
  • PostgreSQL 데이터베이스 노드
  • Redis 데이터베이스 노드
  • RaaS 노드(Automation Config 노드라고도 함)
경고:

특히 노드에 Salt 설치에 나열된 모든 단계를 따르는 것이 중요합니다. 특히 Automation Config 설치 관리자에 필요한 종속성을 설치의 4개 노드 모두에 반드시 설치해야 합니다. 그렇지 않으면 다중 노드 설치가 실패합니다.

필요한 종속성은 다음과 같습니다.

  • OpenSSL
  • EPEL(Enterprise Linux용 추가 패키지)
  • Python 암호화
  • Python OpenSSL 라이브러리

고가용성

여러 Salt 마스터 또는 여러 RaaS 노드를 설정할 수 있습니다. 한 노드에서 Salt 마스터 서비스를 실행하고 별도의 노드에서 둘 이상의 다른 서비스를 결합할 수도 있습니다. 이러한 종류의 시스템 아키텍처를 구성하는 단계는 이 가이드에서 완전히 설명되지 않습니다.

고가용성 또는 사용자 지정 아키텍처 요구 사항에는 컨설팅 서비스가 필요할 수 있습니다. 하지만, 동일한 유형의 여러 노드를 설정하기 전에 일반적으로 다중 노드 설치 시나리오부터 시작한 다음 나중에 추가 아키텍처를 구성합니다.

고가용성에 대한 자세한 내용은 필수 Automation Config 종속성 항목을 참조하십시오.

4개 노드에 대한 주요 데이터 기록

표준 설치를 시작하기 전에 설치와 관련된 4개의 노드 각각에 대한 주요 데이터를 기록합니다. 이러한 데이터는 설치 프로세스 중에 여러 지점에서 입력합니다.

설치와 관련된 4개의 노드 각각에 대해 다음과 같은 주요 데이터를 기록합니다.

  • IP 주소 또는 DNS 이름
  • 미니언 ID

어떤 IP 주소와 미니언 ID가 어떤 호스트(Salt 마스터 노드, RaaS 노드, PostgreSQL 데이터베이스 노드, Redis 데이터베이스 노드)에 속하는지 명확하게 표시해야 합니다.

가장 좋은 방법은 IP 주소 또는 DNS 이름이 올바른지 확인하는 것입니다. IP 주소 또는 DNS 이름이 잘못되면 다중 노드 설치 실패를 유발할 수 있기 때문입니다.

이 데이터는 참조용으로 쉽게 액세스할 수 있는 레코드에 보관하십시오. 오케스트레이션을 구성할 때 구성 파일의 여러 설정 및 변수에 이 데이터를 입력해야 합니다. 따라서 설치하는 동안 찾기 쉬운 곳에 이 레코드를 보관하는 것이 좋습니다.

참고:

가상화된 환경에 있는 경우 공용 주소가 아닌 내부 주소를 지정해야 합니다.

정적 IP 주소와 동적 IP 주소 비교

Redis 및 PostgreSQL 호스트에는 구성 파일이 참조하는 정적 IP 주소 또는 DNS 이름이 필요합니다. RaaS 노드가 배포되는 방식에 따라 정적 IP 주소 또는 DNS 이름도 필요할 수 있습니다. 구성에서 동적 IP 주소에 의존하면 환경이 변경되고 손상될 수 있습니다.

사용자 지정 미니언 ID 설정(선택 사항)

미니언 ID는 Salt 마스터가 관리하는 각 미니언에 부여되는 고유한 이름입니다. 기본적으로 미니언은 시스템의 호스트 이름을 통해 Salt 마스터에서 식별됩니다. 하지만 네트워크 내의 기능이나 위치를 설명하는 사용자 지정 ID를 할당할 수 있습니다.

미니언 ID를 사용자에 맞게 수정하려면, 간략하지만 역할을 설명하는 ID를 사용하는 것이 좋습니다. 예를 들어 apache-server-1을 사용하여 웹 서버 중 하나의 이름을 지정하거나 데이터 센터의 위치에 따라 datacenter-3-rack-2를 사용할 수 있습니다. 나중에 참조하기 쉽도록 설명이 포함된 유용한 이름을 만드는 것이 목표입니다.

미니언 ID를 선언하려면:

  1. 미니언의 터미널에서 미니언의 minion.conf 파일이 포함된 디렉토리로 이동합니다. 기본적으로 디렉토리 위치는 etc/salt/minion.d입니다.
  2. 편집기에서 minion.conf 파일을 엽니다. id 설정을 선호하는 미니언 ID로 변경합니다. 예를 들면 다음과 같습니다.
    id: postgres-database-1
  3. 미니언 ID를 변경한 후에는 Salt 마스터가 미니언의 키를 수락(또는 다시 수락)해야 합니다. 키 설정에 대한 자세한 지침은 마스터의 미니언 키 수락을 참조하십시오.

상위 상태 파일 복사 및 편집

이 설치 작업을 진행하는 동안 Automation Config 설치 관리자와 함께 제공된 오케스트레이션 파일을 Salt 마스터 노드에 복사합니다. 그런 다음 RaaS, Redis 데이터베이스 및 PostgreSQL 데이터베이스에 대한 세 개의 노드를 참조하도록 파일을 편집합니다.

오케스트레이션 구성 파일을 복사하고 편집하려면:

  1. Salt 마스터에서 sse-installer 디렉토리로 이동합니다.
  2. 다음 명령을 사용하여 sse_installer 디렉토리의 pillar 및 상태 파일을 Salt 마스터의 pillar_rootsfile_roots 파일로 복사합니다.
    sudo mkdir /srv/salt
    sudo cp -r salt/sse /srv/salt/
    sudo mkdir /srv/pillar
    sudo cp -r pillar/sse /srv/pillar/
    sudo cp -r pillar/top.sls /srv/pillar/
    sudo cp -r salt/top.sls /srv/salt/
    중요:

    이 지침에서는 사용자의 디렉토리 구조에 해당되지 않을 수 있는(특히 기존 Salt 설치가 있는 경우) 몇 가지 사항을 가정합니다. 지침에서 가정하는 내용은 다음과 같습니다.

    • Salt 마스터는 기본 디렉토리 구조를 사용하고 있습니다. 디렉토리 구조가 수정된 경우 사용자 지정 디렉토리 구조에 대해 이 지침을 수정해야 할 수 있습니다.
    • pillar 또는 구성 상태 루트에 sse라는 폴더가 아직 없습니다. 이 폴더가 있으면 수동으로 병합해야 할 수 있습니다.
    • pillar 또는 salt 디렉토리에 안에 top.sls라는 파일이 아직 없습니다. 이 파일이 있으면 기존 파일과 수동으로 병합해야 할 수 있습니다.
  3. 이제 /srv/pillar/ 디렉토리에 이전 단계의 설치 파일에서 복사한 top.sls라는 파일이 있습니다. 이 파일을 편집기에서 엽니다.
  4. 이 파일을 편집하여 PostgreSQL, Redis, RaaS 및 Salt 마스터에 대한 미니언 ID(IP 주소나 DNS 이름이 아님) 목록을 정의합니다. 이전에 기록한 ID를 사용합니다.

    예를 들면 다음과 같습니다.

    {# Pillar Top File #}
    
    {# Define SSE Servers #}
    
    {% load_yaml as sse_servers %}
      - postgres-database-1
      - redis-database-1
      - saltstack-enterprise-api-server-1
      - saltmaster-1
    {% endload %}
    
    base:
    
    {# Assign Pillar Data to SSE Servers #}
    {% for server in sse_servers %}
      '{{ server }}':
        - sse
    {% endfor %}
  5. 이제 /srv/salt/ 디렉토리에 2단계에서 복사한 top.sls라는 파일이 있습니다. 이 파일을 편집기에서 열고 다음과 일치하는지 확인합니다.
    base:
    
      {# Target SSE Servers, according to Pillar data #}
      # SSE PostgreSQL Server
      'I@sse_pg_server:{{ grains.id }}':
        - sse.eapi_database
    
      # SSE Redis Server
      'I@sse_redis_server:{{ grains.id }}':
        - sse.eapi_cache
    
      # SSE eAPI Servers
      'I@sse_eapi_servers:{{ grains.id }}':
        - sse.eapi_service
    
      # SSE Salt Masters
      'I@sse_salt_masters:{{ grains.id }}':
        - sse.eapi_plugin
    

Automation Config 설정 pillar 파일 편집

이 설치 작업을 진행하는 동안 환경에 적합한 값을 제공하기 위해 Automation Config 설정 pillar 매핑 파일에서 다섯 가지 다른 섹션을 편집합니다. 이러한 설정은 구성 상태 파일에서 Automation Config 배포를 배포하고 관리하는 데 사용됩니다.

Automation Config 설정 상태 파일을 복사하고 편집하려면:

  1. Salt 마스터에서 /srv/pillar/sse/ 디렉토리로 이동합니다.
  2. 편집기에서 sse_settings.yaml 파일을 엽니다. 이 파일의 섹션 1에는 4개의 노드에 해당하는 변수 4개가 포함되어 있습니다. 4개의 변수의 값을 해당하는 노드의 미니언 ID(IP 주소나 DNS 이름이 아님)로 변경합니다. 이전에 기록한 미니언 ID를 사용합니다.

    예를 들면 다음과 같습니다.

    # PostgreSQL Server (Single value)
    pg_server: postgres-database-1
    
    # Redis Server (Single value)
    redis_server: redis-database-1
    
    # SaltStack Enterprise Servers (List one or more)
    eapi_servers:
      - saltstack-enterprise-api-server-1
    
    # Salt Masters (List one or more)
    salt_masters:
      - saltmaster-1
    참고: 대부분의 네트워크 구성에는 PostgreSQL 및 Redis 데이터베이스가 하나만 있기 때문에 pg_serverredis_server 변수는 단일 변수입니다. 그에 반해 eapi_serverssalt-masters 변수는 둘 이상의 RaaS 노드와 Salt 마스터를 사용할 수 있기 때문에 목록 형식입니다.
  3. 이 파일의 섹션 2에서 변수를 편집하여 PostgreSQL 노드의 끝점과 포트를 지정합니다.
    • pg_endpoint - PostgreSQL 서버의 IP 주소 또는 DNS 이름(미니언 ID가 아님)으로 값을 변경합니다. 가상화된 환경에 있는 경우 공용 주소가 아닌 내부 주소를 지정해야 합니다.
    • pg_port - 표준 PostgreSQL 포트가 제공되지만, 필요한 경우 재정의할 수 있습니다.
    • pg_usernamepg_password - API(RaaS)가 PostgreSQL 인증에 사용할 사용자의 자격 증명을 입력합니다. 이 사용자는 구성 오케스트레이션 highstate를 실행할 때 생성됩니다.
    참고: 일부 설치에서 이 설치 프로세스를 통해 관리되지 않는 별도의 PostgreSQL 서버(또는 클러스터)를 구성했을 수 있기 때문에 변수가 pg_endpoint로 지정됩니다. 이런 경우 작업을 제외합니다. 프로세스 후반의 노드에 highstate 적용 단계에서 PostgreSQL 서버에 highstate를 적용하지 마십시오.
  4. 이 파일의 섹션 3을 편집하려면 이전 단계를 반복하지만 대신 해당 변수를 편집하여 Redis 노드의 끝점과 포트를 지정합니다.
  5. 이 파일의 섹션 4에서 RaaS 노드와 관련된 변수를 편집합니다.
    • 새로 설치하는 경우 eapi_usernameeapi_password 변수의 기본값을 변경하지 마십시오. 구성 오케스트레이션을 진행하는 동안 설치 프로세스는 이러한 기본 자격 증명으로 데이터베이스를 설정합니다. eAPI 서비스를 통해 연결하여 Automation Config에서 기본 대상 및 작업을 설정하려면 이러한 자격 증명이 필요합니다. 기본 암호는 나중에 설치 후 단계에서 변경합니다.
    • eapi_endpoint 변수의 경우 RaaS 노드의 IP 주소 또는 DNS(미니언 ID 아님)로 값을 변경합니다.
      참고: 변수는 eapi_endpoint로 지정됩니다.일부 설치는 로드 밸런서 뒤에 여러 eAPI 서버를 호스팅하기 때문입니다.
    • eapi_ssl_enabled 변수는 기본적으로 True로 설정됩니다. True로 설정하면 SSL을 사용하도록 설정됩니다. 사용하도록 설정된 상태로 두는 것이 좋습니다. SSL 유효성 검사는 설치 관리자에 필요하지 않지만 자체 CA(인증 기관)를 호스팅하는 환경에서는 보안 요구 사항일 수 있습니다.
    • eapi_standalone 변수는 기본적으로 False로 설정됩니다. 단일 노드 설치 시나리오에서 Pillar 데이터가 사용되는 경우 이 변수는 구성 상태의 방향을 제공합니다. 이 시나리오에서는 모든 IP 통신이 루프백 주소로 전달됩니다. 다중 설치 시나리오에서는 이 설정을 False로 두어야 합니다.
    • eapi_failover_master 변수는 기본적으로 False로 설정됩니다. 이 변수는 Salt 마스터(및 미니언)가 페일오버 모드에서 작동하는 배포를 지원합니다. .
    • eapi_key 변수는 PostgreSQL 데이터베이스에서 암호화된 데이터를 관리하기 위해 Automation Config가 사용하는 암호화 키를 정의합니다. 이 키는 각 설치에 대해 고유해야 합니다. 기본값이 제공되지만 편집기 외부의 별도 터미널에서 다음 명령을 실행하여 사용자 지정 키를 생성할 수 있습니다.
      openssl rand -hex 32
  6. 이 파일의 섹션 5에서 변수를 편집하여 고유한 고객 식별자를 추가합니다.
    • customer_id 변수는 SaltStack 배포를 고유하게 식별합니다. 이것은 PostgreSQL에서 raas_*(API (RaaS)) 데이터베이스의 스키마 이름 접미사가 됩니다. 기본값이 제공되지만 편집기 외부의 별도 터미널에서 다음 명령을 실행하여 사용자 지정 키를 생성할 수 있습니다.
      cat /proc/sys/kernel/random/uuid
    • cluster_id 변수는 활성 또는 페일오버 다중 마스터 모드로 구성된 경우 Salt 마스터 세트의 ID를 정의합니다. 이 ID는 여러 Salt 마스터에 보고하는 미니언이 Automation Config 내에서 여러 번 보고되는 것을 방지합니다.

노드에 highstate 적용

  1. Salt 마스터에서 Grain을 동기화하여 각 미니언에 필요한 Grain 데이터가 Salt 마스터에 있는지 확인합니다. 이 단계를 수행하면 Automation Config 기능을 위해 pillar 데이터를 제대로 생성할 수 있습니다.

    입자를 동기화하는 명령에서 모든 미니언을 대상으로 지정하거나, 괄호를 사용하여 노드에 대한 특정 미니언 ID 목록(Salt 마스터 자체 포함)을 전달할 수 있습니다. 예를 들면 다음과 같습니다.

    모든 미니언을 대상으로 지정

    sudo salt \* saltutil.refresh_grains

    미니언 목록을 대상으로 지정

    sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_grains
  2. 새로 고친 후 각 미니언이 sse_settings.yaml 파일에 정의된 pillar 데이터를 수신했으며 예상대로 나타나는지 확인합니다.

    pillar 데이터를 새로 고치는 명령에서 모든 미니언을 대상으로 지정하거나, 괄호를 사용하여 노드에 대한 특정 미니언 ID 목록(Salt 마스터 자체 포함)을 전달할 수 있습니다. 예를 들면 다음과 같습니다.

    모든 미니언을 대상으로 지정

    sudo salt \* saltutil.refresh_pillar

    미니언 목록을 대상으로 지정

    sudo salt -L 'salt-master-1,postgres-database-1,redis-database-1,saltstack-enterprise-api-server-1' saltutil.refresh_pillar
  3. 다음 명령으로 pillar에 대한 반환 데이터가 올바른지 확인합니다.
    sudo salt \* pillar.items

    Automation Config와 관련된 pillar 데이터가 보이는지 확인합니다.

    참고:

    또한 특정 미니언의 pillar 데이터를 대상으로 지정하여 pillar 데이터가 새로 고쳐졌는지 확인할 수도 있습니다.

  4. PostgreSQL 서버에 오케스트레이션 highstate를 적용하는 명령을 실행합니다. 이전에 PostgreSQL 서버에 대해 기록한 미니언 ID를 사용합니다.

    예를 들면 다음과 같습니다.

    sudo salt postgres-database-1 state.highstate
  5. 다음 서버에 대해 각 서버의 미니언 ID를 대체하고 이전 단계를 반복합니다.
    • Redis 노드
    • RaaS 노드
    • Salt 마스터 노드
    참고:

    highstate를 Salt 마스터에 처음 적용하는 동안 다음 오류 메시지가 표시될 수 있습니다. Authenticationerroroccurred.. 이 오류는 Salt 마스터가 RaaS 노드에 대해 아직 인증되지 않았기 때문에 표시되지만 마스터 플러그인 설치 상태가 Salt 마스터 서비스를 다시 시작하면 문제가 자동으로 해결됩니다.

highstate를 실행하는 동안 다른 오류가 발생하면 문제 해결을 참조하십시오.