Ansible2018.05.16 10:00


It's rain in out of the office. My office building elevator is not working. I walked up the stairs to the 14th floor. It's so hot. How is your day?


In this blog, I would like to post about how to provision OpenStack Instance using Ansible. Before develop Ansible playbook, we need to prepare test environment like below.

  • Github repository : There are OpenStack provisioning Playbook.

  • Ansible Tower : It will makes Job Template using playbook of Github repository and It will plays.

  • OpenStack Director : I will install Shade OpenStack module for Ansible

  • OpenStack Controller Node : The Ansible playbook will call OpenStack API of this node.

  • OpenStack Compute Node : It will create OpenStack Instance in this node.

This Job flow is like below. If your test environment preparing is done, you need to develop playbook and upload it to the your github repository first. And then,  you need to configure github repository information and OpenStack director credential. And you make Job Template for provisioning OpenStack instance using your github playbook.

To develop ansible playbook, we need to design provisioning task process.

Before OpenStack instance create, OpenStack needs OS image, network, keypiar, flavor and security group. We can express these process like below.

Above each task process can make role process.


When upload OS image to glance, we need to download OS image first. And then downloaded image can upload to glance.


Openstack needs to create Public network and Tenant network for providing network ip to instance.

If you use Tenant network, you need to create Router for connecting each public and tenant network. 


Keypair needs when we connect Instance more safely. First, it generate ssh key and register public key file.

OSP-Security Group

Security Group is firewall for instances. If your instance is for web service, you would create "web security group" and add http service port to the created web security group.


Flavor is spec of instance like cpu, memory and hard disk.

Create Instance

After it makes all resources without instances, you can create instance. If creating instance is done, floating ip add to created instance. And you would wait for being available instance status.

Playbook Architecture

Right now, it's time to develop ansible playbook. You would make git directory for developing playbook like below.

When we develop playbook, we need sample playbook code. Below code is example codes for provisiong instance.

# Create a new instance with 4G of RAM on a 75G Ubuntu Trusty volume
- name: launch a compute instance
  hosts: localhost
    - name: launch an instance
        name: vm1
        state: present
        cloud: mordred
        region_name: ams01
        image: Ubuntu Server 14.04
        flavor_ram: 4096
        boot_from_volume: True
        volume_size: 75

Following urls are included example codes that you need for developing playbook. You can develop playbook as refer below url.

Actually this blog's contents is part of my ansible training lesson in China. After came back to Korea, I wanted to summarize about my training. Finally I am so happy cause I summarize this.

'Ansible' 카테고리의 다른 글

My First Ansible Presentation Story  (1) 2018.07.05
AWS EC2 with Ansible Episode  (0) 2018.06.01
OpenStack Instance auto provisioning with Ansible  (0) 2018.05.16
My First Ansible Project Episode II  (0) 2018.05.08
My First Ansible Project Episode I  (0) 2018.05.04
Posted by 나리 짱!!! naleejang
Ansible2018.05.08 18:55

Hello, my blog visitors~!!

In this article, 

I will try to post about my first ansible code. Actually, I drew some architecture for posting an article because I hope that you can understand my ansible code well.

My first ansible project code exist on my github repository like below. 

Github URL:

If you don't know about Cobbler well, you need to study Cobbler and Kickstart before looking this blog. You can study Cobbler following site. (

What is Cobbler?

According to Cobbler, Cobbler is a Linux installation server that allows for rapid setup of network installation environments.

Cobbler with Ansible Architecture

When I developed ansible playbook about cobbler, I didn't know cobbler's process well. so I had found cobbler information on the internet like google. Most blog's posting described only text and codes. so I found cobbler architecture on the internet. but I couldn't understand cobbler architecture and process. I created 3 VMs via KVM and configured test environment like below architecture.

The 3 VM's role are like below.

  • Cobbler Server : This is installation server. It needs dhcp, rsync, tftp, createrepo and apache packages for configuring Cobbler server.

  • Ansible Tower: This is ansible server with web ui. It needs credential for connecting target host via SSH, playbook codes for making Cobbler tasks automatically.

  • Test Server : This is empty bare metal server or VM using Network boot. 

After create 3 VMs, I deployed Cobbler server as refer Cobbler Quickstart Guide. 


and then I deployed Ansible and Ansible Tower as refer Ansible document.


I booted test server using network boot. As soon as start to boot the test server, I could look screen like above blue picture.

Ansible Playbook Architecture

