티스토리 뷰
clouds.yaml이란?
OpenStack이 다수 존재하는 경우 sdk를 이용하거나 openstack command를 이용하여 관리하고자 할때 사용하는 template 이라 보면 된다.
- https://specs.openstack.org/openstack/openstack-specs/specs/clouds-yaml-support.html
참고로 openstack으로 public cloud service를 하는 대상들도 사용할 수 있다.
그예로 platform9이 있다.- https://docs.platform9.com/openstack/cli-access/multi-cloud-cli/
사용을 위한 준비
우선 다음과 같은 구조의 파일을 생성해야 한다. (자동으로 생성해주지는 않고 형식을 맞춰 생성한다.)
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" }
참고사이트
'Cloud > Private Cloud' 카테고리의 다른 글
access another Openstack VM using cirros image (0) | 2020.09.23 |
---|---|
openstack cli (0) | 2020.09.23 |
Make a free certification using certbot on kubernetes (0) | 2020.08.12 |
ElasticSearch, Fluentd, Grafana and Prometheus (3) | 2020.08.06 |
kubernetes internal domain (0) | 2020.07.31 |
- Total
- Today
- Yesterday
- kubernetes install
- nginx-ingress
- Terraform
- openstack backup
- metallb
- aquasecurity
- Jenkinsfile
- crashloopbackoff
- Helm Chart
- ansible
- wsl2
- minio
- hashicorp boundary
- OpenStack
- mattermost
- ceph
- boundary ssh
- minikube
- socket
- DevSecOps
- open policy agent
- kubernetes
- jenkins
- vmware openstack
- kata container
- macvlan
- openstacksdk
- K3S
- GateKeeper
- azure policy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |