Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

10장. Ansible로 오버클라우드 구성

중요

기능은 이 릴리스에서 기술 프리뷰로 사용할 수 있으므로 Red Hat에서 일부만 지원됩니다. 테스트용으로만 사용해야 하며 프로덕션 환경에서 배포할 수 없습니다. 기술 프리뷰 기능에 대한 자세한 정보는 적용 범위 정보를 참조하십시오.

오버클라우드 구성을 적용할 기본 방식으로 Ansible을 사용할 수 있습니다. 이 장에서는 오버클라우드에서 이 기능을 활성화하는 단계에 대해 설명합니다.

director가 Ansible 플레이북을 자동 생성하지만 Ansible 구문을 숙지하는 것이 좋습니다. Ansible 사용 방법에 대한 자세한 내용은 https://docs.ansible.com/을 참조하십시오.

참고

또한 Ansible은 OpenStack Platform director 역할과 다른 역할의 개념을 사용합니다.

10.1. Ansible 기반 오버클라우드 구성(config-download)

config-download 기능은 다음과 같습니다.

  • Heat 대신 Ansible로 오버클라우드 구성 애플리케이션을 활성화합니다.
  • 오버클라우드 노드에서 Heat 및 Heat 에이전트(os-collect-config) 간의 구성 배포 데이터의 통신과 전송을 대체합니다.

Heat는 config-download 활성화 여부와 관계없이 표준 기능을 보유합니다.

  • director는 환경 파일과 매개 변수를 Heat에 전달합니다.
  • director는 Heat를 사용하여 stack 및 모든 하위 리소스를 생성합니다.
  • Heat는 베어 메탈 노드 및 네트워크를 포함한 모든 OpenStack 서비스 리소스를 생성합니다.

Heat가 SoftwareDeployment 리소스에서 모든 배포 데이터를 생성하여 오버클라우드 설치 및 구성을 수행할 수 있지만 모든 구성에 적용되는 것은 아닙니다. 대신 Heat는 해당 API를 통해서만 데이터를 제공합니다. stack이 생성되면 Mistral 워크플로는 Heat API에 배포 데이터를 쿼리하고 Ansible 인벤토리 파일과 생성된 플레이북 세트로 ansible-playbook을 실행하여 구성을 적용합니다.

10.2. 오버클라우드 구성 방식을 config-download로 전환

다음 절차에서는 오버클라우드 구성 방식을 OpenStack Orchestration(heat)에서 Ansible 기반 config-download 방식으로 전환합니다. 이 상황에서 언더클라우드는 Ansible 컨트롤 노드(예: ansible-playbook을 실행하는 노드)로 작동합니다. control node라는 용어와 언더클라우드는 언더클라우드가 설치된 동일한 노드를 참조합니다.

절차

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. 오버클라우드 배포 명령을 실행하고 --config-download 옵션과 환경 파일을 포함하여 Heat 기반 구성을 비활성화 합니다.

    $ openstack overcloud deploy --templates \
        --config-download \
        -e /usr/share/openstack-tripleo-heat-templates/environments/config-download-environment.yaml \
        --overcloud-ssh-user heat-admin \
        --overcloud-ssh-key ~/.ssh/id_rsa \
        [OTHER OPTIONS]

    다음 옵션에 유의하십시오.

    • --config-download는 Heat 대신 ansible-playbook의 구성을 적용하는 추가 Mistral 워크플로를 활성화합니다.
    • -e /usr/share/openstack-tripleo-heat-templates/environments/config-download-environment.yaml은 Heat 소프트웨어 배포 구성 리소스를 해당 Ansible 기반 동일 개체에 매핑하는 필수 환경 파일입니다. 이는 Heat 구성 적용 없이 Heat API를 통해 구성 데이터를 제공합니다.
    • --overcloud-ssh-user--overcloud-ssh-key는 각 오버클로우 노드에 SSH 사용, 초기 tripleo-admin 사용자 생성 및 SSH 키를 /home/tripleo-admin/.ssh/authorized_keys에 삽입하는 데 사용됩니다. SSH 키를 삽입하기 위해 사용자가 --overcloud-ssh-user(heat-admin으로 기본 설정) 및 --overcloud-ssh-key(~/.ssh/id_rsa로 기본 설정)의 초기 SSH 연결에 대한 인증을 지정합니다. --overcloud-ssh-key로 지정된 개인 키에 대한 노출을 제한하기 위해 director는 Heat 또는 Mistral과 같은 모든 API 서비스에 이 키를 전달하지 않으며 director의 `openstack overcloud deploy` 명령만 이 키를 사용하여 tripleo-admin 사용자에 대한 액세스를 활성화합니다.

    이 명령을 실행할 때는 사용자의 오버클라우드와 관련된 다른 모든 파일을 포함해야 합니다. 예:

    • -e가 있는 사용자 지정 구성 환경 파일
    • --roles-file이 있는 사용자 지정 역할(roles_data) 파일
    • --networks-file이 있는 구성 가능한 네트워크(network_data) 파일
  3. 오버클라우드 배포 명령은 표준 stack 작업을 수행합니다. 하지만 오버클라우드 stack은 구성 단계에 도달하면 오버클라우드 구성을 위한 config-download 방식으로 전환합니다.

    2018-05-08 02:48:38Z [overcloud-AllNodesDeploySteps-xzihzsekhwo6]: UPDATE_COMPLETE  Stack UPDATE completed successfully
    2018-05-08 02:48:39Z [AllNodesDeploySteps]: UPDATE_COMPLETE  state changed
    2018-05-08 02:48:45Z [overcloud]: UPDATE_COMPLETE  Stack UPDATE completed successfully
    
     Stack overcloud UPDATE_COMPLETE
    
    Deploying overcloud configuration

    오버클라우드 구성이 완료될 때까지 기다립니다.

  4. 오버클라우드의 Ansible 구성이 완료되면 director는 성공 및 실패 작업에 대한 보고서와 오버클라우드에 대한 액세스 URL을 제공합니다.

    PLAY RECAP **********************************************************
    192.0.2.101        : ok=173  changed=42   unreachable=0    failed=0
    192.0.2.102        : ok=133  changed=42   unreachable=0    failed=0
    localhost          : ok=2    changed=0    unreachable=0    failed=0
    
    
    Ansible passed.
    Overcloud configuration completed.
    Started Mistral Workflow tripleo.deployment.v1.get_horizon_url. Execution ID: 0e4ca4f6-9d14-418a-9c46-27692649b584
    Overcloud Endpoint: http://10.0.0.1:5000/
    Overcloud Horizon Dashboard URL: http://10.0.0.1:80/dashboard
    Overcloud rc file: /home/stack/overcloudrc
    Overcloud Deployed

