티스토리 뷰

clouds.yaml이란?
OpenStack이 다수 존재하는 경우 sdk를 이용하거나 openstack command를 이용하여 관리하고자 할때 사용하는 template 이라 보면 된다.

사용을 위한 준비

우선 다음과 같은 구조의 파일을 생성해야 한다. (자동으로 생성해주지는 않고 형식을 맞춰 생성한다.)

clouds:
  site-production:
    auth:
      auth_url: http://keystone.openstack.svc.cluster.local/v3
      project_name: default
      username: admin
      password: password
      user_domain_name: default
      project_domain_name: default
    region_name: RegionOne
  • auth_url의 경우 통신이 이루어져야 하기 때문에 domain lookup이 안되는 경우라면 /etc/hosts 에 라도 추가해 놓는다.
    아래 도메인이 모두 lookup 과정을 거칠때 사용되므로 아래와 같이 sdk를 사용할 서버에 설정해준다.

    192.168.1.100 keystone.openstack.svc.cluster.local
    192.168.1.100 glance.openstack.svc.cluster.local
    192.168.1.100 nova.openstack.svc.cluster.local
    192.168.1.100 neutron.openstack.svc.cluster.local
    192.168.1.100 cinder.openstack.svc.cluster.local
  • 기본적으로 keystone-api domain은 5000 port(혹 80 port)로 동작하기에 위와 같은 https가 아닌 http로 url을 구성한다.

  • password의 경우 위와 같이 손쉽게 노출되기에 보관에 유념해서 설정파일을 관리한다.

또한, clouds.yaml 파일의 위치는 중 하나에 존재해야 한다.

  • 현재 디렉토리
  • ~/.config/openstack
  • /etc/openstack

openstacksdk 및 client를 설치하여 openstack command를 사용할수 있도록 한다.

pip3 install openstacksdk
pip3 install python-openstackclient

참고로, clouds.yaml 은 multi cloud를 사용할수 있도록 해준다.
하여 다음과 같이 다수의 openstack cloud를 설정해서 사용할수 있다.

clouds:
  site-production:
    auth:
  site-staging:
    auth:
    ...

openstack command를 사용

이제 앞서 생성한 clouds.yaml을 이용하여 openstack command를 호출해 보자.

--os-cloud 옵션을 사용하여 clouds.yaml의 정보를 선택할수 있도록 하고 선택지는 clouds: 밑에 나열된 항목중 하나를 사용하면 된다.

openstack server list --os-cloud site-production

trouble shooting

아래와 같이 clouds.yaml을 이용하여 openstack server list를 출력하고자 했음에도 아래와 같이 인증상에 이슈가 있는것으로 에러를 발생시켰다.

[centos@openstackVM ~]$ openstack server list  --os-cloud site-staging
The request you have made requires authentication. (HTTP 401) (Request-ID: req-5c0125a5-ddfc-4806-959b-d1d50c754e18)

keystone-api를 확인해보니 다음과 같이 project가 맞지 않아 발생된 이슈였고

2020-09-10 05:13:53.200887 2020-09-10 05:13:53.200 8 WARNING keystone.auth.core [req-58b381b3-f2c0-4159-897f-52b0bff7fa42 - - - - -] Could not find project: default.: ProjectNotFound: Could not find project: default.

clouds.yaml내에 project_name를 변경한후 정상적으로 데이터를 가져옴을 확인하였다.

Terraform OpenStack Provider 사용

아래와 같이 provider를 정의하여 clouds.yaml파일의 내용을 기반으로 openstack provider 접근 및 resource 생성을 수행할 수 있다.

provider "openstack" { cloud = "site-production" }

참고사이트

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함