1day cloud on_your_lab

19
1 Day Cloud on Your Lab - Apach CloudStack Advent Calendar ‘14 - Japan CloudStack User Group, Apache CloudStack Project, Go Chiba @go_chiba

Upload: go-chiba

Post on 14-Jul-2015

262 views

Category:

Software


0 download

TRANSCRIPT

1 Day Cloud on Your Lab- Apach CloudStack Advent Calendar ‘14 -

Japan CloudStack User Group,Apache CloudStack Project,

Go Chiba @go_chiba

About Me Go Chiba

– 某SIer勤務*Stackとかいじってます

Apache CloudStack は 趣味 です

– Apache CloudStack コミッター 兼 PMC メンバーメイン: ドキュメント/GUIの日本語化その他: コミッター選出, マーケティング . . .etc

– Contactmailto: [email protected] | [email protected]: @go_chiba

Introduction本資料は Apache CloudStack Advent Calendar 2014

12/8用の資料になります。

まだチャレンジ中の内容を

含むため何かありましたら

Twitter/Mailなどでお声かけください

Introduction 最近のCloudStackの状況

– Cloud Stack 4.5の新機能をチラ見する by @yterukawa

– Apache CloudStack 4.5.0 をコンパイルして使ってみるby @giraffeforestg

少しずつだが3rd Party連携がチラホラ

最新機能だけでなく既存の機能も確認しておきたい

Introduction ユーザー的観点

やっぱ気になる最新バージョン

でもビルド出来るか心配...そもそも開発じゃないのにビルドとか...

コミュニティ的観点ユーザーからのフィードバックは大事、とても大事...ユーザーへの配慮が足りない?(How to Buildのみ...)

In addition... ユーザー/Devのギャップ

– もっとユーザーフレンドリーな方法を

デザインが難しい– All-in-One だけじゃ物足りない(HA構成とか)

お手軽に触りたい– その日のうちに触れる環境を

そこで...

+

Why Ansible? sshでシンプル

– 泥臭いオペレーションも自動化できそう

pythonistaだから

– まぁ、最悪コードみればいいべ的な

ラップトップ環境を想定

– 数台の小規模環境ならSSHベースでもいいんじゃね?

EnvironmentsMBA(Mid 2011)

VirtualBox : v4.3.14 r95030

Vagrant : v1.6.5

Ansilbe : v1.7.2

CloudStack : 4.6-SNAPSHOT(master)

Details 開発メンバーの1人でもあるRohit氏のplaybookを参考

– https://github.com/bhaisaab/peppercorn

CentOS向けのタスクを追加

- name: Download packages(RedHat)when: ansible_os_family == "RedHat“ # Check OS Famillyget_url: dest=/home/vagrant/{{ item }}

url={{ jenkins_url }}{{ item }}with_items:- cloudstack-agent-4.6.0-SNAPSHOT.el6.x86_64.rpm- cloudstack-awsapi-4.6.0-SNAPSHOT.el6.x86_64.rpm

Details 本家のビルド済みパッケージを利用

– http://jenkins.buildacloud.com

– 最新のコード

– ”ある程度” Stable

Details githubからcloneしてhostsファイルを修正

その後、ansible-playbookでplaybookを実行

☁ $ git clone https://github.com/go/TestCloud.git13:03:10Cloning into 'TestCloud'...remote: Counting objects: 53, done.remote: Compressing objects: 100% (33/33), done.remote: Total 53 (delta 2), reused 50 (delta 2)Unpacking objects: 100% (53/53), done.Checking connectivity... done.☁ $ cd TestCloud13:03:56☁ TestCloud [master] $ ansible-playbook –i hosts playbook.yml

Details roles

– kvmKVMインストールbridge設定など

– nfsNFS用ディレクトリ作成など

– mysqlMySQLインストール設定ファイルのコピーなど

– managementCloudStackインストール初期設定など

.├── README.md├── Vagrantfile├── hosts├── playbook.yml└── roles

├── common│ ├── handlers│ └── tasks├── kvm│ ├── files│ ├── handlers│ ├── tasks│ └── templates├── management│ ├── meta│ ├── tasks│ └── vars├── mysql│ ├── handlers│ ├── tasks│ ├── templates│ └── vars└── nfs

├── files└── tasks

Result とりあえずサービスが動くところまで確認

Issues 遅い!

– 本家のJenkinsサーバー/リポジトリが遅い...(回線の問題?)

– 国内リポジトリ作る?

OR

– Code baseでパッケージビルドまでやっちゃう?

Issues 美しくない!

– 土日でゴリゴリしたからまだ不十分な点が多々あり

– ネットワーク周り

– 変数の集約化(バージョン, IPとか)

– Distribution部分のモジュール化(RedHat, Ubuntu)

- name: Install basic packages(Ubuntu)when: ansible_os_family == “Ubuntu“ # そもそもDistribution毎にファイル分割するべき......

- name: Install basic packages(RedHat)when: ansible_os_family == "RedHat“...

TODO 冪等性の向上

> 少しでもデプロイを早く!, 条件チェックを見直し

変数を整理> 複数バージョンを対象にデプロイできるように

- name: Setup CloudStack databaseshell: cloudstack-setup-databases cloud:cloudpassword@localhost --deploy-as=root -i

{{ ansible_ssh_host }}when: cloudstackinstalled|success # 条件は正しいか?run_once: trueargs:

creates: /var/lib/mysql/cloud # DBが作られていない場合は?

TODO All-in-One構成以外を定義

> マルチノードやHA構成もお手軽に試せるように

– 分散VR

– Inter VPC network ...etc

Happy Merry Christmas!!

それではみなさん良いクリスマスを♪