Ansible2018.07.05 23:52

Hello, everyone~!!


How was your day? In my case, I went to Gwangju for OpenStack with NFV Project last Sunday. At that time, it was rain a lot. So I used train. In that day, I contracted small apartment to stay Gwangju for 5 months. I will stay here for 5 months from now.


And I have an episode one more. Last Thursday, OpenStack Korea User Group held "OpenInfra Days Korea 2018" event with OpenStack Foundation, CNCF Foundation and other technical communities during 2 days.

So many people attended to the event. And, many companies attended and supported also. So I was delighted to meet people who is I know. 


The First day, I presented about OpenStack Automation with Ansible. Many people attended to my presentation. So I would like to post about my presentation in this time. 


Actually, I made that the original presentation material's language is Korean. But I want to post in English. So I translated language from Korean to English like below slide.  

  



The agenda that I prepared is like following.


- Work Life of IT Engineer

- Cloud! OpenStack!

- Not Easy! Iterative Work!

- Automation for Iterative Work

- What is Ansible?

- OpenStack Automation with Ansible



Before I speak about Automation with Ansible, I wanted to look about IT engineer's work life. Today's IT engineers have to know about lots of technologies like infrastructures, OS, program languages and various development tools. So They need to work hard. and they try to solve the faced problems again and again.


Nowadays, many IT engineers have to know about cloud computing technical. 

Cloud computing technical started by Amazon Web Services before 10 years ago. And OpenStack started by NASA and Rackspace at June, 2010 as IaaS. A few years ago, open source cloud compute projects were like apache cloudstack, OpenNebula, Eucalyptus and OpenStack. But Now famous public cloud services are Google cloud, Microsoft Azure and Amazon Web Service. And the OpenStack became famous private cloud service.


Many companies are introduced OpenStack for their private cloud. And operators are operating OpenStack.  But they have to work iterative tasks every time. 


Let us see case about IT process! 


1. General department users requested to create instance

2. Operation team reviewed the request.

3. Operator create project and user account.

4. Operator create network

5. Operator create flavor

6. Operator create security group

7. Operator create ssh key-pair

8. Operator create instance

9. Operator associate floating ip to instance


They have to work above iterative task every time or frequently.  How do we exit from iterative work? I think the answer is to make automation. Popular automation methods are OpenStack Heat and Ansible.


Ansible is IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks.

 

so How do I make OpenStack automation using Ansible?

First, we need to prepare OpenStack environment like git repository, ansible, ansible tower, openstack director, controller and compute nodes. And then we will design roughly process for automation. After finish to design process, we need to design playbook roles architecture and detailed role process like below.


- Register Glance Image

- Creating network

- Creating SSH key

- Create Security Group

- Create Flavor

- Create Instance


After finish role process design, we have to develop playbook refer to ansible document. 

And we push ansible playbook of your local directory to git repository. And You create a project using git authentication in your andible tower web UI. You create job template from projects. After create job template, you click rocket icon button for executing playbook.


Finally, I want to show the some photos of OpenInfra Days Korea 2018 event. I was happy because I could attend to the event and I could enjoy to the event. I will remember the days for a long time.



'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.06.01 00:15

Hello.


How was your days?

In my case, I developed Ansible Playbook and test playbook execution nowadays. 10 years ago, I was a developer. I could use Java, C, Basic, Python, Javascript, Shellscript and etc. And I am a system engineer now.


When I code Ansible Playbook, I am sometimes confused playbook grammar. I think my logic or code can run well, but the code is not working. If I have problem about playbook, I usually used ask it in Facebook Ansible Korea user group or timeline. So some people give answers to my asking.

I like technical communities. I like this culture of communities. I like these people who can share there knowledge and experiences. I also try to share my experience.



Anyway, today's preface was long. In this posting, I would like to write a episode about my AWS ec2 instance. 


One month ago, I was testing playbook that create AWS EC2 instance. Because this was my homework of Ansible training in China. Of course, it was provide training environment. But at the time, my environment was deleted already. So I decided to use my AWS account.


  • I coded playbook that create AWS ec2 instance and upload it to my github's repository.

  • And then I registered my github's repository to Ansible Tower. 

  • And I made job template using the playbook of github's repository.

  • Of course, I configured environment for accessing AWS in my workstation.

  • I clicked rocket shape's button. And Ansible Tower started to create ec2 instance in AWS.


Below picture is a flow about above describing. 


After click rocket shape's button, I started to monitor AWS dashboard for checking instance.

Suddenly it started to look lots of unknown instances in my AWS dashboard. I was embarrassed as soon as discover unknown instances. So I deleted the unknown instances in my AWS dashboard. 


After a few minutes, I could not create instance anymore. In that night, I got a mail that have title like "Your AWS account is compromised" from AWS. The next day, I opened a case that have title like "Who did provision instance in my account?" in AWS support center page. Then, I knew that my AWS account hacked from someone. The hacker created a lot of instances in the each region. The 1 day's charge was almost $3K. 


AWS was answered "An agent from our billing team will reach out to you when your case has been reviewed. " to me. And I have waited their review. But after a few days, they billed by registered credit card. I felt shocked and angry about this case because they billed without any notice. So I inquired it to AWS support center in many times. But I could not get any answers from AWS.


I talked this case to my co-workers. My co-worker gave a guide to me about chargeback application.

As soon as got guide, I called at credit card call center. And I talked my case to agent of call center.

I have worried about it. Because the credit card was company card. And I thought that was unreasonable to charge for unknown instances.


After 2 weeks, I got a message from AWS. The message was that they will refund my bill about unauthorized resources. At last, I could throw my worry. 


I am still afraid to use AWS account. And I learned a lot of things by this case. 

Finally, I would like to talk to my co-workers and AWS team thanks. 

'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.16 10:00

Hello,


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?


Anyway, 

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.


OSP-Image

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


OSP-Network

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. 


OSP-Keypair

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.


