13.9. ansible-playbook-command.sh 스크립트를 사용하여 config-download 실행

표준 방법 또는 별도의 프로비저닝 및 구성 프로세스를 사용하여 오버클라우드를 배포할 때 director는 /var/lib/mistral/에 작업 디렉터리를 생성합니다. 이 디렉터리에는 구성 프로세스를 다시 실행하는 데 필요한 플레이북과 스크립트가 포함되어 있습니다.

사전 요구 사항

  • 다음 방법 중 하나로 배포된 오버클라우드:

    • 프로비저닝 및 구성 프로세스를 결합하는 표준 방법
    • 프로비저닝 및 구성 프로세스 분리

절차

  1. 언더클라우드 호스트에 stack 사용자로 로그인합니다.
  2. Ansible 플레이북의 디렉터리로 변경합니다.

    $ cd /var/lib/mistral/overcloud/
  3. /var/lib/mistral/.ssh 디렉터리의 소유자를 stack 사용자로 변경합니다.

    $ sudo chown stack. -R /var/lib/mistral/.ssh/
  4. ansible-playbook-command.sh 명령을 실행하여 오버클라우드 구성을 실행합니다.

    $ sudo ./ansible-playbook-command.sh
  5. /var/lib/mistral/.ssh 디렉터리의 소유자를 mistral 사용자로 변경합니다. 이는 mistral_executor 컨테이너 내부에서 실행되는 ansible-playbook 명령이 성공했는지 확인하는 데 필요합니다.

    $ sudo chown 42430:42430 -R /var/lib/mistral/.ssh/
  6. mistral 사용자로 스크립트를 다시 실행합니다.

    Ansible 인수를 이 스크립트에 추가로 전달할 수 있으며, 인수는 변경되지 않은 상태로 ansible-playbook 명령에 전달됩니다. 즉, 확인 모드(--check), 호스트 제한(--limit), 변수 덮어쓰기(-e) 등의 다른 Ansible 기능을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

    $ ./ansible-playbook-command.sh --limit Controller
    주의

    --limit 를 사용하여 스케일에서 배포하는 경우 실행에 포함된 호스트만 노드의 SSH known_hosts 파일에 추가됩니다. 따라서 실시간 마이그레이션과 같은 일부 작업은 known_hosts 파일에 없는 노드에서 작동하지 않을 수 있습니다.

    참고

    모든 노드에서 /etc/hosts 파일이 최신 상태인지 확인하려면 root 사용자로 다음 명령을 실행합니다.

    (undercloud)$ sudo -i
    (undercloud)$ cd /var/lib/mistral/overcloud
    (undercloud)$ ANSIBLE_REMOTE_USER="tripleo-admin" ansible allovercloud \
      -i tripleo-ansible-inventory.yaml \
      -m include_role \
      -a name=tripleo-hosts-entries \
      -e @global_vars.yaml
  7. 설정 프로세스가 완료될 때까지 대기합니다.

추가 정보

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

    $ less deploy_steps_playbook.yaml

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

  • 또한 작업 디렉터리에는 사용자 오버클라우드의 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-command.sh --tags overcloud
    1. 오버클라우드에 대해 config-download 플레이북을 실행하면 각 호스트의 SSH 지문에 대한 메시지가 표시될 수 있습니다. 이러한 메시지를 방지하려면 ansible-playbook-command.sh 스크립트를 실행할 때 --ssh-common-args="-o StrictHostKeyChecking=no"를 포함합니다.

      $ ./ansible-playbook-command.sh --tags overcloud --ssh-common-args="-o StrictHostKeyChecking=no"