Movatterモバイル変換


[0]ホーム

URL:


Etsuji Nakai, profile picture
Uploaded byEtsuji Nakai
PDF, PPTX2,699 views

環境構築自動化ツールのご紹介

Embed presentation

Download as PDF, PPTX
オープンクラウド・キャンパス環境構築自動化ツールのご紹介      Ver1.0 2012/10/13   中井悦司 (Twitter @enakai00)
クラウドが実現するソフト開発・運用の変革と自動化    Contents     既存ツールの組み合わせによる「パーソナルクラウド」の構築     複数環境へのデプロイ自動化ツール Aeolus Conductor2                                   Open Cloud Campus
既存ツールの組み合わせによる「パーソナルクラウド」の構築
クラウドが実現するソフト開発・運用の変革と自動化    「パーソナルクラウド」における自動化の実例                                                                                                Github     図の①〜③を1つの設定ファイルを元に自動実行するスクリプト      を作成して、「パーソナルクラウド」として活用    OS/アプリケーション                                                            アプリ設定情報                                      OS構成情報        パッケージ                                                          (Puppet Manifest)                                      (KickStartファイル)                         Kickstart                    ③ アプリ導入/設定        YUM                                                Git/Puppet       リポジトリ                  ② OS/アプリ導入                                                                                           設定ファイルの                                                                                           バージョン管理                              VM                               ① VM作成        Apache                                                                     VM構成情報      HTTP Server                             KVM                                  (virt-installコマンドの                                                                                   パラメータ群)                      Red Hat Enterprise Linux 6           libvirt                            x86_64サーバ     詳細は「アプリケーション環境構築の自動化をまじめに考えてみる(1)〜(4)」を参照4    http://bit.ly/SRfpwb http://bit.ly/O9xgAa http://bit.ly/Qij9Gx http://bit.ly/QB9POk      Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化    主な利用ツール (1)     libvirt       – Linux KVM, Xen, LXC などの仮想化環境をプログラムから操作するための標準ライブラ         リ(C言語、Pythonなどから利用可能)。       – VM、仮想ディスクイメージ、仮想ネットワークの作成・操作が可能。       – ここでは、libvirtを利用したコマンドvirt-installを使って、VMの自動作成を行なってい         る。     virt-installのコマンドオプションの例      # virt-install                 --name ${vmname}                 --vcpus ${vcpus}                 --ram ${ram}                 --disk path=${diskpath},size=${disksize},sparse=false                 --network ${network}                 --os-variant ${os-variant}                 --location ${url}                 --vnc5                                                                         Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化    主な利用ツール (2)     KickStart                  KickStartファイルの例       – RHELのインストーラ(Anaconda)   url --url=${url}        の一機能。GUIインストーラで入力す       lang ja_JP.UTF-8        る項目を事前に書き込んだテキスト         keyboard jp106                                 network --onboot yes --device eth0 --bootproto        ファイル(KickStartファイル)を利    static --ip ${ip} --netmask ${netmask}        用して、RHELのインストールを全自       --gateway ${gateway} --nameserver ${nameserver}        動で行う。                    --hostname ${hostname}                                 rootpw passw0rd       – インストール後に指定のスクリプト        timezone --isUtc Asia/Tokyo                                 bootloader --location=mbr         (Postスクリプト)を実行すること                                 zerombr         ができる。                   clearpart --initlabel --drives=vda       – ここでは、RHELを自動インストール      part /boot --fstype=ext4 --size=500                                 part swap --size=1024         した後に、Git/Puppetによるアプリ   part / --fstype=ext4 --grow --size=200         ケーション導入・設定をキックしてい       reboot                                 %packages         る。                                 @base                                 @core                                 @japanese-support                                 %end                                 %post --log=/root/anaconda-post.log                                 set -x                                 echo "${ip}    ${hostname}" >> /etc/hosts                                 %end6                                                                   Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化    主な利用ツール (3)                             Puppetマニフェストの例     Puppet                             class pgsql {      – OS/アプリケーションの構成管理       service { 'postgresql':        ツール。「あるべき状態」を宣言的         name                                 ensure                                           => 'postgresql',                                           => running,        に記述した「マニフェスト」に従っ         enable    => true,                                 subscribe => Package['postgresql-server'],        て、アプリケーションの導入、設定       }        ファイルの書き換えなどを自動実行       package { 'postgresql-server':        する。                      name   => 'postgresql-server',                                 ensure => installed,      – 管理対象サーバが多数ある場合は、       }        専用の「Puppetサーバ」からマニ     file { '/var/lib/pgsql/data/postgresql.conf':        フェストの配布を行うクライアン          owner   => 'postgres',                                 group   => 'postgres',        ト・サーバモデルで使用する。           mode    => '0600',                                 source => "$FACTER_manifest_dir/dist/postgresql.conf",      – ここでは、Puppetサーバは使わず       notify => Service['postgresql'],        に、Githubからマニフェストをダ     }                                 require => Exec['initdb'],        ウンロードして、直接に適用する形                              exec { 'initdb':        で利用している。                path      => '/sbin',                                command   => 'service postgresql initdb',                                logoutput => true,                                creates   => '/var/lib/pgsql/data/PG_VERSION',                                before    => Service['postgresql'],                                require   => Package['postgresql-server'],                                notify    => Exec['init_pw'],                              }                             ・・・7                                                                       Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化    主な利用ツール (4)     Git       – プログラムソースコードの分散バージョン管理システム。元々はLinux Kernelの開発用に         作成された。インターネット上にコードリポジトリを作成して無料で利用できるサービ         ス「Github」の登場により、利用者が増加した。       – ここでは、Puppetの設定ファイル(マニフェスト)をGithubにおいて、Kickstartの         Postスクリプトから、指定バージョンのマニフェストのダウンロードと適用を実行して         いる。     Githubからマニフェストを取得して適用するスクリプトの例      mkdir -p /tmp/gittmp      cd /tmp/gittmp      git clone $GitRepository      cd $RepoName      git checkout $ConfigTag      export FACTER_manifest_dir="/tmp/gittmp/$RepoName"      puppet main.pp8                                                          Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化    (参考)Githubのスクリーンショット                                リポジトリの公開URL                               過去の変更履歴を                                 全て保存         特定の時点のコードを           タグ名で指定9                                         Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化 「パーソナルクラウド」自動化における考察  便利な点     – 設定ファイルの再利用性       • テキストファイルにすべての設定が記録されているので、設定変更が簡単で、少しづ         つ設定の異なる類似環境を何度でも再構築できる。       • Puppetのマニフェストがバージョン管理されているので、バージョン番号を指定す         るだけで、特定バージョンの設定が適用できる。            Github  不便な点     – 単一の物理サーバが前提       • 複数の物理サーバへのデプロイはできない。     v1.0   v1.1     – 複数VMの依存関係が扱えない       • Puppetはサーバ間の依存関係を解決する機能がないので、「DBサーバとWebサーバ         を連携させる」ような設定はできない。       • 現状では、必要な際は、手続き型のスクリプトで連携処理を行なっている。(ので、         Puppetの「宣言的記述」のメリットが半減してしまう。)     ⇒ 本格的な自動化ツールでは、複数ノードへのデプロイと複数VMの依存関係の取り扱い       が必要。10                                              Open Cloud Campus
複数環境へのデプロイ自動化ツール    Aeolus Conductor
クラウドが実現するソフト開発・運用の変革と自動化 Aeolus Conductorとは?        「Aeolus(アイオロス)でRHELonEC2を利用する」                                            http://bit.ly/QzniL4  複数クラウドに対応したイメージ作成/アプリケーション環境構築の自動化ツール12                                                   Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化 複数クラウド/仮想化環境を適材適所で活用  共通の定義ファイルから複数環境に同一のアプリケーション実行環境を構築。     – システムテンプレート:JEOSの構成定義ファイル     – アプリケーション・ブループリント:アプリケーション実行環境の構成定義ファイル                               システムテンプレート                               アプリケーション・ブループリント             本番環境           開発・テスト環境     パブリック                仮想化環境A           仮想化環境B      クラウド13                                        Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化 Aeolus Conductorによるアプリケーションデプロイの流れ  アプリケーションデプロイ時は、ConfigServerを介して構成情報を交換することで、複数   VMに依存する設定が可能です。     – Ruby Facterでの取得情報を交換可能。ただし、ワークフロー処理は限定的。  仮想ネットワークの構成は対象外。仮想マシンは既存のデフォルトネットワークに接続し   ます。               必要なサイズ/個数の仮想マシンを起動して                アプリケーションの導入・設定を実施                      アプリケーション                       ブループリント                                                  構成情報の交換      指定のクラウドに     JEOSイメージを作成                                                   ConfigServer      システム      マシンイメージ     テンプレート       (JEOS)14                                   仮想マシン             Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化 (参考)DeltacloudによるAPIの共通化  Deltacloud Libraryは、複数の仮想化基盤/クラウドを共通のREST API   (Deltacloud API)で操作するためのライブラリ群     – Aeolus Conductorでは、複数環境への対応にDeltacloud Libraryを使用15                                                         Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化 (参考)Deltacloud Driverの提供状況     http://deltacloud.apache.org/drivers.html#drivers16                                                       Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化 システムテンプレートによるJEOSの作成 (1)  「システムテンプレート」では、JEOSの構成情報を定義します。     – OSの種類、インストール元のレポジトリ、追加導入するパッケージ、導入後のカスタマ       イズコマンドなどを指定します。          システムテンプレートの例          <template>            <name>CentOS63 Template</name>            <os>              <name>RHEL-6</name>              <version>3</version>              <arch>x86_64</arch>              <install type='url'>                  <url>http://172.16.1.1/CentOS63</url>              </install>              <rootpw>p@ssw0rd</rootpw>            </os>            <repositories>              <repository name="Aeolus">                 <url>http://172.16.1.101/aeolus/</url>              </repository>            </repositories>            <packages>              <package name="aeolus-audrey-agent"/>            </packages>            <description>CentOS63 Image Factory Template</description>            <commands>              <command name="Update to latest packages">yum -y update</command>            </commands>          </template>17                                                                                Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化 システムテンプレートによるJEOSの作成 (2)  Aeolus Conductorのメニュー画面から、対象クラウド用のJEOSを作成します。     – 対象のクラウドに対して「ビルド」を実行するとAeolusサーバ上のKVMで仮想マシンを       起動してイメージを作成後、指定のクラウドで利用可能な形式に変換します。     – その後「Push」を実行すると対象のクラウドにイメージの配信を行います。18                                          Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化 アプリケーション・ブループリントによるデプロイ (1)  「アプリケーション・ブループリント」では、起動するインスタンスと起動後の   アプリケーション導入/設定手順を定義します。     – 起動に使用するJEOSイメージ、インスタンスサイズ、デプロイ時にユーザが指定するパ       ラメータなどを指定します。     – アプリケーション導入/設定                         アプリケーション・ブループリントの例       手順はスクリプトをベタ書                         <?xml version="1.0"?>       きします。(実際には、こ      <deployable version="1.0" name="RHEL6.3 motd hack">       のスクリプトから、Puppet     <description/>                           <assemblies>       などのツールとの連携を行          <assembly name="RHEL6-3-with-audrey-agent" hwp="small-x86_64">       います。)                   <image id="c0d6f20f-6e7a-4835-b41e-7b16a8cdbe35"/>                               <services>                                 <service name="config_motd">                                   <executable>                                     <contents><![CDATA[#!/bin/bash                                        echo "$AUDREY_VAR_config_motd_message" >> /etc/motd]]>                                     </contents>                                   </executable>                                   <parameters>                                     <parameter name="message">                                        <value>Hello, World!</value>                                     </parameter>                                   </parameters>                                 </service>                               </services>                             </assembly>                           </assemblies>                         </deployable>19                                                                             Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化 アプリケーション・ブループリントによるデプロイ (2)  Aeolus Conductorのメニュー画面から、アプリケーション・ブループリントを指   定して、デプロイを実施します。     – ユーザは、デプロイ先のクラウドを選択することが可能です。20                                       Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化 アプリケーション・ブループリントとPuppet/Githubの連携  アプリケーション・ブループリントとPuppet/Githubによる環境構築を連携する   ことも可能です。     – 下図のスクリプトをアプリケーション・ブループリントから実行すると、Puppetによる       アプリケーションの導入・設定が実施されます。     GithubからPuppetマニフェストを取得・適用するスクリプトの例     # Setting up glusterfs using Puppet     yum -y install http://mirror.us.leaseweb.net/epel/6/i386/epel-     release-6-7.noarch.rpm     yum -y install git     yum -y install puppet     mkdir -p /tmp/gittmp     cd /tmp/gittmp     git clone https://github.com/enakai00/gluster_puppet.git     cd gluster_puppet     git checkout $AUDREY_VAR_glusterd_gittag     export FACTER_manifest_dir="/tmp/gittmp/gluster_puppet"     export FACTER_data_device="/dev/xvdj"     puppet main.pp     – 詳細は、「Aeolus(アイオロス)でRHELonEC2を利用する(その3)」を参照         • http://bit.ly/RMFZae21                                                                    Open Cloud Campus
クラウドが実現するソフト開発・運用の変革と自動化 Aeolus Conductorの考察  便利な点     – 複数環境の透過的利用       • 現実的なユースケースは今後の検討課題ではあるが、JEOSの作成からアプリケー         ションのデプロイまでを複数環境で実施できるツールはめずらしい。     – JEOS方式によるカスタマイズの容易性       • IaaSクラウドの多くはオリジナルイメージのスクラッチ作成やカスタマイズが面倒。         Aeolusであれば、システムテンプレートからイメージを自動生成可能。       • デプロイ時に動的にアプリケーションをインストールするので、アプリケーションの         バージョンアップに合せてイメージを再作成するなどの手間がかからない。  不便な点     – クラウド固有の機能が使えない       • セキュリティグループ、EBSのアタッチなどクラウド固有の機能に未対応。     – 複数VMデプロイ時のワークフロー処理が不十分       • アプリケーション・ブループリントでは、「VM2の構成が完了してから、VM1の構成         を開始する」程度の依存関係しか扱えず、複雑なワークフロー処理ができない。     ⇒ 現実的なユースケースに合わせた機能拡張が今後の課題。22                                         Open Cloud Campus
オープンクラウド・キャンパスクラウドの自動化とソフトウェア開発の 未来を一緒に考えて行きましょう!            中井悦司       Twitter @enakai00

