Git Product home page Git Product logo

cloud-init's Introduction

Cloud-Init trong OpenStack Image Service

1. Giới thiệu về Cloud init trong OpenStack

Cloud- init là một công cụ được sử dụng để thực hiện các thiết lập ban đầu trên các Nodes Cloud, bao gồm networking, SSH keys, timezone, user data injection, and more. Nó là một dịch vụ chạy trên Guest và hỗ trợ trên các bản phân phối của Linux, bao gồm: Fedora, Rhel, Ubuntu. Tích hợp hỗ trợ nó vào trong oVirt sẽ giúp tạo điều kiện cung cấp các máy ảo. Nó được sử dụng rộng rãi trong các Cloud Soffware như là OpenStack (thông qua Heat) cũng như các nhà cung cấp như là Amazon.

Mô tả chi tiết

Sử dụng Cloud- init để giúp cung cấp, đáp ứng yêu cầu của Guest. Đối với máy ảo trong Cloud, điều này thường được thực hiện trong quá trình tạo Image. Sau khi cài đặt gói, Cloud- nit sẽ bắt đầu quá trình khời động và tìm kiếm "data sources" cái mà cung cấp cho nó các hướng dẫn về cấu hình. Các nguồn này được lưu trữ trên VM.

Đối với Python2.6 nguồn này được lưu trong thư mục /usr/lib/python2.6/site-packages/cloudinit/CloudConfig/.

Đối với Python2.7 nguồn này được lưu trong thư mục /usr/lib/python2.7/dist-packages/cloudinit/CloudConfig/

File cấu hình mặc định của Cloud- init nằm ở /etc/cloud/cloud.cfg

2. Cách làm việc của Cloud- init

File cấu hình Cloud- init /etc/cloud/cloud.cfg chứa mặc định 3 modul là: Cloud_init_modules, Cloud_config_modules, Cloud_final_module.

img

Ở trong 3 modules này chứa Jobs mặc định của Cloud- init, ta có thể thay đổi các Jobs này, định nghĩa ra các Jobs mới

img

Ở đây mình đã định nghĩa ra Job "mymodule" mới trong phần Cloud_congif_modules, file này nêu ra đầu mục của các jobs con. Trong thư mục /usr/lib/python2.7/dist-packages/cloudinit/CloudConfig/ bạn cũng phải viết thêm 1 file cc_mymodule.py mới lập trình theo ngôn ngữ Python, file này chịu trách nhiệm thực hiện theo thông số đầu vào mà người dùng đưa ra có thể là cài đặt package, sửa file cấu hình, chèn passwd, ip, host.... Các đầu mục trong /etc/cloud/cloud.cfg sẽ được map với code python.

img

Ta sẽ tạo ra 1 file định dạng theo chuẩn của Cloud- init, file này sẽ được tạo trên máy chủ cài OpenStack hoặc chèn trực tiếp trên DashBoard. Đoạn code này chứa đầu mục Jobs mà ta muốn instance thực hiện khi nó boot, nó được coi như thông số đầu vào cho file chứa code python trong file cc_mymodule.py.

Sau khi instance được tạo và boot lên lần đầu tiên nó sẽ đồng thời thực hiện các cấu hình mà ta đã viết trong file trên. Việc Cloud- init thực hiện được công việc này là do data trong file chứa dữ liệu đầu vào trên máy chủ OpenStack theo các đầu mục sẽ truyền vào trong file chứa code python định nghĩa công việc cần thực hiện cc_mymodule.py đã có sẵn trong instance khi tạo (vì instance đã được cài cloud- init sẵn).

3. Thao tác làm việc với Cloud- init

Các bước tạo Image có sẵn Cloud- init (thực hiện trên máy cài Ubuntu 1204 desktop và dùng Virtual machine để tạo VM)

  • B1: Tạo một VM
  • B2: Install Os
  • B3: Install Cloud- init
  • B4: Chuẩn bị đoạn code python viết cho Jobs mà ta muốn thực hiện sau đó sửa file cấu hình /etc/cloud/cloud.cfg sao cho map tên đầu mục với code đã viết.
  • B5: Tạo ra image từ VM trên (định dạng cho image(qcow2), nén image lại cho nhỏ)
  • B6: Đẩy image vừa tạo lên máy chủ OpenStack

Ví dụ: ta chèn password để login vào image

Đoạn code theo định dạng của Cloud- init

img

Các file cấu hình = python

img

Các Jobs trong file /etc/cloud/cloud.cfg

img

a. Dùng dòng lệnh để chèn data sources vào trong Instances (thực hiện trên máy chủ cài OpenStack)

Vừa tạo instance vừa chèn file uer-data

nova boot cnuytest --image ubuntu1204 --flavor 1 --security-groups default --nic net-id=64abc0f8-5670-4e70-a3a5
-b067c2cb6e63 --user-data testcloud-init.txt
  • Đợi instance boot xong, đăng nhập với uer: ubuntu và passwd giống như trong file testcloud-init.txt
b. Dùng giao diện Dashboard để tạo instance và chèn file cloud- init
  • Tạo máy ảo bằng dashboard

img

  • Nhập đoạn code theo Syntax của cloud-init

img

  • Sau khi máy ảo được tạo xong, login bằng uer: ubuntu và pass: auyvl ( :D )

cloud-init's People

Contributors

caongocuy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.