13.10. 수동으로 생성한 플레이북을 사용하여 config-download 실행

표준 워크플로우 외부에서 고유한 config-download 파일을 생성할 수 있습니다. 예를 들어 --stack-only 옵션을 사용하여 openstack overcloud deploy 명령을 실행하여 노드를 프로비저닝한 다음 Ansible 구성을 수동으로 별도로 적용할 수 있습니다.

사전 요구 사항

  • 성공적인 언더클라우드 설치
  • 배포할 준비가 된 오버클라우드 노드
  • 특정 오버클라우드 사용자 지정과 관련된 Heat 환경 파일

절차

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. stackrc 파일을 소싱합니다.

    $ source ~/stackrc
  3. --stack-only 옵션을 사용하여 배포 명령을 실행합니다. 오버클라우드에 필요한 환경 파일을 포함합니다.

    $ openstack overcloud deploy \
      --templates \
      -e environment-file1.yaml \
      -e environment-file2.yaml \
      ...
      --stack-only
  4. 프로비저닝 프로세스가 완료될 때까지 대기합니다.
  5. 언더클라우드에서 tripleo-admin 사용자의 오버클라우드로 SSH 액세스를 활성화합니다. config-download 프로세스에서는 tripleo-admin 사용자를 사용하여 Ansible 기반 설정을 수행합니다.

    $ openstack overcloud admin authorize
  6. config-download 파일을 생성합니다.

    $ openstack overcloud config download \
      --name overcloud \
      --config-dir ~/config-download
    • --name은 Ansible 파일 내보내기에 사용할 오버클라우드의 이름입니다.
    • --config-dirconfig-download 파일을 저장할 위치입니다.
  7. config-download 파일이 포함된 디렉터리로 변경합니다.

    $ cd ~/config-download
  8. 정적 인벤토리 파일을 생성합니다.

    $ tripleo-ansible-inventory \
      --stack <overcloud> \
      --ansible_ssh_user heat-admin \
      --static-yaml-inventory inventory.yaml
    • <overcloud>를 해당 오버클라우드 이름으로 교체합니다.
  9. config-download 파일과 정적 인벤토리 파일을 사용하여 설정을 수행합니다. 배포용 플레이북을 실행하려면 ansible-playbook 명령을 실행합니다.

    $ ansible-playbook \
      -i inventory.yaml \
      -e gather_facts=true \
      -e @global_vars.yaml \
      --private-key ~/.ssh/id_rsa \
      --become \
      ~/config-download/deploy_steps_playbook.yaml
  10. 설정 프로세스가 완료될 때까지 대기합니다.
  11. 이 설정에서 overcloudrc 파일을 수동으로 생성하려면 다음 명령을 실행합니다.

    $ openstack action execution run \
      --save-result \
      --run-sync \
      tripleo.deployment.overcloudrc \
      '{"container":"overcloud"}' \
      | jq -r '.["result"]["overcloudrc.v3"]' > overcloudrc.v3
  12. 배포 상태를 success로 수동으로 설정합니다.

    $ openstack workflow execution create tripleo.deployment.v1.set_deployment_status_success '{"plan": "<OVERCLOUD>"}'
    • <OVERCLOUD>를 해당 오버클라우드 이름으로 교체합니다.

추가 정보

  • config-download 디렉터리에는 deploy_steps_playbook.yaml이라는 플레이북이 포함되어 있으며 이는 오버클라우드 구성을 실행합니다. 이 플레이북을 보려면 다음 명령을 실행합니다.

    $ less deploy_steps_playbook.yaml

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

  • 또한 config-download 디렉터리에는 사용자 오버클라우드의 roles_data 파일에 정의한 각 역할에 해당하는 하위 디렉터리가 포함되어 있습니다. 예를 들면 다음과 같습니다.

    $ ls Controller/

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

    $ ls Controller/overcloud-controller-0
  • deploy_steps_playbook.yaml의 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 \
      -i inventory.yaml \
      -e gather_facts=true \
      -e @global_vars.yaml \
      --private-key ~/.ssh/id_rsa \
      --become \
      --tags overcloud \
      ~/config-download/deploy_steps_playbook.yaml
    1. 오버클라우드에 대해 config-download 플레이북을 실행하면 각 호스트의 SSH 지문에 대한 메시지가 표시될 수 있습니다. 이러한 메시지가 표시되지 않게 하려면 ansible-playbook 명령에 --ssh-common-args="-o StrictHostKeyChecking=no"를 포함합니다.

      $ ansible-playbook \
        -i inventory.yaml \
        -e gather_facts=true \
        -e @global_vars.yaml \
        --private-key ~/.ssh/id_rsa \
        --ssh-common-args="-o StrictHostKeyChecking=no" \
        --become \
        --tags overcloud \
        ~/config-download/deploy_steps_playbook.yaml