Recommended

PDF
Aeolus Conductorによる複数環境へのデプロイ自動化
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
PDF
RHEL7/CentOS7 NetworkManager徹底入門
PDF
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
PDF
Open Shift v3 主要機能と内部構造のご紹介
PDF
Using Kubernetes on Google Container Engine
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
PDF
RHEL Atomic Hostのご紹介
PDF
RDOとPackstackのご紹介
PDF
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
PDF
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
PDF
Red Hat Enterprise Linux 7.1 Kubernetes入門
PDF
OpenStack(RDO/Grizzly) ダッシュボード利用演習
PDF
クラウドオーケストレーション「OpenStack Heat」に迫る!
PDF
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造
PPTX
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
PDF
OpenShift v3 Technical Introduction
PDF
DCK Server プロトタイプ
PDF
CloudFoundry 2 on Apache CloudStack 4.2.1
PDF
8a1#19[はじめてのdocker] 公開版
PDF
完全分散エッジ処理で実現するNeutron仮想ネットワーク
PDF
入門!Software Defined Network
PDF
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
PDF
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
PDF
仮想化&クラウドで活用!自動化ツールの基礎
PPTX
コマンドラインで使うAzure
PDF
OpenCenterによるOpenStack自動構築

More Related Content

PDF
Aeolus Conductorによる複数環境へのデプロイ自動化
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
PDF
RHEL7/CentOS7 NetworkManager徹底入門
PDF
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
PDF
Open Shift v3 主要機能と内部構造のご紹介
Aeolus Conductorによる複数環境へのデプロイ自動化
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
RHEL7/CentOS7 NetworkManager徹底入門
インフラエンジニアのこれから ~Red Hatの描くLinuxの今後とクラウド~(第ニ部)
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
Open Shift v3 主要機能と内部構造のご紹介

