앤서블을 사용해 오픈스택 계정에 연결하여 인스턴스와 같은 정보들을 받아오려는게 목적이다.
삽질을 많이해서 간단한 작업임에도 오래 걸렸다.
참조한 문서
https://docs.ansible.com/ansible/latest/collections/openstack/cloud/openstack_inventory.html
https://docs.openstack.org/openstacksdk/latest/user/
실습에 필요한 도구
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 등등 많은 정보들을 동적으로 불러올수 있다.
출력확인.
'Ansible' 카테고리의 다른 글
Ansible 사용해서 Ec2 플레이북 배포 (0) | 2021.07.04 |
---|---|
AWS 앤서블로 관리하기 -1 (Dynamic inventory 생성) (0) | 2021.06.30 |
Ansible 정적 인벤터리 (0) | 2021.06.21 |
Playbook 모듈 작성 연습 (0) | 2021.06.21 |
Ansible Playbook 활용. (0) | 2021.06.21 |