このエントリーをはてなブックマークに追加

Redhat関連のPostでAWSとの話が出ていたのでメモ。

以下、アナウンスの通り、Redhat OpenShift Container platform 3.7がGAしました。

OpenShift:Announcing the OpenShift Container Platform 3.7 GA

ZDNET:Red Hat partners with AWS with OpenShift Container Platform 3.7

redhat:Latest Version of Red Hat OpenShift Container Platform Joins Infrastructure and Services Across Hybrid Cloud Environments

両方の記事の中で、OpenShift platformからAWSのサービスをデプロイできるようになると書いてあります。
RedhatはいずれにせよProvateCloudを諦めたわけではなくて、HybridCloudの文脈でビジネスを進めて行くことが記事から感じられます。
これも”Open”の戦略の一つで、特にライバルは存在しない状態を作り出すための製品のサービス拡充でしょう。
できれば、Azureも下記のリストにあげているサービスと同様のサービスがあるので対応していただきたいところです。

  • Amazonのサービス

    Amazon Simple Queue Service (SQS)
    Amazon Relational Database Services (RDS)
    Amazon Athena AWS Route 53
    Amazon Simple Storage Services (S3)
    Amazon Simple Notification Service (SNS)
    Amazon ElastiCache
    Amazon Redshift Simple Email Service (SES)
    Amazon DynamoDB
    Amazon Elastic MapReduce (EMR)

  • Azureのサービス

    Azure Storage Blob Queue / Azure Service Bus
    Azure Virtual Machine(SQL Server, Oracle) / Azure Database for mysql・Postgresql
    Azure Data Lake Analytics / SQL DWH Polybase
    Azure DNS
    Azure Storage Blob blob
    Azure Notification Hubs
    Azure Redis Cache
    SendGrid (サードパーティ)
    Azure DocumentDB / Azure CosmosDB
    Azure HDInsight

また、以前より話がでていた、OpenShift Service Catalogも今回のGAに含まれています。
MicrosoftでいうAppSourceのようなイメージでしょうか。

更に、RedHatコンテナ ネイティブストレージについても触れられています。

コンテナからクラウドのManaged Serviceのリソースを使ったり、ストレージを使ったりするのも、アーキテクチャとしては当たり前になっていて、バックエンドのリソースさえしっかりしてSLAを担保できれば、どこのリソースであろうがどんどん使って新しいサービスを産んだり、既存サービスのコスト構造改善につなげるというのが世の中のトレンドになっていると感じますね。

では、コンテナおよびサービスが使うソースコードや画像などのアセットはどこから拾ってくるかというとAzure Blob, AWS S3, OpenStack Swiftなどの、オブジェクトストレージやgithubなどのバージョン管理システム(ソフトウェア)だったりします。

仮に、そのリポジトリがどこからでもアクセスできる状態であると、クラウドベンダーにロックインされずにアプリケーションデリバリーが可能になります。

ビジネスのスピード感が求められている昨今、正しい方向に走るために迷いは必要ないと考えます。はやりにすぐに飛びつくのはナンセンスだということも考えられますが、それよりもビジネスのリスクを鑑みないことのほうがナンセンスだと感じています。

さてさて、いろいろと良くなればいいですね。僕も良くしていきたいと思っています。

Reference:

その他の関連記事


このエントリーをはてなブックマークに追加

Dockerをubuntuで使うためには?

手順が古いところがあるのでupdateしつつ以下の手順で実施

sudo apt update
sudo apt remove docker docker-engine docker.io
sudo apt install -y \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual
sudo apt install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt update
sudo apt install docker-ce

Docker run

root@ubuntu1604-sand:~# docker run -it ubuntu
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
ae79f2514705: Pull complete
5ad56d5fc149: Pull complete
170e558760e8: Pull complete
395460e233f5: Pull complete
6f01dc62e444: Pull complete
Digest: sha256:506e2d5852de1d7c90d538c5332bd3cc33b9cbd26f6ca653875899c505c82687
Status: Downloaded newer image for ubuntu:latest
root@da99b4c6f769:/#
root@da99b4c6f769:/#

