狠狠撸
Submit Search
滨诲肠蹿クラウト?て?始める构筑自动化
?
Download as PPTX, PDF
?
0 likes
?
1,130 views
智之 大野
IDCFクラウド&SoftLayer 合同Meetup!in つくば vol.1 発表資料
Read less
Read more
1 of 25
Download now
Download to read offline
More Related Content
滨诲肠蹿クラウト?て?始める构筑自动化
1.
IDCFクラウドではじめる 「はじめてのサーバ構築自動化 +Wordpress 環境構築の自動化」 2016年4月23日 IDCFクラウドユーザー会(つくば) 大野 智之 twitter:
@tabimoba
2.
自己紹介 ? IDCFクラウドユーザー会 つくばの代表をしてい ます(はじめました!) ?
つくば市内のIT関連企業に勤務している会社員 ? Webサイト(ホームページ)の構築、 Webシステムの開発、社内外のサーバの構築? 運用保守(オンプレ?クラウド)をメインに 行っています。 ? IDCFクラウドも、もちろん利用しています。 大野 智之 (@tabimoba)
3.
発表内容 ? 1.サーバ(仮想マシン VM)を自動構築する ?
cloudstack-apiを用いて自動構築する ? 2.アプリ環境を自動構築する ? Ansibleを用いて自動構築する
4.
発表内容 ? 1.サーバ(仮想マシン VM)を自動構築する ?
cloudstack-apiを用いて自動構築する ? 2.アプリ環境を自動構築する ? Ansible(今回はやめました)シェルスクリプトを用いて自動構築する
5.
対象となる方 ? サーバやWebアプリ環境構築の自動化に関心のある方 ? 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が追加されたこと、ファイアウォールおよびポートフォワーディングが指定された 通りに設定されたことが確認できるはずです。
8.
cloudstack-apiについて ? IDCFクラウドは、CloudStackというクラウド基盤ソフトウェアを利用 してサービスが提供されています。 ? IDCFクラウドを含め、CloudStackベースのほとんどのサービスでは、 CloudStack
APIを用いてVM(仮想マシン)の構築やネットワーク関連 の設定変更(ファイアウォールの設定、ポートフォワーディング設定、 IPアドレス追加等)が行えます。 ? cloudstack-apiは、cli(コマンドライン)でCloudStack APIを操作する ためのコマンドです。 ? 実行結果に対する戻り値はjson形式で返ります。
9.
cloudstack-api 実行結果の例
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
11.
2.VMの作成(1)はじめに ? VM(仮想マシン)を作成するには、事前に次の情報を 確認しておく必要があります。 ? ゾーンID ?
サービスオファリングID ? テンプレートID
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
16.
3.ファイアウォールポリシーの設定(1)はじめに ? VM(仮想マシン)を作成するには、事前に次の情報を 確認しておく必要があります。 ? IPアドレスID ?
また、次の情報を検討しておく必要があります。 ? プロトコル(TCP/UDP) ? アクセスを許可するポート(範囲) ? アクセスを許可するIPアドレス ※IPアドレスを制限しない場合は不要
17.
3.ファイアウォールポリシーの設定(2) IPアドレスIDの確認 ? 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
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
19.
4.ポートフォワーディングの設定(1)はじめに ? VM(仮想マシン)を作成するには、事前に次の情報を 確認しておく必要があります。 ? IPアドレスID ?
バーチャルマシンID (作成されたVMのID) ? また、次の情報を検討しておく必要があります。 ? プロトコル(TCP/UDP) ? 転送元(VMの)ポート ? 転送先(パブリックの)ポート
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回限りでは無く、 汎用的に使えます。
23.
デモ(サーバ构筑自动化?厂厂贬接続まで)
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のインストール画面が見えるはずです。
25.
デモ (ansible-playbook実行?Wordpressインストール画面表示まで)
Download