사전 프로비저닝된 노드를 사용하는 경우 config-download로 성공적으로 배포를 완료하려면 추가 단계를 수행해야 합니다.

10.3. 사전 프로비저닝된 노드로 config-download 활성화

프로비저닝된 노드에서 config-download를 사용할 때 Heat 기반 호스트 이름을 실제 호스트 이름에 매핑하여 ansible-playbook이 확인 가능한 호스트에 도달할 수 있습니다. HostnameMap을 사용하여 이러한 값을 매핑할 수 있습니다.

절차

  1. 환경 파일(예: hostname-map.yaml)을 생성하고 HostnameMap 매개 변수와 호스트 이름 매핑을 추가합니다. 다음 구문을 사용하십시오.

    parameter_defaults:
      HostnameMap:
        [HEAT HOSTNAME]: [ACTUAL HOSTNAME]
        [HEAT HOSTNAME]: [ACTUAL HOSTNAME]

    [HEAT HOSTNAME]은 항상 [STACK NAME]-[ROLE]-[INDEX] 규칙을 사용합니다. 예시는 다음과 같습니다.

    parameter_defaults:
      HostnameMap:
        overcloud-controller-0: controller-00-rack01
        overcloud-controller-1: controller-01-rack02
        overcloud-controller-2: controller-02-rack03
        overcloud-compute-0: compute-00-rack01
        overcloud-compute-1: compute-01-rack01
        overcloud-compute-2: compute-02-rack01
  2. hostname-map.yaml의 콘텐츠를 저장합니다.
  3. config-download 배포를 실행할 때 -e 옵션과 함께 환경 파일을 추가합니다. 예시는 다음과 같습니다.

    $ openstack overcloud deploy --templates \
        --config-download \
        -e /usr/share/openstack-tripleo-heat-templates/environments/config-download-environment.yaml \
        -e /home/stack/templates/hostname-map.yaml \
        --overcloud-ssh-user heat-admin \
        --overcloud-ssh-key ~/.ssh/id_rsa \
        [OTHER OPTIONS]

10.4. config-download 작업 디렉터리에 대한 액세스 활성화

Mistral은 config-download 기능에 대한 Ansible 플레이북 실행을 수행합니다. Mistral은 작업 디렉터리에 플레이북, 구성 파일 및 로그를 저장합니다. 이러한 작업 디렉터리는 /var/lib/mistral/에 있으며 Mistral 워크플로우 실행의 UUID를 사용하여 이름이 지정됩니다.

이러한 작업 디렉터리에 액세스하기 전에 stack 사용자에 대한 적절한 권한을 설정해야 합니다.

절차

  1. mistral 그룹은 /var/lib/mistral에서 모든 파일을 읽을 수 있습니다. 언더클라우드에 있는 대화형 stack 사용자는 이러한 파일에 대해 읽기 전용 액세스 권한이 있습니다.

    $ sudo usermod -a -G mistral stack
  2. 다음 명령으로 stack 사용자의 권한을 새로고침합니다.

    [stack@director ~]$ exec su -l stack

    다시 로그인하라는 명령 프롬프트가 표시됩니다. stack 사용자의 암호를 입력합니다.

  3. /var/lib/mistral 디렉터리에 대한 읽기 액세스 권한을 테스트합니다.

    $ ls /var/lib/mistral/

10.5. config-download 로그 및 작업 디렉터리 확인

