Upload
go-chiba
View
268
Download
0
Embed Size (px)
Citation preview
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
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が作られていない場合は?