Automation Config를 이전 버전에서 안정적인 최신 버전으로 업그레이드할 수 있습니다.

업그레이드 시 모범 사례

업그레이드를 계획하는 동안 다음 지침을 따르십시오.

  • 설치 관리자 또는 수동 설치 지침을 사용하여 업그레이드하지 마십시오.Automation Config 설치를 업그레이드하는 경우 다음 업그레이드 지침을 참조하십시오.
  • 최상의 결과를 얻으려면 하나의 주요 릴리스에서 다음 릴리스로 증분합니다. 가장 좋은 방법은 Automation Config의 최신 주 버전에서 새 릴리스로 업그레이드하는 것입니다. 이전 릴리스를 사용하는 경우 한 릴리스에서 다음 릴리스로 증분 업그레이드합니다.
  • 데이터를 백업합니다. 데이터 손실을 방지하기 위해 데이터를 백업합니다.
  • 네트워크 활동이 느린 시간 동안 업그레이드를 수행합니다. 데이터베이스 업그레이드 시 데이터를 다시 인덱싱해야 합니다. 데이터의 복잡도에 따라 데이터베이스 업그레이드에 몇 시간이 걸릴 수 있습니다. 서비스 중단을 방지하려면 느린 업무 시간 동안 데이터베이스를 업그레이드하거나 업그레이드 전에 데이터베이스를 트리밍하는 것이 좋습니다.
  • 데이터베이스에서 저장되는 이전 명령이 있는지 확인됩니다.실행되지 않은 이전 명령이 PostgreSQL 데이터베이스에 저장되는 경우도 있습니다. 이러한 명령은 마스터 플러그인을 다시 시작할 때 업그레이드 프로세스 중에 실행될 수 있습니다. 이런 일이 발생하지 않도록 방지하려면 데이터베이스에 이전 명령이 저장되어 있는지 확인하고 정의된 시간보다 오래된 작업을 건너뛸 수 있도록 설정합니다.
  • 업그레이드를 배포하기 전에 테스트합니다.가능하면 테스트 환경에서 드레스 리허설을 실행하여 업그레이드가 얼마나 오래 걸릴지 파악할 수 있습니다.
  • 먼저 전체 가이드를 읽어봅니다.업그레이드를 구현하기 전에 전체 가이드를 한 번 읽어보는 것이 좋습니다. 그러면 필요한 작업을 잘 이해할 수 있고 팀의 계획이 필요한지 또는 보류 중인 변경 사항을 관계자에게 알려야 하는지 여부를 잘 파악할 수 있습니다.

이전 버전에서 업그레이드

가장 좋은 방법은 Automation Config의 최신 주 버전에서 새 릴리스로 업그레이드하는 것입니다. 최신 릴리스보다 이전의 버전에서 업그레이드하는 경우 주 릴리스를 다음 주 릴리스로 한 단계씩 업그레이드하는 것이 가장 좋습니다.

이전 Automation Config 버전으로 업그레이드하는 방법에 대한 지침은 업그레이드하려는 원본 릴리스의 특정 업그레이드 지침을 참조하십시오. 이전 릴리스의 업그레이드 지침은 후속 릴리스의 설치 가이드 PDF에 포함되어 있습니다. 예를 들어 5.5에서 6.0으로 업그레이드해야 하는 경우 6.0 설치 PDF의 업그레이드 지침을 참조하십시오.

Automation Config 버전 8.4 이상의 경우 이 페이지 상단의 버전 선택기를 사용하여 제품 버전에 대한 올바른 업그레이드 가이드를 선택합니다. 버전 8.3 이하의 경우 다음 표의 PDF 가이드를 사용합니다.

버전 설치 및 업그레이드 가이드(PDF)
8.3 8.3 설치 및 업그레이드 가이드
6.4 6.4 설치 및 업그레이드 가이드
6.3 6.3 설치 및 업그레이드 가이드
6.2 6.2 설치 및 업그레이드 가이드
6.1 6.1 설치 및 업그레이드 가이드
6.0.1 6.0.1 설치 및 업그레이드 가이드
6.0 6.0 설치 및 업그레이드 가이드

