SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
Fabric による CloudStack の自動インストール
〜簡単に検証構築を繰り返し構築する方法〜
第 15 回 CloudStack ユーザ会
in 北海道
2013 年 9 月 13 日
中島 博行
自己紹介
●
CloudStack 歴:約 1 年
●
使えるプログラミング言語:パスカル
※ かれこれ 10 年以上も昔にやった大学の授業
でならった程度で、それ以外の言語はちゃん
と勉強したことがありません。
⇨ つまり、この発表は、それくらいの人でも簡単につ
いてこれる内容です。でも、知っておくとそこそこ
便利です。よかったら覚えて帰ってください。
目次
●
検証環境構築の問題点
●
自動デプロイツール Fabric の紹介
●
Fabric の使い方
●
Fabric による CloudStack の自動インストール
(おまけ) Fabric のインストール
環境構築は大変だ!
●
検証を繰り返し行うためには、検証環境を何
度も構築することになる。
●
この繰り返し構築の手間が馬鹿にならない。
●
検証環境構築を手軽に自動化できないか??
●
そこで自動化ツール Fabric を使ってみる!
環境構築は大変だ!
●
検証を繰り返し行うためには、検証環境を何
度も構築することになる。
●
この繰り返し構築の手間が馬鹿にならない。
●
検証環境構築を手軽に自動化できないか??
●
そこで自動化ツール Fabric を使ってみる!
Fabric とは
●
シェルスクリプトより簡単に複雑なことができる
– 難しいことを考えなくも簡単に SSH できます
– 必要なファイルも簡単に put/get できます
●
Chef や Puppet よりも覚えることが少なく、リモート
のサーバへのインストールも不要
– 最低限、 run と put の 2 つのコマンドを知って
いれば大丈夫です。
●
スクリプトファイルは、 python で書かれている
使い方
●
クライアント側に Fabric をインストールします
●
リモート側のサーバは、 SSH ができるように
なっている。
●
これだけです。
●
思いのほか簡単ですよ。
実演
●
リモート環境のサーバに
① ログイン
② ホスト名を表示( hostname --fqdn )
③CentOS のアップデート( yum -y update )
④apache のインストール( yum -y install httpd )
してみます。
VM
【コマンド】 fab httpd http_install -f apache_install.py
httpd.local
ホストの指定 タスクの指定 利用するスクリプトファイルの指定
CloudStack に適用する
●
CloudStack の環境構築はめんどくさい
●
なのに新しいバージョンが頻繁に出るし、い
ろいろあって作り直したくなる
●
CloudStack のインストールに Fabric を活用して
みます。
CloudStack のちょっとおさらい
CloudStack ってざっくり言うと、これらの要素が必要です。
①Management ②Hypervisor ④PS/SS③Database
今回は、 VMwareFusion を用いて事前に VM を 2 台用意し、
1 台目に①、③、④を 2 台目に②をインストールします。
VM1
CSM
VM2
KVM①Mng
③DB
④PS/SS
②Hypervisor
(KVM)
実際の CloudStack のインストール
<CSM>
vi /etc/yum.repos.d/cloudstack.repo
--
[CloudStack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/rhel/4.1/
enabled=1
gpgcheck=0
--
yum -y install ntp
vi /etc/ntp.conf
--
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
server -4 ntp.xxx.xxx
--
service ntpd start
ntpq -p
chkconfi g ntpd on
yum -y install cloudstack-management
(DB server)
yum -y install mysql-server
vi /etc/my.cnf
--
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'
--
service mysqld start
chkconfi g mysqld on
mysql_secure_installation
Enter current password for root (enter for none):enter key
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
rpm -qa | grep selinux
vi /etc/selinux/confi g
--
SELINUX=permissive
--
setenforce permissive
cloudstack-setup-databases cloud:password@localhost --deploy-as=root:password
cloudstack-setup-management
<KVM>
vi /etc/yum.repos.d/cloudstack.repo
--
[CloudStack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/rhel/4.1/
enabled=1
gpgcheck=0
--
yum -y install ntp
vi /etc/ntp.conf
--
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
server -4 ntp.nttcloud.net
--
service ntpd start
ntpq -p
chkconfi g ntpd on
yum -y install cloudstack-agent
vi /etc/libvirt/libvirtd.conf
--
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0
--
vi /etc/sysconfi g/libvirtd
--
LIBVIRTD_ARGS="--listen"
--
service libvirtd restart
rpm -qa | grep selinux
vi /etc/selinux/confi g
--
SELINUX=permissive
--
setenforce permissive
iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp -m tcp --dport 1798 -j ACCEPT
iptables -I INPUT -p tcp -m tcp --dport 16509 -j ACCEPT
iptables -I INPUT -p tcp -m tcp --dport 5900:6100 -j ACCEPT
iptables -I INPUT -p tcp -m tcp --dport 49152:49216 -j ACCEPT
iptables-save > /etc/sysconfi g/iptables
service rpcbind start
service nfs start
chkconfi g nfs on
chkconfi g rpcbind on
reboot
mkdir /primarymount
mount -t nfs csm:/export/primary /primarymount
umount /primarymount
mkdir /secondarymount
mount -t nfs csm:/export/secondary /secondarymount
umount /secondarymount
(NFS server)
yum -y install nfs-utils
mkdir -p /export/primary
mkdir -p /export/secondary
vi /etc/exports
--
/export *(rw,async,no_root_squash)
--
exportfs -a
vi /etc/sysconfi g/nfs
--
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020
--
vi /etc/sysconfi g/iptables
--
:INPUT ACCEPT [0:0]
-A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p udp --dport 662 -j ACCEPT
--
service iptables restart
service iptables save
vi /etc/idmapd.conf
--
Domain = local
--
reboot
service rpcbind start
service nfs start
chkconfi g nfs on
chkconfi g rpcbind on
reboot
/
そこで Fabric 化してみます!
これを毎回手打ちは大変ですね。
CloudStack インストールの Fabric 化
fab csm csm_install kvm kvm_install -f acs411.py
だけです!!本当に簡単ですよね。
※ 上記でできるのは、 GUI ログインの手前まで。
※ ゾーンの作成等は、手動になります。
一度、 Fabric スクリプトを書いておけば、何度も構
築ができる。
また、バージョンアップ等でインストール方法が多
少変更になってもスクリプトを直すだけで簡単に対
応可能!
今後の展望
●
GUI から設定するゾーン作成後も含めた自動化
●
VM 自体のデプロイ及び起動の自動化
ご清聴ありがとうございました。
(参考)インストール方法
● For mac
1.AppStore Xcode
2.Xcode CommandLineTools
3.brew
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
4.python
brew install python
export PATH=/usr/local/share/python:$PATH
5.pip
sudo easy_install pip
sudo pip install pycrypto
6.Fabric
sudo pip install fabric
(参考)用意した VM のスペック
<CSM>
ipaddress 172.16.192.10
netmask 255.255.255.0
InstallType BasicServer
OS CentOS6.3
disk 80GB
CPU 1
Mem 512 MB
<KVM>
ipaddress 172.16.192.11
netmask 255.255.255.0
InstallType VirtualHost
OS CentOS6.3
disk 20GB
CPU 4 コア
Mem 2,560MB
VMwareFusion だと、 VM 作成時に『プロセッサとメモリ』の設
定画面の『詳細オプション』の『この仮想マシンのハイパー
バイザアプリケーションを有効にする』をオンにする必要が
あります。
(参考) CloudStack の Fabric インストールスクリプト
from fabric.api import env,put,run
def csm() :
env.user = 'root'
env.password = 'password'
env.hosts = ['172.16.192.10']
def kvm() :
env.user = 'root'
env.password = 'password'
env.hosts = ['172.16.192.20']
def csm_install() :
run('yum -y install ntp')
put('※1/ntp.conf','/etc/ntp.conf')
run('/etc/init.d/ntpd start')
run('ntpq -p')
run('chkconfig ntpd on')
put('※1/cloudstack.repo','/etc/yum.repos.d/cloudstack.repo')
run('yum -y install cloudstack-management')
run('yum -y install mysql-server')
put('※1/mysql.cnf','/etc/my.cnf')
run('/etc/init.d/mysqld start')
run('chkconfig mysqld on')
run('mysql -u root -e "SET PASSWORD=PASSWORD(%s);"'%("'password'"))
run('mysql -uroot -ppassword -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;"')
put('※1/selinuxconfig','/etc/selinux/config')
run('setenforce permissive')
run('cloudstack-setup-databases cloud:password@localhost --deploy-as=root:password')
run('yum -y install nfs-utils')
run('mkdir -p /export/primary')
run('mkdir -p /export/secondary')
put('※1/exports','/etc/exports')
run('exportfs -a')
put('※1/nfs.conf','/etc/sysconfig/nfs')
put('※1/iptables','/etc/sysconfig/iptables')
run('/etc/init.d/iptables restart')
run('/etc/init.d/iptables save')
put('※1/idmapd.conf','/etc/idmapd.conf')
run('/etc/init.d/rpcbind start')
run('/etc/init.d/nfs start')
run('chkconfig nfs on')
run('chkconfig rpcbind on')
run('cloudstack-setup-management')
run('/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F')
run('reboot')
def kvm_install() :
run('yum -y install ntp')
put('※1/ntp.conf','/etc/ntp.conf')
run('/etc/init.d/ntpd start')
run('ntpq -p')
run('chkconfig ntpd on')
put('※1/cloudstack.repo','/etc/yum.repos.d/cloudstack.repo')
run('yum -y install cloudstack-agent')
put('※1/libvirtd.conf','/etc/libvirt/libvirtd.conf')
put('※1/syslibvirtd.conf','/etc/sysconfig/libvirtd')
run('/etc/init.d/libvirtd start')
put('※1/selinuxconfig','/etc/selinux/config')
run('setenforce permissive')
run('iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT')
run('iptables -I INPUT -p tcp -m tcp --dport 1798 -j ACCEPT')
run('iptables -I INPUT -p tcp -m tcp --dport 16509 -j ACCEPT')
run('iptables -I INPUT -p tcp -m tcp --dport 5900:6100 -j ACCEPT')
run('iptables -I INPUT -p tcp -m tcp --dport 49152:49216 -j ACCEPT')
run('iptables-save > /etc/sysconfig/iptables')
run('service rpcbind start')
run('service nfs start')
run('chkconfig nfs on')
run('chkconfig rpcbind on')
run('mkdir /primarymount')
run('mount -t nfs csm:/export/primary /primarymount')
run('umount /primarymount')
run('mkdir /secondarymount')
run('mount -t nfs csm:/export/secondary /secondarymount')
run('umount /secondarymount')
run('reboot')
※1 の部分は自分の端末のパスを書いてください。
また put した各ファイル( ntp.conf , cloudstack.repo , mysql.cnf , selinuxconfig , exports , nfs.conf , iptables , idmapd.conf , libvirtd.conf ,syslibvirtd.conf )
は、各自の環境に合わせて事前に作成してください。

Contenu connexe

Tendances

Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825hiro345
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会Yasutaka Hamada
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築Saito5656
 
Wowzaを用いた配信基盤 Takusuta tech conf01
Wowzaを用いた配信基盤 Takusuta tech conf01Wowzaを用いた配信基盤 Takusuta tech conf01
Wowzaを用いた配信基盤 Takusuta tech conf01Kazuhiro Ota
 
Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由Tetsurou Yano
 
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたEmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたkyon mm
 
Rancher で Docker 利用!
Rancher で Docker 利用!Rancher で Docker 利用!
Rancher で Docker 利用!Tetsurou Yano
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tinygu4
 
100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ-
100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ- 100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ-
100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ- Naoto MATSUMOTO
 
WebOS Open Source Edition を試してみた
WebOS Open Source Edition を試してみたWebOS Open Source Edition を試してみた
WebOS Open Source Edition を試してみたTetsuyuki Kobayashi
 
Vagrant入門以前
Vagrant入門以前Vagrant入門以前
Vagrant入門以前katanyan
 
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...mganeko
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippboxGo Chiba
 
勉強会0614 vagrant
勉強会0614 vagrant勉強会0614 vagrant
勉強会0614 vagrantYu Ito
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドMasanori Nara
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
Vagrant - 最近流行ってるらしいけど何者?
Vagrant - 最近流行ってるらしいけど何者?Vagrant - 最近流行ってるらしいけど何者?
Vagrant - 最近流行ってるらしいけど何者?Yoshinori Nakanishi
 
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方Kamimura Taichi
 
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6Yukiko Tamiya
 

Tendances (20)

Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
 
WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築WSL2+docker+JupyterとVS Codeリモート環境の構築
WSL2+docker+JupyterとVS Codeリモート環境の構築
 
Wowzaを用いた配信基盤 Takusuta tech conf01
Wowzaを用いた配信基盤 Takusuta tech conf01Wowzaを用いた配信基盤 Takusuta tech conf01
Wowzaを用いた配信基盤 Takusuta tech conf01
 
Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由Rancher と GitLab を使う3つの理由
Rancher と GitLab を使う3つの理由
 
Packerで自動化
Packerで自動化Packerで自動化
Packerで自動化
 
EmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べたEmitJSの環境をちょこっと調べた
EmitJSの環境をちょこっと調べた
 
Rancher で Docker 利用!
Rancher で Docker 利用!Rancher で Docker 利用!
Rancher で Docker 利用!
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tiny
 
100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ-
100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ- 100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ-
100GbE NICを使ったデータセンター・ネットワーク実証実験 -メモ-
 
WebOS Open Source Edition を試してみた
WebOS Open Source Edition を試してみたWebOS Open Source Edition を試してみた
WebOS Open Source Edition を試してみた
 
Vagrant入門以前
Vagrant入門以前Vagrant入門以前
Vagrant入門以前
 
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
Node.js x Headless Chrome for WeRTC MCU / Node.js x Chrome headless で、お手軽WebR...
 
Introduction of skippbox
Introduction of skippboxIntroduction of skippbox
Introduction of skippbox
 
勉強会0614 vagrant
勉強会0614 vagrant勉強会0614 vagrant
勉強会0614 vagrant
 
kpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルドkpackによるコンテナイメージのビルド
kpackによるコンテナイメージのビルド
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
Vagrant - 最近流行ってるらしいけど何者?
Vagrant - 最近流行ってるらしいけど何者?Vagrant - 最近流行ってるらしいけど何者?
Vagrant - 最近流行ってるらしいけど何者?
 
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方
 
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
Node.jsでDroneたちをめっちゃ簡単にHACKする話 JSオジサン#6
 

Similaire à Fabricによるcloud stackインストール自動化

今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門Masahito Zembutsu
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!Midori Oge
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Yasuhiro Arai
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストールYasuhiro Arai
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座Masahito Zembutsu
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西Masahide Yamamoto
 
もしCloudStackのKVMホストでPCIパススルーできるようになったら
もしCloudStackのKVMホストでPCIパススルーできるようになったらもしCloudStackのKVMホストでPCIパススルーできるようになったら
もしCloudStackのKVMホストでPCIパススルーできるようになったらTakuma Nakajima
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on dockerHiroshi Miura
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)Daisuke Ikeda
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2Masahide Yamamoto
 
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry(続) はじめてのCloud Foundry
(続) はじめてのCloud FoundryTomohiro Ichimura
 
Cloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続するCloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続するRyo Ishii
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Masahito Zembutsu
 
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)Satoshi Shimazaki
 