What's hot

PDF
Using Kubernetes on Google Container Engine
PDF
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
PDF
RHEL Atomic Hostのご紹介
PDF
RDOとPackstackのご紹介
PDF
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
PDF
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
PDF
Red Hat Enterprise Linux 7.1 Kubernetes入門
PDF
OpenStack(RDO/Grizzly) ダッシュボード利用演習
PDF
クラウドオーケストレーション「OpenStack Heat」に迫る!
PDF
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造
PPTX
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
PDF
OpenShift v3 Technical Introduction
PDF
DCK Server プロトタイプ
PDF
CloudFoundry 2 on Apache CloudStack 4.2.1
PDF
8a1#19[はじめてのdocker] 公開版
PDF
完全分散エッジ処理で実現するNeutron仮想ネットワーク
PDF
入門!Software Defined Network
PDF
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
PDF
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」
Using Kubernetes on Google Container Engine
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
RHEL Atomic Hostのご紹介
RDOとPackstackのご紹介
Red Hat Enterprise Linux OpenStack Platform環境でのDocker活用テクニック
Okinawa Open Days 2014 OpenStackハンズオンセミナー / OpenStackの機能概要
Red Hat Enterprise Linux 7.1 Kubernetes入門
OpenStack(RDO/Grizzly) ダッシュボード利用演習
クラウドオーケストレーション「OpenStack Heat」に迫る!
エンジニア向け夏期特別講座 〜 Red Hat OpenStack徹底解説! 第二部 OpenStackの内部構造
仮想化技術として注目されているDocker入門 - PASONATECH ADVANTAGE SEMINAR
OpenShift v3 Technical Introduction
DCK Server プロトタイプ
CloudFoundry 2 on Apache CloudStack 4.2.1
8a1#19[はじめてのdocker] 公開版
完全分散エッジ処理で実現するNeutron仮想ネットワーク
入門!Software Defined Network
H26第1回 沖縄オープンラボラトリ・ハンズオンセミナー:OpenStack入門
クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