Automation Config를 업그레이드하는 방법

Automation Config를 업그레이드하려면 다음 작업을 이 순서대로 완료하십시오.
  • 데이터 백업(Automation Config의 특정 설치에 중요한 특정 파일 및 디렉토리 포함)
  • PostgreSQL 업그레이드(선택 사항이지만 권장됨)
  • Salt 인프라 업그레이드(선택 사항이지만 권장됨)
  • 업그레이드 파일 다운로드
  • RaaS 노드 업그레이드
  • 마스터 플러그인을 사용하여 Salt 마스터 업그레이드

Aria Suite Lifecycle을 통한 Config 업그레이드에 대한 자세한 내용은 LCM 설명서에서 Automation Config 업그레이드를 참조하십시오.

Automation Config 파일 및 디렉토리 백업

다음 파일 및 디렉토리에는 사용자 지정 Automation Config 구성이 포함되어 있으며 업그레이드하기 전에 백업해야 합니다.

  1. RaaS 노드에서 다음 전체 디렉토리를 백업합니다.
    • /etc/raas/raas
    • /etc/raas/raas.secconf
    • /var/log/raas
    • /etc/raas/pki/
    참고:

    pki 디렉토리에는 숨겨진 파일이 포함되어 있으므로 전체 디렉토리를 백업해야 합니다. /var/log/raas 디렉토리에 있는 로그 파일을 백업하는 것은 선택 사항입니다. 문제 해결이 필요한 경우 깨끗한 로그 파일을 제공하기 위해, 업그레이드 프로세스 중에 로그 파일을 지웁니다.

  2. 각 Salt 마스터에서 /etc/salt/master.d/raas.conf/etc/salt/master.d/eAPIMasterPaths.conf 파일을 백업합니다.
    참고:

    처음에 Automation Config를 설치한 방법에 따라서 eAPI Salt 마스터 경로는 대신 /etc/salt/master.d/raas.conf 파일에 있을 수 있습니다.

데이터베이스 스키마 백업

RaaS 노드를 업그레이드할 때 데이터베이스 스키마가 업데이트됩니다. 따라서 업그레이드하기 전에 데이터베이스의 백업을 생성해야 합니다.

데이터베이스를 백업하려면 먼저 PostgreSQL 데이터베이스 이름을 조회한 후 내용을 복사해야 합니다.

  1. PostgreSQL 서버에서 다음 파일을 백업합니다.
    • postgresql.conf
    • pg_hba.conf
  2. 다음 명령을 사용하여 postgres 사용자로 로그인합니다.
    sudo su - postgres
  3. 다음 명령을 사용하여 PostgreSQL을 입력하고 데이터베이스를 나열하여 데이터베이스 이름을 얻습니다.
    psql
    \l
  4. PostgreSQL을 종료하고 postgres 사용자로 로그아웃하려면 Ctrl+D를 누르고 다음 명령을 실행합니다.
    exit
  5. 데이터베이스 내용을 파일에 복사합니다. 다음 명령은 예시입니다.
    pg_dump -U salteapi raas_db_name > postgres_raas_backup_$(date +%Y-%m-%d).sql

PostgreSQL 데이터베이스 업그레이드

Automation Config에는 PostgreSQL 9.6 데이터베이스가 필요하지만 PostgreSQL 13.7가 권장됩니다. 권장되는 PostgreSQL 버전은 Automation Config 설치 관리자에 포함되어 있습니다.

최신 버전의 PostgreSQL로 업그레이드하는 것이 필수는 아닙니다. 하지만 PostgreSQL을 업그레이드하면 성능이 향상될 수 있습니다. 최신 버전의 PostgreSQL로 업그레이드하는 방법에 대한 지침은 PostgreSQL 업그레이드를 참조하십시오.

Redis 데이터베이스 업그레이드

Automation Config에는 Redis 5.x 데이터베이스가 필요하지만 Redis 6.2.7가 권장됩니다. 권장되는 Redis 버전은 Automation Config 설치 관리자에 포함되어 있습니다.