After configure test bed, I started to develop ansible playbook code as refer other people's cobbler playbook. My playbook architecture is like below.

  • add_iso_cobbler.yml : It calls cobbler-addISO's main tasks of roles if this playbook called by ansible tower.

  • remove_iso_cobbler.yml : It calls cobbler-removeISO's main tasks of roles if this playbook called by ansible tower.

  • roles : Roles are ways of automatically loading certain vars_files, tasks, and handlers based on a known file structure. Grouping content by roles also allows easy sharing of roles with other users.

    • cobbler-addISO : It includes tasks and vars for importing ISO image information to cobbler

      • tasks : process for importing ISO image to cobbler.

      • vars : variables about ISO image

    • cobbler-removeISO : It includes tasks and vars for deleting ISO image information from cobbler.

      • tasks : process for deleting ISO image information.

      • vars : variables about ISO image

Ansible Playbook Task Process

My playbook's code of cobbler-addISO task process is like below. If I don't use Ansible and Ansible Tower, I have to execute commands like following tasks everytime maybe. 

Some cobbler playbooks that I found on the ansible galaxy includes from configure cobbler server to import ISO images.

You can look my playbook code in my github repository. If you don't understand after you read this article, I recommend to study about cobbler an kickstart first.

'Ansible' 카테고리의 다른 글

My First Ansible Presentation Story  (1) 2018.07.05
AWS EC2 with Ansible Episode  (0) 2018.06.01
OpenStack Instance auto provisioning with Ansible  (0) 2018.05.16
My First Ansible Project Episode II  (0) 2018.05.08
My First Ansible Project Episode I  (0) 2018.05.04
Posted by 나리 짱!!! naleejang
Ansible2018.05.04 17:08


Today, I try to write an article in English in my tistory blog. 

I think my English skill is not good and my English expression is also not good.

However one of my dreams was to write article in English. So I have decided to practice writing article in English today. 

So Please understand my English expression.

Last month, I started to study Ansible. Because I want to provide high quality service when I deploy OpenStack or CloudForms to customer's DataCenter. Actually, I don't like to work same process like provision instance, configure development environment and set up basic system configuring. 

Almost during 2 weeks, I had studied Ansible alone through online learning system. At that time, I didn't understand about ansible functions, how to develop playbook and playbook's programming rule. anyway, I just studied Ansible continue.

At 3rd week of April, I went to Beijing, China Red Hat office for Ansible training. 

All trainees were man, All trainees were Chinese. and Trainer was a man also. Woman was only me.

At first day, I couldn't understand trainer's words. So second day, I moved my seat near the trainer. And I tried to listen his voice and looked his class materials. I started to understand his words and I started to interest the class. And I studied how to develop playbook and how to use ansible and ansible tower through his class materials.

As soon as came back Korea office, I needed to prepare first Ansible job for a weekend. Next Monday, I deployed Ansible and Ansible Tower to customer's server. After came back home, I developed Ansible playbook till late night. It was about baremetal OS provisioning using cobbler and Ansible. While I worked with Ansible, I have liked Ansible more. I fell into Ansible's attractiveness. Because Ansible can make automate numerous repetitive tasks. This is my github site that have my playbook codes. You can refer the url.

If I have any opportunity, I will try to describe my Ansible codes. 

'Ansible' 카테고리의 다른 글

My First Ansible Presentation Story  (1) 2018.07.05
AWS EC2 with Ansible Episode  (0) 2018.06.01
OpenStack Instance auto provisioning with Ansible  (0) 2018.05.16
My First Ansible Project Episode II  (0) 2018.05.08
My First Ansible Project Episode I  (0) 2018.05.04
Posted by 나리 짱!!! naleejang
Life2018.04.30 01:24
정말 오랜만에 블로그에 글을 올리는 것 같습니다.

그리고, 정말 오랜만에 커뮤니티에서 그동안 어떻게 지내고 있었는지에 대해서도 이야기를 나눌수 있었던 거 같습니다. 요즘 이상하게도 하는일 없이 무척 바쁜 일정 이였지만, 그래도 커뮤니티 세미나에 나가 오랫동안 만나지 못했던 반가운 사람들을 만나니 밝은 에너지를  가득 받고 온 기분이 들어 참으로 좋았습니다.

세미나에 참석 못하신 분들을 위해서 준비해 봤습니다. 가벼운 마음으로 재미있게 보아 주세요~!!

My Life for 1 year

저는 지난해 그러니까 2017년 3월에 한국 레드햇에 입사를 했습니다. 그것도 삽질 전문가로 말입니다. 그리고, 정말 정신없는 삶을 살았던거 같습니다. 레드햇에 입사하기 전 저는 작은 스타트업에서 프리세일즈 업무를 했었습니다. 누군가에게 기술에 대해 그리고 내가 제안하는 시스템에 대해 전문가로서 기술적으로 당당하고 싶었지만, 기술과 세일즈를 동시에 다 잘 한다는건 사실 너무 힘이 들었습니다. 그래서, 늘 그런 부분에 있어서 부족함으로 느끼고 있었던 찰나에 레드햇에 입사를 하게 되었던 것이였습니다.

