Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
週末趣味のAzure
Azure 上にオンラインストレージサービスを構築
免責事項
本資料並びにセッションでの発言は私個人の調査や
情報収集および実践に基づいて構成したものです
したがって所属企業やマイクロソフト等、私個人以外の
如何なるものの意見を代表するものではありません
本セッションでの内容に起因して損害が生じ...
自己紹介
•氏名:難波 和生
•職業:ネットワークオペレータ
   :サーバインフラ担当
   :レイヤー4までの人です
•趣味:車の運転
   :古いPCの復活
   :クラウド環境のこと
Agenda
•オンラインファイルストレージ環境構築のきっかけ
•環境の概要
•Azure Active Directory Domain Services
•Azure File Storage
•コンテナ環境のおはなし
•まとめ
Agenda
•オンラインファイルストレージ環境構築のきっかけ
•環境の概要
•Azure Active Directory Domain Services
•Azure File Storage
•コンテナ環境のおはなし
•まとめ
なんでオンラインストレージ環境を
                 作ってみたのか
• Mac からWindows環境のファイルサーバアクセスが不便
• MacとWindowsの混在環境
• Macユーザにファイルを渡す方法があれば便利
• 社...
便利そうなオンラインストレージないかな。
• OwnCloud が便利そう
• Dropboxライクな専用ストレージが構築できる
• PC用クライアントがある
• iOSとAndroidのクライアントアプリ(約100円・税別)
• https:...
便利そうなオンラインストレージないかな。
• OwnCloud が便利そう
• LDAP や Active Directory と連携できる
• SAML/Shibboleth認証への対応
• 色々なストレージサービスとの連携機能が搭載
• N...
便利そうなオンラインストレージないかな。
• セキュリティ機能も充実
• 操作ログ取得
• ファイルの暗号化
ざっくりと構成はこんな感じで
• HTTPサーバ は Apache
• データベースは Postgresql
• Windows共有フォルダをマウントして利用
• ユーザ認証は Active Directory
検証環境がほしいな
• 自宅の環境だと。。
• Mac Pro Early2006 のHyper-V Server 2012 r2
• ちょっとパワー不足(メモリ4GBしかない)
• 休憩時間などの隙間時間も活用したい
• 自宅に固定IP IP...
そうだ、クラウドを使おう!
•自分の中で今までのクラウド利用は、、
– Windows 系 の仮想マシンは Azure
– Linux 系 の仮想マシンは AWS
Azure で Linux を使ってみよう!
•Windows系 Iaas 環境を既に使っているし
         運用 know-how をもっと貯めたい
•国内リージョンにDR構成でデータ保存できる
•サイト間接続(S2S)だけでなく
 ...
なんで Azure をつかうの?
Azure Active Directory
Domain Servicesプレビュー開始!
管理マスターを握った
ADDSが止まったらどうしよう。。
    そんな不安から解放されるのかな?
なんで Azure をつかうの?
 Azure File Storage のサービスが始まった!
•SMB3.0でマウントできるし便利そう
•ストレージ単価も高くない
    実際に使ってイメージをつかみたい!
なんで Azure で Linux をつかうの?
•de:code 2015 で Linux への本気度を感じた
 講師の方がこんな感じのシャツを着てたような
今流行りのコンテナで作れないかな。。
MSDNのサブスクリプションクレジットが
•5,500円/月
•Azure Active Directory
  Domain Services のプレビュー料金
•7,588.80円/月
        ...
なんでコンテナをつかうの?
●
Azure AD Domain Services のドメインは
検証作業の都度作成
•ドメインが変わったらコンテナは使い捨て
•コンテナホスト用の仮想マシンのみでOK
– 仮想マシンの課金も分単位 経済的!
  ...