Viewers also liked

PDF
仮想化&クラウドで活用!自動化ツールの基礎
PPTX
コマンドラインで使うAzure
PDF
OpenCenterによるOpenStack自動構築
PDF
S05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオ
PDF
OSS/linux on Azureの活用方法と勘所
PPTX
AWS/Azure二大クラウドプラットフォーム十番勝負
PDF
デザインパターンから見た AWS と Azure
PDF
20150821 Azure 仮想マシンと仮想ネットワーク
仮想化&クラウドで活用!自動化ツールの基礎
コマンドラインで使うAzure
OpenCenterによるOpenStack自動構築
S05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオ
OSS/linux on Azureの活用方法と勘所
AWS/Azure二大クラウドプラットフォーム十番勝負
デザインパターンから見た AWS と Azure
20150821 Azure 仮想マシンと仮想ネットワーク

Similar to 環境構築自動化ツールのご紹介

PDF
Personal Cloud Automation
PDF
OpenNebula on Ubuntu
PDF
Apache CloudStack 4.0 インストール(ver0.5)
PDF
Apache cloudstack4.0インストール
PDF
Lxc で始めるケチケチ仮想化生活?!
PDF
What is chef
PDF
Slide osc2013tokyo spring
PDF
120516openqrm deepdive
KEY
Vyatta 改造入門
PDF
すごく分かるwarden
PDF
すごいBOSHたのしく学ぼう
PDF
IaaSクラウドを支える基礎技術 演習編_v1_0
PDF
CloudFoundry 2 on Apache CloudStack 4.2.1
PDF
20121119.dodai projectの紹介
PDF
MacPort_&_FTP_ver1.0
PDF
クラウド開発に役立つ OSS あれこれ
PDF
Linux+PHPを学んで日程調整アプリを作ろう①
PDF
Osc2009 Do Xen Hara
PDF
Try andstudy cloud
DOC
Cloud founryインストール手順
Personal Cloud Automation
OpenNebula on Ubuntu
Apache CloudStack 4.0 インストール(ver0.5)
Apache cloudstack4.0インストール
Lxc で始めるケチケチ仮想化生活?!
What is chef
Slide osc2013tokyo spring
120516openqrm deepdive
Vyatta 改造入門
すごく分かるwarden
すごいBOSHたのしく学ぼう
IaaSクラウドを支える基礎技術 演習編_v1_0
CloudFoundry 2 on Apache CloudStack 4.2.1
20121119.dodai projectの紹介
MacPort_&_FTP_ver1.0
クラウド開発に役立つ OSS あれこれ
Linux+PHPを学んで日程調整アプリを作ろう①
Osc2009 Do Xen Hara
Try andstudy cloud
Cloud founryインストール手順