Misc checker

Network

  • interface
    root@ubuntu1604-sand:~# ip a
    ///////
    3: docker0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state UP group default
      link/ether 02:42:b7:f3:14:1b brd ff:ff:ff:ff:ff:ff
      inet 172.17.0.1/16 scope global docker0
         valid_lft forever preferred_lft forever
      inet6 fe80::42:b7ff:fef3:141b/64 scope link
         valid_lft forever preferred_lft forever
    ///////
    
  • docker network
    root@ubuntu1604-sand:~# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    db4c63b9a818        bridge              bridge              local
    d481d6a6b105        host                host                local
    d89ef5fa06f3        none                null                local
    
  • docker network inspect
    root@ubuntu1604-sand:~# docker network inspect bridge
    [
      {
          "Name": "bridge",
          "Id": "db4c63b9a818a99458c52f7818635cc00fd77b15b03b0e4b70a4e37760bbc94f",
          "Created": "2017-10-18T07:27:23.090097897Z",
          "Scope": "local",
          "Driver": "bridge",
          "EnableIPv6": false,
          "IPAM": {
              "Driver": "default",
              "Options": null,
              "Config": [
                  {
                      "Subnet": "172.17.0.0/16"
                  }
              ]
          },
          "Internal": false,
          "Attachable": false,
          "Ingress": false,
          "ConfigFrom": {
              "Network": ""
          },
          "ConfigOnly": false,
          "Containers": {},
          "Options": {
              "com.docker.network.bridge.default_bridge": "true",
              "com.docker.network.bridge.enable_icc": "true",
              "com.docker.network.bridge.enable_ip_masquerade": "true",
              "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
              "com.docker.network.bridge.name": "docker0",
              "com.docker.network.driver.mtu": "1500"
          },
          "Labels": {}
      }
    ]
    
  • docker run -itd ubuntu
  • docker attach
  • Ctrl+p + Ctrl+q
  • containerのお掃除
    docker ps |awk '{print $1}' | grep -v CONTAINER | xargs -l docker rm -f
    
  • burst 起動
    root@ubuntu1604-sand:~# for i in [1 2 3 4 5]; do docker run -itd ubuntu; done
    ba55666235c6d8fe6e081258904e4cae738e87a7e3ff9761fb28feccdc9497e0
    7309238f8559e226ec7fdaa917cb2b3afeca6287b9305d99c34eef21a08992c5
    235d2d4f5dbb3cfb279ca314bc05f0825eebe6b8b29e0240a405e2bc122ca724
    ab00ec1bc49ddcbdecf794056670d2bcff98109bca8561a5769da1804e9e926b
    0355c1eeebe3b3e469174fdf8b149672fae9c5f9ebefbf0042bb0a7ceaa3c066
    

To help the humans, Docker also supplies containers with a randomly-generated name from two words, joined by an underscore, e.g. evil_ptolemy. This can make it easier to tell one container from another, but the random names don’t give any more insight into the container function than the UUID.
- https://www.digitalocean.com/community/tutorials/naming-docker-containers-3-tips-for-beginners -

root@ubuntu1604-sand:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
6ed929c157b3        ubuntu              "/bin/bash"         About an hour ago   Up About an hour                        thirsty_joliot
6a23db61e574        ubuntu              "/bin/bash"         About an hour ago   Up About an hour                        priceless_saha
930a48641895        ubuntu              "/bin/bash"         About an hour ago   Up About an hour                        flamboyant_hodgkin
a357bec9ce4e        ubuntu              "/bin/bash"         About an hour ago   Up About an hour                        fervent_yalow
  • tmux
  • ip reachiablity check
    apt update
    apt install -y iputils-ping net-tools 
    
  • netstat -untap
  • ping-pong
    #ping <some container's ip address>
    

image

Reference

  • Procedure for docker official
    https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/

このエントリーをはてなブックマークに追加

Javaだと確かにCFv2(DEA:Buildpack)の方式がいいと思ってた(ちょうど2年くらい前ですね)。