Agenda
•オンラインファイルストレージ環境構築のきっかけ
•環境の概要
•Azure Active Directory Domain Services
•Azure File Storage
•コンテナ環境のおはなし
•まとめ
システム構成
• 認証関連
• Azure AD Domain Services
• 東アジアリージョン(香港)
• オンラインストレージ
• ownCloudを使います
• 共有フォルダに「Azure File ストレージ」をマウント
•  ...
システム構成
• 仮想ネットワーク
• 今回はクラッシック
• 新しい方の仮想ネットワーク サブネットが
Azure AD Domain Servicesで選択できなかった
• インターネットからの接続 および
VNETへの Point to ...
構成図
Agenda
•オンラインファイルストレージ環境構築のきっかけ
•環境の概要
•Azure Active Directory Domain Services
•Azure File Storage
•コンテナ環境のおはなし
•まとめ
Azure Active Directory Domain Services
(Azure ADドメインサービス)
• Azure AD に作成したディレクトリで
ADDSの一部機能を使える
– Kerberos、NTLM、LDAP認証プロトコ...
Azure Active Directory Domain Services
(Azure ADドメインサービス)
• サービスの有効化
Azure Active Directory Domain Services
独自ドメインも設定可独自ドメインも設定可
DCを設置するサブネットを選択
2つのDCが作成される
• 仮想ネットワークのDNS設定
Azure Active Directory Domain Services
• Azure AD に「AAD DC Administrators」グループを作成
Azure Active Directory Domain Services
• Azure AD に「AAD DC Administrators」グループを作成
Azure Active Directory Domain Services
• Azure AD に「AAD DC Administrators」グループを作成
Azure Active Directory Domain Services
• 「AAD DC Administrators」グループに管理者ユーザを追加
Azure Active Directory Domain Services
• 「AAD DC Administrators」グループに管理者ユーザを追加
Azure Active Directory Domain Services
• 「AAD DC Administrators」グループに管理者ユーザを追加
Azure Active Directory Domain Services
• 「AAD DC Administrators」グループに管理者ユーザを追加
Azure Active Directory Domain Services
• 「AAD DC Administrators」グループに管理者ユーザを追加
Azure Active Directory Domain Services
• 「Azure AD」と「Azure AD ドメインサービス」でユーザ同期
– 「http://myapps.microsoft.com」へアクセス
– 作成したユーザのパスワードを変更すると同期されます
Azure Active Direc...
• 「Azure AD」と「Azure AD ドメインサービス」でユーザ同期
– 「http://myapps.microsoft.com」へアクセス
– 作成したユーザのパスワードを変更
一時パスワードで
ログイン
Azure Active ...
• 「Azure AD」と「Azure AD ドメインサービス」でユーザ同期
– 「http://myapps.microsoft.com」へアクセス
– 作成したユーザのパスワードを変更
パスワードを変更
して同期
Azure Active ...
• Azure ADでパスワードを変更後、数分で同期
Azure Active Directory Domain Services
> Get-ADUser -Filter {SamAccountName -eq "oc8-easia-admi...
Agenda
•オンラインファイルストレージ環境構築のきっかけ
•環境の概要
•Azure Active Directory Domain Services
•Azure File Storage
•コンテナ環境のおはなし
•まとめ
Azure File Storage
(Azure ファイルストレージ)
• ファイル共有機能を提供するサービス
– SMB 2.1およびSMB 3.0プロトコルに対応
– 同一リージョンからはSMB 2.1・SMB 3.0 で接続可能
– 別...
Azure File Storage
(Azure ファイルストレージ)
• ファイル共有機能を提供するサービス
– 別リージョンやオンプレミスからのアクセス
●
アウトバウンド方向でTCP:445の許可
– ポートの開放は慎重に。。
Azure File Storage
• ストレージアカウントを作成
「ファイル」を選択
Azure File Storage
• ストレージアカウントを作成
新規の「ファイル
共有」を作成
Azure File Storage
• ストレージアカウントを作成
作成した共有ファイルは
 「ストレージアカウント名.
      file.core.windows.nethogehoge」
 で接続可能
接続認証は発行されたアクセスキー...
Agenda
•オンラインファイルストレージ環境構築のきっかけ
•環境の概要
•Azure Active Directory Domain Services
•Azure File Storage
•コンテナ環境のおはなし
•まとめ
コンテナホストの構成
• なにを使おうか?
• OpenLogic7.1
• CoreOS
• Atomic Host
 今回はAzureにイメージがある OpenLogic 利用します
OpenLogic なら Tutum クライアントの検証...
コンテナホストの構成
• ファイルシステムどうしようか?
• OpenLogic7.1の FileSystem は Ext4
• コンテナのストレージドライバ はどうしようか?
• DeviceMapper ?
• aufs ?
• overl...
コンテナホストの構成
• ストレージドライバ を overlayfs に変更
– /etc/sysconfig/docker
#OPTIONS='--selinux-enabled'
OPTIONS='--selinux-enabled -s ...
• コンテナでSystemdを利用する際に苦労したところ
– CMD で /sbin/init を実行しなくてはいけない
– Docker run 実行時の env 設定は読み込んでくれない
– コンテナイメージにクレデンシャル情報を含めたくな...
• こんな方法で解決策を検討
– DBロールやDBアクセスのクレデンシャルは
                      curlコマンドで取得
●
Unit内 Enviroment で指定したファイルに認証用の環境変数を読込む
– クレデンシ...
DBコンテナの構成
• 使用OSイメージ
• CentOS 7.1 Latest
• Postgresql 9.4
●
PITR (Point In Time Recovery) 用ディレクトリに
 「Azure File Storage」をマ...
DBコンテナの構成
• ここからは暫く「黒い画面」が続きます
systemd [Service]セクション
– ExecStartPre:実行前の準備
         (環境変数の設定 など)
– ExecStart:目的を実行する為のメイン...
DBコンテナの構成
• ここからは暫く「黒い画面」が続きます
systemd [Unit]セクション
– Afte  :Unit を起動する前に起動しておきたい Unit
     (このUnit が 利用するサービス)
– Before:Un...
DBコンテナの構成
• 必要なパッケージを追加
• samba-client、samba-common、cifs-utils
# yum install -y samba-client 
Samba-common 
cifs-utils
DBコンテナの構成
• Postgresql9.4のインストール
# rpm -ivh http://yum.postgresql.org/9.4/redhat/rhel-
7-x86_64/pgdg-centos94-9.4-2.noarch...
•Azure File Storage をマウントするための
認証情報を取得するUnitファイルを作成してみよう
– Unit名:azfenv.service
●
実行スクリプト:azfenv.sh
DBコンテナの構成
DBコンテナの構成
[Unit]
 Description = Setting Azure File Storage Credential
 After=network.target
 Before=remote-fs.target mnt-p...
DBコンテナの構成
#!/bin/sh -eu
ENV_FILE=/etc/sysconfig/azfile_env
AZF_NAME=$(curl -s https://your-host-name/env/AZF_NAME.txt)
AZF...
•Azure File Storage をマウントするための
             Unitファイルを作成してみよう
– Unit名:mnt-pgsql.mount
azfenv.service で作成した
           認証情報を...
DBコンテナの構成
[Unit]
 SourcePath=/etc/fstab
 Documentation=man:fstab(5) man:systemd-fstab-generator(8)
 Before=remote-fs.targe...
•Azure File Storage をマウントしたディレクトリに
PITR(Point In Time Recovery)の設定をしてみよう
– 編集するファイル
●
postgresql.conf(WALアーカイブの設定)
●
pg_hb...
DBコンテナの構成
変更箇所
#wal_level = minimal   → wal_level = archive
#archive_mode = off → archive_mode = on
#archive_command = '' ...
DBコンテナの構成
# "local" is for Unix domain socket connections only
local all    postgres trust
local replication postgres peer...
DBコンテナの構成
# ls -l /mnt/pgsql/archive/
total 32768
-rw-------. 1 postgres postgres 16777216 Feb 17 06:47 000000010000000000...
•データベースをバックアップする
              Unitファイルを作成してみよう
– Unit名:pgsql_pitr.service
●
pgsql_pitr.sh (実行スクリプト)
–pg_basebackup でベースバッ...
DBコンテナの構成
[Unit]
 Description=Postgresql PITR Backup
[Service]
 Type=oneshot
 ExecStart=/usr/local/sbin/pgsql_pitr.sh
 Use...
DBコンテナの構成
#!/bin/bash -eu
/usr/bin/pg_basebackup -D /mnt/pgsql/backup
/bin/mv /mnt/pgsql/backup/ /mnt/pgsql/backup`date +%...
•データベースをバックアップ実行の
        Cron 的 Unitファイルを作成してみよう
– Unit名:pgsql_pitr.timer
●
pgsql_pitr.service (実行スクリプト)を
               ...
DBコンテナの構成
[Unit]
 Description=Postgres PITR Unit
[Timer]
 OnCalendar=daily
 Persistent=false
[Install]
 WantedBy=timers.ta...
•データベースのオーナーとデータベースを
       作成するUnitファイルの設定をしてみよう
– Unit名:createdb.service
●
postgres_env.sh:DB作成前の準備(env設定)
●
create_db.s...
DBコンテナの構成
• DBロールとデータベース作成Unitファイル(createdb.service)
[Unit]
 Description = Create DB Servece
 After=postgresql-9.4.service...
DBコンテナの構成
#!/bin/sh -eu
ENV_FILE=/etc/sysconfig/postgres_env
DB_NAME=$(curl -s https://yourhoustname/dockerenv/DB_NAME.txt...
DBコンテナの構成
#!/bin/bash -eu
psql -U postgres --command "CREATE USER ${DB_USER} WITH
CREATEDB PASSWORD '${DB_PASS}';"
psql -U...
DBコンテナの構成
#!/bin/bash -eu
rm -f 
'/etc/systemd/system/multi-user.target.wants/createdb.service'
• stop_createdb.sh (ExecSt...
DBコンテナの構成
• Postgresql Unitファイル設定
– 標準のUnitファイルをinclude して、変更点を記載する
# vi /etc/systemd/system/postgresql-9.4.service
----
....
DBコンテナの構成
• postgresql 起動
# systemctl start postgresql-9.4
# docker run -i -t -d --name=pgsql94 
   --privileged -p 5432:5...
•これをまとめたDockerfileがこちらです
– Gist
●
https://gist.github.com/kazu0-n/92fe4d10157b
47d5dfc0
– GitHub
●
https://github.com/kazu...
APコンテナの構成
• 使用OSイメージ
• CentOS 7.1 Latest
• ownCloud 8
• 共有ディレクトリに
          「Azure File ストレージ」をマウント
●
ローカル冗長(Standard-LRS)
•これをまとめたDockerfileがこちらです
– Gist
●
https://gist.github.com/kazu0-n/28aab3622ec
ebb19d20d
– GitHub
●
https://github.com/kazu...
•OwnCloud の設定
– Azure Active Directory Domain Services と連携
「ファイル」 から
「アプリ」 を選択
APコンテナの構成
APコンテナの構成
「無効なアプリ」 から
「LDAP user and group backend」
を有効化
•OwnCloud の設定
– Azure Active Directory Domain Services と連携
•Azure Active Directory Domain Services と連携
APコンテナの構成
「owncloud」メニュー から
「管理」 を選択
•Azure Active Directory Domain Services と連携
APコンテナの構成
AADDS のIPアドレス
ユーザーのDistinguishedName
ユーザーのAADDS パスワード
「ベースDN を検出を」クリ...
•Azure Active Directory Domain Services と連携
APコンテナの構成
Azure AD で作成したグループを選
択して LDAP ユーザーフィルターを
作成
•Azure Active Directory Domain Services と連携
APコンテナの構成
「その他の属性」から
「sAMAccountName」を選択
この設定で「SAMアカウント名」で
ログインが可能になります
•Azure Active Directory Domain Services と連携
APコンテナの構成
Azure AD で作成したグループを選
択して LDAP グループフィルターを
作成
•Azure Active Directory Domain Services と連携
APコンテナの構成
「owncloud」メニュー から
「ユーザー」 を選択
•Azure Active Directory Domain Services と連携
APコンテナの構成
Azure AD で
作成したグループ
Azure AD で作成したユーザー
• 共有フォルダ に Azure File Storage をマウント
「ファイル」 から
「アプリ」 を選択
APコンテナの構成
• 共有フォルダ に Azure File Storage をマウント
– External storage support を有効化
APコンテナの構成
• 共有フォルダ に Azure File Storage をマウント
– External storage support を設定
APコンテナの構成
「SMB/CIFS」でAzure File
Storage が設定できなかったので
コンテ...
• 共有フォルダ に Azure File Storage をマウント
– “You don’t have permissions to upload files here”の対策
APコンテナの構成
# usermod -s /bin/bas...
• 共有フォルダ に Azure File Storage をマウント
– 設定した共有フォルダが 利用可能な状態で表示される
APコンテナの構成
• 共有フォルダ に Azure File Storage をマウント
– Azure AD に設定した「ユーザー」や「グループ」を利用可能
APコンテナの構成
• 最後に1枚黒い画面です
– コンテナ起動順序のUnitファイルを作成してみよう
コンテナ起動順序の設定(ホスト側)
[Unit]
 Description=auto start of docker containers
 After=doc...
Agenda
•オンラインファイルストレージ環境構築のきっかけ
•環境の概要
•Azure Active Directory Domain Service
•Azure File Storage
•コンテナ環境のおはなし
•まとめ
まとめ
•アプリケーションの認証にAADDSは便利
•Azure File Storage のマウントは便利
– 接続元IP制限の機能があるといいな。。
•コンテナホスト内のプロセス制御に
     systemd を使うと意外と便利かも
•A...
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

Azure of the_weekend_hobby

854 views

Published on

2016年2月20日の Okayama ComCamp 2016 powered by MVPs でお話しさせていただいた内容です。

・pgsql94 container docker files
https://github.com/kazu0-n/pgsql94-docker-azf

・Owncloud container docker files
https://github.com/kazu0-n/oc8-docker-azf

Published in: Technology
  • Be the first to comment

Azure of the_weekend_hobby

  1. 1. 週末趣味のAzure Azure 上にオンラインストレージサービスを構築
  2. 2. 免責事項 本資料並びにセッションでの発言は私個人の調査や 情報収集および実践に基づいて構成したものです したがって所属企業やマイクロソフト等、私個人以外の 如何なるものの意見を代表するものではありません 本セッションでの内容に起因して損害が生じた場合に おいても、発表者はその責任を負うことができません
  3. 3. 自己紹介 •氏名:難波 和生 •職業:ネットワークオペレータ    :サーバインフラ担当    :レイヤー4までの人です •趣味:車の運転    :古いPCの復活    :クラウド環境のこと
  4. 4. Agenda •オンラインファイルストレージ環境構築のきっかけ •環境の概要 •Azure Active Directory Domain Services •Azure File Storage •コンテナ環境のおはなし •まとめ
  5. 5. Agenda •オンラインファイルストレージ環境構築のきっかけ •環境の概要 •Azure Active Directory Domain Services •Azure File Storage •コンテナ環境のおはなし •まとめ
  6. 6. なんでオンラインストレージ環境を                  作ってみたのか • Mac からWindows環境のファイルサーバアクセスが不便 • MacとWindowsの混在環境 • Macユーザにファイルを渡す方法があれば便利 • 社内用の書類(申請書とか)はWindows 環境が中心 • WEBベースのファイルストレージがあると                     便利になるのでは。。
  7. 7. 便利そうなオンラインストレージないかな。 • OwnCloud が便利そう • Dropboxライクな専用ストレージが構築できる • PC用クライアントがある • iOSとAndroidのクライアントアプリ(約100円・税別) • https://owncloud.org/
  8. 8. 便利そうなオンラインストレージないかな。 • OwnCloud が便利そう • LDAP や Active Directory と連携できる • SAML/Shibboleth認証への対応 • 色々なストレージサービスとの連携機能が搭載 • NFSストレージ、iSCSIストレージ、FTPサーバー、Windows共有 フォルダや、Amazon S3、Dropbox、Google Drive等
  9. 9. 便利そうなオンラインストレージないかな。 • セキュリティ機能も充実 • 操作ログ取得 • ファイルの暗号化
  10. 10. ざっくりと構成はこんな感じで • HTTPサーバ は Apache • データベースは Postgresql • Windows共有フォルダをマウントして利用 • ユーザ認証は Active Directory
  11. 11. 検証環境がほしいな • 自宅の環境だと。。 • Mac Pro Early2006 のHyper-V Server 2012 r2 • ちょっとパワー不足(メモリ4GBしかない) • 休憩時間などの隙間時間も活用したい • 自宅に固定IP IPSec接続 を用意すると家庭内稟議が、、
  12. 12. そうだ、クラウドを使おう! •自分の中で今までのクラウド利用は、、 – Windows 系 の仮想マシンは Azure – Linux 系 の仮想マシンは AWS
  13. 13. Azure で Linux を使ってみよう! •Windows系 Iaas 環境を既に使っているし          運用 know-how をもっと貯めたい •国内リージョンにDR構成でデータ保存できる •サイト間接続(S2S)だけでなく          P2S(Point to Site)接続も可能
  14. 14. なんで Azure をつかうの? Azure Active Directory Domain Servicesプレビュー開始! 管理マスターを握った ADDSが止まったらどうしよう。。     そんな不安から解放されるのかな?
  15. 15. なんで Azure をつかうの?  Azure File Storage のサービスが始まった! •SMB3.0でマウントできるし便利そう •ストレージ単価も高くない     実際に使ってイメージをつかみたい!
  16. 16. なんで Azure で Linux をつかうの? •de:code 2015 で Linux への本気度を感じた  講師の方がこんな感じのシャツを着てたような
  17. 17. 今流行りのコンテナで作れないかな。。 MSDNのサブスクリプションクレジットが •5,500円/月 •Azure Active Directory   Domain Services のプレビュー料金 •7,588.80円/月                    うっ、足りない、、
  18. 18. なんでコンテナをつかうの? ● Azure AD Domain Services のドメインは 検証作業の都度作成 •ドメインが変わったらコンテナは使い捨て •コンテナホスト用の仮想マシンのみでOK – 仮想マシンの課金も分単位 経済的!                動機が不純でスミマセン、、、
  19. 19. Agenda •オンラインファイルストレージ環境構築のきっかけ •環境の概要 •Azure Active Directory Domain Services •Azure File Storage •コンテナ環境のおはなし •まとめ
  20. 20. システム構成 • 認証関連 • Azure AD Domain Services • 東アジアリージョン(香港) • オンラインストレージ • ownCloudを使います • 共有フォルダに「Azure File ストレージ」をマウント •  「Azure AD Domain Services」でユーザ認証
  21. 21. システム構成 • 仮想ネットワーク • 今回はクラッシック • 新しい方の仮想ネットワーク サブネットが Azure AD Domain Servicesで選択できなかった • インターネットからの接続 および VNETへの Point to Site(P2S) VPN接続
  22. 22. 構成図
  23. 23. Agenda •オンラインファイルストレージ環境構築のきっかけ •環境の概要 •Azure Active Directory Domain Services •Azure File Storage •コンテナ環境のおはなし •まとめ
  24. 24. Azure Active Directory Domain Services (Azure ADドメインサービス) • Azure AD に作成したディレクトリで ADDSの一部機能を使える – Kerberos、NTLM、LDAP認証プロトコル – Windows統合認証 – グループポリシー
  25. 25. Azure Active Directory Domain Services (Azure ADドメインサービス) • サービスの有効化
  26. 26. Azure Active Directory Domain Services 独自ドメインも設定可独自ドメインも設定可 DCを設置するサブネットを選択 2つのDCが作成される
  27. 27. • 仮想ネットワークのDNS設定 Azure Active Directory Domain Services
  28. 28. • Azure AD に「AAD DC Administrators」グループを作成 Azure Active Directory Domain Services
  29. 29. • Azure AD に「AAD DC Administrators」グループを作成 Azure Active Directory Domain Services
  30. 30. • Azure AD に「AAD DC Administrators」グループを作成 Azure Active Directory Domain Services
  31. 31. • 「AAD DC Administrators」グループに管理者ユーザを追加 Azure Active Directory Domain Services
  32. 32. • 「AAD DC Administrators」グループに管理者ユーザを追加 Azure Active Directory Domain Services
  33. 33. • 「AAD DC Administrators」グループに管理者ユーザを追加 Azure Active Directory Domain Services
  34. 34. • 「AAD DC Administrators」グループに管理者ユーザを追加 Azure Active Directory Domain Services
  35. 35. • 「AAD DC Administrators」グループに管理者ユーザを追加 Azure Active Directory Domain Services
  36. 36. • 「Azure AD」と「Azure AD ドメインサービス」でユーザ同期 – 「http://myapps.microsoft.com」へアクセス – 作成したユーザのパスワードを変更すると同期されます Azure Active Directory Domain Services
  37. 37. • 「Azure AD」と「Azure AD ドメインサービス」でユーザ同期 – 「http://myapps.microsoft.com」へアクセス – 作成したユーザのパスワードを変更 一時パスワードで ログイン Azure Active Directory Domain Services
  38. 38. • 「Azure AD」と「Azure AD ドメインサービス」でユーザ同期 – 「http://myapps.microsoft.com」へアクセス – 作成したユーザのパスワードを変更 パスワードを変更 して同期 Azure Active Directory Domain Services
  39. 39. • Azure ADでパスワードを変更後、数分で同期 Azure Active Directory Domain Services > Get-ADUser -Filter {SamAccountName -eq "oc8-easia-admin"} DistinguishedName : CN=oc8-easia-admin,OU=AADDS Users,DC=your,DC=domain,DC=net Enabled : True GivenName : oc8-easia Name : oc8-easia-admin ObjectClass : user ObjectGUID : 05662ca3-b7fb-4d67-808e-2dbf6da51592 SamAccountName : oc8-easia-admin SID : S-1-5-21-1119254716-991656386-791295664-2602 Surname : admin このDN 後でつかいます
  40. 40. Agenda •オンラインファイルストレージ環境構築のきっかけ •環境の概要 •Azure Active Directory Domain Services •Azure File Storage •コンテナ環境のおはなし •まとめ
  41. 41. Azure File Storage (Azure ファイルストレージ) • ファイル共有機能を提供するサービス – SMB 2.1およびSMB 3.0プロトコルに対応 – 同一リージョンからはSMB 2.1・SMB 3.0 で接続可能 – 別リージョンやオンプレミスからは SMB 3.0 で接続可能
  42. 42. Azure File Storage (Azure ファイルストレージ) • ファイル共有機能を提供するサービス – 別リージョンやオンプレミスからのアクセス ● アウトバウンド方向でTCP:445の許可 – ポートの開放は慎重に。。
  43. 43. Azure File Storage • ストレージアカウントを作成 「ファイル」を選択
  44. 44. Azure File Storage • ストレージアカウントを作成 新規の「ファイル 共有」を作成
  45. 45. Azure File Storage • ストレージアカウントを作成 作成した共有ファイルは  「ストレージアカウント名.       file.core.windows.nethogehoge」  で接続可能 接続認証は発行されたアクセスキーを利用
  46. 46. Agenda •オンラインファイルストレージ環境構築のきっかけ •環境の概要 •Azure Active Directory Domain Services •Azure File Storage •コンテナ環境のおはなし •まとめ
  47. 47. コンテナホストの構成 • なにを使おうか? • OpenLogic7.1 • CoreOS • Atomic Host  今回はAzureにイメージがある OpenLogic 利用します OpenLogic なら Tutum クライアントの検証もできる
  48. 48. コンテナホストの構成 • ファイルシステムどうしようか? • OpenLogic7.1の FileSystem は Ext4 • コンテナのストレージドライバ はどうしようか? • DeviceMapper ? • aufs ? • overlayfs ?  今回はパフォーマンスが高いと噂の overlayfs を使ってみます
  49. 49. コンテナホストの構成 • ストレージドライバ を overlayfs に変更 – /etc/sysconfig/docker #OPTIONS='--selinux-enabled' OPTIONS='--selinux-enabled -s overlay' • overlayfs は SELinux に未対応なので。。 # sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config # systemctl reboot
  50. 50. • コンテナでSystemdを利用する際に苦労したところ – CMD で /sbin/init を実行しなくてはいけない – Docker run 実行時の env 設定は読み込んでくれない – コンテナイメージにクレデンシャル情報を含めたくない – create db するunitは初回起動時に1回だけの実行にしたい コンテナの構成
  51. 51. • こんな方法で解決策を検討 – DBロールやDBアクセスのクレデンシャルは                       curlコマンドで取得 ● Unit内 Enviroment で指定したファイルに認証用の環境変数を読込む – クレデンシャル情報へのアクセスは/32で接続元IPを制限 – クレデンシャル情報へのアクセスはHTTPS – create db するUnitのタイプを「Oneshot」に設定 ● 初回起動後 「execstartpost」 でUnit自身をdisableにする コンテナの構成
  52. 52. DBコンテナの構成 • 使用OSイメージ • CentOS 7.1 Latest • Postgresql 9.4 ● PITR (Point In Time Recovery) 用ディレクトリに  「Azure File Storage」をマウント (データ永続化)   File Storage は ローカル冗長(Standard-LRS) • コンテナ内プロセスはsystemdで制御
  53. 53. DBコンテナの構成 • ここからは暫く「黒い画面」が続きます systemd [Service]セクション – ExecStartPre:実行前の準備          (環境変数の設定 など) – ExecStart:目的を実行する為のメインとなる処理          (データベース作成など) – ExecStartPost:実行後の後始末          (Unitファイルのdisable化 など)
  54. 54. DBコンテナの構成 • ここからは暫く「黒い画面」が続きます systemd [Unit]セクション – Afte  :Unit を起動する前に起動しておきたい Unit      (このUnit が 利用するサービス) – Before:Unit の機能 を 利用するサービス      (このUnitが提供する機能を利用するサービス)
  55. 55. DBコンテナの構成 • 必要なパッケージを追加 • samba-client、samba-common、cifs-utils # yum install -y samba-client Samba-common cifs-utils
  56. 56. DBコンテナの構成 • Postgresql9.4のインストール # rpm -ivh http://yum.postgresql.org/9.4/redhat/rhel- 7-x86_64/pgdg-centos94-9.4-2.noarch.rpm # yum -y install postgresql94-server postgresql94 postgresql94-contrib • Postgresql リポジトリ追加 • Postgresql インストール
  57. 57. •Azure File Storage をマウントするための 認証情報を取得するUnitファイルを作成してみよう – Unit名:azfenv.service ● 実行スクリプト:azfenv.sh DBコンテナの構成
  58. 58. DBコンテナの構成 [Unit]  Description = Setting Azure File Storage Credential  After=network.target  Before=remote-fs.target mnt-pgsql.mount [Service]  Type = oneshot  ExecStart=/usr/local/sbin/azfenv.sh [Install]  WantedBy = multi-user.target • azfenv.service マウント認証情報の取得 Unitファイル 
  59. 59. DBコンテナの構成 #!/bin/sh -eu ENV_FILE=/etc/sysconfig/azfile_env AZF_NAME=$(curl -s https://your-host-name/env/AZF_NAME.txt) AZF_PASS=$(curl -s https://your-host-name/env/AZF_PASS.txt) AZFENV="username=$AZF_NAMEnpassword=$AZF_PASS" echo -e $AZFENV > $ENV_FILE • azfenv.sh マウント認証情報の取得シェルスクリプト 
  60. 60. •Azure File Storage をマウントするための              Unitファイルを作成してみよう – Unit名:mnt-pgsql.mount azfenv.service で作成した            認証情報を読み込みます – 認証情報ファイル:/etc/sysconfig/azfile_env DBコンテナの構成
  61. 61. DBコンテナの構成 [Unit]  SourcePath=/etc/fstab  Documentation=man:fstab(5) man:systemd-fstab-generator(8)  Before=remote-fs.target  After=network.target azfenv.service [Mount]  What=//ストレージアカウント名.file.core.windows.net/hogehoge  Where=/mnt/pgsql  Type=cifs  Options=credentials=/etc/sysconfig/azfile_env,vers=3.0,dir_mode=0700,   file_mode=0600,uid=postgres,gid=postgres [Install]  WantedBy=multi-user.target • mnt-pgsql.mount マウント用 Unitファイル 
  62. 62. •Azure File Storage をマウントしたディレクトリに PITR(Point In Time Recovery)の設定をしてみよう – 編集するファイル ● postgresql.conf(WALアーカイブの設定) ● pg_hba.conf (レプリケーションアクセス設定) DBコンテナの構成
  63. 63. DBコンテナの構成 変更箇所 #wal_level = minimal   → wal_level = archive #archive_mode = off → archive_mode = on #archive_command = '' → archive_command =                  '' cp %p /mnt/pgsql/archive/%f' '' #max_wal_senders = 0 → max_wal_senders = 3 • マウントしたストレージ に WALアーカイブを保存 (postgresql.confを編集)
  64. 64. DBコンテナの構成 # "local" is for Unix domain socket connections only local all    postgres trust local replication postgres peer  ← 追記 #local all   postgres peer # IPv4 local connections: host all    all 127.0.0.1/32 md5 # IPv6 local connections: host all    all ::1/128 md5 # Allow replication connections from localhost, by a user with the # replication privilege. host all    postgres 0.0.0.0/0 reject • レプリケーションアクセス設定(pg_hba.confを編集)
  65. 65. DBコンテナの構成 # ls -l /mnt/pgsql/archive/ total 32768 -rw-------. 1 postgres postgres 16777216 Feb 17 06:47 000000010000000000000004 -rw-------. 1 postgres postgres 16777216 Feb 17 13:51 000000010000000000000005 • PITR(Point In Time Recovery)設定 – マウントしたストレージ に WALアーカイブが保存されます
  66. 66. •データベースをバックアップする               Unitファイルを作成してみよう – Unit名:pgsql_pitr.service ● pgsql_pitr.sh (実行スクリプト) –pg_basebackup でベースバックアップ作成 –ベースバックアップ ディレクトリのリネーム –3日以前のWALアーカイブの削除 –3日以前のベースバックアップの削除 DBコンテナの構成
  67. 67. DBコンテナの構成 [Unit]  Description=Postgresql PITR Backup [Service]  Type=oneshot  ExecStart=/usr/local/sbin/pgsql_pitr.sh  User=postgres  Group=postgres • pgsql_pitr.service (PITR用 Unitファイル)
  68. 68. DBコンテナの構成 #!/bin/bash -eu /usr/bin/pg_basebackup -D /mnt/pgsql/backup /bin/mv /mnt/pgsql/backup/ /mnt/pgsql/backup`date +%Y %m%d` /usr/bin/find /mnt/pgsql/archive/ -type f -mtime +3 -exec rm -f {} ; /usr/bin/find /mnt/pgsql/* -maxdepth 0 -type d -mtime +3 ! -name archive -exec rm -rf {} ; • (PITR実行スクリプト )
  69. 69. •データベースをバックアップ実行の         Cron 的 Unitファイルを作成してみよう – Unit名:pgsql_pitr.timer ● pgsql_pitr.service (実行スクリプト)を                      1日1回実行 ● timer と service の名前を合わせておくと              自動的に連携してくれます DBコンテナの構成
  70. 70. DBコンテナの構成 [Unit]  Description=Postgres PITR Unit [Timer]  OnCalendar=daily  Persistent=false [Install]  WantedBy=timers.target • Timer ユニットファイル
  71. 71. •データベースのオーナーとデータベースを        作成するUnitファイルの設定をしてみよう – Unit名:createdb.service ● postgres_env.sh:DB作成前の準備(env設定) ● create_db.sh   :DBオーナーとDBを作成 ● stop_createdb.sh:自身のUnitを                  Disableに変更 DBコンテナの構成
  72. 72. DBコンテナの構成 • DBロールとデータベース作成Unitファイル(createdb.service) [Unit]  Description = Create DB Servece  After=postgresql-9.4.service syslog.target network.target auditd.service [Service]  Type = oneshot  EnvironmentFile=/etc/sysconfig/postgres_env  ExecStartPre=/usr/local/sbin/postgres_env.sh  ExecStart=/usr/local/sbin/create_db.sh  ExecStartPost=/usr/local/sbin/stop_createdb.sh [Install]  WantedBy = multi-user.target
  73. 73. DBコンテナの構成 #!/bin/sh -eu ENV_FILE=/etc/sysconfig/postgres_env DB_NAME=$(curl -s https://yourhoustname/dockerenv/DB_NAME.txt) DB_PASS=$(curl -s https://yourhoustname/dockerenv/DB_PASS.txt) DB_USER=$(curl -s https://yourhoustname/dockerenv/DB_USER.txt) DBENV="DB_NAME=$DB_NAMEnDB_PASS=$DB_PASSnDB_USER=$DB_USER" echo -e $DBENV > $ENV_FILE • postgres_env.sh (ExecStartPre:起動前の準備スクリプト)
  74. 74. DBコンテナの構成 #!/bin/bash -eu psql -U postgres --command "CREATE USER ${DB_USER} WITH CREATEDB PASSWORD '${DB_PASS}';" psql -U postgres --command "CREATE DATABASE ${DB_NAME} OWNER ${DB_USER} TEMPLATE template0;" mkdir /mnt/pgsql/archive • create_db.sh (ExecStart:ロール・DB作成 スクリプト)
  75. 75. DBコンテナの構成 #!/bin/bash -eu rm -f '/etc/systemd/system/multi-user.target.wants/createdb.service' • stop_createdb.sh (ExecStartPost:Unit自身をdisableに変更)
  76. 76. DBコンテナの構成 • Postgresql Unitファイル設定 – 標準のUnitファイルをinclude して、変更点を記載する # vi /etc/systemd/system/postgresql-9.4.service ---- .include /lib/systemd/system/postgresql-9.4.service [Unit] Description=PostgreSQL 9.4 database server RequiresMountsFor=/mnt/pgsql
  77. 77. DBコンテナの構成 • postgresql 起動 # systemctl start postgresql-9.4 # docker run -i -t -d --name=pgsql94    --privileged -p 5432:5432 pgsql94:0.1.5 • systemdを使用するので 今回コンテナは特権モード(privileged)で起動
  78. 78. •これをまとめたDockerfileがこちらです – Gist ● https://gist.github.com/kazu0-n/92fe4d10157b 47d5dfc0 – GitHub ● https://github.com/kazu0-n/pgsql94-docker-azf DBコンテナの構成
  79. 79. APコンテナの構成 • 使用OSイメージ • CentOS 7.1 Latest • ownCloud 8 • 共有ディレクトリに           「Azure File ストレージ」をマウント ● ローカル冗長(Standard-LRS)
  80. 80. •これをまとめたDockerfileがこちらです – Gist ● https://gist.github.com/kazu0-n/28aab3622ec ebb19d20d – GitHub ● https://github.com/kazu0-n/oc8-docker-azf APコンテナの構成
  81. 81. •OwnCloud の設定 – Azure Active Directory Domain Services と連携 「ファイル」 から 「アプリ」 を選択 APコンテナの構成
  82. 82. APコンテナの構成 「無効なアプリ」 から 「LDAP user and group backend」 を有効化 •OwnCloud の設定 – Azure Active Directory Domain Services と連携
  83. 83. •Azure Active Directory Domain Services と連携 APコンテナの構成 「owncloud」メニュー から 「管理」 を選択
  84. 84. •Azure Active Directory Domain Services と連携 APコンテナの構成 AADDS のIPアドレス ユーザーのDistinguishedName ユーザーのAADDS パスワード 「ベースDN を検出を」クリック
  85. 85. •Azure Active Directory Domain Services と連携 APコンテナの構成 Azure AD で作成したグループを選 択して LDAP ユーザーフィルターを 作成
  86. 86. •Azure Active Directory Domain Services と連携 APコンテナの構成 「その他の属性」から 「sAMAccountName」を選択 この設定で「SAMアカウント名」で ログインが可能になります
  87. 87. •Azure Active Directory Domain Services と連携 APコンテナの構成 Azure AD で作成したグループを選 択して LDAP グループフィルターを 作成
  88. 88. •Azure Active Directory Domain Services と連携 APコンテナの構成 「owncloud」メニュー から 「ユーザー」 を選択
  89. 89. •Azure Active Directory Domain Services と連携 APコンテナの構成 Azure AD で 作成したグループ Azure AD で作成したユーザー
  90. 90. • 共有フォルダ に Azure File Storage をマウント 「ファイル」 から 「アプリ」 を選択 APコンテナの構成
  91. 91. • 共有フォルダ に Azure File Storage をマウント – External storage support を有効化 APコンテナの構成
  92. 92. • 共有フォルダ に Azure File Storage をマウント – External storage support を設定 APコンテナの構成 「SMB/CIFS」でAzure File Storage が設定できなかったので コンテナにマウントして「ローカル」 ディレクトリとして指定
  93. 93. • 共有フォルダ に Azure File Storage をマウント – “You don’t have permissions to upload files here”の対策 APコンテナの構成 # usermod -s /bin/bash apache # su - apache -c 'php /var/www/html/owncloud/console.php files:scan --all' # usermod -s /sbin/nologin apache 外部ストレージとして「ローカル」を 指定するとこのエラーが出るみたい
  94. 94. • 共有フォルダ に Azure File Storage をマウント – 設定した共有フォルダが 利用可能な状態で表示される APコンテナの構成
  95. 95. • 共有フォルダ に Azure File Storage をマウント – Azure AD に設定した「ユーザー」や「グループ」を利用可能 APコンテナの構成
  96. 96. • 最後に1枚黒い画面です – コンテナ起動順序のUnitファイルを作成してみよう コンテナ起動順序の設定(ホスト側) [Unit]  Description=auto start of docker containers  After=docker.service  Requires=docker.service [Service]  ExecStart=/bin/bash -c "/usr/bin/docker start pgsql94 oc8" [Install]  WantedBy=multi-user.target DBコンテナを先に起動してから APコンテナを起動
  97. 97. Agenda •オンラインファイルストレージ環境構築のきっかけ •環境の概要 •Azure Active Directory Domain Service •Azure File Storage •コンテナ環境のおはなし •まとめ
  98. 98. まとめ •アプリケーションの認証にAADDSは便利 •Azure File Storage のマウントは便利 – 接続元IP制限の機能があるといいな。。 •コンテナホスト内のプロセス制御に      systemd を使うと意外と便利かも •Azure での Linux 環境は使いやすいです
  99. 99. ご清聴ありがとうございました

×