OSP-Flavor

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
  tasks:
    - name: launch an instance
      os_server:
        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: https://github.com/naleejang/Ansible_Project


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. (http://cobbler.github.io/)




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. 

(http://cobbler.github.io/manuals/quickstart/)

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

(http://docs.ansible.com/ansible-tower/latest/html/quickinstall/index.html) 

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

Hello, 


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. https://github.com/naleeJang/Ansible_Project 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

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


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


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


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

Posted by 나리 짱!!! naleejang
OpenStack2018.03.13 22:33

오픈스택 Heat 템플릿으로 테넌트 네트워크, 라우터, 그리고 인스턴스 만들기


1. 아래 yaml 파일 다운로드 받기


params.yaml

openstack_heat_create_network_server.yaml


2. 오픈스택 데쉬보드 접속 후 오케스트레이션 메뉴로 가기


3. 스택 시작 버튼 클릭해 다운로드 받은 템플릿 파일 선택하기


4. 다음 클릭해 스택이름 입력 후 admin 계정 비밀번호 입력하기. 그리고, 파라메터들이 제대로 들어왔는지 확인하기


5. 파라메터 확인 후 하단의 실행 버튼 클릭하기


6. 스택 목록에 생성된 스택 확인하기


7. 생성된 스택 클릭을 하면 아래와 같은 토폴로지를 확인할 수 있음.


8. 개요 탭을 클릭하면 스택의 상세 정보를 확인할 수 있음.


9. 리소스 탭에서는 생성된 자원 정보를 확인할 수 있음.


10. 이벤트 탭에서는 어떤 순서로 작업이 이루어졌는지 확인할 수 있음.


11. 템플릿 탭에서는 사용된 템플릿을 확인할 수 있음.


12. 네트워크 토폴로지에서 생성된 네트워크를 확인할 수 있음.


13. 인스턴스 목록에서 생성된 인스턴스를 확인할 수 있음.


14. 인스턴스 상세정보의 콘솔 탭에서 인스턴스에 접속할 수 있음.



Posted by 나리 짱!!! naleejang
분류없음2017.11.21 17:06

클라우드폼즈 구성시 요구사항 분석을 위한 질문들

 

1. 클라우드폼즈 H/W 용량산정을 위한 질문입니다. 구축하고자 하는 오픈스택의 하드웨어 사양과 주로 사용하는 인스턴스 사양은 어떻게 됩니까?

 

 

2. 네트워크 설계를 위한 질문입니다. 클라우드폼즈에 연동하고자 하는 클라우드 종류는 어떤 것들이 있습니까?

 

3. 계정 정책 및 설계를 위한 질문입니다. 클라우드폼즈는 주로 어떤 사용자들이 사용할 예정입니까?

 

4. 클라우드 제품을 운영하기 우한 운영방법을 가지고 계십니까? 가지고 있다면, 간략하게 설명 부탁드립니다.

 

5. 오픈스택을 가지고 서비스를 시작했습니다. 오픈스택 인스턴스는 누가 생성을 합니까? 사용자의 신청을 받아 운영자가 생성을 합니까? 아니면 부서별로 테넌트/사용자 ID 및 사용 가능한 자원 정보를 할당한 뒤 각 부서에서 인스턴스를 생성하도록 권한을 부여할 계획입니까?

 

6. 유명한 퍼블릭 클라우드 서비스는 Amazon AWS, Google Cloud, Microsoft Azure가 있으며, 국내에는 KT UCloud Biz, SK TCloud Biz, Naver Cloud Platform이 있습니다. 특별히 빌링에 대해 벤치마킹을 하고 싶은 클라우드 서비스가 있습니까? 현재 온라인 사이트가 방문이 가능한 곳은 Google Cloud, Microsoft Azure, Naver Cloud Platform입니다.

 

7. 빌링을 위한 태깅을 하기 위한 질문입니다. 인스턴스는 생성시에 부서별, 사용 목적별로 인스턴스의 그룹을 지정하고 이에 맞는 보안 룰을 설정하여 사용할 수 있습니다. 오픈스택을 사용할 부서는 이미 정의가 되어 있습니까? 아니면 그때 그때 신청을 받아 운영을 할 계획입니까?

 

8. 클라우드 서비스는 주로 시간당 서비스 또는 월별 정액 과금에 대한 정책을 가지고 서비스를 합니다. 클라우드 폼즈의 Chargeback 기능을 이용하려면 이와 같은 정책이 먼저 수립되어야 합니다. 어떤 과금 정책을 가져가고 싶습니까? 시간당 서비스를 포함시키면 다양한 서비스에 대한 과금을 사용할 수 있는 대신 과금 정책이 복잡해지는 단점이 있으며, 월별 정액만 사용할 경에는 과금 정책이 단순해지는 장점이 있습니다.

Posted by 나리 짱!!! naleejang
OpenStack2017.09.29 10:03

In this time, I need to update OpenStack packages. so I summarize update process.

I feel my mind is also clear.


I think that I need to summarize anything


OSP10_Packages_Update_Process_En.txt


Posted by 나리 짱!!! naleejang
OpenStack2017.09.29 09:47

정말 오랜동안 글을 쓰지 않았다. 

레드햇에 입사하고 시간이 없었을 뿐더러, 게을러져서 글을 써야겠다는 생각은 아예 하지도 않은 듯 하다.


오랜만에 시간이 나서 그동안 있었던 일도 정리하고, 새로운 마음으로 글도 올려보고자 한다. 


오픈스택이 이제 Pike 버전이 나온 이 시점에서 Newton 버전에 대한 오픈스택 설치 메뉴얼을 올리는게 맞는건가 하는 생각이 들기는 하지만, 여전히 아직도 현장에서는 Newton 버전을 많이 사용하고 있기 때문에 도움이 될꺼라는 생각을 했다.


물론, 해당 메뉴얼을 가지고 완벽하게 에러없이 오픈스택을 설치할 수 있는건 아니다.

10일 삽질할꺼 5일만 삽질해도 된다는거... 삽질을 좀 줄여준다는 의미에서 매우 의의가 있다고 생각한다.


Red Hat OpenStack with TripleO 10 (newton) Installation Manual-K


Posted by 나리 짱!!! naleejang
My Dream2017.05.15 23:44

안녕하세요~!!


요즘들어 저에게 참 좋은 일이 많이 일어나는 것 같습니다. 그건, 아마도 그동안 힘든 시간을 잘 견뎌 왔기 때문이라 생각해요. 하지만, 늘 좋은 일만 있는건 아닙니다! 좋은일이 생기면 다시 힘든 시간이 찾아오는 법이거든요!


오늘 다시 이렇게 글을 쓰는 이유는 지난 일년간 작업 했던 "오픈스택을 다루는 기술" 서적의 최신 개정판이 오늘 출간 되었기 때문입니다. 3년전 2014년 10월에 "오픈스택을 다루는 기술" 서적을 처음으로 출간을 했습니다.  그 당시에 썼던 오픈스택 버전은 "Icehouse"였습니다. 그 이후에 오픈스택은 수많은 프로젝트가 추가되면서 6개월에 한번씩 계속해서 새로운 버전이 릴리즈 되고 있습니다. 최신 기술을 다루는 오픈스택 관련 서적들은 점점 줄어들고, 새로 출간되는 서적 역시 버전은 과거가 되어 버리고 맙니다. 이번 책 역시 마찬가지입니다. 책을 작업하고 나면 새로운 버전이 릴리즈되어서 역시나 과거가 되어 버렸습니다.


오픈스택 한국 커뮤니티를 그동안 운영하면서, 참 많은 곳에서 세미나도 했었고, 강의도 했었습니다. 그러면서, 아직도 많은 분들이 예전에 비해 설치 매뉴얼이 잘 되어 있음에도 설치 시 많은 어려움을 겪고 있으며, 어떻게 문제를 해결해야 할지 잘 모르는 분들이 많았습니다. 또한 어느 문서를 참조하면 될지 조차 오픈스택을 처음 접하는 사람들에게는 어렵기만 합니다. 


그래서, 생각했습니다. 다음 개정판때에는 문서를 참조하는 방법, 그리고, 설치 시 발생하는 다양한 문제 해결방법과 커뮤니티로부터 받은 도움을 다시 돌려줄수 있는 컨트리뷰션 방법에 대해 다루면 좋겠다는 생각을 했습니다. 거기에 새롭게 추가된 오픈스택 서비스들을 설명하였고, 한국 커뮤니티에서 진행하고 있는 도움이 될 만한 다양한 정보들도 함께 추가하였습니다. 


많은 분들이 이 책을 통해 오픈스택이라는 기술을 조금이나마 이해하고, 오픈스택이라는 기술과 조금 더 친해 질 수 있는 계기가 되었으면 좋겠습니다.


Yes24 구하러 가기 ---> http://www.yes24.com/

교보문고 예약하러 가기 ---> http://www.kyobobook.co.kr/

알라딘 예약하러 가기 ---> http://www.aladin.co.kr

G마켓 예약하러 가기 ---> http://item2.gmarket.co.kr 

 




Posted by 나리 짱!!! naleejang
Life2017.05.14 18:49

지난 2월에 안재석 박사님이 한국 커뮤니티의 운영방법과 어떻게 오픈스택 데이라는 행사를 준비하는지에 대해 함께 발표를 하자는 제안을 하게 되었다. 물론 그땐 그 발표가 될 꺼라 생각하지 않았다. 그리고 나는 전에 다나던 ASD Korea를 그만두고 레드햇으로 회사를 이직하게 되었다. 그리고 나서 이번 보스턴 써밋에서 발표가 결정되었다는 소식을 들었다. 난 당연히 레드햇에 입사한지 얼마되지 않았고 당연히 보내주지 않을꺼라 생각했다. 


그러나 그래도 매니저에게 말이나 한번 해보자는 생각으로 이야기를 했다. 레드햇은 나를 이끌어주고 업무를 관리해주는 매니저가 있다. 나의 매니저는 그의 매니저에게 그리고 그 위의 매니저에게 나를 보내줄 수 있는지를 한참동안 협의를 한 후 날 보내주기로 결정했다. 난 그 과정에서 내 매니저가 날 써밋에서 발표할 수 있도록 노력했다는 그 사실이 나를 감동하게 만들었다. 너무 고마웠고 너무 감사했다.

시간이 흘렀고 나는 보스턴을 가기 위해 지난 5월 7일날 비행기에 몸을 실었다. 이번에도 역시 디트로이트에서 비행기를 환승했고 이번에는 안재석 박사님 외 여러 커뮤니티 회원들을 만나서 함께 보스턴을 항했다. 그래서 지난 오스틴 써밋을 참여할때보다 외롭지 않았다.

보스턴 공항에서 만난 레드햇 광고~!! 레드햇으로 오기 전에 레드햇은 그냥 오픈스택을 하는 회사 중 하나였는데 레드햇으로 오고 나서 만난 레드햇은 정말 친근하고 이렇게 좋은 회사에서 오픈스택과 관련된 일을 할 수 있게 되었다는 생각으로 가슴이 벅차 올랐다.

다음날 키노트 행사장~!!  

나는 키노트 행사장으로 들어서는 순간 이전에 참석했던 써밋에 비해 행사 규모가 많이 줄었다는 생각을 했다. 지난 오스틴 써밋 때만 해도 밴드의 공연과 함께 얼마나 많은 사람들이 참석을 했는지 코드 개발과 컨트리뷰터 현황등을 키노트때 소개해 주었는데 이번에는 그런 설명도 없었을 뿐더러 지난해에는 키노트나 주요 메인 세션에서 발표 내용을 써머리 해주는 그림을 아주 커다란 화이트 보드지에 그리고 그걸 전시 했었는데 이번에는 그런것들 역시 찾아볼 수 없었다. 그래서 조금은 아쉬웠지만 이제 클라우드로 가는 길에 거품이 빠지고 안정적으로 클라우드를 운영하고 더 많은 산업으로 클라우드가 확산되고 있다는 것을 느꼈다. 뿐만 아니라 오픈스택이라는 기술을 중심으로 이와 연동되는 다양한 오픈소스 기술들이 공생을 하고 그들이 어떻게 오픈스택과 콜라보레이션이 되는지를 알 수 있었다. 이제 클라우드는 우리 실생활에 너무 많이 들어와 버렸다. 이제 클라우드를 가지고 무엇을 만들고 어떻게 운영을 하며 어떻게 또 다른 가치를 만들지가 관심이 되었다.


마켓 플레이스 역시 예전에 비해 참가 업체수가 다소 줄어든 경향이 없지 않아 있지만 그래도 여전히 많은 업체에서 참가를 하였고 지난 오스틴 써밋에서 만났던 한국 업체 두곳 AttoResearch와 Zconverter를 다시 이곳에서 만날 수 있게 되어 반가웠다.


두번째날에 참석한 런치 세션인 Woman of Openstack에서는 여성엔지니어로써 회사와 가정, 일과 육아에 대한 고민들을 여전히 들을 수 있었으며, 오랜만에 만난 Beth와 shara를 만나게 되어 더 없이 반가웠다.


두번째날 저녁에는 funway park라는 아주 큰 야구 경기장에서 stack city라는 행사를 하였는데 기억나는거라곤 정말 추워서 감기가 걸릴것만 같았던 날씨와 그곳에서 만났던 다양한 사람들 이였다. 레드햇에서 ceph 스토리지 엔지니어로 근무하고 있는 친구들과 일본에서 온 주니퍼 네트워크 엔지니어, 파운데이션의 탐과 앨리슨. 이 친구들과 함께 오픈스택이라는 주제를 가지고 다양한 이야기를 할 수 있었던 것이 너무너무 행복한 시간은 아니였을까? 하는 생각이 들었다.


써밋 세번째날에는 1대 대표인 안재석 박사, 2대 대표인 나 장현정, 3대 현 대표인 최영락 이렇게 3명이서 3대를 이어오면서 어떻게 커뮤니티가 활성이 되었고 어떻게 한국 커뮤니티의 다양한 행사들을 진행하는지 그 중에서도 오픈스택 데이 행사 준비과정과 히스토리에 대해서 발표를 하였다. 이전 벤쿠버 써밋에서 한번 발표를 했던 경험이 있어서 그런걸까? 이번에는 지난번 보다는 덜 떨렸던 것 같다. 발표는 아래 URL에서 다시 볼 수 있다.

https://www.youtube.com/watch?v=69gF6UY_s10


발표가 끝난 수요일 저녁에는 보스턴에서의 한국인의 밤 행사를 진행하였다. 물론 지난해와 비교를 하면 내가 처음으로 만들었던 한국인의 밤 행사 때와 비교를 해보면 이번 써밋 때는 참석한 인원이 분명 적었으나 내가 생각했던 것보다 훨씬 많은 사람들이 참석을 했고 일 때문에 미처 참석하지 않은 한국분들까지 생각한다면 이번 보스턴 써밋 역시 상당히 많은 한국 사람들이 참석을 했음을 알 수 있었다. 무엇보다 한국 대통령이 당선 되었다는 기쁨도 함께 나눌 수 있었던 더 없이 행복한 시간 이였다.


써밋 마직막 날인 4일째에는 오픈소스 데이가 쉐라톤 호텔에 있어 눈길을 끌었다. 오픈소스 데이에는 최근 떠오르는 컨테이너 관리 도구인 쿠버네티스 cncf, 오픈스택 nova, cinder, swift와 같은 코어 서비스와 찰떡궁합인 ceph storage 등이 있었다. 그 중 난 업무상 필요로 하는 ceph day에서 ceph 스토리지를 듣기로 결정했다. 가만히 앉아서 세션을 듣고 있다보니 난 언제쯤 이런 글로벌 무대에서 스크립트 없이 내가 하고 싶은말을 자유롭게 할 수 있을까?  적어도 궁금한것들 하나쯤은 물어보고 해결하고 가야하는건 아닐까? 라는 생각이 들었다.


잠시 쉬는 타임에 마켓플레이스 zconverter라는 회사의 부스에 들러 사진도 같이 찍고 이런 저런 이야기도 나누었다.


이렇게 나의 2017년 보스턴 써밋은 끝이 났다. 집으로 돌아오는 비행기 안에서 계속 써밋 후기를 정리하였다. 그리고15시간 40분의 비행을 마치고 집으로 돌아와 마지막 써밋 후기를 마무리 해본다. 


오늘은 다시 돌아오지 않는다. 오늘을 최선을 다해 살아야만 내일 후회하지 않는다. 어제의 내가 오늘의 내가 되고 , 오늘의 내가 내일의 내가 되는것처럼 그렇게 하루하루를 최선을 다해 즐겁고 행복하고 후회하지 않는 삶을 그렇게 살아가고 싶다.

Posted by 나리 짱!!! naleejang
Linux2017.03.31 15:57

오늘 회사에서 드디어 기다리고 기다리던 노트북을 받았습니다.


노트북에는 당연히 RED HAT 7 데스크탑이 설치되어 있구요~!! 그런데, Root 패스워드를 몰라서 한참 삽질을 하다가, 다른 분의 도움으로 Root 패스워드를 설정했습니다. 잊어버리지 말자!! 적어놔야죠!! 그래서, 한번 적어보았습니다.


그래서 오늘 포스팅 내용은 "RED HAT 7에서 ROOT 패스워드를 잊어버렸을경우 패스워드 재설정하는 방법"입니다.


1. 시스템을 재부팅합니다.


2. 재부팅되면서 아래와 같은 GRUB 메뉴가 나오면 키보드에서 알파벳 'e'를 클릭합니다. 

RHEL 7  - Reset root password
RHEL 7 – Reset root password


3. 그러면 아래와 같이 설정창이 나옵니다. 이때 "linux16"이 시작되는 라인 끝에 "rd.break console=tty1" 를 입력합니다. 그리고, Ctrl + x 버튼을 클릭하여 시스템을 재부팅합니다.

Edit the grub menu
Edit the grub menu

4. 재부팅이 되면서 아래와 같이 “switch-root” 라는 프롬프트를 확인할 수 있습니다.

Emergency mode RHEL 7
Emergency mode RHEL 7

5. "rd.break"를 사용하여 시스템을 부팅했으면 /sysroot의 read-only 모드를 read/write 모드로 아래와 같이 전환합니다.

switch_root:/# mount -o remonut,rw /sysroot 


6. 전환이 완료되면 이번에는 chroot 명령어를 이용하여 /sysroot로 변경합니다.

switch_root:/# chroot /sysroot 


7. 이제 root 패스워드를 아래와 같이 설정합니다. 

sh-4.2# passwd root

New password: ************

Retype new password: ************

passwd:all authentication tokens updated successfully. 


8. RHEL7 같은 경우에는 기본적으로 SELinux가 활성되어 있습니다. 그러므로 ".autorelabel" 이라는 이름을 생성해야 합니다.

sh-4.2# touch /.autorelabel 


9. 생성이 완료되면 커맨드 창이 "exit" 명령어를 이용하여 빠져나옵니다.

sh-4.2# exit 


10 . 시스템이 재부팅되면서 SELinux가 relabel 된후 다시 재부팅이 됩니다.

11. 시스템이 다시 재부팅되면, 이제 새로운 root 패스워드로 로그인을 할 수 있습니다. 


참조 URL : http://www.unixarena.com/2015/04/how-to-reset-the-root-password-on-rhel-7.html

Posted by 나리 짱!!! naleejang
OpenStack Class 22017.03.23 13:39

안녕하세요~!! 

정말 오랜만에 블로그에 글을 올려봅니다.

오늘은 개정판 내용 중 어떤 내용을 올릴까 하고 고민을 하다가 설치편은 어떤 버전을 설치하느냐에 따라 조금씩 방법도 다르고, 공식 문서를 활용하면 쉽게 설치 방법을 확인할 수 있기 때문에 이번 시간부터는 오픈스택을 어떻게 사용하면 되는지에 대한 내용을 다루고자 합니다.


프로젝트 및 사용자 생성하기

개발 부서에서 운영 부서로 오픈스택을 요청하는 경우는 신규 개발 프로젝트를 시작해야 하거나 연구 프로젝트가 시작되었을 경우일 것입니다. 운영 부서에서 인스턴스를 일일이 생성해서 개발 부서에 넘겨주기에는 일이 많고 번거롭습니다. 그래서 운영 부서에서는 오픈스택에 프로젝트를 생성하고 사용자를 추가해 개발 부서에 해당 계정 정보를 주면 개발 부서에서 직접 인스턴스를 생성할 수 있습니다. 운영 부서가 가장 먼저 해야 하는 일인 프로젝트 및 사용자 생성을 해 보겠습니다.

 

프로젝트 생성하기

프로젝트는 쉽게 말해 부서명이나 그룹명이라고 볼 수 있습니다. 요청이 들어온 개발 부서명은 개발 1팀이고, 이를 영문으로 쉽게 표기해 Developer 1이라는 프로젝트를 생성해 보겠습니다.

 

1.      가장 먼저 대시보드에 접속합니다. 대시보드에 접속할 때는 관리자 권한인 admin으로 로그인합니다. 그러면 다음과 같은 프로젝트 페이지를 가장 먼저 볼 수 있습니다.


2.      [+ 프로젝트 생성]을 클릭합니다. 그러면 다음과 같이 프로젝트 생성 팝업창이 뜨는데, 생성할 프로젝트 이름과 설명을 입력합니다. 여기서는 [이름]에 개발 1팀의 영문명인 developer1, [설명]에는 Developer 1 Team이라고 입력했습니다. 이름과 설명은 상황에 맞게 해당 값으로 입력하면 됩니다. 


3.     다른 탭도 함께 살펴보겠습니다. [프로젝트 멤버] 탭에서는 사용자 목록을 확인할 수 있습니다. 프로젝트를 생성할 때 기존에 등록된 사용자를 추가할 경우라면 모든 사용자 목록에서 해당 사용자를 프로젝트 멤버로 추가할 수 있습니다. 하지만 여기서는 아직 사용자를 생성하지 않았으므로 그냥 넘어 갑니다.


4.      [프로젝트 그룹] 탭을 살펴보겠습니다. 규모가 작은 프로젝트라면 프로젝트가 하나뿐이지만, 프로젝트 규모가 크다면 작은 단위의 프로젝트가 모여 큰 프로젝트가 될 수 있습니다. 또한, 관련 있는 프로젝트를 모아둘 수도 있습니다. 이때 사용하는 것이 바로 프로젝트 그룹입니다. 프로젝트 그룹 역시 생성 전이므로 그냥 넘어갑니다.


5.      [Quota] 탭을 살펴보겠습니다. 여기서는 생성하고자 하는 프로젝트에서 사용할 수 있는 가상 자원을 설정할 수 있습니다. 이때 하드웨어 자원에 맞게 할당하지 않으면 인스턴스 생성 시 자원이 없어 실패할 수도 있습니다. 프로젝트 정보를 입력하고 멤버, 그룹, Quota 정보를 확인했으면 [프로젝트 생성]을 클릭합니다.

 

6.      앞에서 설정한 프로젝트명으로 프로젝트가 생성된 것을 확인할 수 있습니다.

 

7.      이번에는 생성한 프로젝트 정보를 확인해 보겠습니다. 프로젝트 목록에서 앞에서 생성한 developer1을 클릭합니다. 그러면 다음과 같이 developer1 프로젝트의 상세 정보를 확인할 수 있으며, 오른쪽 콤보박스에서 프로젝트에 해당하는 작업들을 할 수 있습니다.


8.      [프로젝트 편집]을 선택하면 다음과 같은 프로젝트 편집창이 뜹니다.

 

사용자 생성하기

프로젝트를 생성하면 사용자를 생성해야 합니다. 개발 1팀의 요청자를 사용자로 생성할 수도 있고, 프로젝트명과 같은 이름으로 사용자를 생성할 수도 있습니다. 사용자를 생성해 보겠습니다.

 

1.     관리자 대시보드의 왼쪽 메뉴에서 [인증] > [사용자]를 선택하면 다음과 같은 사용자 목록을 확인할 수 있습니다. 서비스를 위해 이미 생성되어 있는 서비스용 사용자 정보를 확인할 수 있습니다.

2.      [+ 사용자 생성]을 클릭하면 다음과 같은 사용자 생성 창이 뜹니다. 그러면 사용자 정보를 입력합니다. 여기서는 제가 개발 1팀의 개발자라 생각하고 제 개인 정보를 입력했습니다. 사용자 이름에는 사용자 ID를 입력하고, 설명은 간단하게 작성합니다. 그리고 이메일 정보와 비밀번호, 비밀번호 확인을 입력하고, 좀 전에 생성한 프로젝트를 최초 프로젝트에서 선택합니다. 그리고 역할을 선택하는데, 관리자가 아닌 일반 사용자는 Member로 선택한 후 [사용자 생성]을 클릭합니다. 


3.      사용자가 정상적으로 생성되면 [사용자] 메뉴를 선택해 목록을 확인할 수 있습니다.


4.      [그룹] 메뉴를 살펴보겠습니다. 그룹은 비슷한 프로젝트나 관련이 있는 프로젝트를 별도로 모아 좀 더 관리하기 쉽게 해줍니다. 여기서는 이미 nonadmins 그룹과 admins 그룹이 생성되어 있습니다.


5.     [역할]에서는 오픈스택 서비스를 위한 역할들이 이미 생성되어 있습니다. Service는 오픈스택 서비스를 위한 역할이며, admin은 관리자 역할입니다. Member_member_는 일반 사용자를 위한 역할이며, Heat_stack_ownerheat_stack_userHeat 서비스를 위한 역할입니다. ResellerAdmin은 미터링 서비스인 ceilometer를 위한 역할입니다. 이렇게 오픈스택에는 각각의 서비스를 구동하기 위한 역할들이 있습니다.

 

6.     프로젝트를 생성하고 사용자를 생성했으면 로그인 테스트를 해 봐야 합니다. Admin 계정으로 로그인한 대시보드를 로그아웃하고 다음과 같이 방금 생성한 사용자 아이디와 패스워드로 로그인해 봅니다.

 

7.     로그인을 하면 다음과 같이 한눈에 요약된 현재 자원 사용 정보와 사용량을 확인할 수 있습니다.

 

커맨드 명령어 사용하기

대부분은 대시보드를 이용해 프로젝트를 생성하고 사용자를 생성하면 됩니다. 하지만 때로는 커맨드 명령어를 이용해 기존의 프로젝트 정보나 사용자 정보를 삭제하거나 수정할 수도 있습니다. 여기서는 커맨드 명령어로 어떻게 프로젝트를 생성하고, 사용자를 생성하는지 알아보겠습니다.

 

[주요 명령어] 프로젝트 생성

openstack project create --domain [DOMAIN_NAME] --description [DESCRIPTION] [PROJECT_NAME]

 

[주요 명령어] 사용자 생성

openstack user create --domain [DOMAIN_NAME] --password-prompt [USER_NAME]

 

[주요 명령어] 사용자 역할 및 프로젝트 설정

openstack role add --project [PROJECT_NAME] --user [USER_NAME] [ROLE_NAME]

 

1.      먼저 관리자 계정을 인증하기 위한 adminrc.sh 파일을 다음과 같이 확인하고 export합니다. 이때 만일 adminrc.sh 파일이 없다면 다음과 같이 생성하면 됩니다.

nalee@controller:~$ cat adminrc.sh

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=openstack

export OS_AUTH_URL=http://192.168.56.101:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

nalee@controller:~$ . adminrc.sh

 

2.      개발 1팀은 앞에서 이미 생성했으므로 이번에는 개발 2팀을 프로젝트로 생성해 보겠습니다. openstack project create 명령어를 이용해 도메인에는 defaultdescription에는 개발 2팀을 표현하는 “Development 2 Team”을 입력하고 마지막으로 development2라는 프로젝트명을 입력합니다. 그러면 다음과 같이 프로젝트가 생성됩니다.

nalee@controller:~$ openstack project create --domain default --description "Developer 2 Team" developer2

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Developer 2 Team               |

| domain_id   | default                          |

| enabled     | True                             |

| id          | 698df06c46344730a1c1ab0aafd16a0b |

| is_domain   | False                            |

| name        | developer2                     |

| parent_id   | default                          |

+-------------+----------------------------------+

 

3.      프로젝트가 생성되었으면 이번에는 openstack user create 명령어를 이용해 janghj라는 사용자 계정을 생성해 보겠습니다. 이번에도 도메인은 default로 설정하고 패스워드를 프롬프트로 받기 위해 --password-prompt라는 옵션을 추가합니다. 그리고 janghj라는 사용자명을 입력합니다. 그러면 다음과 같이 패스워드를 입력하라는 프롬프트가 뜹니다. 이때, 설정하고자 하는 패스워드를 입력하고 [Enter]를 누르면 다음과 같이 사용자 계정이 생성됩니다. 책에서는 ‘janghjpass’로 패스워드를 설정했습니다.

nalee@controller:~$ openstack user create --domain default --password-prompt janghj

User Password: <패스워드 입력><엔터>

Repeat User Password: <패스워드 입력><엔터>

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | default                          |

| enabled   | True                             |

| id        | 7af2ec0b1d4247da840954948411c9d9 |

| name      | janghj                           |

+-----------+----------------------------------+

 

4.      프로젝트와 사용자 계정이 생성되었으면 생성한 사용자 계정에 역할을  설정해야 합니다. 어떤 규칙들이 있는지 우선 openstack role list 명령어를 이용해 확인합니다. 여기서는 Member 역할을 사용하겠습니다.

nalee@controller:~$ openstack role list

+----------------------------------+------------------+

| ID                               | Name             |

+----------------------------------+------------------+

| 2df60b4750c14a91afedb2890a26325f | service          |

| 7fbd68e1466041dba647d6bb52153b70 | ResellerAdmin    |

| 98fbd6d7c431481793b14849984fdd0d | heat_stack_owner |

| 9fe2ff9ee4384b1894a90878d3e92bab | _member_         |

| a6cbca2a1afd4075b53497f37510952a | Member           |

| a96b25230fbf42b8b599f07aa1de25ac | heat_stack_user  |

| aa3864c4e01247e188275f493fdd82fd | admin            |

| ccaf3e4d5ed2431d8c9abf88b3ed06e4 | anotherrole      |

+----------------------------------+------------------+

 

5.      openstack role add 명령어를 이용해 앞에서 생성한 프로젝트와 사용자명을 입력합니다. projectdevelopment2를 입력하고, userjanghj를 입력합니다. 마지막으로 roleMember를 입력합니다. 그러면 생성한 사용자 계정에 프로젝트와 역할까지 모두 설정되었습니다.

nalee@controller:~$ openstack role add --project developer2 --user janghj Member

 

6.      이번에는 인증을 위한 스크립트 파일을 만들어 보겠습니다. 기존의 adminrc.sh 파일을 cp 명령어를 이용해 janghjrc.sh 이름으로 복사합니다. 그리고 janghjrc.sh 파일을 vi 에디터로 열어 OS_PROJECT_NAME, OS_USERNAME, OS_PASSWORD를 다음과 같이 앞에서 설정한 값으로 변경합니다. 저장된 janghjrc.sh 파일을 export합니다.

nalee@controller:~$ cp adminrc.sh janghjrc.sh

nalee@controller:~$ vi janghjrc.sh

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=developer2

export OS_USERNAME=janghj

export OS_PASSWORD=janghjpass

export OS_AUTH_URL=http://192.168.56.101:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

nalee@controller:~$ . janghjrc.sh

 

7.      인증이 제대로 되는지 다음과 같은 명령어를 실행해 봅니다. 

nalee@controller:~$ openstack image list

+--------------------------------------+---------------------------------+--------+

| ID                                   | Name                            | Status |

+--------------------------------------+---------------------------------+--------+

| 76c25957-c3cd-4371-8df3-d5cd205d168f | cirros-0.3.4-x86_64-uec         | active |

| dd6d3899-6a98-4548-889d-ad3aa7bb8cf2 | cirros-0.3.4-x86_64-uec-ramdisk | active |

| e11dfa22-4c48-4ddb-a475-6e37b9283b6a | cirros-0.3.4-x86_64-uec-kernel  | active |

+--------------------------------------+---------------------------------+--------+


Posted by 나리 짱!!! naleejang
Life2017.03.08 13:59

안녕하세요~!!


정말 오랜만에 블로그에 글을 써보는것 같습니다. 

사실은 그동안 너무나도 많은 일들이 저에게 일어나서, 블로그를 관리하고 글을 쓸 마음의 여유도, 시간도 없었습니다. 


지난 겨울부터 그동안 작업해오던 책을 마무리해야 했었기 때문에 오픈스택과 클라우드에 대한 최신 기술 트렌드를 살펴보고, 이해하고, 정리를 했습니다. 그리고, 각종 세미나와 프로젝트들을 소화 해야만 했었고, 3년동안 끌고 왔던 오픈스택 한국 커뮤니티의 새로운 대표 선출을 진행 해야만 했었습니다. 그래서, 더욱더 시간이 없었는지도 모르겠습니다. 



저는 아직도 많이 부족한 사람입니다. 

모르는 분야도 많고, 하고 싶은 것도 많고,경험해 싶은 것도 많은.. 그래서 아직은 많이 부족한 직장맘입니다. 그래도, 꿈많은 사춘기 10대 소녀와 같은 마음으로 살고 있습니다.


저는 고마운 분들이 참 많습니다.

가깝게는 옆에서 항상 힘이 되고, 응원해 주는 우리 딸, 아이와 살림을 맡아 도와주시는 시어머니, 정신적 멘토이자 인생의 동반자인 울 신랑, 그리고, 기타 다른 가족들~~

많은 지원을 아끼지 않으셨던 ASD Korea 이선웅 대표님 그리고 직장 동료들!

함께 오픈스택 한국 커뮤니티를 운영하고 고생했던 운영진들!

오랜동안의 꿈을 이룰수 있도록 도와주었던 오픈스택 파운데이션 멤버들!

늘 항상 옆에서 보이지 않은 곳에서 응원을 보내주시던 지인들!


이런 분들로 인해 새로운 곳에서 새로운 도전을 시작하게 되었습니다.

정말 많은분들로부터 축하인사를 받았습니다. 축하인사를 받을정도로 정말 좋은 곳에서 좋은 동료들과 함께 일을 하게 되었구나! 라는것을 느꼈습니다.


아직은 많이 부족합니다.

하지만, 많은 분들이 보내주시는 응원만큼 더 많이 성장하도록 노력하겠습니다.

감사합니다. 정말 많이 감동받았고, 정말 많이 기쁘고, 행복했습니다.


앞으로도 

항상 지켜봐 주시고, 응원해 주시고, 많이 많이 도와주세요~!!


감사합니다.

Posted by 나리 짱!!! naleejang
OpenStack Class 22016.10.04 10:02


PackStack Mitaka 패키지와 PackStack 설치


네트워크 IP 설정를 완료하면 SSH 클라이언트 툴 또는 명령어를 이용해서 해당 네트워크 IP로 접속합니다. 앞에서 192.168.56.102로 할당 받았으므로 SSH 접속 시 192.168.56.102로 접속합니다. 접속한 후 PackStack을 설치를 위해 설치할 버전의 레파지토리 rpm을 받아와야 합니다. 우리는 Mitaka를 설치할 예정이므로 Mitaka 패키지를 받아오겠습니다.



1.     레드햇에서 제공하는 RDO공식 문서(https://www.rdoproject.org/install/quickstart/)를 참조하여 아래와 같이 레파지토리 RPM을 설치합니다.

[root@centos ~]# yum install -y https://www.rdoproject.org/repos/rdo-release.rpm

Loaded plugins: fastestmirror

rdo-release.rpm                                                                  | 5.3 kB  00:00:00    

Examining /var/tmp/yum-root-mFGmE5/rdo-release.rpm: rdo-release-mitaka-2.noarch

Marking /var/tmp/yum-root-mFGmE5/rdo-release.rpm to be installed

Resolving Dependencies

--> Running transaction check

---> Package rdo-release.noarch 0:mitaka-2 will be installed

--> Finished Dependency Resolution

                                                          1/1

Installed:

  rdo-release.noarch 0:mitaka-2                                                                        

 

Complete!

[root@centos ~]#

 

Tip===

[Q&A] Packstack을 이용하여 다른 버전의 오픈스택은 어떻게 설치하나요?

RDO PackStack은 레드햇에서 제공하는 공식 사이트(https://www.rdoproject.org/install/quickstart/)에 방문하여 설치 문서를 확인하고 설치하면 가장 최신의 오픈스택을 설치할 수 있습니다.


만일 설치하고자 하는 오픈스택 버전이 RDO 공식 설치 문서에 안내되어 있는 경우와 다른 때는 아래와 같이 패도라 오픈스택 레파지토리 사이트(https://repos.fedorapeople.org/repos/openstack/)에 방문하면, 현재 설치가능한 오픈스택 버전을 모두 확인할 수 있습니다.


설치하고자 하는 오픈스택의 버전을 선택하고 들어가면 아래와 같이 업데이트 된 PRM 목록을 확인할 수 있습니다. 이때 가장 최근에 업데이트 된 버전에서 마우스 오른쪽 버튼을 클릭하면 아래와 같이 서브 메뉴가 나옵니다. 이때, [다른 이름으로 링크 저장]을 클릭합니다.

 

복사한 URL은 아래와 같이 붙여넣고 실행을 하면 해당 레파지토리가 설치됩니다.

[root@centos ~]# yum install -y https://repos.fedorapeople.org/repos/openstack/openstack-mitaka/rdo-release-mitaka-3.noarch.rpm

Loaded plugins: fastestmirror

Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast

rdo-release-mitaka-3.noarch.rpm                                                      | 5.4 kB  00:00:00    

Examining /var/tmp/yum-root-SW9UDz/rdo-release-mitaka-3.noarch.rpm: rdo-release-mitaka-3.noarch

Marking /var/tmp/yum-root-SW9UDz/rdo-release-mitaka-3.noarch.rpm to be installed

Resolving Dependencies

--> Running transaction check

---> Package rdo-release.noarch 0:mitaka-3 will be installed

--> Finished Dependency Resolution

Installed:

  rdo-release.noarch 0:mitaka-3                                                                             

 

Complete!

[root@centos ~]#

 

====

 

2.     레파지토리 설치가 완료되었으면 이번에는 yum update 명령어를 이용하여 시스템 업데이트를 합니다.

[root@centos ~]# yum update -y

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

 * base: ftp.daumkakao.com

 * extras: mirror.oasis.onnetcorp.com

 * updates: centos.mirror.cdnetworks.com

Resolving Dependencies

--> Running transaction check

---> Package NetworkManager.x86_64 1:1.0.0-14.git20150121.b4ea599c.el7 will be updated

---> Package NetworkManager.x86_64 1:1.0.6-29.el7_2 will be an update

---> Package NetworkManager-libnm.x86_64 1:1.0.0-14.git20150121.b4ea599c.el7 will be updated

---> Package NetworkManager-libnm.x86_64 1:1.0.6-29.el7_2 will be an update

---> Package NetworkManager-team.x86_64 1:1.0.0-14.git20150121.b4ea599c.el7 will be updated

---> Package NetworkManager-team.x86_64 1:1.0.6-29.el7_2 will be an update

---> Package NetworkManager-tui.x86_64 1:1.0.0-14.git20150121.b4ea599c.el7 will be updated

---> Package NetworkManager-tui.x86_64 1:1.0.6-29.el7_2 will be an update

  yum.noarch 0:3.4.3-132.el7.centos.0.1                                                                

  yum-plugin-fastestmirror.noarch 0:1.1.31-34.el7                                                      

  zlib.x86_64 0:1.2.7-15.el7                                                                           

 

Complete!

 

3.     업데이트까지 완료했으면 아래와 같이 Packstack을 설치합니다.

[root@centos ~]# yum install -y openstack-packstack

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

 * base: ftp.daumkakao.com

 * extras: mirror.oasis.onnetcorp.com

 * updates: centos.mirror.cdnetworks.com

Resolving Dependencies

--> Running transaction check

---> Package openstack-packstack.noarch 0:8.0.0-1.el7 will be installed

--> Processing Dependency: openstack-packstack-puppet = 8.0.0-1.el7 for package: openstack-packstack-8.0.0-1.el7.noarch

Dependency Installed:

  PyYAML.x86_64 0:3.10-11.el7                           jbigkit-libs.x86_64 0:2.0-11.el7              

  libtiff.x86_64 0:4.0.3-14.el7                         libwebp.x86_64 0:0.3.0-3.el7                  

  libyaml.x86_64 0:0.1.4-11.el7_0                       openstack-packstack-puppet.noarch 0:8.0.0-1.el7

  openstack-puppet-modules.noarch 1:8.0.4-1.el7         pyOpenSSL.noarch 0:0.15.1-1.el7               

  python-docutils.noarch 0:0.11-0.2.20130715svn7687.el7 python-enum34.noarch 0:1.0.4-1.el7            

  python-idna.noarch 0:2.0-1.el7                        python-ipaddress.noarch 0:1.0.7-4.el7         

  python-netaddr.noarch 0:0.7.18-1.el7                  python-pillow.x86_64 0:2.0.0-19.gitd1c6db8.el7

  python-ply.noarch 0:3.4-10.el7                        python-pycparser.noarch 0:2.14-1.el7           

  python2-cffi.x86_64 0:1.5.2-1.el7                     python2-cryptography.x86_64 0:1.2.1-3.el7     

  python2-pyasn1.noarch 0:0.1.9-6.el7.1                 ruby.x86_64 0:2.0.0.598-25.el7_1              

  ruby-irb.noarch 0:2.0.0.598-25.el7_1                  ruby-libs.x86_64 0:2.0.0.598-25.el7_1         

  rubygem-bigdecimal.x86_64 0:1.2.0-25.el7_1            rubygem-io-console.x86_64 0:0.4.2-25.el7_1    

  rubygem-json.x86_64 0:1.7.7-25.el7_1                  rubygem-psych.x86_64 0:2.0.0-25.el7_1         

  rubygem-rdoc.noarch 0:4.0.0-25.el7_1                  rubygems.noarch 0:2.0.14-25.el7_1             

 

Complete!

[root@centos ~]#

 

4.     Packstack 설치가 완료되면 아래와 같은 명령어로 설치가 정상적으로 이루어졌는지 확인할 수 있습니다. 또한 어떤 종류의 옵션들이 있는지 해당 옵션들의 설명도 함께 확인할 수 있습니다.

[root@centos ~]# packstack -h | less

Usage: packstack [options] [--help]

 

Options:

  --version             show program's version number and exit

  -h, --help            show this help message and exit

  --gen-answer-file=GEN_ANSWER_FILE

                        Generate a template of an answer file.

  --answer-file=ANSWER_FILE

                        Runs the configuration in non-interactive mode,

                        extracting all information from theconfiguration file.

                        using this option excludes all other options

  --install-hosts=INSTALL_HOSTS

                        Install on a set of hosts in a single step. The format

                        should be a comma separated list of hosts, the first

                        is setup as a controller, and the others are setup as

                        compute nodes.if only a single host is supplied then

                        it is setup as an all in one installation. An

                        answerfile will also be generated and should be used

                        if Packstack needs to be run a second time

  --allinone            Shorthand for --install-hosts=<local ipaddr>

                        --novanetwork-pubif=<dev> --novacompute-privif=lo

                        --novanetwork-privif=lo --os-swift-install=y --nagios-

                        install=y , this option can be used to install an all

                        in one OpenStack on this host

  -t TIMEOUT, --timeout=TIMEOUT

                        The timeout for puppet Exec calls

 

5.     이번에는 오픈스택 설치시 환경설정을 하기 위한 환경파일을 만들어 보도록 하겠습니다. Packstack에는 위에서 확인했던 것처럼 다양한 옵션들이 있는데 그 중에 --gen-answer-file 옵션을 이용하면 아래와 같이 환경설정 파일을 만들수 있습니다. 환경설정 파일명은 본인의 취향대로 다른 이름으로 사용할 수 있으며, 여기서는 answers.txt 라는 이름을 사용하였습니다.

[root@centos ~]# packstack --gen-answer-file ~/answers.txt

Packstack changed given value  to required value /root/.ssh/id_rsa.pub

[root@centos ~]# ll

합계 52

-rw-------. 1 root root  1312  5 18 15:42 anaconda-ks.cfg

-rw-------. 1 root root 49061  5 19 18:05 answers.txt

[root@centos ~]#

 

6.     이번에는 환경설정을 한번 해 보도록 하겠습니다. 위에서 생성된 환경설정 파일 answers.txt 파일을 vi 편집기를 이용해 아래 나열되어 있는 항목들의 값을 변경해 줍니다. 독자분들의 편의를 위하여 원 환경설정 파일에 영문으로 설명되어 있는 주석을 한글로 쉽게 설명하였습니다.

[root@centos ~]# vi answers.txt

 

# 기본으로 설정되는 패스워드입니다. 여기서는 openstack을 사용해 보도록 하겠습니다.

CONFIG_DEFAULT_PASSWORD=openstack

 

# 여기서는 오브젝트 스토리지 서비스인 Swift는 설치하지 않겠습니다. 그러므로, 값을 n으로 설정합니다.

CONFIG_SWIFT_INSTALL=n

 

# 오케스트레이션 서비스는 설치할 예정입니다. 값을 y로 설정합니다.

CONFIG_HEAT_INSTALL=y

 

# 컨트롤러 호스트 IP는 관리용 IP를 설정합니다.

# 따라서, VirtualBox에서 가상서버 생성시 설정했던 호스트 전용 네트워크인 enp0s8IP를 입력합니다.

CONFIG_CONTROLLER_HOST=192.168.56.102

 

# 컴퓨트 서비스를 설치할 노드의 IP를 나열합니다.

# 여기서는 설치할 노드가 한대뿐이 없으므로, 하나만 입력합니다.

CONFIG_COMPUTE_HOSTS=192.168.56.102

 

# 기존 네트워크 서비스인 nava networkSDN이 가능한 네트워크 서비스인

# neutron 서비스를 설치할 노드의 IP를 입력합니다.

CONFIG_NETWORK_HOSTS=192.168.56.102

 

# 이미지나 블록 스토리지 서비스와 같은 스토리지 서버 IP를 입력합니다.

CONFIG_STORAGE_HOST=192.168.56.102

 

# 데이터 프로세싱 서비스인 Sahara 노드 IP를 입력합니다.

# 우리가 설치할 노드는 한대뿐이 없으므로 여기서는 동일한 IP를 입력합니다.

CONFIG_SAHARA_HOST=192.168.56.102

 

# 메시지 서비스를 할 노드의 IP를 입력합니다.

CONFIG_AMQP_HOST=192.168.56.102

 

# 마리아 DB를 설치할 노드의 IP를 입력합니다. 이때 만일 CONFIG_MARIADB_INSTALL

# y로 설정하지 않았다면 마리아 DB가 설치되어 있는 데이터베이스 서버 IP를 입력합니다.

CONFIG_MARIADB_HOST=192.168.56.102

 

# ‘Admin’ 사용자의 패스워드를 입력합니다. 원래는 랜덤한 값이 들어가 있으나,

# 사용하기 편리하게 하기 위해서 쉬운 패스워드로 변경해 줍니다. 여기서는 openstack이라고 변경했습니다.

CONFIG_KEYSTONE_ADMIN_PW=openstack

 

# 'Demo' 사용자의 패스워드 역시 사용하기 쉬운 패스워드로 입력합니다.

CONFIG_KEYSTONE_DEMO_PW=openstack

 

# LDAP를 사용할 예정이라면 해당 URL을 입력해 줍니다. 여기서는 모든 IP를 관리용 IP로 변경해 주었습니다.

CONFIG_KEYSTONE_LDAP_URL=ldap://192.168.56.102

 

# 외부 통신을 위한 L3 에이전트와 연결할 Open vSwitch의 브리지명을 입력합니다.

CONFIG_NEUTRON_L3_EXT_BRIDGE=br-enp0s3

 

# 로드 밸런싱 서비스를 설치할지 여부를 설정합니다. 여기서는 y로 변경해 줍니다.

CONFIG_LBAAS_INSTALL=y

 

# 방화벽 서비스 설치 여부를 설정합니다. 여기서는 y로 설정했습니다.

CONFIG_NEUTRON_FWAAS=y

 

# ML2 드라이버 타입을 설정합니다. 다음에 나오는 타입 중 하나를 입력하면 됩니다.

# 여기서는 vlan을 사용하도록 하겠습니다. ['local', 'flat', 'vlan', 'gre', 'vxlan']

CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan

 

# 네트워크 타입을 설정합니다. 다음에 나오는 타입 중 하나를 입력하면 됩니다.

# 여기서는 위에서 설정한 ML2 드라이버 타입와 같은 타입을 설정합니다. ['local', 'vlan', 'gre', 'vxlan']

CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan

 

# 테넌트 네트워크로 제공할 물리 네트워크의 이름과 VLAN 태크 범위를 입력합니다.

# <physical_network>:<vlan_min>:<vlan_max>

CONFIG_NEUTRON_ML2_VLAN_RANGES=physnet1:1:1000

 

# 물리 네트워크와 연결할 Open vSwitch 브리지명을 입력합니다.

# <physical_network>:<ovs_bridge>

# Example: physnet1:br-eth1,physnet2:br-eth2,physnet3:br-eth3

CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-enp0s3

 

# Open vSwitch의 브리지와 연결할 인터페이스 명을 입력합니다.

# 만일 이때 매핑을 잘못 했다면, 다음 명령어를 이용하여 수정할 수 있습니다.

# packstack --allinone --os-neutron-ovs-bridge-mappings=ext-net:br-ex --os-neutron-ovs-bridge-interfaces

# =br-ex:eth0

CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-enp0s3:enp0s3

 

# 오케스트레이션 클라우드포메이션 설치 여부를 설정합니다.

CONFIG_HEAT_CFN_INSTALL=y

 

# 플로팅 IP 범위를 입력합니다.

# 이때 입력하는 플로팅 IP 범위는 enp0s3 IP와 같은 대역의 IP 범위를 입력합니다.

CONFIG_PROVISION_DEMO_FLOATRANGE=192.168.0.0/24

 

# MongoDB를 설치할 노드 IP를 입력합니다.

CONFIG_MONGODB_HOST=192.168.56.102

 

# REDIS를 설치할 마스터 노드 IP를 입력합니다.

CONFIG_REDIS_MASTER_HOST=192.168.56.102

 

7.     환경설정이 완료되었으면 새로 설정한 환경설정 파일을 이용해 아래와 같이 PackStack을 실행합니다. 그리고, 3~40분 정도 기다립니다. 설치 완료가 되면 아래와 같이 오픈스택 데쉬보드 접속정보, Nagios 접속정보 및 설치 로그 파일 경로 등을 확인할 수 있습니다.

[root@centos ~]# packstack --answer-file ./answers.txt

Welcome to the Packstack setup utility

 

The installation log file is available at: /var/tmp/packstack/20160519-182327-iJWRlx/openstack-setup.log

 

Installing:

Clean Up                                             [ DONE ]

Discovering ip protocol version                      [ DONE ]

Setting up ssh keys                                  [ DONE ]

Preparing servers                                    [ DONE ]

Applying 192.168.56.102_nagios.pp

Applying 192.168.56.102_nagios_nrpe.pp

192.168.56.102_nagios.pp:                            [ DONE ]           

192.168.56.102_nagios_nrpe.pp:                       [ DONE ]           

Applying Puppet manifests                            [ DONE ]

Finalizing                                           [ DONE ]

 

 **** Installation completed successfully ******

 

Additional information:

 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.

 * Warning: NetworkManager is active on 192.168.56.102. OpenStack networking currently does not work on systems that have the Network Manager service enabled.

 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.56.102. To use the command line tools you need to source the file.

 * To access the OpenStack Dashboard browse to http://192.168.56.102/dashboard .

Please, find your login credentials stored in the keystonerc_admin in your home directory.

 * To use Nagios, browse to http://192.168.56.102/nagios username: nagiosadmin, password: 8b30b217dca54f01

 * Because of the kernel update the host 192.168.56.102 requires reboot.

 * The installation log file is available at: /var/tmp/packstack/20160520-162729-MMdzYo/openstack-setup.log

 * The generated manifests are available at: /var/tmp/packstack/20160520-162729-MMdzYo/manifests

[root@centos ~]#

 

TIP===

[Q&A] 경고(Warning) 메시지가 뜨는데 괜찮은건가요?

설치가 완료된 후 마지막에 경고(Warning) 메시지가 뜹니다. 내용을 보니 오픈스택 네트워크 서비스는 네트워크 매니저(Network Manager)가 활성화된 시스템에서는 동작을 하지 않는다고 나와 있습니다. 그럼, 네트워크 매니저 서비스가 실행되고 있는지 확인해 보겠습니다.


1.     우선, 실행 중인 프로세스 중에 네트워크 매니저(NetworkManager)가 실행되고 있는지 ps -ef 명령어를 이용하여 grep으로 프로세스 실행 상태를 확인합니다. 이때 만일 아래와 같이 네트워크 매니저가 실행되고 있다면 해당 서비스를 중단시켜야 합니다.

[root@centos ~]# ps -ef | grep NetworkManager

root       854     1  0 08:48 ?        00:00:02 /usr/sbin/NetworkManager --no-daemon

root     13256 12505  0 14:48 pts/0    00:00:00 grep --color=auto NetworkManager

root     20972   854  0 09:33 ?        00:00:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp0s8.pid -lf /var/lib/NetworkManager/dhclient-1dca40ee-3e58-4ce9-8dd7-3c26e1727e9e-enp0s8.lease -cf /var/lib/NetworkManager/dhclient-enp0s8.conf enp0s8

 

2.     systemctl 명령어를 이용하여 네트워크 매니저 실행을 중단합니다.

[root@centos ~]# systemctl stop NetworkManager

 

3.     네트워크 매니저가 제대로 중단되었는지 확인하려면 ps –ef 명령어를 이용하여 다시 프로세스 실행을 확인하면 됩니다.

[root@centos ~]# ps -ef | grep NetworkManager

root     13502 12505  0 14:49 pts/0    00:00:00 grep --color=auto NetworkManager

root     20972     1  0 09:33 ?        00:00:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-enp0s8.pid -lf /var/lib/NetworkManager/dhclient-1dca40ee-3e58-4ce9-8dd7-3c26e1727e9e-enp0s8.lease -cf /var/lib/NetworkManager/dhclient-enp0s8.conf enp0s8

[root@centos ~]#

 

===

Posted by 나리 짱!!! naleejang
OpenStack Class 22016.09.23 17:53


All-in-One으로 오픈스택을 설치해 보자

앞에서 우분투를 설치하고 데브스택을 이용해 오픈스택을 설치했다면 이번에는 레드햇 계열인 CentOS를 설치하고 RDO PackStack을 이용해서 오픈스택을 설치하겠습니다. PackStack은 쉘 스크립트를 이용해서 설치하는 데브스택과 달리 Puppet 기반의 인스톨 유틸리티를 사용합니다.

 

시스템 구성도를 그려보자

Single Node에 오픈스택을 설치할 때는 테스트나 스터디를 위한 설치이므로 사용하고 있는 컴퓨터에 VirtualBoxVMWare로 생성한 가상서버를 주로 이용합니다. 이때 생성한 가상서버에 CentOS를 설치합니다. 레드햇에서 서비스하는 RDO PackStack을 이용해서 그림 6-1과 같은 네트워크 구성으로 설치하겠습니다.



IP 공유기의 게이트웨이 IP192.168.0.1이고 서브넷 마스크는 255.255.255.0이라고 가정합니다. Neutron을 이용해 오픈스택을 설치할 예정이므로 인터넷이 되는 맥이나 윈도우 PC의 네트워크 카드를 외부 인터넷과 연결되는 가상서버의 브리지 네트워크로 설정하고 br-enp0s3 네트워크 IP192.168.0.25로 사용합니다. 관리 및 모니터링 IP는 호스트전용네트워크를 이용하는데 호스트전용네트워크의 게이트웨이 IP192.168.56.1이고 CentOS가 설치된 가상서버의 IP192.168..56.102를 사용합니다. Fixed IP Range10.0.0.0/24를 사용하고 Floating IP Range는 인터넷이 되는 192.168.0.0/24를 사용할 것입니다. 그리고 Floating IP Pool을 사용한다면, 192.168.0.100에서 192.168.0.200을 사용하겠습니다.



Network IP 설정

VirtualBox에서 생성한 가상서버에 CentOS 설치가 완료되면 로그인한 후 먼저 Network IP를 설정합니다. IP 설정이 완료되면 그 다음부터는 SSH 클라이언트 툴을 이용해 좀 더 쉽게 오픈스택을 설치할 수 있습니다. 이때 설정할 네트워크 IP는 시스템 구성도에서 미리 그려본 IP를 설정합니다. 만일, 어떤 IP로 구성을 해야할 지 잘 모르겠다면, 공유기의 DHCP에서 자동으로 할당받은 IP 주소를 그대로 사용하면 됩니다.

 

1.     CentOS 7를 설치하고 ifconfig 명령어를 실행하면 아래와 같이 command not found라고 명령어를 찾을 수 없다는 메시가 뜹니다. CentOS 7에서는 이전버전때와는 다르게 ifconfig 명령어를 사용할 수가 없습니다. 그래서, ip addr 또는 ip addr show와 같은 명령어를 이용하여 IP 정보를 확인하여야 합니다.

[root@centos ~]$ ifconfig

-bash: ifconfig: command not found

[root@centos ~]$ ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 08:00:27:31:fb:8d brd ff:ff:ff:ff:ff:ff

    inet 192.168.0.25/24 brd 192.168.0.255 scope global dynamic enp0s3

       valid_lft 3320sec preferred_lft 3320sec

    inet6 fe80::a00:27ff:fe31:fb8d/64 scope link

       valid_lft forever preferred_lft forever

3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 08:00:27:a1:ec:77 brd ff:ff:ff:ff:ff:ff

[root@centos ~]$

 

2.     Ifconfig 명령어를 사용하고 싶다면 아래와 같이 net-tools를 설치하면 CentOS 7에서도 ifconfig 명령어를 사용하여 IP를 확인할 수 있습니다. yum install 명령어를 이용하여 아래와 같이 net-tools를 설치합니다.

[root@centos ~]# yum install –y net-tools

Loaded plugins: fastestmirror

base                                                                             | 3.6 kB  00:00:00    

extras                                                                           | 3.4 kB  00:00:00    

updates                                                                          | 3.4 kB  00:00:00    

extras/7/x86_64/primary_db                                                       | 131 kB  00:00:05    

Loading mirror speeds from cached hostfile

 * base: ftp.daumkakao.com

 * extras: mirror.oasis.onnetcorp.com

 * updates: centos.mirror.cdnetworks.com

Installed:

  net-tools.x86_64 0:2.0-0.17.20131004git.el7                                                          

 

Complete!

[root@localhost ~]#

 

3.     Net-tools 설치가 완료되었으면 이번에는 ifconfig 명령어가 실행이 되는지 확인을 해 봅니다. 이번에는 명령어가 잘 실행됩니다.

[root@centos ~]# ifconfig

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.0.25  netmask 255.255.255.0  broadcast 192.168.0.255

        inet6 fe80::a00:27ff:fe31:fb8d  prefixlen 64  scopeid 0x20<link>

        ether 08:00:27:31:fb:8d  txqueuelen 1000  (Ethernet)

        RX packets 597  bytes 510529 (498.5 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 333  bytes 36530 (35.6 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        ether 08:00:27:a1:ec:77  txqueuelen 1000  (Ethernet)

        RX packets 3  bytes 276 (276.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 0  (Local Loopback)

        RX packets 140  bytes 12304 (12.0 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 140  bytes 12304 (12.0 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

[root@centos ~]#

 

4.     이번에는 enp0s8IP 정보를 설정해 보도록 하겠습니다. Cd 명령어를 이용하여 /etc/sysconfig/network-scripts/ 디렉토리로 이동합니다. 그리고 ls 명령어를 이용하여 파일 목록을 확인해 보면 ifcfg라고 시작하는 파일이 3개가 보일것입니다. 해당 파일은 설치하는 운영체제의 환경에 따라 보이는 파일명과 파일 갯수가 달라질 수 있습니다.

[root@centos ~]# cd /etc/sysconfig/network-scripts/

[root@centos network-scripts]# ls

ifcfg-enp0s3     ifdown-eth   ifdown-routes  ifup-bnep  ifup-plusb     init.ipv6-global

ifcfg-enp0s8     ifdown-ib    ifdown-sit     ifup-eth   ifup-post      network-functions

ifcfg-lo         ifdown-ippp  ifdown-tunnel  ifup-ib    ifup-ppp       network-functions-ipv6

ifdown           ifdown-ipv6  ifup           ifup-ippp  ifup-routes

ifdown-Team      ifdown-isdn  ifup-Team      ifup-ipv6  ifup-sit

ifdown-TeamPort  ifdown-post  ifup-TeamPort  ifup-isdn  ifup-tunnel

ifdown-bnep      ifdown-ppp   ifup-aliases   ifup-plip  ifup-wireless

[root@centos network-scripts]#

 

5.     vi 명령어를 이용해 ifcfg-enp0s8 파일을 열어 가장 하단의 ONBOOT=noONBOOT=yes로 변경시켜 줍니다.

[root@centos network-scripts]# vi ifcfg-enp0s8

TYPE=Ethernet

BOOTPROTO=dhcp

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

NAME=enp0s8

UUID=e6bb059d-1dd0-48e3-9016-3d7b0c3efd41

DEVICE=enp0s8

ONBOOT=yes

 

6.     그리고, 아래와 같은 명령어로 네트워크 서비스를 재시작시켜 줍니다. 여기서는 service network restart 라는 명령어를 사용하였지만, CentOS 7에서는 systemctl restart network.service 라는 명령어를 이용하여 재시작할 수도 있습니다.

[root@centos network-scripts]# service network restart

Restarting network (via systemctl):                        [  OK  ]

[root@centos network-scripts]#

 

7.     이번에는 ifconfig를 이용하여 enp0s8IP 설정이 제대로 되었는지 확인해 봅니다. 그러면, enp0s8IP가 잘 설정된 것을 확인할 수 있습니다.

[root@centos network-scripts]# ifconfig

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.0.25  netmask 255.255.255.0  broadcast 192.168.0.255

        inet6 fe80::a00:27ff:fe31:fb8d  prefixlen 64  scopeid 0x20<link>

        ether 08:00:27:31:fb:8d  txqueuelen 1000  (Ethernet)

        RX packets 935  bytes 539382 (526.7 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 529  bytes 67395 (65.8 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.56.102  netmask 255.255.255.0  broadcast 192.168.56.255

        inet6 fe80::a00:27ff:fea1:ec77  prefixlen 64  scopeid 0x20<link>

        ether 08:00:27:a1:ec:77  txqueuelen 1000  (Ethernet)

        RX packets 7  bytes 2636 (2.5 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 16  bytes 2292 (2.2 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 0  (Local Loopback)

        RX packets 156  bytes 13904 (13.5 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 156  bytes 13904 (13.5 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

[root@centos network-scripts]#

 

8.     이제 설정된 IPSSH를 통해 접속을 한번 해 보도록 하겠습니다. HOST PC의 터미널을 열어 ssh로 오픈스택을 설치할 가상 서버에 접속해 보도록 하겠습니다. 윈도우에서는 PUTTY와 같은 SSH Client 툴을 이용하면 쉽게 접속을 할수 있습니다. 여기서는 맥의 터미널을 이용하여 ssh 명령어로 해당 서버에 접속하였습니다.

naleejangui-MacBook-Pro:~ naleejang$ ssh root@192.168.56.102

The authenticity of host '192.168.56.102 (192.168.56.102)' can't be established.

ECDSA key fingerprint is SHA256:KjV0ilLibPzobLuRPKpjKp6R1AOg9sN6O23FI0R+CLs.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.56.102' (ECDSA) to the list of known hosts.

root@192.168.56.102's password: ************

Last login: Wed May 18 21:14:44 2016 from 192.168.0.17

[root@centos ~]$

 

Posted by 나리 짱!!! naleejang
OpenStack Class 22016.09.19 14:25


CentOS에서 오픈스택 구축하기!

예전에는 오픈스택의 기본 운영체제가 우분투였지만, 지금은 다양한 종류의 리눅스에서 오픈스택을 설치하는 방법들을 지원합니다. 우분투 외에 데비안, 오픈수세와 수세, 레드햇 엔터프라이즈 리눅스, CentOS 그리고 페도라에서도 설치를 할 수 있습니다.

이들 리눅스 운영체제 중에서 서버용으로 가장 많이 쓰이는 것이 레드햇입니다. 그러나 레드햇은 라이선스 비용이 들기 때문에 이와 유사한 커널이 있는 CentOS에서 오픈스택을 설치하겠습니다. 그리고 테스트 및 스터디를 위해 Single Node 설치와 기본 서비스로 구성되는 Multi Node 오픈스택을 설치하겠습니다.



설치 환경을 만들어 보자

오픈스택을 구축할 서버가 있다면 서버를 이용해서 직접 설치할 수도 있지만 설치해본 경험이 없다면 가상서버를 준비해서 오픈스택을 한번 정도 설치해보는 것이 좋습니다. 앞에서 오픈스택을 설치할 때 VirtualBox를 이용해서 설치한 것처럼, 이번에도 VirtualBox를 이용해서 설치 환경을 만들어 보겠습니다.

 

CentOS 다운로드

CentOS 사이트(http://www.centos.org/download/) 사이트에 방문해서 최신 CentOS를 받습니다. 아래 그림에서 [DVD ISO]를 클릭하여 CentOS를 내려 받을 수 있는 페이지로 이동합니다. 그때 목록에 있는 CentOS 하나를 클릭해서 받습니다.


 

CentOS 설치를 위한 VirtualBox 가상서버 준비

VirtualBox를 설치하는 과정은 이미 앞에서 다루었으므로 이번에는 CentOS를 설치하기 위해 반드시 체크해야 하는 부분만 살펴보겠습니다.

 

1.     VirtualBox를 실행하고 [새로 만들기]를 클릭하면 다음과 같은 가상 머신 만들기 창이 열립니다. 이때 가상 머신의 이름을 입력하고, 종류는 Linux, 버전은 Red Hat(64 bit)로 선택하고 [다음(N)]을 클릭합니다. 여기서는 나중에 찾기 쉽게 “packstack” 이라는 이름을 사용하였습니다.

 

2.     가상 하드 드라이브 만들기 창이 나오면 생성할 디스크 사이즈를 입력하고 [만들기]를 클릭해서 가상 하드 드라이브를 만듭니다.


3.     가상 하드 드라이브가 만들어지면 VisualBox 메인 창에서 생성된 드라이브를 선택하고 [설정] 을 클릭합니다. 다음과 같은 설정 창이 열리면 왼쪽에서 [저장소]를 선택하고 속성에서 [CD/DVD 드라이브(D)]를 클릭한 후 CentOS를 선택합니다.

 

4.     [네트워크]를 클릭하고 [어댑터 1] 탭에서 [브리지 어댑터]를 선택합니다. 그리고 하단의 고급을 클릭하고 무작위 모드를 [모두 허용]으로 선택합니다.


5.     이번에는 [어댑터 2] 탭을 클릭하고 [호스트 전용 어댑터]를 선택합니다. 그리고 하단의 고급을 클릭하여 무작위 모드를 [모두 허용]으로 선택합니다.

 

6.     설정을 모두 완료했으면 VirtualBox 메인 창에서 [시작]을 클릭합니다. CentOS 7 설치 화면이 열리면 [Install CentOS 7]을 선택합니다.


7.     WELCOME TO CENTOS 7이라는 문구와 함께 언어를 선택하라는 화면이 뜨면, 기본 설정값인 English로 두고, 하단의 [Continue] 버튼을 클릭합니다.

 

8.     CentOS 7CentOS 6 버전때와는 다르게 운영체제의 속성값을 한 화면에서 한번에 설정을 할 수 있습니다. 아래 보이는 화면이 바로 환경설정을 할 수 있는 화면입니다.

 

9.     환경설정 화면에서 가장 먼저 [NETWORK & HOST NAME] 선택합니다.아래와 같은 네트워크를 설정할 수 있는 화면이 뜨면 좌측의 [ON/OFF] 토글 버튼을 [ON]으로 가게 설정합니다. 그러면 아래와 같이 IP가 자동으로 설정되는 것을 확인할 수 있습니다. 또한 하단의 [Host name]을 다른 이름으로 수정하면 수정된 이름으로 호스트명을 변경할 수 있습니다. 네트워크 설정을 하고 상단의 [Done] 버튼을 클릭해 다시 환경설정 화면으로 돌아갑니다.

 

10.  이번에는 환경설정 화면에서 [INSTALLATION DESTINATION]을 선택합니다. 그러면 아래와 같이 CentOS를 설치할 하드디스크를 선택하라는 화면이 나옵니다. 선택할 수 있는 하드디스크는 하나밖에 없으므로 [ATA VBOX HARDDISK]를 선택하고 상단의 [Done] 버튼을 클릭합니다.


11.  운영체제를 설치할 하드디스크 설정이 완료되었으면 이번에는 [SOFTWARE SELECTION]을 선택하고 들어와 우측의 Base Environment에서 [Minimal Install]을 선택하고 좌측의 Add-Ons for Selected Environment에서 [Debugging Tools], [Compatibility Libraries], [Development Tools], [Security Tools]를 선택하고 상단의 [Done]를 클릭합니다.

 

12.  이번에는 환경설정 화면에서 [DATE & TIME]을 선택하고 들어오면 아래와 같이 세계 지도가 보입니다. 이때 대한민국을 찾아 마우스로 클릭합니다. 그러면 자동으로 상단의 Region Asia/Seoul로 설정이 됩니다. 설정을 완료했으면, 상단의 [Done] 버튼을 클릭하고 빠져나갑니다.


13.  모든 설정이 끝나고 나면 아래와 같이 경고 표시가 없는 화면으로 바뀝니다. 설치를 하기 위해서 하단의 [Begin Installation] 버튼을 클릭합니다.

 

14.  설치가 시작이 되면서 패스워드를 설정하는 화면이 아래와 같이 뜹니다. 그러면 우측의 [ROOT PASSWORD]를 선택합니다.

 

15.  ROOT PASSWORD 설정창으로 전환되면 패스워드를 입력하고 상단의 [Done]을 클릭합니다.

 


16.  패스워드 설정을 완료했으면 설치가 완료될때까지 잠시 기다립니다.

 

 

17.  드디어 CentOS 7 설치가 완료되었습니다. 하단의 [Rootboot] 버튼을 클릭합니다.