Redis 5.x의 최신 버전으로 업그레이드할 필요는 없습니다. 하지만 Redis를 업그레이드하면 성능이 향상될 수 있습니다. Redis 업그레이드에 대한 지침은 Redis 관리를 참조하십시오.

Salt 업그레이드

Salt를 업그레이드할 때는 먼저 마스터를 업그레이드해야 합니다. 마스터보다 최신 버전인 Salt로 미니언을 실행하면 예상대로 작동하지 않을 수 있습니다. 아직 마스터에서 사용할 수 없는 변경 내용이 미니언에 포함될 수 있기 때문입니다. 또한 가능할 때마다 새 마스터와 이전 미니언 간의 호환성이 유지됩니다. 일반적으로 이 정책의 유일한 예외는 보안 취약점의 경우입니다.

최상의 성능을 위해 인프라의 모든 Salt 구성 요소가 최신 주 버전의 Salt에서 실행되고 있는지 확인하십시오.

Salt 3006 릴리스부터 Salt 프로젝트는 onedir 패키징 시스템을 사용합니다. onedir은 "하나의 디렉토리"를 의미합니다. Python 및 기타 Salt 종속성을 포함하여 Salt에 필요한 모든 실행 파일을 포함하기 때문입니다. onedir을 사용하면 Salt를 즉시 사용할 수 있습니다.
중요: Salt 프로젝트에서 Salt 버전 업데이트를 계속 받으려면 onedir로 업그레이드하는 것이 좋습니다. Salt 버전 3006부터는 onedir 패키지만 업그레이드에 사용할 수 있습니다. Salt 버전 및 onedir에 대한 자세한 내용은 KB 89728을 참조하십시오.
참고: Salt Crystal 설치 관리자 패키지의 사용이 중지되었습니다. 향후 설치에서는 onedir 설치 관리자 패키지를 사용하는 것이 좋습니다.

필수: 브라운필드/업그레이드 배포의 경우 Salt 3006부터 Salt 마스터는 기존의 "root 사용자" 대신 "salt" 사용자로 실행되도록 구성됩니다. 따라서 미니언 배포 및 RaaS 마스터 플러그인 업그레이드와 같은 RaaS 관련 워크플로에서 사용 권한 오류가 발생할 수 있습니다.

이 문제를 해결하려면 /etc/salt/master.d/raas.conf 파일을 수정하여 사용자를 root로 변경하십시오(user: root).

새 그린필드 배포의 경우 sseapi-config 명령은 마스터 플러그인을 구성하고 올바른 user: root 구성 값으로 raas.conf 파일을 생성합니다. 사용자 작업은 필요하지 않습니다.

RaaS 노드 업그레이드

최신 버전의 PostgreSQL, Redis 및 Salt로 업그레이드한 후에는 RaaS 노드를 이전 버전에서 최신 버전으로 업그레이드할 수 있습니다.

참고: 데이터베이스 업그레이드 시 데이터를 다시 인덱싱해야 합니다. 데이터가 복잡하면 데이터베이스 업그레이드에 몇 시간이 걸릴 수도 있습니다.
중요:

RaaS 노드를 업그레이드하기 전에 데이터 손실을 방지하기 위해 시스템 데이터를 백업해야 합니다. 설정을 보존하려면 기본 파일 시스템, pillar 데이터 및 작업에 대해 변경한 내용을 새 파일 또는 작업으로 저장합니다. 또한 기존 pillar 대상 할당을 기록하거나 복사본을 만들어야 합니다. 이러한 내용은 업그레이드 프로세스 중에 제거되기 때문입니다.