CFv3(Diego:Docker / Buidpack & other component)とOpenShift(K8S&Docker&other component)と比較した場合にCore Architectureの違いが極小になっているから、製品価値を高めながら独自の進化を続けるんだろうなと思うんですよ。

この二つの違う製品(ISV)は、一つの共通する特徴として実行環境とSourcecodeのDeliveryを高速化を達成するんです。価値としてcomponentの組み合わせやそれらのサポートをしてくれる。

ただ、Rock-inを防ぐために他の製品を自社で組み合わせて使う、使えなくなったら潔く捨てて、入れ替えるというPaaSのライフサイクルを考える必要が出てきている気がするんですよね。

僕はIaaS/Ops/SRE側に立っているので、正直何が動いていてもDevの人たちが開発しやすい環境であって、Applicationがちゃんと動く、ライフサイクルがうまく回るということを達成できれば、仕事したなという感じがするわけです。

やっていくうちに自社の開発に足りないコンポーネントが出てくる時がくる可能性はあるんだけど、それをOpenSourceにしながらDefactにもっていくという活動が必要になってくると思う、ベンダーだけじゃなくて人にLock-inされることと、車輪の再発明を防ぐ意味で。

NetFlixがOSS的な方法(として)で開発した結果、かなりいい感じに成長している(OpenShiftのJava実行環境のコンポーネントにも入った)。だからインハウスエンジニア(ソフトウェアに限らず)は必要だし、インハウスエンジニアはもっともっと外にでてWorld Wideで活躍できることを自覚して頑張っていくべきかなと。

人によって価値観は異なるので、その貢献をどのように還元するかは、いまいちわからないけども、会社経営の投資対象としてコストセンターの人にもある程度自由を与えるというのも開発現場の雰囲気がよくなる方法論の一つかな。 自由も価値観によって定義されると仮定すると人によって自由な時間を使って何に貢献するか考えてそれぞれの人がself-learningの方法を探っていくのかな。自由には責任が伴うとはよく言ったもので、成長志向で頑張れるくらいの自由を会社に求めてもいいと思う。緩いつながりが新しい価値を産むし、個人の価値観が新しい価値を産む、会社は社員を利用する、社員は会社から貢献度に応じて給与と福利厚生を受け取る。

日本の某社は、それにチャレンジして成功してる感じ、本当に、素敵。githubもしくは他のRepositoryで公開できる部分は公開して社外からのPRを積極的に受け入れる姿勢とか良いと思う。緩いつながりが新しい価値を産む気がするので。


このエントリーをはてなブックマークに追加

ubuntuでCudaを使うまでの準備とchainerを使って GPUに何かを処理させるまでの流れ。

1. Azureにubuntu 16.04LTSをインストール

point

  1. market placeからubuntuを選択、Canonicalのものがおすすめ。

image

サイズの選択:NVシリーズ
image

  1. ssh login

  2. Prerequisite :
    3.1 Driver package installation

#!/usr/bin/env bash

export LC_ALL=C

# Drver installation
wget http://us.download.nvidia.com/tesla/384.81/nvidia-diag-driver-local-repo-ubuntu1604-384.81_1.0-1_amd64.deb
sudo dpkg -i nvidia-diag-driver-local-repo-ubuntu1604-384.81_1.0-1_amd64.deb
sudo apt-key add /var/nvidia-diag-driver-local-repo-384.81/7fa2af80.pub

# module blacklisted
sudo -i
echo -e "blacklist nouveau\noptions nouveau modeset=0\nalias nouveau off" > /etc/modprobe.d/blacklist-nouveau.conf

sudo update-initramfs -u && reboot
#!/usr/bin/env bash
# python installation
sudo apt update
sudo apt -y upgrade
sudo apt -y install python3 python3-pip
echo "alias python=python3" >> ~/.bashrc
echo "alias pip=pip3" >> ~/.bashrc
sudo rm 

# cuda installation
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
sudo apt update
sudo apt -y upgrade
sudo apt install -y ocl-icd-libopencl1 cuda-drivers nvidia-cuda-toolkit cmake
sudo update-initramfs -u && sudo reboot

Availability check