More from Etsuji Nakai

PDF
PRML11.2-11.3
PDF
「ITエンジニアリングの本質」を考える
PDF
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
PDF
Introducton to Convolutional Nerural Network with TensorFlow
PDF
Googleにおける機械学習の活用とクラウドサービス
PDF
Spannerに関する技術メモ
PDF
Googleのインフラ技術から考える理想のDevOps
PDF
A Brief History of My English Learning
PDF
TensorFlowプログラミングと分類アルゴリズムの基礎
PDF
TensorFlowによるニューラルネットワーク入門
PDF
Lecture note on PRML 8.2
PDF
Machine Learning Basics for Web Application Developers
PDF
Your first TensorFlow programming with Jupyter
PDF
Deep Q-Network for beginners
PDF
Life with jupyter
PDF
TensorFlowで学ぶDQN
PDF
DevOpsにおける組織に固有の事情を どのように整理するべきか
PDF
PRML7.2
PDF
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
PDF
Exploring the Philosophy behind Docker/Kubernetes/OpenShift
PRML11.2-11.3
「ITエンジニアリングの本質」を考える
Googleのインフラ技術に見る基盤標準化とDevOpsの真実
Introducton to Convolutional Nerural Network with TensorFlow
Googleにおける機械学習の活用とクラウドサービス
Spannerに関する技術メモ
Googleのインフラ技術から考える理想のDevOps
A Brief History of My English Learning
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowによるニューラルネットワーク入門
Lecture note on PRML 8.2
Machine Learning Basics for Web Application Developers
Your first TensorFlow programming with Jupyter
Deep Q-Network for beginners
Life with jupyter
TensorFlowで学ぶDQN
DevOpsにおける組織に固有の事情を どのように整理するべきか
PRML7.2
インタークラウドを実現する技術 〜 デファクトスタンダードからの視点 〜
Exploring the Philosophy behind Docker/Kubernetes/OpenShift