20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会samemoon
 

Similaire à Fabricによるcloud stackインストール自動化 (20)

今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
【18-E-3】クラウド・ネイティブ時代の2016年だから始める Docker 基礎講座
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
もしCloudStackのKVMホストでPCIパススルーできるようになったら
もしCloudStackのKVMホストでPCIパススルーできるようになったらもしCloudStackのKVMホストでPCIパススルーできるようになったら
もしCloudStackのKVMホストでPCIパススルーできるようになったら
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Building production server on docker
Building production server on dockerBuilding production server on docker
Building production server on docker
 
Lxc on cloud
Lxc on cloudLxc on cloud
Lxc on cloud
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
コンテナ情報交換会2
コンテナ情報交換会2コンテナ情報交換会2
コンテナ情報交換会2
 
Open VZ
Open VZOpen VZ
Open VZ
 
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
 
Cloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続するCloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続する
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
 
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
 
20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会
 

Dernier

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Dernier (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

Fabricによるcloud stackインストール自動化

  • 1. Fabric による CloudStack の自動インストール 〜簡単に検証構築を繰り返し構築する方法〜 第 15 回 CloudStack ユーザ会 in 北海道 2013 年 9 月 13 日 中島 博行
  • 2. 自己紹介 ● CloudStack 歴:約 1 年 ● 使えるプログラミング言語:パスカル ※ かれこれ 10 年以上も昔にやった大学の授業 でならった程度で、それ以外の言語はちゃん と勉強したことがありません。 ⇨ つまり、この発表は、それくらいの人でも簡単につ いてこれる内容です。でも、知っておくとそこそこ 便利です。よかったら覚えて帰ってください。
  • 3. 目次 ● 検証環境構築の問題点 ● 自動デプロイツール Fabric の紹介 ● Fabric の使い方 ● Fabric による CloudStack の自動インストール (おまけ) Fabric のインストール
  • 6. Fabric とは ● シェルスクリプトより簡単に複雑なことができる – 難しいことを考えなくも簡単に SSH できます – 必要なファイルも簡単に put/get できます ● Chef や Puppet よりも覚えることが少なく、リモート のサーバへのインストールも不要 – 最低限、 run と put の 2 つのコマンドを知って いれば大丈夫です。 ● スクリプトファイルは、 python で書かれている
  • 7. 使い方 ● クライアント側に Fabric をインストールします ● リモート側のサーバは、 SSH ができるように なっている。 ● これだけです。 ● 思いのほか簡単ですよ。
  • 8. 実演 ● リモート環境のサーバに ① ログイン ② ホスト名を表示( hostname --fqdn ) ③CentOS のアップデート( yum -y update ) ④apache のインストール( yum -y install httpd ) してみます。 VM 【コマンド】 fab httpd http_install -f apache_install.py httpd.local ホストの指定 タスクの指定 利用するスクリプトファイルの指定
  • 10. CloudStack のちょっとおさらい CloudStack ってざっくり言うと、これらの要素が必要です。 ①Management ②Hypervisor ④PS/SS③Database 今回は、 VMwareFusion を用いて事前に VM を 2 台用意し、 1 台目に①、③、④を 2 台目に②をインストールします。 VM1 CSM VM2 KVM①Mng ③DB ④PS/SS ②Hypervisor (KVM)
  • 11. 実際の CloudStack のインストール <CSM> vi /etc/yum.repos.d/cloudstack.repo -- [CloudStack] name=cloudstack baseurl=http://cloudstack.apt-get.eu/rhel/4.1/ enabled=1 gpgcheck=0 -- yum -y install ntp vi /etc/ntp.conf -- #server 0.centos.pool.ntp.org #server 1.centos.pool.ntp.org #server 2.centos.pool.ntp.org server -4 ntp.xxx.xxx -- service ntpd start ntpq -p chkconfi g ntpd on yum -y install cloudstack-management (DB server) yum -y install mysql-server vi /etc/my.cnf -- innodb_rollback_on_timeout=1 innodb_lock_wait_timeout=600 max_connections=350 log-bin=mysql-bin binlog-format = 'ROW' -- service mysqld start chkconfi g mysqld on mysql_secure_installation Enter current password for root (enter for none):enter key Set root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y rpm -qa | grep selinux vi /etc/selinux/confi g -- SELINUX=permissive -- setenforce permissive cloudstack-setup-databases cloud:password@localhost --deploy-as=root:password cloudstack-setup-management <KVM> vi /etc/yum.repos.d/cloudstack.repo -- [CloudStack] name=cloudstack baseurl=http://cloudstack.apt-get.eu/rhel/4.1/ enabled=1 gpgcheck=0 -- yum -y install ntp vi /etc/ntp.conf -- #server 0.centos.pool.ntp.org #server 1.centos.pool.ntp.org #server 2.centos.pool.ntp.org server -4 ntp.nttcloud.net -- service ntpd start ntpq -p chkconfi g ntpd on yum -y install cloudstack-agent vi /etc/libvirt/libvirtd.conf -- listen_tls = 0 listen_tcp = 1 tcp_port = "16509" auth_tcp = "none" mdns_adv = 0 -- vi /etc/sysconfi g/libvirtd -- LIBVIRTD_ARGS="--listen" -- service libvirtd restart rpm -qa | grep selinux vi /etc/selinux/confi g -- SELINUX=permissive -- setenforce permissive iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 1798 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 16509 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 5900:6100 -j ACCEPT iptables -I INPUT -p tcp -m tcp --dport 49152:49216 -j ACCEPT iptables-save > /etc/sysconfi g/iptables service rpcbind start service nfs start chkconfi g nfs on chkconfi g rpcbind on reboot mkdir /primarymount mount -t nfs csm:/export/primary /primarymount umount /primarymount mkdir /secondarymount mount -t nfs csm:/export/secondary /secondarymount umount /secondarymount (NFS server) yum -y install nfs-utils mkdir -p /export/primary mkdir -p /export/secondary vi /etc/exports -- /export *(rw,async,no_root_squash) -- exportfs -a vi /etc/sysconfi g/nfs -- RQUOTAD_PORT=875 LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892 STATD_PORT=662 STATD_OUTGOING_PORT=2020 -- vi /etc/sysconfi g/iptables -- :INPUT ACCEPT [0:0] -A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p udp --dport 111 -j ACCEPT -A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT -A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT -A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT -A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT -A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT -A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p udp --dport 892 -j ACCEPT -A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT -A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p udp --dport 875 -j ACCEPT -A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT -A INPUT -s xx.xx.xx.xx/24 -m state --state NEW -p udp --dport 662 -j ACCEPT -- service iptables restart service iptables save vi /etc/idmapd.conf -- Domain = local -- reboot service rpcbind start service nfs start chkconfi g nfs on chkconfi g rpcbind on reboot / そこで Fabric 化してみます! これを毎回手打ちは大変ですね。
  • 12. CloudStack インストールの Fabric 化 fab csm csm_install kvm kvm_install -f acs411.py だけです!!本当に簡単ですよね。 ※ 上記でできるのは、 GUI ログインの手前まで。 ※ ゾーンの作成等は、手動になります。 一度、 Fabric スクリプトを書いておけば、何度も構 築ができる。 また、バージョンアップ等でインストール方法が多 少変更になってもスクリプトを直すだけで簡単に対 応可能!
  • 15. (参考)インストール方法 ● For mac 1.AppStore Xcode 2.Xcode CommandLineTools 3.brew ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" 4.python brew install python export PATH=/usr/local/share/python:$PATH 5.pip sudo easy_install pip sudo pip install pycrypto 6.Fabric sudo pip install fabric
  • 16. (参考)用意した VM のスペック <CSM> ipaddress 172.16.192.10 netmask 255.255.255.0 InstallType BasicServer OS CentOS6.3 disk 80GB CPU 1 Mem 512 MB <KVM> ipaddress 172.16.192.11 netmask 255.255.255.0 InstallType VirtualHost OS CentOS6.3 disk 20GB CPU 4 コア Mem 2,560MB VMwareFusion だと、 VM 作成時に『プロセッサとメモリ』の設 定画面の『詳細オプション』の『この仮想マシンのハイパー バイザアプリケーションを有効にする』をオンにする必要が あります。
  • 17. (参考) CloudStack の Fabric インストールスクリプト from fabric.api import env,put,run def csm() : env.user = 'root' env.password = 'password' env.hosts = ['172.16.192.10'] def kvm() : env.user = 'root' env.password = 'password' env.hosts = ['172.16.192.20'] def csm_install() : run('yum -y install ntp') put('※1/ntp.conf','/etc/ntp.conf') run('/etc/init.d/ntpd start') run('ntpq -p') run('chkconfig ntpd on') put('※1/cloudstack.repo','/etc/yum.repos.d/cloudstack.repo') run('yum -y install cloudstack-management') run('yum -y install mysql-server') put('※1/mysql.cnf','/etc/my.cnf') run('/etc/init.d/mysqld start') run('chkconfig mysqld on') run('mysql -u root -e "SET PASSWORD=PASSWORD(%s);"'%("'password'")) run('mysql -uroot -ppassword -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;"') put('※1/selinuxconfig','/etc/selinux/config') run('setenforce permissive') run('cloudstack-setup-databases cloud:password@localhost --deploy-as=root:password') run('yum -y install nfs-utils') run('mkdir -p /export/primary') run('mkdir -p /export/secondary') put('※1/exports','/etc/exports') run('exportfs -a') put('※1/nfs.conf','/etc/sysconfig/nfs') put('※1/iptables','/etc/sysconfig/iptables') run('/etc/init.d/iptables restart') run('/etc/init.d/iptables save') put('※1/idmapd.conf','/etc/idmapd.conf') run('/etc/init.d/rpcbind start') run('/etc/init.d/nfs start') run('chkconfig nfs on') run('chkconfig rpcbind on') run('cloudstack-setup-management') run('/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F') run('reboot') def kvm_install() : run('yum -y install ntp') put('※1/ntp.conf','/etc/ntp.conf') run('/etc/init.d/ntpd start') run('ntpq -p') run('chkconfig ntpd on') put('※1/cloudstack.repo','/etc/yum.repos.d/cloudstack.repo') run('yum -y install cloudstack-agent') put('※1/libvirtd.conf','/etc/libvirt/libvirtd.conf') put('※1/syslibvirtd.conf','/etc/sysconfig/libvirtd') run('/etc/init.d/libvirtd start') put('※1/selinuxconfig','/etc/selinux/config') run('setenforce permissive') run('iptables -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT') run('iptables -I INPUT -p tcp -m tcp --dport 1798 -j ACCEPT') run('iptables -I INPUT -p tcp -m tcp --dport 16509 -j ACCEPT') run('iptables -I INPUT -p tcp -m tcp --dport 5900:6100 -j ACCEPT') run('iptables -I INPUT -p tcp -m tcp --dport 49152:49216 -j ACCEPT') run('iptables-save > /etc/sysconfig/iptables') run('service rpcbind start') run('service nfs start') run('chkconfig nfs on') run('chkconfig rpcbind on') run('mkdir /primarymount') run('mount -t nfs csm:/export/primary /primarymount') run('umount /primarymount') run('mkdir /secondarymount') run('mount -t nfs csm:/export/secondary /secondarymount') run('umount /secondarymount') run('reboot') ※1 の部分は自分の端末のパスを書いてください。 また put した各ファイル( ntp.conf , cloudstack.repo , mysql.cnf , selinuxconfig , exports , nfs.conf , iptables , idmapd.conf , libvirtd.conf ,syslibvirtd.conf ) は、各自の環境に合わせて事前に作成してください。