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.
PythonとYAMLでGCPをDeploy!
「Google Cloud Deployment Manager」
2
3
Masashi Terui @ marcy_terui
I’m a developer and architect in the operators company (JIG-SAW Inc.)
I'm the organizer on the...
ABOUT US
5
Coming soon!!
6
7
Cloud Deployment Managerは、複雑なクラウドプラットフォームのソリューションを
シンプルな宣言型のテンプレートを使用して、
開発者が容易に設計、共有、展開、管理することを可能とします。
簡単なWebサーバから複雑な高可...
つまり
8
複雑なクラウドプラットフォームのソリューション
シンプルな宣言型のテンプレート
容易に設計、共有、展開、管理
→ GCPを
→ YAMLで
→ アレコレできちゃうわけです
9
resources:
- type: compute.v1.instance
name: vm-my-first-deployment
properties:
zone: us-central1-b
machineType: https:/...
10
いいえ、違います
YAMLとかJSONとかは”Code”ではありません
あくまでデータ(リソース)の表現方法(フォーマット)
別にあ○しぼーをdisってるわけではありません
個人的見解です
11
12
JSON or YAML
CloudFormationはより細かく制御でき、

ほとんどのサービスや機能を網羅しているが表現が冗長

軽く1000行とかのJSONができあがるの、何か間違ってると思うんですよ…