그래서, 그동안 하지 못했던 수많은 삽질을 1년동안 정말 많이 했던것 같습니다. 거기에다가 외국계 회사 문화를 잘 알지 못했었기에 회사 문화에도 적응이 필요했습니다. 사실 일하는 방식이야 작은 회사에 있든 이곳 레드햇에서 일을 하든 크게 달라지는 건 없었지만, 수많은 각종 시스템들을 사용해야만 했고, 그런것들에 익숙해 지는것조차 상당한 시간이 필요했던 것 같습니다. 

레드햇에 와서 참으로 좋았던건 전에 있었던 회사에서는 새로운 업무를 익히기 위해서 늘 혼자서 고군분투하고, 그래서, 커뮤니티에 의지할 수 밖에 없었는데, 많은 교육 시스템을 활용할 수 있고, 필요에 따라 적절한 교육을 보내주신다는 점이었습니다. 물론 대부분의 교육이 영어로 이루어져 이전보다 더 영어공부를 열심히 해야만 하는 계기도 되었던거 같습니다.

그러다 보니 어느새 1년이라는 시간이 훅하고 지나버렸더라구요~!! 이제 저도 2년차 프로 삽질러가 되었네요.

Meet Technology, Meet People

레드햇에 입사하기 전에 저는 주로 DevStack이라던가 PackStack과 같은 스크립트로 되어 있는 툴을 사용하여 오픈스택을 설치하곤 했었습니다. 그런데, 레드햇에 입사를 해서 오픈스택을 설치하려고 보니 여기는 TripleO라는 프로젝트를 통해 오픈스택을 설치하고 있었습니다. TripleO의 핵심은 Baremetal Provisioning Service라는 IRONIC이라는 프로젝트가 핵심으로 사용되며, 이를 하기 위해서는 DHCP, TFTP, Network 설정 등 다양한 네트워크 기술 및 리눅스 기술을 필요로 했습니다. 이외에 오픈스택과 연동되는 다양한 스토리지 기술들도 필요로 합니다. 역시 오픈스택은 예전이나 지금이나 어렵습니다. 알아야 할 기술들이 많기 때문입니다.

다양한 프로젝트들을 하면서 좋은 사람들도 참 많이 만났습니다. 실력이 좋고, 성격이 좋고, 게다가 외모까지~~~ 여튼 참으로 좋은 엔지니어들을 많이 만났습니다. 그리고, 다양한 고객들도 많이 만났죠~!! 그들은 모두 오픈스택을 쓰고자 하는 목적이 모두 달랐으며, 관심도와 기술 이해도 역시 모두 달랐습니다. 하지만, 모든 사람들이 오픈스택이라는 단어를 쓸때는 연애를 할때 가슴이 콩닥콩닥 뛰는 것 같은 묘한 기분이 들기도 했습니다. 그만큼 제가 오픈스택을 사랑했었나 봅니다. 

OpenStack and Others

프로젝트를 수행하면서 저는 평소에 사용할 기회가 없어서 잘 알지 못했던 기술에 대해서도 하나씩 알아가게 되었습니다. 그 중에서도 가장 기억에 남은 것이 바로 Ceilometer 바로 미터링 서비스였습니다. 전에는 이런 서비스가 있다는 것만 알았지, 해당 서비스가 어떤 방식으로 동작을 하는지 어떤 구조와 프로세스로 이루어졌는지 이해를 하기가 어려웠습니다. 그런데, 프로젝트를 하면서 해당 서비스에 대해서 알게 되었습니다.

OpenStack Ceilometer의 프로세스를 보면 아래와 같습니다. 

1. 오픈스택에는 인스턴스와 같은 다양한 리소스들이 존재합니다.

2. 이런 리소스 정보들은 Collector에 의해 Metric 정보와 함께 모두 수집이 되어 MongoDB와 같은 데이터베이스에 저장됩니다.

3. 이때, Evaluator는 관리자가 사전에 정의해 놓은 평가 룰에 의해서, 수집된 정보와 평가 룰을 비교합니다.

4. 비교된 정보가 평가 룰에 해당하면 Notifier에 의해 로그와 Web-hook URL에 의해 사용자에게 알람을 보내게 됩니다.

OpenStack Ceilometer 프로세스의 각 요소들은 아래와 같은 서비스에서 프로젝트화 되어 관리되어 집니다.

- Gnocchi - 자원의 사용률을 수집하는 서비스

- Ceilometer - 자원 정보 및 사용율을 수집하는 서비스

- Aodh - 자원 사용율과 평가룰을 비교하고 알람을 발생시키는 서비스


그럼, Ceilometer에 의해 수집되어진 정보들을 어떤 명령어로 확인하면 될까요? 바로 아래와 같이 openstack metric resource list 라는 명령어로 확인할 수 있습니다. 아래 예제에서는 인스턴스만 검색하여 확인한 예입니다.

이렇게 검색된 인스턴스 정보를 자세히 들여다보면 인스턴스를 이루고 있는 자원 정보들을 모두 확인할 수 있습니다. CPU, CPU 사용률,  디스크 사용률, 메모리 사용률 및 CPU 할당량 등을 말입니다. 

여기서 그럼 CPU에 대해 정보와 메모리에 대한 정보를 아래와 같이 확인해 보겠습니다. CPU는 1 vcore가 할당되어 있는 것을 확인할 수 있고, 메모리는 512 GB가 할당되어 있는것을 확인할 수 있습니다.

위에서 확인했던 인스턴스 자원 정보는 openstack server 목록에서 확인할 수 있습니다.

그럼 앞에서 확인한 인스턴스에 알람을 설정해 보겠습니다. 여기서부터는 aodh에 해당하는 것입니다.

알람을 설정하고 나서 openstack alarm-history show 명령어를 이용하여 앞에서 설정한 알람을 확인해 보면 아래와 같이 알람 정보에 대해 확인할 수 있습니다.

또한 notifier.log에서 알람이 발생된것을 로그로 모두 확인할 수 있습니다.

또한 저는 하이브리드 클라우드로 갈 수 있도록 도와주는 CloudForms라는 레드햇 제품을 함께 기술지원을 하였습니다.

CloudForms의 오픈소스 버전은 ManageIQ로 CloudForms를 미리한번 만나 보고 싶다면, ManageIQ를 이용해 직접 설치하여 사용할 수 있습니다. 물론 저와 함께 저의 도움이 필요하다면 CloudForms를 사용하셔도 좋습니다.

CloudForms는 다양한 퍼블릭 클라우드를 관리할 수 있으며, 이외에 기존에 사용하던 하이퍼바이저인 Vmware, MS VCenter, RHV와 같은 인프라를 관리할 수 있으며, CloudForms에서 직접 프로비저닝 및 인스턴스를 관리할 수 있습니다. 또한 Ansible과 연동하여 오토메이션을 구현할 수 있으며, 쇼핑몰과 같은 Self-Service 포탈을 만들어 주는 기능 또한 가지고 있습니다.

Wrap up

커뮤니티란? 혼자 살아갈 수 없기에 다 같이 모여서 기술에 대해 함께 공부하고 이런 문화를 공유하는 곳이 바로 커뮤니티입니다. 레드햇은 오픈스택이라는 기술에 상당히 많은 컨트리뷰션과 기여를 하고 있는 회사입니다. 그리고, 커뮤니티는 이런 기술을 함께 사용하고, 또 컨트리뷰션하고 기술을 함께 발전시켜 나가는 곳입니다. 또한 그안에서 커뮤니티만의 문화를 만들어 나가는 곳이기도 하죠~!!

레드햇에서 근무하면서 저는 벤더와 커뮤니티를 편가르기 하는 경우를 종종 보았습니다. 기술은 편을 가르는게 아닙니다. 오픈스택이라는 오픈소스는 시간이 있고, 실력이 있으면, 얼마든지 가져가서 직접 사용하고 문제가 있으면 수정하고 해당 소스를 다시 커뮤니티로 기여하는 것이지, 레드햇과 같은 벤더와 편을 가르는것은 아니라고 생각을 합니다. 다만, 빠른 시간안에 클라우드 환경을 도입하고 싶고, 내가 아닌 다른 사람의 도움이 필요할 경우에 사용하는게 바로 레드햇 오픈스택이라고 생각 합니다. 

물론 오픈소스를 직접 가져다가 사용하고 기여를 할지, 레드햇과 같은 벤더사의 오픈스택을 사용할지는 기술을 도입하려고 하는 회사의 몫이겠지요~!!

아무튼 저는 레드햇이라는 회사에서 꿈에 그리던 오픈스택과 이와 관련된 다양한 기술들을 매일 매일 익히고, 이런 기술들을 고객사에 제공해 줄 수 있어서 매일매일 신이 나고 즐겁습니다.

'Life' 카테고리의 다른 글

Looking back on 2018~!!  (0) 2018.12.26
Red Hat! and After 1 year  (0) 2018.04.30
[후기] OpenStack Boston Summit 2017  (3) 2017.05.14
[Life] New Start for Dream! and Work! with RedHat  (1) 2017.03.08
OpenStack Austin Summit 2016을 다녀와서  (2) 2016.05.05
Start-up에서 일한다는 건  (0) 2016.03.04
Posted by 나리 짱!!! naleejang