RaaS 노드를 업그레이드하려면:

  1. Customer Connect에서 업그레이드 파일을 다운로드합니다.
  2. 다음 명령을 사용하여 RaaS 서비스를 중지합니다.
    sudo systemctl stop raas
  3. /var/log/raas 디렉토리에서 로그 파일을 제거합니다. 로그 파일을 정리하면 문제 해결이 필요한 경우 깔끔한 로그 파일이 제공됩니다.
  4. 다음 명령을 사용하여 현재 설치된 API(RaaS) 버전을 제거합니다.
    sudo yum remove raas
  5. 최신 RPM을 설치하여 RaaS 노드를 업그레이드합니다. 다음 예제 명령을 RPM의 정확한 파일 이름을 대체하여 사용합니다.
    sudo yum install raas-rpm-file-name.rpm
  6. 중요: 다음 파일의 백업을 복원합니다.
    • /etc/raas/raas
    • /etc/raas/raas.secconf
    • /etc/raas/pki/
  7. 다음 명령을 사용하여 raas 사용자에 대한 권한을 업데이트합니다.
    sudo chown -R raas:raas /etc/pki/raas/certs
  8. 선택 사항: Automation for Secure Hosts 라이센스가 있고 규정 준수 라이브러리를 추가하려는 경우 다음 새 섹션을 /etc/raas/raas 파일에 추가합니다.
    sec:
      ingest_override: true
      locke_dir: locke
      post_ingest_cleanup: true
      username: 'secops'
      content_url: 'https://enterprise.saltstack.com/secops_downloads'
      download_enabled: true
      download_frequency: 86400
      stats_snapshot_interval: 3600
      compile_stats_interval: 10
      ingest_on_boot: True
      content_lock_timeout: 60
      content_lock_block_timeout: 120
    참고:

    이 단계는 선택 사항이며 유효한 Automation for Secure Hosts 라이센스가 있는 조직에만 적용됩니다. 이 추가 기능 모듈은 Automation Config 버전 6.0 이상에서 사용할 수 있습니다. /etc/raas/raas 구성 파일의 이전 구성 옵션은 이러한 추가 기능 모듈과 관련이 있습니다.

  9. 선택 사항: Automation for Secure Hosts 라이센스가 있고 취약성 라이브러리를 추가하려면 새 섹션을 /etc/raas/raas 파일에 추가합니다.
    vman:
      vman_dir: vman
      download_enabled: true
      download_frequency: 86400
      username: vman
      content_url: 'https://enterprise.saltstack.com/vman_downloads'
      ingest_on_boot: true
      compile_stats_interval: 60
      stats_snapshot_interval: 3600
      old_policy_file_lifespan: 2
      delete_old_policy_files_interval: 86400
      tenable_asset_import_enabled: True
      tenable_asset_import_grains: ['fqdn', 'ipv4', 'ipv6', 'hostname', 'mac_address', 'netbios_name',
                                    'bios_uuid', 'manufacturer_tpm_id', 'ssh_fingerprint',
                                    'mcafee_epo_guid', 'mcafee_epo_agent_guid', 'symantec_ep_hardware_key',
                                    'qualys_asset_id', 'qualys_host_id', 'servicenow_sys_id', 'gcp_project_id',
                                    'gcp_zone', 'gcp_instance_id', 'azure_vm_id', 'azure_resource_id',
                                    'aws_availability_zone', 'aws_ec2_instance_ami_id',
                                    'aws_ec2_instance_group_name', 'aws_ec2_instance_state_name',
                                    'aws_ec2_instance_type', 'aws_ec2_name', 'aws_ec2_product_code',
                                    'aws_owner_id', 'aws_region', 'aws_subnet_id', 'aws_vpc_id',
                                    'installed_software', 'bigfix_asset_id'
                                    ]
    참고:

    이 단계는 선택 사항이며 유효한 Automation for Secure Hosts 라이센스가 있는 조직에만 적용됩니다. 이 추가 기능 모듈은 Automation Config 버전 6.0 이상에서 사용할 수 있습니다. /etc/raas/raas 구성 파일의 이전 구성 옵션은 이러한 추가 기능 모듈과 관련이 있습니다.

  10. RaaS에는 현재 부실 작업과 관련하여 알려진 문제가 있습니다. 업그레이드 시 일부 사용자는 보류 중 상태로 멈춰있는 부실 작업 대기열을 발견할 수 있습니다. RaaS 노드를 업그레이드하면 이러한 작업이 먼저 지워지지 않는 한 실행될 수 있습니다.

    이런 일이 발생하지 않도록 방지하려면 데이터베이스에 이전 명령이 저장되어 있는지 확인합니다. PostgreSQL 노드에서 다음 명령을 사용하여 보류 중인 작업이 있는지 확인합니다.

    select count(1) from commands where state='new';

    결과는 보류 중인 작업의 수입니다. 작업 수가 0이면 나머지 업그레이드 프로세스를 진행합니다.

  11. 다음 명령을 사용하여 RaaS 서비스 데이터베이스를 업그레이드합니다.
    sudo su - raas
    raas upgrade
    참고:

    데이터베이스의 크기에 따라 업그레이드에 몇 분에서 한 시간 이상 걸릴 수 있습니다. 오류가 발생하는 경우 /var/log/raas/raas 로그 파일에서 자세한 내용을 확인하십시오.

  12. 업그레이드 후 다음 명령을 사용하여 raas 사용자의 세션을 종료합니다.
    exit
  13. 다음 명령을 사용하여 RaaS 서비스를 시작합니다.
    sudo systemctl enable raas
    sudo systemctl start raas