(
Pythonで書ける
13
14
インフラのコード化
自動化
再現可能なインフラ
インフラの世界へ開発のプロセスを持ち込む(TDD, CI etc…)
バズワード・・・?
15
16
17
18
19
resources:
- type: compute.v1.instance
name: vm-my-first-deployment
properties:
zone: us-central1-b
machineType: https:...
20
def GenerateConfig(context):
return """
resources:
- type: compute.v1.instance
name: vm-my-first-deployment
properties:...
21
import helpers.common
def GenerateConfig(context):
return """
resources:
- type: compute.v1.instance
name: %(name)
prop...
22
こんな風に
23
よく使う記述をメソッドにまとめる
オブジェクトに属性を与えて、

メソッドコールするだけ的な感じにしたり
使い回しを考えて共通化・部品化
自分(達)のインフラ構築・管理フレームワークを作れる
24
25
26
gcloud deployment-manager deployments create <name> --config <yml>
27
公式ドキュメント(英語ですw)

https://cloud.google.com/deployment-manager/overview
28
29
30
31




32
33
Pythonでクラウド(特にGCP)を操りたい
イケてるクラウドインフラ上でPythonで

IoTサーバサイド開発したい方

今のところAWSメイン(Kinesis, DynamoDBとか、コアなプロダクト触れます)

GCPは具体的に...
PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」
Upcoming SlideShare
Loading in …5
×

PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」

2,451 views

Published on

PyCon Mini Sapporo 2015
https://sapporo.pycon.jp/2015/

Published in: Technology
  • Be the first to comment

PythonとYAMLでGCPをDeploy!「Google Cloud Deployment Manager」

  1. 1. PythonとYAMLでGCPをDeploy! 「Google Cloud Deployment Manager」
  2. 2. 2
  3. 3. 3
  4. 4. Masashi Terui @ marcy_terui I’m a developer and architect in the operators company (JIG-SAW Inc.) I'm the organizer on the some of events in sapporo with the theme of "Infrastructure as Code”. I’m a member of JAWS-UG Sapporo and GCPUG Sapporo (Coming soon!) I develop a IoT application (ServerSide) with Python and more. I’m a husband of my wife. I’m a father of my son and daughter. ABOUT ME 4
  5. 5. ABOUT US 5 Coming soon!!
  6. 6. 6
  7. 7. 7 Cloud Deployment Managerは、複雑なクラウドプラットフォームのソリューションを シンプルな宣言型のテンプレートを使用して、 開発者が容易に設計、共有、展開、管理することを可能とします。 簡単なWebサーバから複雑な高可用性クラスタまで、 Cloud Deployment Managerはチームがインフラの管理に費やす時間を少なくし、 より多くの時間を開発をに向けることができます。 - - 公式ページ(https://cloud.google.com/deployment-manager/) の英文訳(間違ってたらゴメンナサイ) - ”
  8. 8. つまり 8 複雑なクラウドプラットフォームのソリューション シンプルな宣言型のテンプレート 容易に設計、共有、展開、管理 → GCPを → YAMLで → アレコレできちゃうわけです
  9. 9. 9 resources: - type: compute.v1.instance name: vm-my-first-deployment properties: zone: us-central1-b machineType: https://www.googleapis.com/compute/v1/projects/sunlit-arcade-100913/zones/us-central1-b/machineTypes/f1-micro disks: - deviceName: boot type: PERSISTENT boot: true autoDelete: true initializeParams: diskName: disk-my-first-deployment sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140619 networkInterfaces: - network: https://www.googleapis.com/compute/v1/projects/sunlit-arcade-100913/global/networks/default accessConfigs: - name: External NAT type: ONE_TO_ONE_NAT
  10. 10. 10 いいえ、違います YAMLとかJSONとかは”Code”ではありません あくまでデータ(リソース)の表現方法(フォーマット) 別にあ○しぼーをdisってるわけではありません 個人的見解です
  11. 11. 11
  12. 12. 12 JSON or YAML CloudFormationはより細かく制御でき、
 ほとんどのサービスや機能を網羅しているが表現が冗長
 軽く1000行とかのJSONができあがるの、何か間違ってると思うんですよ…
 ( Pythonで書ける
  13. 13. 13
  14. 14. 14 インフラのコード化 自動化 再現可能なインフラ インフラの世界へ開発のプロセスを持ち込む(TDD, CI etc…) バズワード・・・?
  15. 15. 15
  16. 16. 16
  17. 17. 17
  18. 18. 18
  19. 19. 19 resources: - type: compute.v1.instance name: vm-my-first-deployment properties: zone: us-central1-b machineType: https://www.googleapis.com/compute/v1/projects/sunlit-arcade-100913/zones/us-central1-b/machineTypes/f1-micro disks: - deviceName: boot type: PERSISTENT boot: true autoDelete: true initializeParams: diskName: disk-my-first-deployment sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140619 networkInterfaces: - network: https://www.googleapis.com/compute/v1/projects/sunlit-arcade-100913/global/networks/default accessConfigs: - name: External NAT type: ONE_TO_ONE_NAT
  20. 20. 20 def GenerateConfig(context): return """ resources: - type: compute.v1.instance name: vm-my-first-deployment properties: zone: us-central1-b machineType: https://www.googleapis.com/compute/v1/projects/sunlit-arcade-100913/zones/us-central1-b/machineTypes/f1-micro <snip> sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140619 networkInterfaces: - network: https://www.googleapis.com/compute/v1/projects/sunlit-arcade-100913/global/networks/default accessConfigs: - name: External NAT type: ONE_TO_ONE_NAT """
  21. 21. 21 import helpers.common def GenerateConfig(context): return """ resources: - type: compute.v1.instance name: %(name) properties: zone: %(zone) machineType: %(machine_type) disks: - deviceName: boot <snip> sourceImage: %(source_image) networkInterfaces: - network: %(metwork_project)/global/networks/default <snip> """ % {"name": (common.GenerateMachineName("myFrontend", context.env(“environment")), "zone": context.env("zone"),, "machine_type": common.GenerateMachineTypeURI(zone=context.env("zone"), type=context.env("type")), "project": common.GenerateProjectURI(context.env("project")), "source_image": common.GenerateProjectURI("debian-cloud", "ebian-7-wheezy-v20140619"), "metwork_project": common.GenerateProjectURI("sunlit-arcade-100913")}
  22. 22. 22
  23. 23. こんな風に 23 よく使う記述をメソッドにまとめる オブジェクトに属性を与えて、
 メソッドコールするだけ的な感じにしたり 使い回しを考えて共通化・部品化 自分(達)のインフラ構築・管理フレームワークを作れる
  24. 24. 24
  25. 25. 25
  26. 26. 26 gcloud deployment-manager deployments create <name> --config <yml>
  27. 27. 27 公式ドキュメント(英語ですw)
 https://cloud.google.com/deployment-manager/overview
  28. 28. 28
  29. 29. 29
  30. 30. 30
  31. 31. 31 
 

  32. 32. 32
  33. 33. 33 Pythonでクラウド(特にGCP)を操りたい イケてるクラウドインフラ上でPythonで
 IoTサーバサイド開発したい方
 今のところAWSメイン(Kinesis, DynamoDBとか、コアなプロダクト触れます)
 GCPは具体的に活用計画有り、Azure他もベンダー問わずメリットあるなら使います。
 もちろんInfra as CodeやChatOps等も実践しています。

×