3장. Deployment
다음 절차에서는 Ansible 을 사용하여 인스턴스 HA를 활성화하는 것입니다. Ansible에 대한 자세한 내용은 Ansible 설명서를 참조하십시오.
3.1. 필수 Ansible 구성 파일 생성
Ansible을 통해 인스턴스 HA를 활성화하려면 인벤토리 파일 및 SSH 인수 파일이 필요합니다. 두 파일 모두 오버클라우드에서 인스턴스 HA를 구현하는 데 필요한 Ansible 변수를 전달합니다.
인벤토리 파일
인벤토리 파일은 ansible 플레이북의 다른 대상 호스트를 나열합니다. 첫 번째 섹션은 각 노드(이름별)와 함께 각 노드, 사용자 이름, Ansible이 각 플레이북 명령에 사용해야 하는 개인 키 파일을 나열합니다. 예를 들면 다음과 같습니다.
overcloud-controller-0 ansible_host=overcloud-controller-0 ansible_user=heat-admin ansible_private_key_file=/home/stack/.ssh/id_rsa
두 번째 섹션에는 다음 제목(또는 노드 유형) 아래에 각 노드가 나열됩니다. compute
,undercloud
,overcloud
또는 controller
.
/home/stack/hosts
라는 인벤토리 파일을 생성합니다. 다음 샘플은 이에 필요한 구문을 보여줍니다.
undercloud ansible_host=undercloud ansible_user=stack ansible_private_key_file=/home/stack/.ssh/id_rsa overcloud-compute-1 ansible_host=overcloud-compute-1 ansible_user=heat-admin ansible_private_key_file=/home/stack/.ssh/id_rsa overcloud-compute-0 ansible_host=overcloud-compute-0 ansible_user=heat-admin ansible_private_key_file=/home/stack/.ssh/id_rsa overcloud-controller-2 ansible_host=overcloud-controller-2 ansible_user=heat-admin ansible_private_key_file=/home/stack/.ssh/id_rsa overcloud-controller-1 ansible_host=overcloud-controller-1 ansible_user=heat-admin ansible_private_key_file=/home/stack/.ssh/id_rsa overcloud-controller-0 ansible_host=overcloud-controller-0 ansible_user=heat-admin ansible_private_key_file=/home/stack/.ssh/id_rsa [compute] overcloud-compute-1 overcloud-compute-0 [undercloud] undercloud [overcloud] overcloud-compute-1 overcloud-compute-0 overcloud-controller-2 overcloud-controller-1 overcloud-controller-0 [controller] overcloud-controller-2 overcloud-controller-1 overcloud-controller-0
언더클라우드와 오버클라우드 모두에서 모든 호스트에 대한 전체 인벤토리를 생성하려면 다음 명령을 실행합니다.
stack@director $ tripleo-ansible-inventory --list
이 명령은 JSON 형식으로 세부적이고 업데이트된 인벤토리를 생성합니다. 자세한 내용은 Ansible Automation 실행을 참조하십시오.
SSH 인수 파일
SSH 인수 파일은 Ansible에 각 대상 호스트에서 플레이북을 실행하는 데 필요한 필수 자격 증명 및 인증 설정을 전달합니다.
다음 명령을 사용하여 SSH 인수 파일을 만듭니다( /home/stack
).
stack@director $ cat /home/stack/.ssh/id_rsa.pub >> /home/stack/.ssh/authorized_keys stack@director $ echo -e "Host undercloud\n Hostname 127.0.0.1\n IdentityFile /home/stack/.ssh/id_rsa\n User stack\n StrictHostKeyChecking no\n UserKnownHostsFile=/dev/null\n" > ssh.config.ansible stack@director $ source /home/stack/stackrc stack@director $ openstack server list -c Name -c Networks | awk '/ctlplane/ {print $2, $4}' | sed s/ctlplane=//g | while read node; do node_name=$(echo $node | cut -f 1 -d " "); node_ip=$(echo $node | cut -f 2 -d " "); echo -e "Host $node_name\n Hostname $node_ip\n IdentityFile /home/stack/.ssh/id_rsa\n User heat-admin\n StrictHostKeyChecking no\n UserKnownHostsFile=/dev/null\n"; done >> ssh.config.ansible
이러한 명령을 수행하면 /home/stack/ssh.config.ansible
이라는 SSH 인수 파일이 생성되고 각 오버클라우드 노드에 대한 호스트별 연결 옵션이 포함됩니다. 예를 들면 다음과 같습니다.
Host overcloud-controller-0 Hostname 192.168.24.11 IdentityFile /home/stack/.ssh/id_rsa User heat-admin StrictHostKeyChecking no UserKnownHostsFile=/dev/null