while :; do nc -z -v -n 52.187.66.133 22; sleep 0.5 ; done

PCI hardware check

lspci -vvv

image

nvidia device check, required nvidia-cuda-toolkit

nvidia-smi

image

nvcc -V

Cuda test

sudo apt -y install cuda-samples-9-0
 cd /usr/local/cuda-9.0/samples/
sudo make #長時間かかるから覚悟
>>> WARNING - simpleGLES_EGLOutput is not supported on Linux x86_64 - waiving sample <<<
>>> WARNING - egl.h not found, please install egl.h <<<
>>> WARNING - eglext.h not found, please install eglext.h <<<
>>> WARNING - gl31.h not found, please install gl31.h <<<

30分くらい?

Cuda benchmark

image

OpenCL benchmark

information

- Cuda Software
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=debnetwork

http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb

- Driver
http://www.nvidia.com/Download/index.aspx?lang=en-us
http://us.download.nvidia.com/tesla/384.81/nvidia-diag-driver-local-repo-ubuntu1604-384.81_1.0-1_amd64.deb

Reference

<img src=”https://user-images.githubusercontent.com/406525/31165794-58f15bb4-a927-11e7-8d88-fb35438778dc.png” width=250>

image


このエントリーをはてなブックマークに追加

Azure CLIを久々にローカルにインストールすると文字コードのエラーをはくという減少にぶち当たったので少々。

PS C:\Users\xxxxxxxx> chcp
現在のコード ページ: 932

Windowsの日本語の標準文字コードであるCP932(Shift-JIS拡張)。 python3ではケアされていないというよりも、日本語Windows自身がUnicode(UTF-8)への移行を考えてないから。多くのシステムに導入されているので、今更その互換性を無視して先にすすめると言うのはいかがなものかということでしょう。 ただ、Office365で扱う文字は、きっとunicodeになるので2020以降、Windowsにも何かが起こると期待しています。(自社のOSですが、なんとも言いづらいところはあります。お察しください)

で、本題に戻りますが
簡単に解決するなら

PS C:\Users\xxxxxxxx>chcp 65001

としpip installすれば良いです。

pyyaml module installで失敗します。

