Skip to content

Instantly share code, notes, and snippets.

@morika-t
Forked from ozzozz/about_docker-cf-jumpbox.md
Created March 16, 2018 12:30
Show Gist options
  • Select an option

  • Save morika-t/18bb54c67334148d913d6376ef44a109 to your computer and use it in GitHub Desktop.

Select an option

Save morika-t/18bb54c67334148d913d6376ef44a109 to your computer and use it in GitHub Desktop.

Revisions

  1. @ozzozz ozzozz revised this gist Nov 30, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion about_docker-cf-jumpbox.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    # docker-cf-jumpboxについて

    この記事は、[Cloud Foundry Advent Calendar 2017](https://qiita.com/advent-calendar/2017/cloudfoundry)の2日目の記事です。
    [Cloud Foundry Advent Calendar 2017](https://qiita.com/advent-calendar/2017/cloudfoundry)の2日目の記事です。

    ### はじめに、ポエムを少々

  2. @ozzozz ozzozz revised this gist Nov 30, 2017. 1 changed file with 84 additions and 7 deletions.
    91 changes: 84 additions & 7 deletions about_docker-cf-jumpbox.md
    Original file line number Diff line number Diff line change
    @@ -2,25 +2,102 @@

    この記事は、[Cloud Foundry Advent Calendar 2017](https://qiita.com/advent-calendar/2017/cloudfoundry)の2日目の記事です。

    ## はじめに、ポエムを少々
    ### はじめに、ポエムを少々

    こんにちは。

    私も、会社で私が所属しているチームも、貧乏です。会社自体はリッチかもしれませんが。

    そんな中、日本Cloud Foundryグループ会長というパッと見立派な肩書をいただき、オープンソースソフトウェアとしてのCloud Foundryやこれを活用した様々なプロダクトやサービスの日本国内での技術紹介や普及を担うことになっております。
    そんな中、[日本Cloud Foundryグループ](http://cloudfoundry.gr.jp/)会長というパッと見立派な肩書をいただき、オープンソースソフトウェアとしてのCloud Foundryやこれを活用した様々なプロダクトやサービスの日本国内での技術紹介や普及を担うことになっております。

    Cloud Foundryは、クラウドアプリケーションプラットフォームとして技術面ではすでに成熟の域に達した感があり、最近は欧米を中心に広く普及が進んでおります。しかし、クラウドをうまく活用するプラクティスは日々新たなものが出てきていますし、様々なユースケースで揉まれてもいることから、そういった知見をどんどん盛り込みつつ、Cloud Foundry自体も日々進化を続けています。
    [Cloud Foundry](https://www.cloudfoundry.org/)、クラウドアプリケーションプラットフォームとして技術面ではすでに成熟の域に達した感があり、[最近は欧米を中心に広く普及が進んでおります](https://www.cloudfoundry.org/category/case-studies/)。しかし、クラウドをうまく活用するプラクティスは日々新たなものが出てきていますし、様々なユースケースで揉まれてもいることから、そういった知見をどんどん盛り込みつつ、Cloud Foundry自体も日々進化を続けています。

    私は肩書に負けたくない。Cloud Foundryに関し、なるべく新鮮な情報を皆さまにお届けしたい。その一心で、なるべく最新のCloud Foundryをデプロイし、新しく実装された機能を試用し続けなければならないと思っております。

    一方、私の手元には、AWSやらGCPやらAzureやら何やらをふんだんに使えるアカウントは残念ながらありません。しかし幸い、その代わりに会社から自由に使っていいって言ってくれている(というか、ゴミ扱いされて使うあてのない)ベアメタルマシンが大小合わせて計約50台ほどございます。また、インターネットに比較的自由にアクセス可能な回線、ルーターやスイッチなどのネットワーク機器(安物ですが)も幸い確保されています。
    というわけで、そいつらを使ってOpenStackクラスタを自前で構築し、オープンソースなCloud Foundryの技術検証に使っております。

    <script async class="speakerdeck-embed" data-id="3586d6f45ce6"
    data-ratio="1.33333333333333"
    src="//speakerdeck.com/assets/embed.js"></script>
    その技術検証の成果の一つが、[このへんのスライド](https://speakerdeck.com/ozzozz/bosh101-autumn-2017)だったりします。

    ## よろしい、ではCloud Foundryをデプロイだ
    ただ、毎年ゴールデンウィークの電気設備定期点検による停電対応がめちゃくちゃ大変で、ディスク故障とかCMOS電池切れでブートしないマシンが毎回数台・・・(以下、愚痴につき略)

    ### よろしい、ではBOSHでCloud Foundryをデプロイだ

    [OpenStack上にCloud Foundryをデプロイするための準備手順](https://docs.cloudfoundry.org/deploying/cf-release/openstack/index.html)において、まず大きな関門となるのが、Cloud Foundryをデプロイするためのツールである[BOSH](https://bosh.io/docs)のデプロイです。

    ### ふむ。よろしい、ではOpenStackにBOSHをデプロイだ

    BOSHのデプロイにあたっては、少なくとも

    1. 仮想プライベートネットワーク・サブネット・仮想ルータの作成
    1. SSH鍵ペアの登録
    1. セキュリティグループ設定
    1. Floating IPアドレスの確保

    という[OpenStack IaaS上の事前準備手順](http://bosh.io/docs/init-openstack.html#prepare-openstack)が必要です。
    これを、OpenStack上にCLIまたはダッシュボードGUIを使って手動でチクチクとやることもできますが、そこは自動化大好きCloud Foundryコミュニティ、[Terraform](https://www.terraform.io/)を使用した[Infrastructure as Codeのテンプレート](https://github.com/cloudfoundry-incubator/bosh-openstack-environment-templates/tree/master/bosh-init-tf)を用意してくれています。とは言え、手元の環境にはTerraformに加えてcurl、wget、gitくらいはインストールしてないといけなさそうですね。

    ### ふむ。よろしい、Terraformを手元環境にインストールだ

    TerraformはGo言語で書かれており、[様々なOS向けにスタティックリンクされたバイナリが配布されている](https://www.terraform.io/downloads.html)ので、まあ[インストールは簡単](https://www.terraform.io/intro/getting-started/install.html)です。

    ### ・・・ではOpenStackにBOSHをデプロイだ

    BOSHのデプロイには[BOSH CLI v2](https://github.com/cloudfoundry/bosh-cli)を使います。
    BOSH CLI v2もGo言語で書かれており、[様々なOS向けにスタティックリンクされたバイナリが配布されているので、まあインストールは簡単](http://bosh.io/docs/cli-v2.html#install)です。
    ただし、BOSH CLI v2を使ってBOSHをデプロイするにあたっては、[インストールする環境に依存して、Ruby周りをインストールするための各種パッケージもインストールする必要があります](http://bosh.io/docs/cli-env-deps.html)

    これはどういうことかというと、BOSHというVMのデプロイは、BOSH CLI v2から[BOSH CPI](http://bosh.io/docs/bosh-components.html#cpi)というものを介してIaaS APIを叩くことによって行われるのですが、この[BOSH CPIがRubyによって実装されている](https://github.com/cloudfoundry-incubator/bosh-openstack-cpi-release)からなのです。

    さて、そんなこんなで、BOSHのデプロイにも、なんとCloud Foundryのデプロイにも成功しました。
    そんなこんながめちゃくちゃいろいろあるというのはさておき・・・

    ### よし、Cloud Foundry使うぞ

    オープンソース版のCloud Foundryには、素敵なGUIなどは標準装備されていません。[API](https://apidocs.cloudfoundry.org/)しかありません。しかたがない、ここはcurlでがんばるか・・・
    というのは冗談で、ちゃんと[CF CLI](https://github.com/cloudfoundry/cli)というものがあります。

    CF CLIもご多分に漏れずGo言語で実装されており、[様々なOS向けにスタティックリンクされたバイナリが配布されているので、まあインストールは簡単](https://docs.cloudfoundry.org/cf-cli/install-go-cli.html)です。

    ## ・・・結局、手元環境にもっさりと色々インストールさせられたではないか!

    そうなんですよねえ。
    Cloud Foundryの構築・運用・利用にはいろいろ要るのです。

    Terraform、BOSH CLI v2、CF CLIくらいなら、バイナリをダウンロードして解凍して/usr/local/binに置くくらいなのでまあよいのですが、問題は[Ruby周りのインストールのためのパッケージも必要だったりするところ](http://bosh.io/docs/cli-env-deps.html)なのです。
    Linux入りのVMとかだといろんなパッケージ入れて少々環境が汚れたとしても最悪VMごと作り直せば済む話ですが、我が愛しのMacとかを手元作業環境にした日にゃ、CFまで使えるようになってヤッターと喜んでふと振り返ると大変なことになっていたりするわけです。

    ## そこでDockerですよ

    そんなこともあろうかと、作っておきましたよ。
    https://github.com/ozzozz/docker-cf-jumpbox
    https://hub.docker.com/r/ozzozz/cf-jumpbox/

    ### 使い方

    DockerホストとかDocker for MacとかDocker for Windowsとかお持ちでしたら、あとはとっても簡単。
    ```
    $ docker run -it --rm ozzozz/cf-jumpbox
    root@2823fbf5e687:/work#
    ```

    最近だと、「とりあえずサンプルのdeployment manifestをくれ」とおっしゃる皆さまにお応えして、[bosh-deployment](https://github.com/cloudfoundry/bosh-deployment)やら[cf-deployment](https://github.com/cloudfoundry/cf-deployment)やらのリポジトリも登場してきており、こういうのをgit cloneしてきたうえで
    ```
    $ docker run -it --rm -v $PWD:/work ozzozz/cf-jumpbox
    ```
    などとすると、さらにオツだったりするわけです。

    ### このDockerイメージ、なんか他にもいっぱい入ってるじゃん

    はい。ついでなのでいろいろと放り込んでおきました。

    * Cloud Foundryにおける認証サーバである[UAA](https://github.com/cloudfoundry/uaa)[クライアントCLI](https://github.com/cloudfoundry/cf-uaac)である `uaac`
    * 素敵なCIツール [Concourse](https://concourse.ci/) のCLIである `fly`
    * [Concourseからも使えたりする](https://concourse.ci/creds.html)秘密情報管理ツールである[Vault](https://www.vaultproject.io/)
    * BOSHやらCloud Foundryが使うRDBをBOSHからのデプロイの対象外とした場合に、RDBに論理DB作ったりユーザ作ったり権限付与したり、場合によってはテーブル覗いてみたりバックアップやリストアしたりするのに使えるかもしれない、[MOONGIFTさんで最近紹介された](http://www.moongift.jp/2017/11/usql-%E5%A4%9A%E6%95%B0%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%9Fcli%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88/) [usql](https://github.com/xo/usql)
    * BOSHやらCloud Foundryが使うblobstoreをBOSHからのデプロイの対象外とするが、貧乏なのでAmazonS3とか使えない我々の強い味方である[Minio](https://minio.io/)[CLI](https://docs.minio.io/docs/minio-client-quickstart-guide) `mc`
    * これについては後日改めてたっぷり語りたい、我らが[@yudai](https://github.com/yudai/)氏がお送りする名作 [gotty](https://github.com/yudai/gotty)

    というわけで、お楽しみください。

    ## めでたしめでたし。おしまい。
  3. @ozzozz ozzozz revised this gist Nov 30, 2017. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions about_docker-cf-jumpbox.md
    Original file line number Diff line number Diff line change
    @@ -17,6 +17,10 @@ Cloud Foundryは、クラウドアプリケーションプラットフォーム
    一方、私の手元には、AWSやらGCPやらAzureやら何やらをふんだんに使えるアカウントは残念ながらありません。しかし幸い、その代わりに会社から自由に使っていいって言ってくれている(というか、ゴミ扱いされて使うあてのない)ベアメタルマシンが大小合わせて計約50台ほどございます。また、インターネットに比較的自由にアクセス可能な回線、ルーターやスイッチなどのネットワーク機器(安物ですが)も幸い確保されています。
    というわけで、そいつらを使ってOpenStackクラスタを自前で構築し、オープンソースなCloud Foundryの技術検証に使っております。

    <script async class="speakerdeck-embed" data-id="3586d6f45ce6"
    data-ratio="1.33333333333333"
    src="//speakerdeck.com/assets/embed.js"></script>

    ## よろしい、ではCloud Foundryをデプロイだ


  4. @ozzozz ozzozz revised this gist Nov 27, 2017. 1 changed file with 7 additions and 5 deletions.
    12 changes: 7 additions & 5 deletions about_docker-cf-jumpbox.md
    Original file line number Diff line number Diff line change
    @@ -4,17 +4,19 @@

    ## はじめに、ポエムを少々

    おはこんばんちは。(ふ、古い?)
    こんにちは。

    私も、私が所属しているチームも、貧乏です。会社自体はリッチかもしれませんが、私自身は日々窮乏感の中で生きております
    私も、会社で私が所属しているチームも、貧乏です。会社自体はリッチかもしれませんが。

    そんな中、日本Cloud Foundryグループ会長という肩書をいただき、オープンソースソフトウェアとしてのCloud Foundryやこれを活用した様々なプロダクトやサービスの日本国内での技術紹介や普及を担うことになっております。
    そんな中、日本Cloud Foundryグループ会長というパッと見立派な肩書をいただき、オープンソースソフトウェアとしてのCloud Foundryやこれを活用した様々なプロダクトやサービスの日本国内での技術紹介や普及を担うことになっております。

    Cloud Foundryは、クラウドアプリケーションプラットフォームとして技術面ではすでに成熟の域に達した感があり、最近は欧米を中心に広く普及が進んでおります。しかし、クラウドをうまく活用するプラクティスは日々新たなものが出てきていますし、様々なユースケースで揉まれてもいることから、そういった知見をどんどん盛り込みつつ、Cloud Foundry自体も日々進化を続けています。

    私は肩書に負けたくない。Cloud Foundryに関し、なるべく新鮮な情報を皆さまにお届けしたい。その一心で、なるべく最新のCloud Foundryをデプロイし、新しく実装された機能を試用し続けなければならないと思っております。

    一方、私の手元には、AWSやらGCPやらAzureやらをふんだんに使えるアカウントは残念ながらありません。しかし幸い、その代わりに会社から自由に使っていいって言ってくれている(というか、ゴミ扱いされて使うあてのない)ベアメタルマシンが大小合わせて計約50台ほどございます。また、インターネットに比較的自由にアクセス可能な回線、ルーターやスイッチなどのネットワーク機器(安物ですが)もございます
    一方、私の手元には、AWSやらGCPやらAzureやら何やらをふんだんに使えるアカウントは残念ながらありません。しかし幸い、その代わりに会社から自由に使っていいって言ってくれている(というか、ゴミ扱いされて使うあてのない)ベアメタルマシンが大小合わせて計約50台ほどございます。また、インターネットに比較的自由にアクセス可能な回線、ルーターやスイッチなどのネットワーク機器(安物ですが)も幸い確保されています
    というわけで、そいつらを使ってOpenStackクラスタを自前で構築し、オープンソースなCloud Foundryの技術検証に使っております。

    で、
    ## よろしい、ではCloud Foundryをデプロイだ


  5. @ozzozz ozzozz revised this gist Nov 17, 2017. 1 changed file with 6 additions and 4 deletions.
    10 changes: 6 additions & 4 deletions about_docker-cf-jumpbox.md
    Original file line number Diff line number Diff line change
    @@ -6,13 +6,15 @@

    おはこんばんちは。(ふ、古い?)

    私も、私が所属している会社のチームも、貧乏です。会社自体はリッチかもしれませんが、私自身は日々窮乏感の中で生きております。
    私も、私が所属しているチームも、貧乏です。会社自体はリッチかもしれませんが、私自身は日々窮乏感の中で生きております。

    そんな中、日本Cloud Foundryグループ会長という肩書をいただき、オープンソースソフトウェアとしてのCloud Foundryやこれを活用した様々なプロダクトやサービスの日本国内での技術紹介や普及を担うことになっております。

    Cloud Foundryは、クラウドアプリケーションプラットフォームとして技術面ではすでに成熟の域に達した感があり、最近は欧米を中心に広く普及が進んでおります。しかし、クラウドをうまく活用するプラクティスは日々新たなものが出てきていますし、様々なユースケースで揉まれてもいることから、そういった知見をどんどん盛り込みつつ、Cloud Foundry自体も日々進化を続けています。

    私は肩書に負けたくない。Cloud Foundryに関し、なるべく新鮮な情報を皆さまにお届けしたい。その一心で、なるべく最新のCloud Foundryをデプロイし、新しい機能を試用し続けなければならないと思っております
    私は肩書に負けたくない。Cloud Foundryに関し、なるべく新鮮な情報を皆さまにお届けしたい。その一心で、なるべく最新のCloud Foundryをデプロイし、新しく実装された機能を試用し続けなければならないと思っております

    私の手元には、AWSやらGCPやらAzureやらをふんだんに使えるアカウントは残念ながらありませんが、幸いその代わりに会社から自由に使っていいって言ってくれている(というか、ゴミ扱いされて使うあてのない)ベアメタルマシンが大小合わせて計約50台ほどございます。また、インターネットに比較的自由にアクセス可能な回線、ルーターやスイッチなどのネットワーク機器(安物ですが)もございます。
    というわけで、まるで川の流れのように、当たり前にOpenStackクラスタを構築し、様々な用途に使おうとせざるをません。
    一方、私の手元には、AWSやらGCPやらAzureやらをふんだんに使えるアカウントは残念ながらありません。しかし幸い、その代わりに会社から自由に使っていいって言ってくれている(というか、ゴミ扱いされて使うあてのない)ベアメタルマシンが大小合わせて計約50台ほどございます。また、インターネットに比較的自由にアクセス可能な回線、ルーターやスイッチなどのネットワーク機器(安物ですが)もございます。
    というわけで、そいつらを使ってOpenStackクラスタを自前で構築し、オープンソースなCloud Foundryの技術検証に使っております。

    で、
  6. @ozzozz ozzozz revised this gist Nov 17, 2017. 1 changed file with 18 additions and 1 deletion.
    19 changes: 18 additions & 1 deletion about_docker-cf-jumpbox.md
    Original file line number Diff line number Diff line change
    @@ -1 +1,18 @@
    # docker-cf-jumpboxについて
    # docker-cf-jumpboxについて

    この記事は、[Cloud Foundry Advent Calendar 2017](https://qiita.com/advent-calendar/2017/cloudfoundry)の2日目の記事です。

    ## はじめに、ポエムを少々

    おはこんばんちは。(ふ、古い?)

    私も、私が所属している会社のチームも、貧乏です。会社自体はリッチかもしれませんが、私自身は日々窮乏感の中で生きております。

    そんな中、日本Cloud Foundryグループ会長という肩書をいただき、オープンソースソフトウェアとしてのCloud Foundryやこれを活用した様々なプロダクトやサービスの日本国内での技術紹介や普及を担うことになっております。

    Cloud Foundryは、クラウドアプリケーションプラットフォームとして技術面ではすでに成熟の域に達した感があり、最近は欧米を中心に広く普及が進んでおります。しかし、クラウドをうまく活用するプラクティスは日々新たなものが出てきていますし、様々なユースケースで揉まれてもいることから、そういった知見をどんどん盛り込みつつ、Cloud Foundry自体も日々進化を続けています。

    私は肩書に負けたくない。Cloud Foundryに関し、なるべく新鮮な情報を皆さまにお届けしたい。その一心で、なるべく最新のCloud Foundryをデプロイし、新しい機能を試用し続けなければならないと思っております。

    私の手元には、AWSやらGCPやらAzureやらをふんだんに使えるアカウントは残念ながらありませんが、幸いその代わりに会社から自由に使っていいって言ってくれている(というか、ゴミ扱いされて使うあてのない)ベアメタルマシンが大小合わせて計約50台ほどございます。また、インターネットに比較的自由にアクセス可能な回線、ルーターやスイッチなどのネットワーク機器(安物ですが)もございます。
    というわけで、まるで川の流れのように、当たり前にOpenStackクラスタを構築し、様々な用途に使おうとせざるをません。
  7. @ozzozz ozzozz renamed this gist Nov 17, 2017. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  8. @ozzozz ozzozz created this gist Nov 17, 2017.
    1 change: 1 addition & 0 deletions main.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    # docker-cf-jumpboxについて