Contenu connexe Similaire à Fabricによるcloud stackインストール自動化 Similaire à Fabricによるcloud stackインストール自動化 (20) Fabricによるcloud stackインストール自動化1. Fabric による CloudStack の自動インストール
〜簡単に検証構築を繰り返し構築する方法〜
第 15 回 CloudStack ユーザ会
in 北海道
2013 年 9 月 13 日
中島 博行
2. 自己紹介
●
CloudStack 歴:約 1 年
●
使えるプログラミング言語:パスカル
※ かれこれ 10 年以上も昔にやった大学の授業
でならった程度で、それ以外の言語はちゃん
と勉強したことがありません。
⇨ つまり、この発表は、それくらいの人でも簡単につ
いてこれる内容です。でも、知っておくとそこそこ
便利です。よかったら覚えて帰ってください。
8. 実演
●
リモート環境のサーバに
① ログイン
② ホスト名を表示( hostname --fqdn )
③CentOS のアップデート( yum -y update )
④apache のインストール( yum -y install httpd )
してみます。
VM
【コマンド】 fab httpd http_install -f apache_install.py
httpd.local
ホストの指定 タスクの指定 利用するスクリプトファイルの指定
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 )
は、各自の環境に合わせて事前に作成してください。