앤서블을 사용해 오픈스택 계정에 연결하여 인스턴스와 같은 정보들을 받아오려는게 목적이다.
삽질을 많이해서 간단한 작업임에도 오래 걸렸다.
참조한 문서
https://docs.ansible.com/ansible/latest/collections/openstack/cloud/openstack_inventory.html
openstack.cloud.openstack – OpenStack inventory source — Ansible Documentation
© Copyright Ansible project contributors. Last updated on Jun 14, 2021.
docs.ansible.com
https://docs.openstack.org/openstacksdk/latest/user/
OpenStack Docs: Using the OpenStack SDK
Using the OpenStack SDK This section of documentation pertains to those who wish to use this SDK in their own application. If you’re looking for documentation on how to contribute to or extend the SDK, refer to the contributor section. For a listing of t
docs.openstack.org
실습에 필요한 도구
Centos7
오픈스택
ansible
openstacksdk
1. openstacksdk 설치
pip install openstacksdk
기존에는 os-client-config , shade 라이브러리를 이용해서 클라이언트 구성을 수집하였지만. openstacksdk로 대체 되었다.
2. clouds.yaml 파일 작성 (클라이언트 정보)
openstacksdk는 clouds.yaml 파일을 참조하는데 파일 위치의 우선순위는 다음과 같다.
- Current Directory
- $HOME/.config/openstack
- /etc/openstack
나는 2번째 우선순위인 $HOME/.config/openstack 디렉토리를 만들어주고 그 안에 clouds.yaml 파일을 생성했다.
clouds:
test_cloud:
region_name: RegionOne
auth:
auth_url: http://xxx.xxx.xxx.xxx:5000/v2.0/
username: demo
password: secrete
project_name: demo
rackspace:
cloud: rackspace
auth:
username: joe
password: joes-password
project_name: 123123
region_name: IAD
example:
image_name: fedora-20.x86_64
flavor_name: m1.small
network_name: private
<오픈스택 공식문서에 있는 예시>
clouds:
Devstack:
region_name: [리전 정보]
auth:
username: [사용자]
password: [패스워드]
project_name: [프로젝트 이름]
auth_url: [접속 url]
project_domain_name: [프로젝트 도메인 이름]
user_domain_name: [유저 도메인 이름]
~
<내가 작성한 파일>
3. 인벤토리 yaml 작성
앤서블 document를 보면 Openstack 플러그인을 사용하려면 이렇게 사용하라고 예시가 나와있다.
# file must be named openstack.yaml or openstack.yml
# Make the plugin behave like the default behavior of the old script
plugin: openstack
expand_hostvars: yes
fail_on_errors: yes
all_projects: yes
Authors
똑같이 openstack.yaml 파일에 작성해주고
ansible.cfg 파일의 내용을
[defaults]
host_key_checking= False
inventory= ./openstack.yaml
[inventory]
enable_plugins = openstack ,yaml
이렇게 수정해 주었다. 인벤토리 파일을 openstack.yaml 파일로 지정해놓고 openstack 플러그인을 허용해 주었다.
이렇게 하면 openstacksdk 모듈이 clouds.yaml 파일의 인증정보를 확인한 후 접근해서 내 인스턴스. vpc, nova 등등 많은 정보들을 동적으로 불러올수 있다.

출력확인.