環境構築自動化ツールのご紹介

  • 1.
  • 2.
    クラウドが実現するソフト開発・運用の変革と自動化 Contents  既存ツールの組み合わせによる「パーソナルクラウド」の構築  複数環境へのデプロイ自動化ツール Aeolus Conductor2 Open Cloud Campus
  • 3.
  • 4.
    クラウドが実現するソフト開発・運用の変革と自動化 「パーソナルクラウド」における自動化の実例 Github  図の①〜③を1つの設定ファイルを元に自動実行するスクリプト を作成して、「パーソナルクラウド」として活用 OS/アプリケーション アプリ設定情報 OS構成情報 パッケージ (Puppet Manifest) (KickStartファイル) Kickstart ③ アプリ導入/設定 YUM Git/Puppet リポジトリ ② OS/アプリ導入 設定ファイルの バージョン管理 VM ① VM作成 Apache VM構成情報 HTTP Server KVM (virt-installコマンドの パラメータ群) Red Hat Enterprise Linux 6 libvirt x86_64サーバ 詳細は「アプリケーション環境構築の自動化をまじめに考えてみる(1)〜(4)」を参照4 http://bit.ly/SRfpwb http://bit.ly/O9xgAa http://bit.ly/Qij9Gx http://bit.ly/QB9POk Open Cloud Campus
  • 5.
    クラウドが実現するソフト開発・運用の変革と自動化 主な利用ツール (1)  libvirt – Linux KVM, Xen, LXC などの仮想化環境をプログラムから操作するための標準ライブラ リ(C言語、Pythonなどから利用可能)。 – VM、仮想ディスクイメージ、仮想ネットワークの作成・操作が可能。 – ここでは、libvirtを利用したコマンドvirt-installを使って、VMの自動作成を行なってい る。 virt-installのコマンドオプションの例 # virt-install --name ${vmname} --vcpus ${vcpus} --ram ${ram} --disk path=${diskpath},size=${disksize},sparse=false --network ${network} --os-variant ${os-variant} --location ${url} --vnc5 Open Cloud Campus
  • 6.
    クラウドが実現するソフト開発・運用の変革と自動化 主な利用ツール (2)  KickStart KickStartファイルの例 – RHELのインストーラ(Anaconda) url --url=${url} の一機能。GUIインストーラで入力す lang ja_JP.UTF-8 る項目を事前に書き込んだテキスト keyboard jp106 network --onboot yes --device eth0 --bootproto ファイル(KickStartファイル)を利 static --ip ${ip} --netmask ${netmask} 用して、RHELのインストールを全自 --gateway ${gateway} --nameserver ${nameserver} 動で行う。 --hostname ${hostname} rootpw passw0rd – インストール後に指定のスクリプト timezone --isUtc Asia/Tokyo bootloader --location=mbr (Postスクリプト)を実行すること zerombr ができる。 clearpart --initlabel --drives=vda – ここでは、RHELを自動インストール part /boot --fstype=ext4 --size=500 part swap --size=1024 した後に、Git/Puppetによるアプリ part / --fstype=ext4 --grow --size=200 ケーション導入・設定をキックしてい reboot %packages る。 @base @core @japanese-support %end %post --log=/root/anaconda-post.log set -x echo "${ip} ${hostname}" >> /etc/hosts %end6 Open Cloud Campus
  • 7.
    クラウドが実現するソフト開発・運用の変革と自動化 主な利用ツール (3) Puppetマニフェストの例  Puppet class pgsql { – OS/アプリケーションの構成管理 service { 'postgresql': ツール。「あるべき状態」を宣言的 name ensure => 'postgresql', => running, に記述した「マニフェスト」に従っ enable => true, subscribe => Package['postgresql-server'], て、アプリケーションの導入、設定 } ファイルの書き換えなどを自動実行 package { 'postgresql-server': する。 name => 'postgresql-server', ensure => installed, – 管理対象サーバが多数ある場合は、 } 専用の「Puppetサーバ」からマニ file { '/var/lib/pgsql/data/postgresql.conf': フェストの配布を行うクライアン owner => 'postgres', group => 'postgres', ト・サーバモデルで使用する。 mode => '0600', source => "$FACTER_manifest_dir/dist/postgresql.conf", – ここでは、Puppetサーバは使わず notify => Service['postgresql'], に、Githubからマニフェストをダ } require => Exec['initdb'], ウンロードして、直接に適用する形 exec { 'initdb': で利用している。 path => '/sbin', command => 'service postgresql initdb', logoutput => true, creates => '/var/lib/pgsql/data/PG_VERSION', before => Service['postgresql'], require => Package['postgresql-server'], notify => Exec['init_pw'], } ・・・7 Open Cloud Campus
  • 8.
    クラウドが実現するソフト開発・運用の変革と自動化 主な利用ツール (4)  Git – プログラムソースコードの分散バージョン管理システム。元々はLinux Kernelの開発用に 作成された。インターネット上にコードリポジトリを作成して無料で利用できるサービ ス「Github」の登場により、利用者が増加した。 – ここでは、Puppetの設定ファイル(マニフェスト)をGithubにおいて、Kickstartの Postスクリプトから、指定バージョンのマニフェストのダウンロードと適用を実行して いる。 Githubからマニフェストを取得して適用するスクリプトの例 mkdir -p /tmp/gittmp cd /tmp/gittmp git clone $GitRepository cd $RepoName git checkout $ConfigTag export FACTER_manifest_dir="/tmp/gittmp/$RepoName" puppet main.pp8 Open Cloud Campus
  • 9.
    クラウドが実現するソフト開発・運用の変革と自動化 (参考)Githubのスクリーンショット リポジトリの公開URL 過去の変更履歴を 全て保存 特定の時点のコードを タグ名で指定9 Open Cloud Campus
  • 10.
    クラウドが実現するソフト開発・運用の変革と自動化 「パーソナルクラウド」自動化における考察 便利な点 – 設定ファイルの再利用性 • テキストファイルにすべての設定が記録されているので、設定変更が簡単で、少しづ つ設定の異なる類似環境を何度でも再構築できる。 • Puppetのマニフェストがバージョン管理されているので、バージョン番号を指定す るだけで、特定バージョンの設定が適用できる。 Github  不便な点 – 単一の物理サーバが前提 • 複数の物理サーバへのデプロイはできない。 v1.0 v1.1 – 複数VMの依存関係が扱えない • Puppetはサーバ間の依存関係を解決する機能がないので、「DBサーバとWebサーバ を連携させる」ような設定はできない。 • 現状では、必要な際は、手続き型のスクリプトで連携処理を行なっている。(ので、 Puppetの「宣言的記述」のメリットが半減してしまう。) ⇒ 本格的な自動化ツールでは、複数ノードへのデプロイと複数VMの依存関係の取り扱い   が必要。10 Open Cloud Campus
  • 11.
  • 12.
    クラウドが実現するソフト開発・運用の変革と自動化 Aeolus Conductorとは? 「Aeolus(アイオロス)でRHELonEC2を利用する」 http://bit.ly/QzniL4  複数クラウドに対応したイメージ作成/アプリケーション環境構築の自動化ツール12 Open Cloud Campus
  • 13.
    クラウドが実現するソフト開発・運用の変革と自動化 複数クラウド/仮想化環境を適材適所で活用 共通の定義ファイルから複数環境に同一のアプリケーション実行環境を構築。 – システムテンプレート:JEOSの構成定義ファイル – アプリケーション・ブループリント:アプリケーション実行環境の構成定義ファイル システムテンプレート アプリケーション・ブループリント 本番環境 開発・テスト環境 パブリック 仮想化環境A 仮想化環境B クラウド13 Open Cloud Campus
  • 14.
    クラウドが実現するソフト開発・運用の変革と自動化 Aeolus Conductorによるアプリケーションデプロイの流れ アプリケーションデプロイ時は、ConfigServerを介して構成情報を交換することで、複数 VMに依存する設定が可能です。 – Ruby Facterでの取得情報を交換可能。ただし、ワークフロー処理は限定的。  仮想ネットワークの構成は対象外。仮想マシンは既存のデフォルトネットワークに接続し ます。 必要なサイズ/個数の仮想マシンを起動して アプリケーションの導入・設定を実施 アプリケーション ブループリント 構成情報の交換 指定のクラウドに JEOSイメージを作成 ConfigServer システム マシンイメージ テンプレート (JEOS)14 仮想マシン Open Cloud Campus
  • 15.
    クラウドが実現するソフト開発・運用の変革と自動化 (参考)DeltacloudによるAPIの共通化 Deltacloud Libraryは、複数の仮想化基盤/クラウドを共通のREST API (Deltacloud API)で操作するためのライブラリ群 – Aeolus Conductorでは、複数環境への対応にDeltacloud Libraryを使用15 Open Cloud Campus
  • 16.
  • 17.
    クラウドが実現するソフト開発・運用の変革と自動化 システムテンプレートによるJEOSの作成 (1) 「システムテンプレート」では、JEOSの構成情報を定義します。 – OSの種類、インストール元のレポジトリ、追加導入するパッケージ、導入後のカスタマ イズコマンドなどを指定します。 システムテンプレートの例 <template> <name>CentOS63 Template</name> <os> <name>RHEL-6</name> <version>3</version> <arch>x86_64</arch> <install type='url'> <url>http://172.16.1.1/CentOS63</url> </install> <rootpw>p@ssw0rd</rootpw> </os> <repositories> <repository name="Aeolus"> <url>http://172.16.1.101/aeolus/</url> </repository> </repositories> <packages> <package name="aeolus-audrey-agent"/> </packages> <description>CentOS63 Image Factory Template</description> <commands> <command name="Update to latest packages">yum -y update</command> </commands> </template>17 Open Cloud Campus
  • 18.
    クラウドが実現するソフト開発・運用の変革と自動化 システムテンプレートによるJEOSの作成 (2) Aeolus Conductorのメニュー画面から、対象クラウド用のJEOSを作成します。 – 対象のクラウドに対して「ビルド」を実行するとAeolusサーバ上のKVMで仮想マシンを 起動してイメージを作成後、指定のクラウドで利用可能な形式に変換します。 – その後「Push」を実行すると対象のクラウドにイメージの配信を行います。18 Open Cloud Campus
  • 19.
    クラウドが実現するソフト開発・運用の変革と自動化 アプリケーション・ブループリントによるデプロイ (1) 「アプリケーション・ブループリント」では、起動するインスタンスと起動後の アプリケーション導入/設定手順を定義します。 – 起動に使用するJEOSイメージ、インスタンスサイズ、デプロイ時にユーザが指定するパ ラメータなどを指定します。 – アプリケーション導入/設定 アプリケーション・ブループリントの例 手順はスクリプトをベタ書 <?xml version="1.0"?> きします。(実際には、こ <deployable version="1.0" name="RHEL6.3 motd hack"> のスクリプトから、Puppet <description/> <assemblies> などのツールとの連携を行 <assembly name="RHEL6-3-with-audrey-agent" hwp="small-x86_64"> います。) <image id="c0d6f20f-6e7a-4835-b41e-7b16a8cdbe35"/> <services> <service name="config_motd"> <executable> <contents><![CDATA[#!/bin/bash echo "$AUDREY_VAR_config_motd_message" >> /etc/motd]]> </contents> </executable> <parameters> <parameter name="message"> <value>Hello, World!</value> </parameter> </parameters> </service> </services> </assembly> </assemblies> </deployable>19 Open Cloud Campus
  • 20.
    クラウドが実現するソフト開発・運用の変革と自動化 アプリケーション・ブループリントによるデプロイ (2) Aeolus Conductorのメニュー画面から、アプリケーション・ブループリントを指 定して、デプロイを実施します。 – ユーザは、デプロイ先のクラウドを選択することが可能です。20 Open Cloud Campus
  • 21.
    クラウドが実現するソフト開発・運用の変革と自動化 アプリケーション・ブループリントとPuppet/Githubの連携 アプリケーション・ブループリントとPuppet/Githubによる環境構築を連携する ことも可能です。 – 下図のスクリプトをアプリケーション・ブループリントから実行すると、Puppetによる アプリケーションの導入・設定が実施されます。 GithubからPuppetマニフェストを取得・適用するスクリプトの例 # Setting up glusterfs using Puppet yum -y install http://mirror.us.leaseweb.net/epel/6/i386/epel- release-6-7.noarch.rpm yum -y install git yum -y install puppet mkdir -p /tmp/gittmp cd /tmp/gittmp git clone https://github.com/enakai00/gluster_puppet.git cd gluster_puppet git checkout $AUDREY_VAR_glusterd_gittag export FACTER_manifest_dir="/tmp/gittmp/gluster_puppet" export FACTER_data_device="/dev/xvdj" puppet main.pp – 詳細は、「Aeolus(アイオロス)でRHELonEC2を利用する(その3)」を参照 • http://bit.ly/RMFZae21 Open Cloud Campus
  • 22.
    クラウドが実現するソフト開発・運用の変革と自動化 Aeolus Conductorの考察 便利な点 – 複数環境の透過的利用 • 現実的なユースケースは今後の検討課題ではあるが、JEOSの作成からアプリケー ションのデプロイまでを複数環境で実施できるツールはめずらしい。 – JEOS方式によるカスタマイズの容易性 • IaaSクラウドの多くはオリジナルイメージのスクラッチ作成やカスタマイズが面倒。 Aeolusであれば、システムテンプレートからイメージを自動生成可能。 • デプロイ時に動的にアプリケーションをインストールするので、アプリケーションの バージョンアップに合せてイメージを再作成するなどの手間がかからない。  不便な点 – クラウド固有の機能が使えない • セキュリティグループ、EBSのアタッチなどクラウド固有の機能に未対応。 – 複数VMデプロイ時のワークフロー処理が不十分 • アプリケーション・ブループリントでは、「VM2の構成が完了してから、VM1の構成 を開始する」程度の依存関係しか扱えず、複雑なワークフロー処理ができない。 ⇒ 現実的なユースケースに合わせた機能拡張が今後の課題。22 Open Cloud Campus
  • 23.

[8]ページ先頭

©2009-2025 Movatter.jp