More Related Content Similar to MAASとJujuでつくるOpenStack環境構築入門 IceHouse対応版 - OpenStack最新情報セミナー 2014年10月 (20) More from VirtualTech Japan Inc. (20) MAASとJujuでつくるOpenStack環境構築入門 IceHouse対応版 - OpenStack最新情報セミナー 2014年10月4. MAAS䛻䛴䛔䛶
• Metal as a Service
• ≀⌮䝃䞊䝞䞊䜢⟶⌮㓄ୗ䛻⨨䛝䚸Ubuntu
Server䜢⡆༢䛻㓄ഛ䛷䛝䜛⤌䜏
• ≀⌮䝃䞊䝞䞊䛾䛻䜒䚸libvirt䛷⟶⌮䛥䜜
䛶䛔䜛௬䝬䝅䞁䜒⟶⌮ྍ⬟
㻠
5. Juju䛻䛴䛔䛶
• “䝏䝱䞊䝮”䛻᭩䛛䜜䛯ෆᐜ䛻ἢ䛳䛶䝋䝣䝖
䜴䜵䜰䜢䝃䞊䝞䞊䛻ᒎ㛤䛩䜛䝒䞊䝹
• ᒎ㛤䛧䛯䝏䝱䞊䝮䜢㐃ᦠ䛥䛫䜛䛣䛸䛷䚸
MySQL+WordPress䛺䛹䛾䜘䛖䛺ᒎ㛤䜢ྍ
⬟䛻䛩䜛
• MAAS䛸㐃ᦠ䛩䜛䛣䛸䛻䜘䛳䛶䚸䝋䝣䝖䜴䜵
䜰䛾≀⌮䝃䞊䝞䞊䜈䛾䝕䝥䝻䜲䜢ᐇ⌧
• ᒎ㛤䛿AWS䛺䛹䛾䜽䝷䜴䝗䜈䜒ᐇ⾜ྍ⬟
㻡
7. MAAS䛾ᵓ⠏
㻣
MAAS
(1)䝃䞊䝞䞊䛻MAAS䜢䜲䞁䝇䝖䞊
䝹䞉タᐃ
(2)䝜䞊䝗䛻䛺䜛䝬䝅䞁䜢PXE䝤䞊䝖䛧䛶
䚷䚷MAAS⟶⌮ୗ䛻Ⓩ㘓
9. juju bootstrap䛾ᐇ⾜
㻥
MAAS
+
juju-core
J
(5)juju bootstrap䝁䝬䞁䝗䛷
䚷 Juju⎔ቃ䝕䝥䝻䜲䜢ᣦ♧
(6)MAAS䛜⟶⌮ୗ䛾䝃䞊䝞䞊䜢䜚ᙜ䛶䚸
䚷䚷㟁※ᢞධ䞉Ubuntu䜲䞁䝇䝖䞊䝹
(7)Juju䛜䝕䝥䝻䜲䛥䜜䜛
10. 䝏䝱䞊䝮䛾䝕䝥䝻䜲
㻝㻜
MAAS
+
juju-core
J
(8)Juju䝁䝬䞁䝗䛷䝏䝱䞊䝮
䚷䛾䝕䝥䝻䜲䜢ᣦ♧
(9)MAAS䛜⟶⌮ୗ䛾䝃䞊䝞䞊䜢䜚ᙜ䛶䚸
䚷䚷㟁※ᢞධ䞉Ubuntu䜲䞁䝇䝖䞊䝹
(10)Juju䛜䝏䝱䞊䝮䜢䝕䝥䝻䜲
12. ᅇ䛾タィ䛾᪉㔪
• Ubuntu Server 14.04.1LTS䜢⏝
• Juju䜢⏝䛔䛶OpenStack䜢⡆༢䛻䝕䝥䝻䜲
• 䝕䝥䝻䜲䛩䜛䝬䝅䞁䛾⟶⌮䛻MAAS䜢⏝
• 2ྎ䛾≀⌮䝃䞊䝞䞊䜢⏝ព
– KVM䝩䝇䝖වMAAS䝃䞊䝞䞊
䠄䝁䞁䝢䝳䞊䝖䝜䞊䝗௨እ䛾䝏䝱䞊䝮䛿௬䝬
䝅䞁䛻ᒎ㛤䛩䜛䠅
– 䝁䞁䝢䝳䞊䝖䝜䞊䝗䠄Nova Compute⏝䝏䝱䞊䝮䠅
㻝㻞
14. ᚲせ䛺Juju Charm
• mysql
• rabbitmq-server
• keystone
• nova-cloud-controller
• nova-compute
• glance
• cinder
• quantum-gateway
• openstack-dashboard
㻝㻠
• juju(bootstrap)
18. Juju䛾䝛䝑䝖䝽䞊䜽䛾ᵓᡂ
• ⟶⌮⣔
– MAAS䛜DHCP+PXE䝤䞊䝖䛚䜘䜃DNS䜢ᥦ౪
– 䛾䝛䝑䝖䝽䞊䜽䛸DHCP䛜㔜」䛧䛺䛔䜘䛖䛻ὀព
– ⊂❧䛥䛫䜛䛛䚸VLAN䜢ศ䛡䜛䛺䛹䛾ᑐᛂ䛜ᚲせ
• 䝃䞊䝡䝇⣔(Floating IP⏝)
– Neutron+Open vSwitch䠄GRE䝖䞁䝛䝸䞁䜾䠅
– 䜲䞁䝇䝍䞁䝇䛜እ㒊䝛䝑䝖䝽䞊䜽䛻ฟ䜛䛯䜑䛾⤒
㊰䛸䛧䛶⏝
㻝㻤
20. ᮏ⎔ቃ䛻䛴䛔䛶
• KVM䝩䝇䝖䛾IP䜰䝗䝺䝇
– ⟶⌮⣔(eth0)䛿192.168.215.20䜢⏝
– 䝃䞊䝡䝇⣔(eth1)䛿172.16.215.20䜢⏝
• 䝁䞁䝢䝳䞊䝖䝜䞊䝗䛿HP䝃䞊䝞䞊䜢⏝
– iLO䛾IP䜰䝗䝺䝇䛿䝃䞊䝡䝇⣔䝉䜾䝯䞁䝖䛻タ
ᐃ䛩䜛
㻞㻜
21. ᮏ⎔ቃ䛾≀⌮タィ
KVM䝩䝇䝖
㻞㻝
䝁䞁䝢䝳䞊䝖䝜䞊䝗
(䛸䛧䛶HP iLO䜢⏝)
Internet
䝹䞊䝍䞊
eth0
eth1
eth0
iLO
V
M
(⟶⌮⣔)
(䝃䞊䝡䝇⣔)
䝝䝤
22. KVM䝩䝇䝖䛾๓‽ഛ
• Ubuntu Server䜢䜲䞁䝇䝖䞊䝹
– 䝧䞊䝇+SSH䝃䞊䝞䞊
• IP䜰䝗䝺䝇䜢タᐃ
• ௨ୗ䛾䝟䝑䜿䞊䝆䜢䜲䞁䝇䝖䞊䝹
• eth0䞉eth1䛾䝤䝸䝑䝆䜢సᡂ
#
apt-‐get
install
virt-‐manager
qemu-‐kvm
qemu-‐system
libvirt-‐bin
#
virsh
iface-‐bridge
eth0
br0
#
virsh
iface-‐bridge
eth1
br1
㻞㻞
23. NAT䛾タᐃ
• ⟶⌮⣔䛿䜲䞁䝍䞊䝛䝑䝖䛻᥋⥆䛷䛝䜛ᚲせ
䛜䛒䜛䛯䜑䚸NAT䜢タᐃ䛩䜛
• 䝃䞊䝡䝇⏝䛾IP䜰䝗䝺䝇タᐃ
– eth1䛾タᐃ䛾ୗ䛻௨ୗ䛾୍⾜䜢㏣グ
– pre-up iptables -t nat -A POSTROUTING -s
192.168.215.0/24 -o eth0 -j MASQUERADE
– ㉳ື䛩䜛
㻞㻟
24. ௬䝬䝅䞁䛾సᡂ
• 䝁䞁䝖䝻䞊䝷䞊䝜䞊䝗
– 4vCPU / 20GB mem / 50GB HDD / ⟶⌮NW(br1)䛻᥋⥆
• 䝛䝑䝖䝽䞊䜽䝜䞊䝗
– 1vCPU / 2GB mem / 10GB HDD / ⟶⌮NW(br1)䛸䝃䞊䝡䝇
NW(br0)䛻᥋⥆
• 䝇䝖䝺䞊䝆䝜䞊䝗
– 1vCPU / 2GB mem / 10GB HDD+50GB HDD / ⟶⌮
NW(br1)㻌䛻᥋⥆
• 䛂௬䝬䝅䞁䜢సᡂᚋ䛻ヲ⣽⏬㠃䜢㛤䛟䛃䜢㑅ᢥ䛧䚸
PXE䝤䞊䝖䜢᭱ඃඛ䛩䜛䜘䛖䛻タᐃ
• ௬䝬䝅䞁䛜㉳ື䛧䛯䜙䝅䝱䝑䝖䝎䜴䞁䛩䜛䠄OS䛾䜲䞁
䝇䝖䞊䝹䛿MAAS䛜⾜䛖䠅
㻞㻠
27. MAAS䛸Juju core䛾䜲䞁䝇䝖䞊䝹
• KVM䝩䝇䝖䛻௨ୗ䛾䝟䝑䜿䞊䝆䜢䜲䞁䝇
䝖䞊䝹
– KVM䝩䝇䝖䛸ྠᒃ䛥䛫䜛
– 䝸䝋䞊䝇䛻వ⿱䛜䛒䜜䜀௬䝬䝅䞁䜢ู㏵స
ᡂ䛩䜛䛸Ⰻ䛔
#
apt-‐get
install
maas
juju-‐core
• http://IP/MAAS䛻䜰䜽䝉䝇䛧䛶䚸ᣦ♧䛻
ᚑ䛳䛶䝹䞊䝖䝟䝇䝽䞊䝗䜢タᐃ
• 䝻䜾䜲䞁
㻞㻣
31. PXE䜲䝯䞊䝆䛾ྲྀᚓ
• [Import boot images]䜢䜽䝸䝑䜽
• Boot Images䛾䜹䜴䞁䝖䛜ቑ䛘䛯䜙
• 㐍ᤖ䛿Web⏬㠃䛻ฟ䛺䛔䛯䜑䚸☜ㄆ䛩䜛
䛻䛿/var/lib/maas/boot-resources䜢du䝁䝬䞁
䝗䛺䛹䛷ほᐹ䛩䜛
㻟㻝
35. 㟁※䝍䜲䝥䛾ᣦᐃ
• 䝁䞁䝢䝳䞊䝖䝜䞊䝗䠄HP iLO䜢ᐃ䠅
– ⮬ື䛷䝴䞊䝄䞊䞉䝟䝇䝽䞊䝗䛜㏣ຍ䛥䜜䜛
– 䝴䞊䝄䞊䛜䛺䛻䛛䜢⾜䛖ᚲせ䛿䛺䛔
– 䈜䜰䞁䜲䞁䝇䝖䞊䝹䛿ᡭື䛷ᾘ䛩ᚲせ䛒䜚
• ௬䝬䝅䞁
– [Power address]䛻Virsh䛾䜰䝗䝺䝇䜢ᣦᐃ
• qemu+ssh://user@localhost/system
– [Power ID]䛻௬䝬䝅䞁ྡ䜢ᣦᐃ
㻟㻡
36. ௬䝬䝅䞁䛾㟁※⟶⌮䛾
䛯䜑䛾‽ഛ
• maas䝴䞊䝄䞊䛛䜙user䝴䞊䝄䞊䛻SSH᥋⥆䛩䜛䛯
䜑䚸ୗ‽ഛ䜢䛧䛶䛚䛟
• ᡭ㡰
1. /home/maas䝕䜱䝺䜽䝖䝸䜢సᡂ䚸ᡤ᭷ᶒ䛾タᐃ
2. /etc/passwd䜢㛤䛝䚸maas䝴䞊䝄䞊䛾⾜䛾/bin/false䜢
/bin/bash䛻᭩䛝䛘䜛
3. su䝁䝬䞁䝗䛷䝴䞊䝄䞊⛣ື䠄su - maas䠅
4. maas䝴䞊䝄䞊䛾SSH㘽䜢䝟䝇䝽䞊䝗↓䛧䛷⏕ᡂ
5. user䝴䞊䝄䞊䛻maas䝴䞊䝄䞊䛾බ㛤㘽䜢
authorized_keys䛻Ⓩ㘓
6. maas䝴䞊䝄䞊䛷䝁䝬䞁䝗䜢ᐇ⾜䛧䛶☜ㄆ
$ virsh –c qemu+ssh://user@localhost/system list --all
㻟㻢
38. fast installer䛾タᐃ
• Ubuntu䜢㧗㏿䛷䜲䞁䝇
䝖䞊䝹䛷䛝䜛䝰䞊䝗䜢䝜䞊
䝗䛻ᑐ䛧䛶タᐃ
• 䛩䜉䛶䛾䝜䞊䝗䜢㑅ᢥ䛧䚸
[Bulk action]䛷[Mark
nodes as using the fast
installer]䜢㑅䜣䛷ᐇ⾜
• 䝁䝭䝑䝅䝵䞁䜒ᐇ⾜ྍ⬟
㻟㻤
39. 䝜䞊䝗䜈䝍䜾䜢䛡䜛
• 䝍䜾䛿juju䛻䝏䝱䞊䝮䜢䜚ᙜ䛶䜛䛸䛝䛻ᚲせ
䛻䛺䜛
• 䝁䝬䞁䝗䛛䜙䛾䜏᧯సྍ⬟
• ᡭ㡰
– maas login maas MAAS URL MAAS KEY䜢
ᐇ⾜䛧䛶䝻䜾䜲䞁
– maas maas nodes list䜢ᐇ⾜䛧䛶䚸䝸䝇䝖䜢ྲྀᚓ
– maas maas tags new name=䝍䜾ྡ䜢ᐇ⾜䛧䛶䝍
䜾䜢సᡂ
– maas maas tag update-nodes 䝍䜾ྡ add=䝜䞊䝗
䛾UUID䜢ᐇ⾜䛧䛶䝜䞊䝗䛻䝍䜾䜢䛡䜛
㻟㻥
40. 䝇䜽䝸䝥䝖䜢సᡂ䛧䛶ຠ⋡
• 䝍䜾䛿䝜䞊䝗䝸䝇䝖䛜JSON䛷䛒䜛䛣䛸䜢ά⏝䛧䛶䝇䜽
䝸䝥䝖䛺䛹䜢స䜛䛸Ⰻ䛔
– PHP䛾(༢⣧䛻䝜䞊䝗ྡ䛸ྠ䛨ྡ๓䛾䝍䜾䜢䛴䛡䜛)
?php
exec(maas maas nodes list, $json);
$json = implode(n, $json);
$data = json_decode($json);
foreach ($data as $item) {
$host = explode(., $item-hostname);
$id = $item-system_id;
print exec(maas maas tags new name={$host[0]});
print exec(maas maas tag update-nodes {$host[0]} add={$id});
}
?
㻠㻜
42. Juju⎔ቃ䝣䜯䜲䝹䛾సᡂ
• 䝩䞊䝮䝕䜱䝺䜽䝖䝸䛷juju init䝁䝬䞁䝗䜢ᐇ⾜
• .juju䝕䜱䝺䜽䝖䝸䛜సᡂ䛥䜜䜛
• .juju/environments.yaml䜢⦅㞟
– juju䛜䝏䝱䞊䝮䛾ෆᐜ䜢䝕䝥䝻䜲䛩䜛⎔ቃ䛻䜰
䜽䝉䝇䛩䜛䛯䜑䛾ㄆドሗ䛺䛹䜢グ㏙䛩䜛タ
ᐃ䝣䜯䜲䝹
– グ㏙ᚋ䛿䝩䞊䝮䝕䜱䝺䜽䝖䝸䛻䝞䝑䜽䜰䝑䝥䛧䛶
䛚䛟䛸Ⰻ䛔䠄స䜚䛺䛚䛧䛩䜛䛸䛝䛻౽䠅
㻠㻞
43. environments.yaml䛾グ㏙
• maas-oauth䛾ሗ䛿MAAS⟶⌮⏬㠃䛾
user preferences䛾䝨䞊䝆䛻䛒䜛
㻠㻟
default: maas
environments:
maas:
type: maas
maas-server: 'http://192.168.215.20/MAAS/'
maas-oauth: '34snhJ2RLLH9Swu..........XsgmnzqwbQ’
admin-secret: password ←juju-gui䛻ධ䜛䛯䜑䛾䝟䝇䝽䞊䝗
authorized-keys-path: ~/.ssh/authorized_keys
44. juju bootstrap䜢ᐇ⾜
• ௨ୗ䛾䝁䝬䞁䝗䜢ᐇ⾜䛩䜛
$ juju bootstrap --constraints tags=juju
• juju䝬䝅䞁䛜㉳ື䛧䛶䚸⎔ቃ䛜ᵓ⠏䛥䜜䜛
• ௨ୗ䛾䝁䝬䞁䝗䜢ᐇ⾜䛧䛶䚸juju-gui䝏䝱䞊
䝮䜢䜲䞁䝇䝖䞊䝹
㻠㻠
$ juju deploy juju-gui --to 0
48. openstack.yaml䛾సᡂ
• openstack䛾ྛ
䝏䝱䞊䝮䛻ᑐ䛩䜛
タᐃ䛿yaml䝣䜯䜲
䝹䛷グ㏙䛩䜛
• ྑ䛾㏻䜚䝣䜯䜲䝹䜢
సᡂ䛧䛶䚸䝩䞊䝮
䝕䜱䝺䜽䝖䝸䛻㓄⨨
䛩䜛
㻠㻤
keystone:
admin-password: password
admin-token: ubuntuopenstack
nova-cloud-controller:
network-manager: Neutron
quantum-security-groups: yes
cinder:
block-device: vdb
overwrite: true
quantum-gateway:
ext-port: eth1
openstack-dashboard:
webroot: /
49. OpenStack䝏䝱䞊䝮䛾䝕䝥䝻䜲
• ௨ୗ䛾䝁䝬䞁䝗䜢ᐇ⾜䛧䛶䚸䝏䝱䞊䝮䜢䝕䝥
䝻䜲䛩䜛
$ juju deploy --config openstack.yaml --constraints tags=neutron quantum-gateway
$ juju deploy --config openstack.yaml --constraints tags=cinder cinder
$ juju deploy --constraints tags=compute nova-compute
$ juju deploy --to lxc:0 mysql
$ juju deploy --to lxc:0 rabbitmq-server
$ juju deploy --to lxc:0 glance
$ juju deploy --config openstack.yaml --to lxc:0 keystone
$ juju deploy --config openstack.yaml --to lxc:0 nova-cloud-controller
$ juju deploy --config openstack.yaml --to lxc:0 openstack-dashboard
㻠㻥
50. 䝕䝥䝻䜲䜸䝥䝅䝵䞁
• --config xxx.yaml
– 䝏䝱䞊䝮䛾䜸䝥䝅䝵䞁䛜グ㏙䛥䜜䛶䛔䜛䝣䜯䜲䝹䜢
ᣦᐃ
• --constraints tags=xxx
– xxx䛾䝍䜾䛜䛔䛶䛔䜛䝬䝅䞁䛾䛹䜜䛛䛻䝕䝥䝻
䜲
• --to
– ᣦᐃ䛧䛯䝬䝅䞁ID䛻䝕䝥䝻䜲
– --to 0 䛺䜙ID䛜0䛾䝬䝅䞁䛻䝕䝥䝻䜲
– --to lxc:0 䛺䜙ID䛜0䛾䝬䝅䞁䛻LXC䝁䞁䝔䝘䛸䛧
䛶䝕䝥䝻䜲
㻡㻜
53. 㛵㐃䛡䝁䝬䞁䝗
$ juju add-relation keystone mysql
$ juju add-relation nova-cloud-controller rabbitmq-server
$ juju add-relation nova-cloud-controller mysql
$ juju add-relation nova-cloud-controller keystone
$ juju add-relation nova-compute:amqp rabbitmq-server:amqp
$ juju add-relation nova-compute mysql
$ juju add-relation nova-compute nova-cloud-controller
$ juju add-relation glance mysql
$ juju add-relation glance keystone
$ juju add-relation glance nova-compute
$ juju add-relation glance nova-cloud-controller
$ juju add-relation cinder mysql
$ juju add-relation cinder glance
$ juju add-relation cinder rabbitmq-server
$ juju add-relation cinder nova-cloud-controller
$ juju add-relation cinder keystone
$ juju add-relation quantum-gateway mysql
$ juju add-relation quantum-gateway rabbitmq-server
$ juju add-relation quantum-gateway nova-cloud-controller
$ juju add-relation openstack-dashboard keystone
㻡㻟
Editor's Notes 変更履歴:
20120829 遠山 Ubuntu 12.04対応