Exception:
Traceback (most recent call last):
  File "c:\users\xxxxxxx\code\azure-cli2.0-bin\lib\site-packages\pip\compat\__init__.py", line 73, in console_to_str
    return s.decode(sys.__stdout__.encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 80: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\xxxxxxx\code\azure-cli2.0-bin\lib\site-packages\pip\basecommand.py", line 215, in main
    status = self.run(options, args)
  File "c:\users\xxxxxxxx\code\azure-cli2.0-bin\lib\site-packages\pip\commands\install.py", line 342, in run
    prefix=options.prefix_path,
  File "c:\users\xxxxx\code\azure-cli2.0-bin\lib\site-packages\pip\req\req_set.py", line 784, in install
    **kwargs
  File "c:\users\xxxxxx\code\azure-cli2.0-bin\lib\site-packages\pip\req\req_install.py", line 878, in install
    spinner=spinner,
  File "c:\users\xxxxx\code\azure-cli2.0-bin\lib\site-packages\pip\utils\__init__.py", line 676, in call_subprocess
    line = console_to_str(proc.stdout.readline())
  File "c:\users\xxxx\code\azure-cli2.0-bin\lib\site-packages\pip\compat\__init__.py", line 75, in console_to_str
    return s.decode('utf_8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 80: invalid start byte

compatでtryしてinitializeで例外だしている次のところで。。 ただ、コンソールに書き出すためだけに

if sys.version_info >= (3,):
    def console_to_str(s):
        try:
            return s.decode(sys.__stdout__.encoding)
        except UnicodeDecodeError:
            return s.decode('utf_8')

この部分でUnicodeDecodeErrorエラーを吐きます。 読んで字のごとくUnicodeをデコードする時のエラーです。

if sys.version_info >= (3,):
    def console_to_str(s):
        try:
            return s.decode(sys.__stdout__.encoding)
        except UnicodeDecodeError:
#            return s.decode('utf_8')
            return s.decode('cp932')

今後いちいちchcpするのめんどいのでこんなことしました。 忘れないようにメモ。python3に移行するひとが必ずハマる感じですね。 Mac/Linuxユーザは気が付かずに幸せかもしれませんね。

と思ったら同じようなことやってる人がいました。 http://blog.techlab-xe.net/archives/5361

PS C:\Users\xxxxx> $OutputEncoding


IsSingleByte      : True
BodyName          : us-ascii
EncodingName      : US-ASCII
HeaderName        : us-ascii
WebName           : us-ascii
WindowsCodePage   : 1252
IsBrowserDisplay  : False
IsBrowserSave     : False
IsMailNewsDisplay : True
IsMailNewsSave    : True
EncoderFallback   : System.Text.EncoderReplacementFallback
DecoderFallback   : System.Text.DecoderReplacementFallback
IsReadOnly        : True
CodePage          : 20127

以上


このエントリーをはてなブックマークに追加

AzureRMやっぱり最新バージョンを使いたいよねということがあるかと思います。

2017-09-26 13_12_35-moriyama kyohei - https___blog docker com_2017_09_docker-official-i

こういうこともあるようで、

Cloud ShellのAzureRMを上書きして使う方法。

現在のバージョンの確認

PS Azure:\> Get-Module

2017-09-26 14_09_57-redhat-sandbox - microsoft azure

PS Azure:\> Get-Command *SecurityGr*

2017-09-26 14_10_21-redhat-sandbox - microsoft azure

PS Azure:\> Install-Module -Name AzureRM -RequiredVersion 4.4.0 -AllowClobber

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to
install the modules from 'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): A

負荷がかかるのか、プログレスバーが進み終わっても、すこし固まります。

2017-09-26 14_11_30-redhat-sandbox - microsoft azure

カーソルの反応がなければ違うタブでcloud Shellを立ち上げて 次に進みましょう。

ModuleのreloadのためにCloud Shellをrestartします。

2017-09-26 14_41_39-azurerm network - microsoft azure

2017-09-26 14_41_43-azurerm network - microsoft azure

ここで、installしたmoduleはblob上へ展開されます。
中身を確認したい場合は、blobのFileサービスへアクセスすると、中身を確認できます。

get-moduleして下記のようなものが見えれば完了

PS Azure:\> get-module

2017-09-26 14_32_00-file - microsoft azure

PS Azure:\> Get-Command *SecurityGr*

2017-09-26 14_43_23-azurerm network - microsoft azure

以上


このエントリーをはてなブックマークに追加

アメリカに行くプランはどうなった?と聞かれて無言になる自分。そんなこと考えていた事もあったなぁと。アメリカに行くプランは。。。僕は、何になりたいのか、何を目標にしているのかを気づかせてくれた彼の一言に感謝です。大体、日本人には、inspireされずに外国人にinspireされているんです。

日本人だらけの職場にダイバーシティとは何かを自問自答する日々。僕の一言もハラスメントを含んでいたかもしれない。ダイバーシティのある組織が強い理由を身をもって体感したことのある自分。そしてそれを許容してくれている、組織。仲間。お客様、パートナー様。

この半年に起こった苦しい事も楽しかった事もすべて自分の糧となり残っていくのです。特に痛みに関しては、次の世代に残してはいけないものだと思うのです。

僕は職場の公用語が何語だろうと、Microsoftの製品を愛してやまない人もオープンソースが嫌いな人がいても、それを許容しながら自分の糧にしようと思っています。価値観がぶつかりあったときにしか、innovationは生まれない、建設的な議論にならないと思うのです。各ミーティングルームの横に貼っていますよね。

僕がもしMSの社内を紹介するときには、モノではなく、カルチャーを紹介しようと思います。

MSには、素晴らしいカンパニーカルチャーがあって、自由にものが言えて、革新的なアイデアが溢れていて、周りがチャレンジする姿に感化されてチャレンジが繰り返されている。

でもね、気づいてほしいのは、評価されるものや、目に見える成果が全てではないこと、その成功を陰ながら支えている人がいるということ。批判される人が悪いかというとそうではなくて、批判される人っていうのは、必ず良いものを持っていて、普段は、寡黙な人であっても、何か意見を引き出せるようなファシリテーションが必要だということ。

ミーティングでは、タイムキーパーとファシリテーターがいて、上司にそれを任せないこと。上司は、部下の言うことを拾って行くこと。小さな積み重ねがinnovativeな組織を産む。建設的に既成概念にとらわれず、ディスカッションに集中すること。前を向いて進む事。

みんながYes!いいね!って言うのは、再考する必要があるのではと思う。

ライト兄弟のイノベーションを誰が予想できたでしょう? 貧乏で金がなくて、時間もない、それでも物体を重力に逆らわせて空を飛ばせたかった。そんな熱意が人を動かした 。金は集まらなかったけどね。スタートアップに必要なものそれは、多くがタイミングで、それを下支えするカルチャーにあるんです。

Simon SinekのTEDx Talkを見てください。スタートアップが成功する仕組みがあります。どうやって顧客に接するか、プロジェクトを考えるか、プロダクトを考えて行くか。

how great leaders inspire action : simon sinek

そして、bill grossのこのプレゼンテーションでは、スタートアップが成功する唯一の理由を説明してあります。

The single biggest reason why startups succeed

シンプルにいうと、Whyから始めることと、タイミングです。

もし、スタートアップでベンチャーをあげようとする人、もしくは新しい組織をboot upしょうとしている人、
特にリーダは、この仕組みに着目して行動すると良いと思います。

Whyは、Whatより大切です。何をするかより、なぜそれをするのか考えてみましょう。なぜが出て来なければ、それをする意味はないです。その組織が存在する理由もその会社が存在する理由もないです。人々の行動を決定づけるのは、残念ながらWhatから始まります。ただし、Whatは長続きしない。

何をするのか→何のために→どうやって では遅いです。
何のために→どうやって→何をするのかという思考のほうが収束が早いです。
そして、仲間はそれに向かって必死に働きます。しかも楽しく。理由がはっきりしているからです。

生きている意味を問答している暇があるなら、なぜあなたがそこにいるのかを問うてみると良いと思います。必ず各人に存在理由があり、そこにいるのです。一人では生きていけないので、人を頼る必要があります。それなのに過当競争の中で食い合って行くのでしょうか?そんな必要はないです。Whyが定義されていれば。

マイクロソフトがOSSに取り組む理由をはっきりと語れる人がいますか? 理由はすべてmissionに含まれています。

世界中のすべての人々とビジネスの持つ可能性を最大限に引き出すための支援をすること

一緒にもっともっとやりたいことをできるようになろう。まずは、自分から。そして、僕の周りから。

Every story begins with a name…


このエントリーをはてなブックマークに追加

※2017-11-21 update

私の戦績

試験種別 合格 合格日付 メモ
70-532 2017/11/18 MCSA取得
70-533 2017/06/??  
70-534      

※タイトル偉そうですが、MCPの受験何度か失敗しています。私がMicrosoftに移ってLinuxおよびOpenStackしかほぼ知らなかったところから、Azureを知り、Azureを活用し、パートナー様およびお客様へAzureを訴求できるところまでの半年間を中心にまとめて行きます。

免責事項

こちら、個人的にまとめているものなので、JFYIということでおねがいします。試験合格の保証をするノートではありませんし、このノートにおいて生じたいかなる問題も責任を負いかねるとご承知おきの上、ご活用いただければと思います。

MCPを取るといいこと

MCP の試験勉強を通して、体系的に学習でき、実践的な問題・課題を通して、最新の技術のキャッチアップも含めてできることができるようになります。また、他のソリューションとの違いを学習することで、いかなる場面においても、Microsoft製品の良い所もしくは、制約事項を説明できるようになります。

試験準備

事前にやったほうが良いこと

  1. OD(試験範囲:Objective Document)は必ず読む
    70-532 (VisualStudio)
    70-533 (Microsoft Azure)
    70-534 (Microsoft Azure)
    試験の難易度は、532 -> 533 -> 534という感じです。
  2. MSが用意しているリソースを参考にしてください。(MSTEP、Channel9など)
    70-532 Ignite2016 セッション (70-532:英語)
    70-533 Ignite2016 セッション (70-533:英語)
    70-534 Ignite2016 セッション (70-534:英語)
  3. 試験範囲のドキュメント
    (少なくとも日本語のもの)を斜め読みしておくのをおすすめします。
  4. ドキュメントでわからない単語がある場合は、その単語が何を意味しているか解読してください。
    (古いワードの場合、現状の物に置換が必要)
  5. ドキュメント眺めながら、手を動かさないとよくわからないところは手を動かしてください。
    (例えば、PowerShellやAzure CLI、ポータルの使い方)
  6. 手を動かすだけでなく、ノートか何かにお絵かきしながら頭に図が浮かぶようにしておいてください。
    (アーキテクトの試験なので)
  7. 少し古い情報があることを念頭において勉強してください。
    試験のアップデートがAzureの進化のスピードに追い付いていません。が
    クラウドに関する基本的な考え方、アーキテクトとしての資質を問う試験には変わりないので そこを意識して勉強することが大事です。

試験申し込み

概ね勉強出来た場合、試験を申し込んでください。
Pearson VUEで申し込みができます。
70-532 (VisualStudio)
70-533 (Microsoft Azure)
70-534 (Microsoft Azure)

パートナー様向けに、AzureのMCPに関して特典もあります。
Azure Skill向上のためのページ

試験本番

  1. スキップできる問題は、スキップしてください。(きっと難易度高いので、あとから考えてください)
    複数の設問にまたがる問題が出題される可能性があるため、そこも意識するといいです。 ただし、スキップすると後戻りできないシナリオ問題がありますのでそこは気をつけてください。
  2. 日本語がおかしいと感じたら、英語で確認してください。
  3. チェック忘れやチェック間違いなど見直しは必ずやってくださいね :)

不合格の場合

もし、失敗したら、Microsoftの公式認定模擬試験を提供する会社である
MeasureUP ”を使って勉強することも頭に入れておいてください。  
試験を受ける前から利用しても良いのですが、試験対策にはなるものの、*Azureを知る*という意味ではおすすめしません。
(英語も含む)ドキュメントを読めるようになるのもアーキテクトとしての資質だと思うからです。

他のクラウドソリューションを使ってきた人、マイクロソフト製品およびAzureの初心者

OpenStacker(もしくは、AWSのアーキテクト)がAzureを勉強するためには、共通部分を認識しつつ、置換できるところを置換していくのが良いです。そもそも、Azureポータルを触ったり、Azure CLIを触ったり、Visual StudioやAzure Storage Managerを使ったことない人は、受けないほうが良いと思います、合格できる可能性は、極めて低いです。
一般的なクラウドに関する知識を問われる試験ではなく、あくまでAzureのArchitectとしての認定を受けられるかどうかなので。

例えば、仮想ネットワークという言葉の意味は、同じだけど、サブネットのバインディングの考え方違うとか(OpenStackも最近、マルチプルサブネットをサポートした気がします。)、VNET Peeringを使う場合、Route機能を利用すると同時にOS側の設定が必要などがあります。Azureのベストプラクティスを読むことで他のクラウドソリューションとの違いを覚え、ベストな提案ができると信じています。
MCPは、Azureの中でも幅広い一部なので、必ず一番最初に試験範囲を読むことをおすすめします。

あまりないかも知れませんが、OpenStackやAWSなどでブイブイ言わせていたアーキテクトでもAzureに触れずにいきなり、試験を受けた場合、とんでもないことになります。Azureを体系的に学び、Azureを知り、AzureのMCPに合格したうえで、制約事項を知りながら、ベストな提案でお客様に使っていただくのが良いかと思います。

ちなみに、私はMSに入って6ヶ月が立ちました、以前からAzureのインフラ部分は、すごいと思っていましたが、触ってみるとクラウドプラットフォームとしての出来がかなりよく、他社のサービスとの差別化を意識して、お客様の声をよく反映出来ているクラウドだなと感じています。

何かご質問があればお気軽に。

以上、よろしくおねがいいたします。

pub 4096R/102EFFB8 2017-04-02 Kyohei Moriyama (sasukeh) flogofrein@gmail.com
Primary key fingerprint: 2BE2 1FA9 8F72 C692 1E37 6072 5440 EEBA 102E FFB8


このエントリーをはてなブックマークに追加

DockerのSubcommandはこの前ご紹介したので
今回は、Docker composeのご紹介をします!

Define and run multi-container applications with Docker.
# Dockerとマルチコンテナアプリを定義し実行します。

Usage:
  docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  docker-compose -h|--help

Options:
  -f, --file FILE             Specify an alternate compose file (default: docker-compose.yml)
  #ファイル名の指定
  -p, --project-name NAME     Specify an alternate project name (default: directory name)
  #プロジェクト名の指定
  --verbose                   Show more output
  #バーボス、ログたくさんモード
  -v, --version               Print version and exit
  #docker composeのバージョン
  -H, --host HOST             Daemon socket to connect to
 #dockerdが走っているホストの指定

  --tls                       Use TLS; implied by --tlsverify
  #TLSの使用
  --tlscacert CA_PATH         Trust certs signed only by this CA
  #指定されたCAだけを信用する
  --tlscert CLIENT_CERT_PATH  Path to TLS certificate file
  #TLS証明書ファイルのパス
  --tlskey TLS_KEY_PATH       Path to TLS key file
  #TLSキーファイルのパス
  --tlsverify                 Use TLS and verify the remote
  #TLSの利用と遠隔の確認
  --skip-hostname-check       Don't check the daemon's hostname against the name specified in the client certificate (for example if your docker host is an IP address)
  #ホストネームチェックの無視
  --project-directory PATH    Specify an alternate working directory
                              (default: the path of the compose file)
 #ワーキングディレクトリの指定

Commands:
  build              Build or rebuild services
  bundle             Generate a Docker bundle from the Compose file
  config             Validate and view the compose file
  create             Create services
  down               Stop and remove containers, networks, images, and volumes
  events             Receive real time events from containers
  exec               Execute a command in a running container
  help               Get help on a command
  images             List images
  kill               Kill containers
  logs               View output from containers
  pause              Pause services
  port               Print the public port for a port binding
  ps                 List containers
  pull               Pull service images
  push               Push service images
  restart            Restart services
  rm                 Remove stopped containers
  run                Run a one-off command
  scale              Set number of containers for a service
  start              Start services
  stop               Stop services
  top                Display the running processes
  unpause            Unpause services
  up                 Create and start containers
  version            Show the Docker-Compose version information

こんな感じ
使い方は、巷のblogを参考にしていただけばいいと思うだが、 簡単な流れは以下の通り

  1. docker-compose.ymlにリソースの塊を記述する
  2. ホストでdockerdでも何でもいいんだけど、container runtimeが動いていることを確認する。
  3. docker-compose.ymlとともにdocker-composeを実行する。

以上

pub 4096R/102EFFB8 2017-04-02 Kyohei Moriyama (sasukeh) flogofrein@gmail.com
Primary key fingerprint: 2BE2 1FA9 8F72 C692 1E37 6072 5440 EEBA 102E FFB8


このエントリーをはてなブックマークに追加

どこの環境にもGoogle日本語入力を入れた時に感じているのが Ctrl + Spaceで日本語と英語を切り替えることがとても煩雑だということ。

実は、Google日本語は設定をエクスポートインポートできることに気がついた。 設定覚えて置くのは、面倒だし、設定するのは一回なんだけど、 そのためにGoogle先生に聞くのは、何だと思うのでGistとPrivate GithubにConfigurationを上げておいた。

ご入用の方は、適当に拾って使ってくだされ。

ダウンロードはこちらから

pub 4096R/102EFFB8 2017-04-02 Kyohei Moriyama (sasukeh) flogofrein@gmail.com
Primary key fingerprint: 2BE2 1FA9 8F72 C692 1E37 6072 5440 EEBA 102E FFB8