GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

dcos

dcos – DC / OS – データセンターオペレーティングシステム

投稿日:

DC / OS – データセンターオペレーティングシステム https://dcos.io

DC / OS – データセンターオペレーティングシステム

マイクロサービス、ビッグデータ、およびコンテナを運用環境で実行する最も簡単な方法。

DC / OSとは何ですか?

従来のオペレーティングシステムと同様に、DC / OSはコンピュータハードウェアとソフトウェアリソースを管理し、コンピュータプログラムに共通のサービスを提供するシステムソフトウェアです。

従来のオペレーティングシステムとは異なり、DC / OSはネットワーク内の複数のマシンに分散し、分散アプリケーションによる使用率を最大にするためにリソースを集約します。

詳細は、 DC / OSの概要を参照してください。

どうやって…?

リリース

DC / OSリリースはhttp://dcos.io/releases/で公開されています

リリースアーチファクトは、CloudFrontキャッシュを使用して、Amazon S3上のMesosphereによって管理されます。

特定のリリースのgit SHAを見つけるには、GitHubのバージョン管理されたブランチで最新のコミットをチェックしてくださいhttps : //github.com/dcos/dcos/branches/

リリースタイプ URLパターン
最新の安定 https://downloads.dcos.io/dcos/stable/dcos_generate_config.sh
最新マスター https://downloads.dcos.io/dcos/testing/master/dcos_generate_config.sh
特定PR、最新ビルド https://downloads.dcos.io/dcos/testing/pull/<github-pr-number>/dcos_generate_config.sh

開発環境

LinuxはDC / OSの構築とテストに必要です。

  1. Linuxディストリビューション:
    • DockerにはOS XまたはWindowsに必要な機能がすべてありません
    • tarは、使用されるフラグセットのGNU tarでなければなりません
    • unzipをインストールする必要があります
  2. git 1.8.5+
  3. ドッカー1.11+
    • さまざまなディストリビューションのインストール手順 ユーザーがドッカーコンテナーを実行できるように、ドッカーを設定する必要があります。 コマンドdocker run alpine /bin/echo 'Hello, World!' 新しい端末で実行したときに、ユーザーは単に"Hello, World!"印刷する必要があります"Hello, World!" 「画像を見つけることができません」というようなメッセージが表示された場合は、「アルパイン:最新のローカル」を再実行してください。
  4. Python 3.6
    • アーチLinux: sudo pacman -S python
    • Fedora 23ワークステーション:デフォルトで既にインストール済み/手順なし
    • Ubuntu 16.04 LTS:
      • pyenv-installer
      • Python依存関係: sudo apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils liblzma-dev python3-venv
      • Python 3.6.3をpyenv install 3.6.3pyenv install 3.6.3
      • DC / OS virtualenvを作成する: pyenv virtualenv 3.6.3 dcos
      • 環境をpyenv activate dcospyenv activate dcos
  5. 10GB以上の空きディスク容量と8GB以上のRAM
    • ビルドではハードリンクが使用されるため、VirtualBoxを使用している場合は、ディスクスペースを同期フォルダにすることはできません。
  6. オプションの pxz(パッケージとブートストラップ圧縮のスピードアップ)
    • ArchLinux: AURのpxz-git pxzパッケージは、タールボールをかなり頻繁に破損します。
    • Fedora 23: sudo dnf install pxz

単体テスト

ユニットテストはローカルで実行できますが、上記の開発環境が必要です。

tox

Toxはコードベースの単体テストの実行や標準チェックのコーディングに使用されます。 設定はtox.iniます。

統合テスト

統合テストは、展開された任意のDC / OSクラスタで実行できます。 インストール手順については、 https://dcos.io/install/を参照してください

統合テストは、 dcos-integration-test Pkgpandaパッケージを介してインストールされます。

統合テストファイルは、 /opt/mesosphere/active/dcos-integration-testのDC / OSマスターノードに格納されています。 したがって、テストファイルの変更をテストするには、 packages/dcos-integration-test/extra/から、マスターノードの/opt/mesosphere/active/dcos-integration-testにファイルを移動します。

テストスイートの結果の標準ソースは、継続的な統合システムです。 このドキュメントで説明されている統合テストの実行結果と、継続的な統合システムによる結果との間には違いがある可能性があります。 特に、一部のテストでは、継続的な統合システムを通過し、ローカルで失敗するか、またはその逆が発生する可能性があります。

最小要件

  • 1マスターノード
  • 2つのプライベートエージェントノード
  • 1パブリックエージェントノード
  • タスクリソースの割り当ては現在のところわずかです
  • DC / OS自体には、各ノードに少なくとも2(仮想)のCPUコアが必要です

