Documentation

2. Ansible Automation Platform 업그레이드

|ah||at|는 콘텐츠 공급자 역할을 하며, 이를 위해서는 |at| 배포와 Automation Hub 배포가 함께 실행되어야 합니다. Ansible Automation Platform 설치 프로그램에는 이 두 가지가 모두 포함됩니다. 이 섹션에서는 업그레이드 프로세스의 각 구성 요소에 관해 설명합니다.

참고

모든 업그레이드에서 현재 업그레이드 중인 대상 버전과 주요 버전의 차이가 두 버전 이하여야 합니다. 예를 들어, automation controller 4.0으로 업그레이드하려면 먼저 버전이 3.8.x여야 합니다. 즉, 버전 3.7.x 이전 버전에서는 직접 업그레이드할 수 있는 경로가 없습니다. Red Hat Customer Portal에서 `recommended upgrade path article <https://access.redhat.com/articles/4098921>`_를 참조하십시오.

automation controller 4.0을 실행하려면 Ansible 2.10도 있어야 합니다.

2.1. 업그레이드 계획

이 섹션에서는 automation controller 인스턴스를 업그레이드하려고 할 때 고려해야 할 변경 사항을 설명합니다.

  • 이전 버전의 유효한 라이센스가 이미 있는 경우에도 최신 자동화 컨트롤러로 업그레이드할 때 인증 정보 또는 서브스크립션 매니페스트를 제공해야 합니다. |atu|의 :ref:`import_subscription`을 참조하십시오.

  • Red Hat Enterprise Linux 및 |at|를 업그레이드해야 하는 경우 컨트롤러 데이터(자동화 컨트롤러에서)의 백업 및 복원을 수행해야 합니다. 자세한 내용은 |ata|의 :ref:`ag_backup_restore`을 참조하십시오.

  • 클러스터형 업그레이드에서는 업그레이드를 시작하기 전에 인스턴스 및 인스턴스 그룹에 특별히 주의해야 합니다. 자세한 내용은 setup_inventory_file 및 :ref:`ag_clustering`를 참조하십시오.

2.2. 설치 프로그램 가져오기

자세한 내용은 `Red Hat Customer Portal <https://access.redhat.com/>`의 `Choosing and obtaining a Red Hat Ansible Automation Platform installer <https://access.redhat.com/documentation/en-us/red_hat_ansible_automation_platform/2.2/html-single/red_hat_ansible_automation_platform_installation_guide/index#choosing_and_obtaining_a_red_hat_ansible_automation_platform_installer>`을 참조하십시오. Red Hat 고객 로그인을 사용하여 전체 컨텐츠에 액세스하십시오.

2.3. 인벤토리 파일 설정

인벤토리 파일을 편집할 때는 다음 몇 가지 사항을 고려해야 합니다.

  • 인벤토리 파일의 콘텐츠는 ./setup.sh 설치 프로그램 플레이북 옆의 ``./inventory``에 정의되어 있어야 합니다.

  • 설치 및 업그레이드: 외부 데이터베이스를 사용해야 하는 경우 인벤토리 파일의 데이터베이스 섹션이 올바르게 설정되어 있는지 확인해야 합니다. 설정 스크립트를 실행하기 전에 이 파일을 편집하고 외부 데이터베이스 정보를 추가합니다.

  • Ansible Automation Platform 또는 Automation Hub: [automationhub] 그룹에 자동화 허브 호스트를 추가해야 합니다(Tower와 Automation Hub를 동일한 노드에 설치할 수 없음).

  • Tower는 사용자가 보유한 복제본을 사용하여 작업해야 하지만 사용하는 데이터베이스에 대한 복제 또는 장애 조치를 구성하지 않습니다.

  • 데이터베이스 서버는 성능상의 이유로 Tower 서버와 동일한 네트워크 또는 동일한 데이터 센터에 있어야 합니다.

  • 기존 클러스터 업그레이드: 클러스터를 업그레이드할 때 기존 인스턴스 또는 인스턴스 그룹을 생략하도록 클러스터를 재구성할 수도 있습니다. 인벤토리 파일에서 인스턴스 또는 인스턴스 그룹을 생략하는 것만으로는 클러스터에서 제거되지 않습니다. 인벤토리 파일에서 인스턴스 또는 인스턴스 그룹을 생략하는 것 외에도 업그레이드를 시작하기 전에 :ref:`deprovision instances or instance groups <administration:ag_cluster_deprovision>`을 실행해야 합니다. 그러지 않으면 생략된 인스턴스 또는 인스턴스 그룹이 클러스터와 계속 통신하므로 업그레이드하는 동안 Tower 서비스에 문제가 발생할 수 있습니다.

  • 클러스터형 설치: 클러스터형 설정을 생성하는 경우 ``localhost``를 모든 인스턴스의 호스트 이름 또는 IP 주소로 교체해야 합니다. 모든 노드/인스턴스는 이 호스트 이름 또는 주소를 사용하여 다른 노드/인스턴스에 도달할 수 있어야 합니다. 즉, 노드 중 하나에 ``localhost ansible_connection=local``을 사용할 수 없고 모든 노드에서 호스트 이름에 동일한 형식을 사용해야 합니다.

    따라서 다음 스크립트는 작동하지 않습니다.

    [tower]
    localhost ansible_connection=local
    hostA
    hostB.example.com
    172.27.0.4
    

    대신 다음 형식을 사용하십시오.

    [tower]
    hostA
    hostB
    hostC
    

    또는

    hostA.example.com
    hostB.example.com
    hostC.example.com
    

    또는

    [tower]
    172.27.0.2
    172.27.0.3
    172.27.0.4
    
  • 모든 표준 설치: 설치를 수행할 때 인벤토리 파일에서 필요한 암호를 제공해야 합니다.

참고

이제 설치 프로세스를 변경하려면 인벤토리 파일의 모든 암호 필드를 작성해야 합니다. 해당 값이 있는 위치를 알아야 하는 경우 다음과 같습니다.

admin_password='' <– Tower 로컬 관리자 암호

pg_password='' <—- /etc/tower/conf.d/postgres.py

경고

``pg_password``에 특수 문자를 사용하지 마십시오. 설정이 실패할 수 있습니다.

2.3.1. 인벤토리 파일의 예

  • 새 노드 프로비저닝: 프로비저닝된 새 노드가 모든 현재 노드가 포함된 인벤토리 파일에 추가되는 경우, 모든 암호가 인벤토리 파일에 포함되어 있는지 확인합니다.

  • 단일 노드 업그레이드: 업그레이드 시 인벤토리 파일을 현재 릴리스 버전과 비교하십시오. 업그레이드를 수행할 때도 암호를 여기에 보관하는 것이 좋습니다.

2.3.1.1. 독립 실행형 Automation Hub 인벤토리 파일의 예

[automationhub]
automationhub.acme.org
[all:vars]
automationhub_admin_password='<password>'
automationhub_pg_host=''
automationhub_pg_port=''
automationhub_pg_database='automationhub'
automationhub_pg_username='automationhub'
automationhub_pg_password='<password>'
automationhub_pg_sslmode='prefer'
# The default install will deploy a TLS enabled Automation Hub.
# If for some reason this is not the behavior wanted one can
# disable TLS enabled deployment.
#
# automationhub_disable_https = False
# The default install will generate self-signed certificates for the Automation
# Hub service. If you are providing valid certificate via automationhub_ssl_cert
# and automationhub_ssl_key, one should toggle that value to True.
#
# automationhub_ssl_validate_certs = False
# SSL-related variables
# If set, this will install a custom CA certificate to the system trust store.
# custom_ca_cert=/path/to/ca.crt
# Certificate and key to install in Automation Hub node
# automationhub_ssl_cert=/path/to/automationhub.cert
# automationhub_ssl_key=/path/to/automationhub.key

2.3.1.2. 플랫폼 인벤토리 파일의 예

[tower]
tower.acme.org
[automationhub]
automationhub.acme.org
[database]
database-01.acme.org
[all:vars]
admin_password='<password>'
pg_host='database-01.acme.org'
pg_port='5432'
pg_database='awx'
pg_username='awx'
pg_password='<password>'
pg_sslmode='prefer'  # set to 'verify-full' for client-side enforced SSL
# Automation Hub Configuration
#
automationhub_admin_password='<password>'
automationhub_pg_host='database-01.acme.org'
automationhub_pg_port='5432'
automationhub_pg_database='automationhub'
automationhub_pg_username='automationhub'
automationhub_pg_password='<password>'
automationhub_pg_sslmode='prefer'
# The default install will deploy a TLS enabled Automation Hub.
# If for some reason this is not the behavior wanted one can
# disable TLS enabled deployment.
#
# automationhub_disable_https = False
# The default install will generate self-signed certificates for the Automation
# Hub service. If you are providing valid certificate via automationhub_ssl_cert
# and automationhub_ssl_key, one should toggle that value to True.
#
# automationhub_ssl_validate_certs = False
# Isolated Tower nodes automatically generate an RSA key for authentication;
# To disable this behavior, set this value to false
# isolated_key_generation=true
# SSL-related variables
# If set, this will install a custom CA certificate to the system trust store.
# custom_ca_cert=/path/to/ca.crt
# Certificate and key to install in nginx for the web UI and API
# web_server_ssl_cert=/path/to/tower.cert
# web_server_ssl_key=/path/to/tower.key
# Certificate and key to install in Automation Hub node
# automationhub_ssl_cert=/path/to/automationhub.cert
# automationhub_ssl_key=/path/to/automationhub.key
# Server-side SSL settings for PostgreSQL (when we are installing it).
# postgres_use_ssl=False
# postgres_ssl_cert=/path/to/pgsql.crt
# postgres_ssl_key=/path/to/pgsql.key

