Idcfクラウドで始める構築自動化
- 6. 事前準備 (Macの場合)
• 1.MacPorts または Homebrewのインストール
• jqのインストールに必要となります
• 2.API Key, Secret Key, エンドポイント 各情報の入手
• 3.cloudstack-apiのインストール
• 下記URL(IDCFクラウドAPIドキュメントサイト)を参考に
http://docs.idcf.jp/cloud/introduction/
• 4.Ansibleのインスト−ル
• 5.その他必要なコマンドのインストール(jqなど)
• 5.作業計画を立てる
• どのような作業を自動化させるか、どこまでを自動化させるか。
• 最初から自動化を始めようするのではなく、まずは自動化させたい操作を
手動で確認しながら(コマンドを1つ1つ打ちながら)進めるのが良いです。
• 自動化するにあたって何をすべきか(どのようにすべきか)理解しやすくなります。
- 7. サーバ構築自動化の流れ (cloudstack-api)
• 1.SSH秘密鍵の作成
• 2.VM作成
• 3.ファイアウォールポリシーの設定
• 4.ポートフォワーディングの設定
• 5.管理端末(手元のPC)の~/.ssh/config を更新
ここまで完了すれば、IDCFクラウドのコンピューティングの管理画面(ダッシュボード)
でVMが追加されたこと、ファイアウォールおよびポートフォワーディングが指定された
通りに設定されたことが確認できるはずです。
- 10. 1.SSH秘密鍵の作成
• cloudstack-api createSSHKeyPairを実行します。
• 以下の例では、json形式の戻り値をtmpSSHPrivaeKey_test01という
ファイルに出力してから、秘密鍵をjqコマンドで取り出しています。
$ cloudstack-api createSSHKeyPair --name test01 > tmpSSHPrivateKey_test01
$ cat tmpSSHPrivateKey_test01 |
jq --raw-output '.createsshkeypairresponse.keypair.privatekey' > ~/.ssh/test01.keychmod 600 ~/.ssh/test01.key
- 12. 2.VMの作成(2)ゾーンIDの確認
• cloudstack-api deployVirtualMachineコマンドを実行します。
• 以下の例では、json形式の戻り値をtmpSSHPrivaeKey_test01という
ファイルに出力してから、秘密鍵をjqコマンドで取り出しています。
$ cloudstack-api deployVirtualMachine
--serviceofferingid e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6
--templateid ee7bc439-0186-49b4-82e4-bf821db89601
--zoneid a117e75f-d02e-4074-806d-************
--group test
--keypair test01
--name test01 > tmpCreateVM_test01
$cat tmpCreateVM_test01 |jq -r '.deployvirtualmachineresponse.id' > tmpDeployVM_test01
$cloudstack-api listVirtualMachines --id `cat tmpDeployVM_test01` > tmpListVM_test01
- 13. 2.VMの作成(3)サービスオファリングIDの確認
• cloudstack-api deployVirtualMachineコマンドを実行します。
• 以下の例では、json形式の戻り値をtmpSSHPrivaeKey_test01という
ファイルに出力してから、秘密鍵をjqコマンドで取り出しています。
$ cloudstack-api deployVirtualMachine
--serviceofferingid e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6
--templateid ee7bc439-0186-49b4-82e4-bf821db89601
--zoneid a117e75f-d02e-4074-806d-************
--group test
--keypair test01
--name test01 > tmpCreateVM_test01
$cat tmpCreateVM_test01 |jq -r '.deployvirtualmachineresponse.id' > tmpDeployVM_test01
$cloudstack-api listVirtualMachines --id `cat tmpDeployVM_test01` > tmpListVM_test01
- 14. 2.VMの作成(4)テンプレートIDの確認
• cloudstack-api deployVirtualMachineコマンドを実行します。
• 以下の例では、json形式の戻り値をtmpSSHPrivaeKey_test01という
ファイルに出力してから、秘密鍵をjqコマンドで取り出しています。
$ cloudstack-api deployVirtualMachine
--serviceofferingid e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6
--templateid ee7bc439-0186-49b4-82e4-bf821db89601
--zoneid a117e75f-d02e-4074-806d-************
--group test
--keypair test01
--name test01 > tmpCreateVM_test01
$cat tmpCreateVM_test01 |jq -r '.deployvirtualmachineresponse.id' > tmpDeployVM_test01
$cloudstack-api listVirtualMachines --id `cat tmpDeployVM_test01` > tmpListVM_test01
- 15. 2.VMの作成(5)deployVirtualMachineの実行
• cloudstack-api deployVirtualMachineを実行します。
• 作成されたVMは、cloudstack-api listVirtualMachines –id <VMのID>
を実行することで確認できます。
• 本コマンドを実行すると、VMが作成された後に起動されます。
(ので、起動のための操作は不要です)
$ cloudstack-api deployVirtualMachine
--serviceofferingid e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6
--templateid ee7bc439-0186-49b4-82e4-bf821db89601
--zoneid a117e75f-d02e-4074-806d-************
--group test
--keypair test01
--name test01 > tmpCreateVM_test01
$cat tmpCreateVM_test01 |jq -r '.deployvirtualmachineresponse.id' > tmpDeployVM_test01
$cloudstack-api listVirtualMachines --id `cat tmpDeployVM_test01` > tmpListVM_test01
- 18. 3.ファイアウォールポリシーの設定(3)
• cloudstack-api createPortForwardingRuleを実行します。
• 以下は、TCP/21022,TCP/21080ポートを外部に開放する設定です。
$ cloudstack-api createFirewallRule --ipaddressid eefdf9dc-f5d7-46cf-85a7-************ --protocol TCP --
startport 21022 --endport 21022
$ cloudstack-api createFirewallRule --ipaddressid eefdf9dc-f5d7-46cf-85a7-************ --protocol TCP --
startport 21080 --endport 21080
- 20. 4.ポートフォワーディングの設定(2)
• cloudstack-api createPortForwardingRuleを実行します。
• 以下の場合は、test01というVMのTCP/22(SSH)とTCP/80(HTTP)を
TCP/21022,TCP/21080として公開する設定となっています。
• virtualmachineidは、VM作成時に取得したIDをファイルへ出力しておくと、
--virtualmachineid `cat tmpDeployVM_test01` のように指定することで
そのIDをセットすることができます。
(自動化する際は、このような形で情報を保持しておく必要があります)
$ cloudstack-api createPortForwardingRule --ipaddressid eefdf9dc-f5d7-46cf-85a7-************ --protocol TCP -
-virtualmachineid `cat tmpDeployVM_test01` --privateport 22 --publicport 21022
$ cloudstack-api createPortForwardingRule --ipaddressid eefdf9dc-f5d7-46cf-85a7-************ --protocol TCP -
-virtualmachineid `cat tmpDeployVM_test01` --privateport 80 --publicport 21080
- 21. 5.管理端末(手元のPC)の~/.ssh/config を更新
• 管理端末の~/.ssh/config追加したVMへの接続情報を追加します。
• 本設定を行うことで、ssh <IPアドレス>:<ポート番号>ではなく、
ssh <指定された名前>でSSH接続出来るようになります。
$ touch tmpConfig_test01
$ echo "Host test01" >> tmpConfig_test01
$ echo “ Hostname 210.140. ***.***" >> tmpConfig_test01
$ echo " Port 21022" >> tmpConfig_test01
$ echo " User root" >> tmpConfig_test01
$ echo " IdentityFile ~/.ssh/test01.key" >> tmpConfig_test01
$ cat tmpConfig_test01 >> ~/.ssh/config
- 22. 1〜5をシェルスクリプトにするとこんな感じ
#/bin/sh
# SSH秘密鍵を発行する
cloudstack-api createSSHKeyPair --name test01 > tmpSSHPrivateKey_test01
cat tmpSSHPrivateKey_test01 | jq --raw-output '.createsshkeypairresponse.keypair.privatekey' > ~/.ssh/test01.key
chmod 600 ~/.ssh/test01.key
# VMを作成する
cloudstack-api deployVirtualMachine
--serviceofferingid e01a9f32-55c4-4c0d-9b7c-d49a3ccfd3f6
--templateid ee7bc439-0186-49b4-82e4-bf821db89601
--zoneid a117e75f-d02e-4074-806d- ************
--group test
--keypair test01
--name test01 > tmpCreateVM_test01
cat tmpCreateVM_test01 |jq -r '.deployvirtualmachineresponse.id' > tmpDeployVM_test01
cloudstack-api listVirtualMachines --id `cat tmpDeployVM_test01` > tmpListVM_test01
# ファイアウォールルールを設定する
cloudstack-api createFirewallRule --ipaddressid eefdf9dc-f5d7-46cf-85a7- ************ --protocol TCP --startport 21022 --endport 21022
cloudstack-api createFirewallRule --ipaddressid eefdf9dc-f5d7-46cf-85a7- ************ --protocol TCP --startport 21080 --endport 21080
# ポートフォワーディングルールを設定する
cloudstack-api createPortForwardingRule --ipaddressid eefdf9dc-f5d7-46cf-85a7- ************ --protocol TCP --virtualmachineid `cat tmpDeployVM_test01` --privateport 22 --publicport
21022
cloudstack-api createPortForwardingRule --ipaddressid eefdf9dc-f5d7-46cf-85a7- ************ --protocol TCP --virtualmachineid `cat tmpDeployVM_test01` --privateport 80 --publicport
21080
# SSHConfigを更新する
touch tmpConfig_test01
echo "Host test01" >> tmpConfig_test01
echo " Hostname 210.140. ***.***" >> tmpConfig_test01
echo " Port 21022" >> tmpConfig_test01
echo " User root" >> tmpConfig_test01
echo " IdentityFile ~/.ssh/test01.key" >> tmpConfig_test01
cat tmpConfig_test01 >> ~/.ssh/config
引数で値を変更できるように
すると、1回限りでは無く、
汎用的に使えます。
- 24. Webアプリ環境構築自動化の流れ
• 1.Swapの追加
• 2.パッケージのアップデート
• 3.サードパーティーリポジトリの追加(remi, epel,repoforge)
• 4.remi-php70リポジトリでPHP7をインストール
• 5.Apache,MariaDBデーモン自動実行設定
• 6.Apache,MariaDBの起動
• 7.MariaDBの設定
• ユーザー追加、パスワード設定、DB追加
• 8.Wordpressのインストール
• 9.WordpressのためのDB設定情報を返す
ここまで完了すれば、http://<IPアドレス>:<ポート番号>/へ
アクセスすることで、Wordpressのインストール画面が見えるはずです。