Automation Config 사용자 인터페이스를 사용하여 마스터 플러그인 업그레이드

참고: 이 기능은 Automation Config 버전 8.11.2 이상에서 지원됩니다. 이전 버전의 경우 먼저 CLI를 사용하여 마스터 플러그인을 버전 8.11.2 이상으로 업그레이드해야 합니다.
참고: Salt 마스터는 루트로 실행되어야 합니다.

Automation Config는 사용자가 별도 조치 없이 마스터 플러그인을 최신 버전으로 자동으로 업그레이드합니다.

하지만 Automation Config 사용자 인터페이스에서 마스터 플러그인을 업그레이드할 수도 있습니다. 마스터 플러그인을 업그레이드하려면 Automation Config에서 관리를 선택하고 마스터 플러그인을 클릭합니다. [마스터 플러그인] 탭에는 사용 중인 플러그인 및 Automation Config 환경의 버전이 마스터 플러그인 ID 목록과 함께 표시됩니다. [마스터 플러그인] 탭에서 업데이트할 마스터 플러그인을 선택한 다음 업데이트를 클릭할 수 있습니다.

CLI를 사용하여 마스터 플러그인 업그레이드

RaaS 노드를 성공적으로 업그레이드한 후에는 마스터 플러그인을 사용하여 Automation Config에 연결하는 모든 Salt 마스터를 업그레이드 할 수 있습니다.

기본 구성 파일을 생성하고 기존 구성에서 보존할 설정을 적용하여 마스터 플러그인 구성을 업데이트하는 것이 좋습니다. 예를 들면 다음과 같습니다.
# sseapi-config --default >/tmp/raas.conf 
# cd /etc/salt/master.d 
# vim -d raas.conf /tmp/raas.conf
중요: onedir을 사용하여 Salt를 설치한 경우 이 실행 파일의 경로는 /opt/saltstack/salt/extras-3.10/bin/sseapi-config 입니다.

8.13.0 릴리스부터 마스터 플러그인에는 이제 RaaS 서버에서 Salt 마스터로 대상 그룹 일치를 오프로드하는 tgtmatch 엔진이 포함되어 있습니다. 특히 다음을 사용하는 환경에서 대상 그룹 일치를 보다 원활하게 수행할 수 있도록 tgtmatch 엔진을 사용하도록 설정하고 구성하는 것이 좋습니다.

  • 많은 수의 대상 그룹(100개 이상)
  • 많은 수의 미니언(3000개 이상)
  • 잦은 미니언 입자 변경(매일 또는 더 자주)
  • 잦은 미니언 생성 및 삭제(매일 또는 더 자주)
tgtmatch 엔진을 구성하려면 이러한 설정이 마스터 플러그인 구성 파일(/etc/salt/master.d/raas.conf)에 있는지 확인합니다.
engines: 
    - sseapi: {} 
    - eventqueue: {} 
    - rpcqueue: {} 
    - jobcompletion: {} 
    - keyauth: {} 
    - tgtmatch: {} 

sseapi_local_cache:     
    load: 3600 
    tgt: 86400 
    pillar: 3600 
    exprmatch: 86400 
    tgtmatch: 86400 

sseapi_tgt_match: 
    poll_interval: 60     
    workers: 0 
    nice: 19