指示

  1. SSHをマスターノードにするテストは、テスト対象のクラスタのマスターノードにrootとしてSSHされている間に、Pytestを介して実行できます。

  2. ルートに切り替える

    sudo su -
    
  3. テストユーザーを追加する

    dcos-shell python /opt/mesosphere/active/dcos-oauth/bin/dcos_add_user.py albert@bekstil.net
    

    上記のコマンドを実行すると、結果が出力されます

    User albert@bekstil.net successfully added
    

    このテストユーザーには、未来の有効期限を持つ既知のログイントークンがあります。 生産には使用しないでください。 テストの後、テストユーザーを削除することを忘れないでください。

    詳細については、「 ユーザー管理 」を参照してください。

  4. クラスタ内でpytestを使用してテストを実行します。

    cd /opt/mesosphere/active/dcos-integration-test
    dcos-shell pytest
    

DC / OSドッカーの使用

統合テストを実行する1つの方法は、 DC / OS Dockerを使用することです。

  1. DC / OS Dockerを使用してコンテナ内のDC / OSをセットアップします。

これを行う1つの方法は、 DC / OS Docker Quick Startツールを使用することです

  1. make test実行make test

ビルド

DC / OSはローカルで構築できますが、上記の開発環境が必要です。

DC / OSビルドは、 dcos_generate_config.shというbashスクリプトでラップされた自己解凍型Dockerイメージとしてパッケージ化されています。

警告 :最新のdevマシン(4コア/ 8ハイパースレッド、SSD、合理的なインターネット帯域幅)で最初からリリースを構築するには、約1時間かかります。

指示

./build_local.sh