2.3.1.3. 단일 노드 인벤토리 파일의 예

[tower]
localhost ansible_connection=local

[database]

[all:vars]
admin_password='password'

pg_host=''
pg_port=''

pg_database='awx'
pg_username='awx'
pg_password='password'

경고

``pg_password``에 특수 문자를 사용하지 마십시오. 설정이 실패할 수 있습니다.

2.3.1.4. 다중 노드 클러스터 인벤토리 파일의 예

[tower]
clusternode1.example.com
clusternode2.example.com
clusternode3.example.com

[database]
dbnode.example.com

[all:vars]
ansible_become=true

admin_password='password'

pg_host='dbnode.example.com'
pg_port='5432'

pg_database='tower'
pg_username='tower'
pg_password='password'

경고

``pg_password``에 특수 문자를 사용하지 마십시오. 설정이 실패할 수 있습니다.

2.3.1.5. 외부의 기존 데이터베이스 인벤토리 파일의 예

[tower]
node.example.com ansible_connection=local

[database]

[all:vars]
admin_password='password'
pg_password='password'


pg_host='database.example.com'
pg_port='5432'

pg_database='awx'
pg_username='awx'

경고

``pg_password``에 특수 문자를 사용하지 마십시오. 설정이 실패할 수 있습니다.

2.3.1.6. 설치가 필요한 외부 데이터베이스 인벤토리 파일의 예

[tower]
node.example.com ansible_connection=local


[database]
database.example.com

[all:vars]
admin_password='password'
pg_password='password'

pg_host='database.example.com'
pg_port='5432'

pg_database='awx'
pg_username='awx'

경고

``pg_password``에 특수 문자를 사용하지 마십시오. 설정이 실패할 수 있습니다.

필요한 변경이 완료되면 ``./setup.sh``를 실행할 준비가 된 것입니다.

참고

원격 머신에는 루트 액세스 권한이 필요합니다. Ansible을 사용하면 다음과 같이 다양한 방법으로 루트 액세스 권한을 얻을 수 있습니다.

  • ansible_user=root ansible_ssh_pass=》your_password_here》 인벤토리 호스트 또는 그룹 변수

  • ansible_user=root ansible_ssh_private_key_file=》path_to_your_keyfile.pem》 인벤토리 호스트 또는 그룹 변수

  • ANSIBLE_BECOME_METHOD=〉sudo〉 ANSIBLE_BECOME=True ./setup.sh

  • ANSIBLE_SUDO=True ./setup.sh (Ansible 2.7에만 해당)

DEFAULT_SUDO Ansible 구성 매개변수는 Ansible 2.8에서 제거되어 권한 에스컬레이션의 ANSIBLE_SUDO=True ./setup.sh 메서드가 더 이상 작동하지 않습니다. become 플러그인에 대한 자세한 내용은 Understanding Privilege Escalation`list of become plugins`_을 참조하십시오.

2.4. 설정 플레이북 실행

Tower 설정 플레이북 스크립트는 inventory 파일을 사용하고 Tower 설치 프로그램 tarball의 압축을 푼 경로에서 ``./setup.sh``로 호출됩니다.

root@localhost:~$ ./setup.sh

설정 스크립트에서는 다음 인수를 사용합니다.

  • -h – 이 도움말 메시지 표시 및 종료

  • -i INVENTORY_FILE – Ansible 인벤토리 파일 경로(기본값: inventory)

  • -e EXTRA_VARS – 추가 Ansible 변수를 key=value 또는 YAML/JSON으로 설정(즉, ``-e bundle_install=false``는 온라인 설치 강제 수행)

  • -b – 설치 대신 데이터베이스 백업 수행

  • -r – 설치 대신 데이터베이스 복원 수행(아래의 코드 예제에 표시된 것처럼 EXTRA_VARS에 기본값이 아닌 경로를 제공하는 경우를 제외하고 기본 복원 경로가 사용됨)

./setup.sh -e 'restore_backup_file=/path/to/nondefault/location' -r