Salt 마스터에서 대상 일치 데이터를 제공하도록 RaaS를 구성하려면 RaaS Config 파일(/etc/raas/raas)에 다음 설정이 있는지 확인합니다.
target_groups_from_master_only: true
참고:

Salt 마스터를 업그레이드하기 전에 pip3 애플리케이션이 Salt 마스터에 설치되어 있는지 확인합니다. 최신 버전의 마스터 플러그인에서 업그레이드하는 경우에는 이 애플리케이션이 이미 설치되어 있습니다.

Salt 마스터에서 마스터 플러그인을 업그레이드하려면:

  1. 다음 명령을 사용하여 salt-master 서비스를 중지합니다.
    sudo systemctl stop salt-master
  2. Salt 마스터에서 실행 중인 Python 버전을 확인합니다. Python 3.6 이상을 실행하는 경우 변경할 필요가 없습니다. 그렇지 않으면 이전 버전의 SSEAPE 모듈을 삭제합니다. (SSEAPE는 Salt 마스터용 Automation Config 플러그인입니다.) 예를 들면 다음과 같습니다.

    RHEL/CentOS

    sudo rm -rf /usr/lib/python3.6/site-packages/SSEAPE*

    Ubuntu

    sudo rm /usr/lib/python3.6/dist-packages/SSEAPE*
  3. 업데이트된 Python 휠을 수동으로 제거하고 다시 설치하여 마스터 플러그인을 업그레이드합니다. 다음 예제 명령을 휠 파일의 정확한 이름을 대체하여 사용합니다.
    참고: sseapi-config의 여러 인스턴스를 방지하려면 기존 플러그인을 제거해야 합니다.
    pip3 uninstall SSEAPE-8.12.1.3-py3-none-any.whl
    mv /etc/salt/master.d/raas.conf /tmp
    salt-call pip.install SSEAPE-8.12.1.3-py3-none-any.whl
    cp /tmp/raas.conf /etc/salt/master.d/raas.conf
    systemctl restart salt-master
  4. 다양한 모듈에 대한 경로를 참조하도록 /etc/salt/master.d/eAPIMasterPaths.conf 파일을 편집하여 API(RaaS) 모듈 경로를 업데이트합니다. 예를 들어 이 파일의 모든 python2.7 참조를 python3.6으로 변경할 수 있습니다.
    참고:

    처음에 Automation Config를 설치한 방법에 따라서 eAPI Salt 마스터 경로는 대신 /etc/salt/master.d/raas.conf 파일에 있을 수 있습니다.

  5. /etc/salt/master.d/raas.confengines 섹션을 확인하여 다음과 일치하는지 확인합니다.
    engines:
      - sseapi: {}
      - eventqueue: {}
      - rpcqueue: {}
      - jobcompletion: {}
      - keyauth: {}
    참고:

    문제가 발생하면 /etc/salt/master.d/raas.conf/etc/salt/master.d/eAPIMasterPaths.conf 파일의 백업을 복원해야 할 수 있습니다.

  6. salt-master 키 인증(권장)을 사용하는 경우 /etc/salt/master.d/raas.confsseapi_pubkey_path가 구성되어 있고 sseapi_usernamesseapi_password가 주석 처리되어 있는지 확인합니다.
    sseapi_pubkey_path: /etc/salt/pki/master/sseapi_key.pub
    
    #sseapi_username:
    #sseapi_password:
  7. master_job_cacheevent_return 항목이 sseapi로 설정되어 있는지 확인합니다. pgjsonb returner는 더 이상 사용할 수 없습니다.
  8. 다음 명령을 사용하여 salt-master 서비스를 시작합니다.
    sudo systemctl start salt-master
  9. Salt 마스터가 "salt" 사용자가 아닌 "root" 사용자로 실행되고 있는지 확인합니다. 그렇지 않은 경우 /etc/salt/master.d/raas.conf 파일을 수정하여 사용자를 root로 변경합니다(user: root).

이제 업그레이드 프로세스가 완료되었습니다. 다른 오류가 발생하면 문제 해결을 참조하십시오.