単純なローカルビルドが実行され、その結果生成されたDC / OSインストーラが$ HOME / dcos-artifactsに出力されます。 作成した `dcos_generate_config.sh ‘を以下のように実行することができます:

$ $HOME/dcos-artifacts/testing/`whoami`/dcos_generate_config.sh

ビルドの詳細

bashスクリプトbuild_local.sh内部を見ると、それぞれの説明があるコマンドがあります。

一般的な流れは次のとおりです。

  1. 環境が合理的であることを確認する
  2. 存在しない場合はreleaseツール構成を記述します
  3. 私たちがそれらを実行するためにDC / OSのpythonツールをインストールすることができるpython virtualenvをセットアップしてください
  4. DC / OSのpythonツールをvirtualenvにインストールする
  5. releaseツールを使用してリリースを構築する

これらのステップはすべて手作業で行い、標準のPythonプロジェクトのようにカスタマイズ/微調整することができます。 仮想環境を作成し、編集可能なpipインストール( pip install -e )をpip install -eして、 “実行中の”作業環境(ツールを実行して結果を見ることができるコードを変更する)を行うことができます。

リリースツールの設定

このリリースツールは、常に現在のディレクトリのdcos-release.config.yaml configをロードします。

設定はYAMLです。 内部には2つのメインセクションがあります。 構築された成果物が送られるべき異なる記憶装置の辞書を含むstorageと、一般的なDC / OS構築構成オプションを設定するオプションとを含む。

設定値は直接指定することも、$ prefixed環境変数を使うこともできます(env変数は値全体を設定する必要があります)。

ストレージプロバイダ

使用可能なストレージプロバイダはすべてリリース/ストレージにあります。 設定は、ストレージプロバイダの参照名(local、aws、my_azure)の辞書へのディクショナリです。

各ストレージプロバイダ(例:aws.py)は、利用可能な種類のプレフィックスです。 辞書factoriesは、特定の種類の接尾辞を定義します。 たとえばkind: aws_s3kind: aws_s3にマップされます。

ストレージプロバイダの構成オプションは、ストレージプロバイダのコンストラクタパラメータです。

私のホームディレクトリ(/ home / cmaloney)に保存するサンプル構成ストレージ:

storage:
  local:
    kind: local_path
    path: /home/cmaloney/dcos-artifacts

ローカルアーカイブパスとAWS S3に保存されるサンプル設定。 AWS S3で認証するには、 boto3のドキュメントを参照してアクセスを設定する方法を学んでください。

storage:
  aws:
    kind: aws_s3
    bucket: downloads.dcos.io
    object_prefix: dcos
    download_url: https://downloads.dcos.io/dcos/
  local:
    kind: local_path
    path: /mnt/big_artifact_store/dcos/

レポ構造

DC / OS自体は、一緒に協働するように正確に構成された多くの個々のコンポーネントで構成されています。

このレポには、さまざまなオンプレミスおよびクラウドプラットフォーム用のインストーラを作成するために必要なリリースおよびパッケージ構築ツールが含まれています。

ディレクトリ 内容
cloud_images 基本OSイメージ構築ツール
設定 リリース構成
ドキュメント ドキュメンテーション
flake8_dcos_lint コード品質をテストするためのFlake8プラグイン
dcos_installer Web用のバックエンド、SSH、および高度なインストーラの一部。 コードがクリーンアップされています
さまざまなプラットフォーム用のyaml設定ファイルをパッケージにレンダリングするためのPythonライブラリ、CloudFormationで設定された「レイトバインディング」設定などの機能を実行するユーティリティ
パッケージ DC / OSを構成するパッケージ(Mesos、Marathon、AdminRouterなど) これらのパッケージはpkgpandaによって構築され、展開のために “ブートストラップ” tarballに結合されています。
パックパンダ DC / OSベースライン/ホストパッケージ管理システム。 マシンのルートファイルシステム/ Mesosの下にあるパッケージをビルド、配備、アップグレード、バンドルするためのツール。
解放 DC / OS用のリリースツール。 (リリースのビルド、リリースのインストーラの構築、チャネル間のプロモーション)
ssh インストーラで使用されるAsyncIOベースの並列sshライブラリ
test_util さまざまなスクリプト、統合テストに役立つユーティリティ

プルリクエストステータス

プル要求は自動的に新しいDC / OSビルドをトリガし、いくつかのテストを実行します。 これらは、DC / OSプルリクエストに対するさまざまなステータスチェックの詳細です。

ステータスチェック 目的 ソースと依存関係
継続的統合/ゲンキンズ/プリンヘッド Admin Routerエンドポイントテスト dcos / dcos / packages / adminrouter / extra / src / test-harnessドッカー依存関係: dcos / dcos / packages / adminrouter
mergebot / enterprise / build-status / aggregate EEテスト施行 プライベート中間圏/分散型企業レポは、SHAに対してテストされます。
mergebot / enterprise / has_ship-it コードレビュー施行 プロードクラスター内のプライベートMergebotサービス
mergebot / enterprise / review / approved / min_2 コードレビュー施行 プロードクラスターでのMergebotサービス
mergebot / has_ship-it コードレビュー施行 プロードクラスターでのMergebotサービス
マージボット/レビュー/承認済み/ min_2 コードレビュー施行 プロードクラスターでのMergebotサービス
チームシップ/ dcos / build / dcos DCOSイメージを構築する(dcos_generate_config.sh) gen / build_deploy / bash.py
チームシップ/ dcos / build / tox チェックスタイル、ユニットテストを実行する tox.ini
チームシップ/ dcos /テスト/ aws / cloudformation / simple single-master-cloudformation.jsonを使用した展開と統合テストの実行 gen / build_deploy / aws.py 、CIでdcos-launchバイナリを使用する
チームシップ/ dcos / test / aws / onprem / static dcos_generation_config.shを介したインストールと統合テストの実行 gen / build_deploy / bash.py 、CIでdcos-launchバイナリを使用する
チームシップ/ dcos /テスト/紺碧/腕 acs-1master.azuredeploy.jsonを使用してデプロイし、統合テストを実行します。 gen / build_deploy / azure.py 、CIでdcos-launchバイナリを使用する
チームシップ/ dcos /テスト/ドッカー このPRに対してdcos-dockerを起動し、dockerクラスタ内で統合テストを実行することにより、dcos-dockerを実行します。 dcos-docker repo
チームシップ/ dcos /テスト/ドッカー/煙 このPRに対してdcos-dockerを起動し、ドッカークラスタ内でスモークテストを実行することにより、dcos-dockerを実行します。 dcos-docker repo
チームシップ/ dcos /テスト/アップグレード 安定版マイナーバージョンからのアップグレード 中間圏/高度試験レポ(過渡的、 dcos / dcos-test-utils 、dcos / dcos-launch)
チームシップ/ dcos / test / upgrade-from-previous-major 以前のメジャーバージョンからのアップグレード 中間圏/高度試験レポ(過渡的、dcos / dcos-test-utils、dcos / dcos-launch)
チームシップ/ dcos /テスト/アップグレードから次のメジャーへ 次のメジャーバージョンへのアップグレード 中間圏/高度試験レポ(過渡的、dcos / dcos-test-utils、dcos / dcos-launch)







-dcos
-, , , , ,

執筆者: