본문으로 바로가기

Ansible로 오픈스택 연결하기(Dynamic inventory)

category Ansible 2021. 7. 2. 12:10
반응형

앤서블을 사용해 오픈스택 계정에 연결하여 인스턴스와 같은 정보들을 받아오려는게 목적이다.

삽질을 많이해서 간단한 작업임에도 오래 걸렸다.

참조한 문서

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 등등 많은 정보들을 동적으로 불러올수 있다. 

출력확인.

반응형