config-download 프로세스 중에 Ansible은 /var/lib/mistral/<execution uuid>/ansible.log의 오버클라우드에 로그 파일을 생성합니다. <execution uuid>ansible-playbook을 실행한 Mistral 실행에 해당하는 UUID입니다.

절차

  1. openstack workflow execution list 명령을 사용하는 모든 실행을 나열하고 config-download를 실행했던 선택한 Mistral 실행의 워크플로 ID를 확인합니다.

    $ openstack workflow execution list
    $ less /var/lib/mistral/<execution uuid>/ansible.log

    <execution uuid>ansible-playbook을 실행한 Mistral 실행의 UUID입니다.

  2. 또는 /var/lib/mistral에서 가장 최근에 수정된 디렉터리를 살펴보고 가장 최근 배포의 로그를 신속하게 찾을 수 있습니다.

    $ less /var/lib/mistral/$(ls -t /var/lib/mistral | head -1)/ansible.log

10.6. config-download를 수동으로 실행

/var/lib/mistral/의 작업 디렉터리에는 ansible-playbook과 직접 상호 작용할 필수 플레이북 및 스크립트가 있습니다. 다음 절차는 이러한 파일과 상호 작용하는 방법에 대해 설명합니다.

절차

  1. 선택한 Ansible 플레이북의 디렉터리로 변경합니다.

    $ cd /var/lib/mistral/<execution uuid>/

    <execution uuid>ansible-playbook을 실행한 Mistral 실행의 UUID입니다.

  2. mistral 작업 디렉터리에서 ansible-playbook-command.sh를 실행하여 배포를 재현합니다.

    $ ./ansible-playbook-command.sh
  3. Ansible 인수를 이 스크립트에 추가로 전달할 수 있으며 스크립트는 변경되지 않은 채로 ansible-playbook 명령으로 전달됩니다. 이를 통해 확인 모드(--check), 호스트 제한(--limit), 변수 덮어쓰기(-e) 등의 Ansible 기능을 더욱 효과적으로 활용할 수 있습니다. 예:

    $ ./ansible-playbook-command.sh --limit Controller
  4. 작업 디렉터리에는 deploy_steps_playbook.yaml이라는 플레이북이 포함되어 있으며 이는 오버클라우드를 실행합니다. 이 플레이북을 확인하는 방법은 다음과 같습니다.

    $ less deploy_steps_playbook.yaml

    플레이북은 작업 디렉터리에 포함된 다양한 작업 파일을 사용합니다. 일부 작업 파일은 모든 Openstack Platform 역할에 공통되며 일부 파일은 특정 Openstack Platform 역할과 서버에 한정되어 있습니다.

  5. 또한 작업 디렉터리에는 사용자 오버클라우드의 roles_data 파일에 정의된 각 역할에 해당하는 하위 디렉터리가 포함되어 있습니다. 예:

    $ ls Controller/

    각 Openstack Platform 역할 디렉터리에는 해당 역할 유형의 개별 서버에 대한 하위 디렉터리가 포함되어 있습니다. 디렉터리는 구성 가능한 역할 호스트 이름 포맷을 사용합니다. 예:

    $ ls Controller/overcloud-controller-0
  6. Ansible 작업은 태그됩니다. ansible-playbook에 대해 CLI 인수 --list-tags를 사용하는 모든 태그 목록을 확인하는 방법은 다음과 같습니다.

    $ ansible-playbook -i tripleo-ansible-inventory.yaml --list-tags deploy_steps_playbook.yaml

    다음으로 ansible-playbook-command.sh 스크립트에서 --tags, --skip-tags 또는 --start-at-task를 사용하여 태그된 구성을 적용합니다. 예:

    $ ./ansible-playbook-command.sh --tags overcloud
주의

--tags, --skip-tags 또는 --start-at-task와 같은 ansible-playbook CLI 인수를 사용할 때 순서가 잘못된 배포를 실행하거나 적용하지 마십시오. CLI 인수는 이전에 실패한 작업을 다시 실행하거나 초기 배포를 반복하는 편리한 방법입니다. 하지만 일관된 배포를 위해 deploy_steps_playbook.yaml의 모든 작업을 순서대로 실행해야 합니다.

10.7. config-download 비활성화

표준 Heat 기반 구성 방식으로 다시 전환하려면 다음번 openstack overcloud deploy 실행 시 관련 옵션과 환경 파일을 삭제하십시오.

절차

  1. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  2. 오버클라우드 배포 명령을 실행하지만 --config-download 옵션이나 'config-download-environment.yaml` 환경 파일은 포함하지 마십시오.

    $ openstack overcloud deploy --templates \
        [OTHER OPTIONS]

    이 명령을 실행할 때는 사용자의 오버클라우드와 관련된 다른 모든 파일을 포함해야 합니다. 예:

    • -e가 있는 사용자 지정 구성 환경 파일
    • --roles-file이 있는 사용자 지정 역할(roles_data) 파일
    • --networks-file이 있는 구성 가능한 네트워크(network_data) 파일
  3. 오버클라우드 배포 명령은 Heat의 구성을 포함한 표준 stack 작업을 수행합니다.

10.8. 다음 단계

이제 정기적인 오버클라우드 작업을 계속할 수 있습니다.