Upgrade to Pro — share decks privately, control downloads, hide ads and more …

てっくないと 佐藤さん

ta-suke
October 04, 2019

 てっくないと 佐藤さん

佐藤さんのAlibaba Cloudの利用紹介

ta-suke

October 04, 2019
Tweet

More Decks by ta-suke

Other Decks in Technology

Transcript

  1. ©︎ 2019 SB Cloud Corp. 本日のテーマ 3 自動化の重要性はわかったけど... インフラエンジニアなので コード書けない...

    そもそもAPIリファレンスが イケてない... CとC#とC++って 何が違うんだ... ⇒ 0から自動化の仕組みを創造するのは難しい!!
  2. ©︎ 2019 SB Cloud Corp. 自己紹介 5  組織:株式会社アルファシステムズ 

    所属:第二事業本部 第一事業部 第六技術部 第二課 第一係  好きな言葉:「右のアタッカーを狙ってね!!」  嫌いな言葉:「左打ちに戻してね...」 年次 技術 業務 1年目 ・Flex ・Java 業務アプリケーションの開発 2年目 3年目 ・AWS ・Java Java SDKを用いた構成管理ツールの開発 4年目 ・Azure ・Ansible ・リソース方式の検討/自動化 ・Ansibleを用いたOS設定の自動化 5年目 ・Alibaba Cloud ・API検証(Java)
  3. ©︎ 2019 SB Cloud Corp. 注意事項 6 本日の発表内容は、佐藤が勝手に考えたものです。 関連企業(SBクラウド /

    NTTデータ / アルファシステムズ) の立場や意見を代弁するものではありません。 また、セミナーやカンファレンスに登壇するのは初めてです。 べしゃり慣れしていないのでご了承ください!!
  4. ©︎ 2019 SB Cloud Corp. アジェンダ 7 1. OSS紹介 1-1.

    Terraform 1-2. Github 1-3. Jenkins 2. 実現方法のご紹介 2-1. CI/CDパイプライン 2-2. 開発フロー標準化 2-3. Pragmatic Terraform on Alibaba Cloud 3. デモ 3-1. Security Group穴あけ 3-2. 新規環境追加 4. おわりに 本日のメイン!!
  5. ©︎ 2019 SB Cloud Corp. 1-1. Terraform 9 Terraformとは •

    インフラ環境構成管理ツール • Alibaba CloudだけでなくAWS/Azure/GCP等様々なクラウドをサポート • HashiCorp Configuration Languageと呼ばれる専用の言語で記述で記述
  6. ©︎ 2019 SB Cloud Corp. 1-1. Terraform 10 Terraformポイント •

    $ terraform plan:ドライラン機能。構文チェック & 差分抽出 • $ terraform apply:リソース構築実行機能 • $ terraform fmt:フォーマッタ機能 • xxx.tf ファイル: 構成管理ファイル。構築するリソースの情報を記述 • terraform.tfstate ファイル: applyの結果を保存、管理対象リソースの状態を保持するjsonファイル 非常に重要!!
  7. ©︎ 2019 SB Cloud Corp. 1-2. Github 11 Githubとは •

    Git ≠ Github • Gitのホスティングサービス • Web UIを用いて操作可能
  8. ©︎ 2019 SB Cloud Corp. 1-2. Github 12 Githubポイント •

    ブランチ: 機能追加やバグ改修の際に、本線開発に影響を与えることなく開発を行う ための機能。本線開発を行うブランチのことをmasterブランチと呼ぶ • push: リモートリポジトリにローカルリポジトリの変更内容を反映すること • pull: リモートリポジトリの変更内容をローカルリポジトリに反映すること • プルリクエスト: 「リモートリポジトリの変更内容をローカルリポジトリに反映してください」 というお願い。「masterプランチにマージして良いですか?」というRv依頼
  9. ©︎ 2019 SB Cloud Corp. 1-3. Jenkins 13 Jenkinsとは •

    ジョブ実行ツール • CI/CDツールのデファクトスタンダード • Git / Maeven / JUnit等様々なサービスと連携可能(プラグインも充実)
  10. ©︎ 2019 SB Cloud Corp. デモ①:Security Group穴あけ 18 Terraformで構築済み ・Jenkins/Terraform

    実行サーバ ・Terraform管理対象外 デモ環境構成:既存環境
  11. ©︎ 2019 SB Cloud Corp. 2-2. 開発フロー標準化 21 参考:Github Flow

    master branch issue pull request marge 4. pull requestを活用 5. pull request承認後にmasterへmarge 6. masterへのmarge完了後に直ちにデプロイ 1. masterは常にデプロイ可能 2. 作業用ブランチはmasterから派生 3. 作業用ブランチは定期的にpush Github Flow 6つの原則
  12. ©︎ 2019 SB Cloud Corp. 2-2. 開発フロー標準化 22 2. branch作成

    4. branchにpush 3. Terraform実装 1. issue発行 5. Rv実施 6. masterへマージ pull request発行 自動デプロイ Tmリーダ 作業者 開発フロー ・不毛な作業は自動化 することで工数削減 ・役割/担当を定義すること で責任分界点を明確に! Point !!
  13. ©︎ 2019 SB Cloud Corp. 2-3. Pragmatic Terraform on Alibaba

    Cloud 24 Githubメリデリ メリット • txtベースで管理可能 ⇒ Diffが取りやすい/Rvが容易 • ドライラン機能が優秀 ⇒ 構文チェックだけでなく、差分抽出の側面も • 依存関係を自動で解決 ⇒ 作成順番を考慮せず、フラットに記述可能 デメリット(課題) • 複数人で開発し辛い ⇒ .tf / .tfstateファイルの管理方法を検討 • 学習コストがかかる ⇒ 誰にでも簡単に実装出来るような工夫
  14. ©︎ 2019 SB Cloud Corp. 2-3. Pragmatic Terraform on Alibaba

    Cloud 25 ① Remote State機能を活用する data "terraform_remote_state" "t00_state" { backend = “oss” // 出力先タイプ config = { bucket = “oss-technight-demo“ // prefix = “terraform/state/T00“ // 出力先情報 key = "terraform.tfstate“ // region = "ap-northeast-1" } } remote_state.tf terraform.stateファイルをOSSに 保存することで、複数人開発に対応!! Point !!
  15. ©︎ 2019 SB Cloud Corp. 2-3. Pragmatic Terraform on Alibaba

    Cloud 26 ② module機能を活用する T01/ess.tf resource "alicloud_instance" "web" { image_id = “centos_7-6_64bit" security_groups = ["sg_t00_common“, “sg_t01_web”] key_name = “key_pair_common” instance_name = “ecs_web_t01" instance_type = “ecs.t1.large” } T02/ess.tf resource "alicloud_instance" "web" { image_id = “centos_7-6_64bit" security_groups = ["sg_t00_common“, “sg_t02web”] key_name = “key_pair_common” instance_name = “ecs_web_t02" instance_type = “ecs.c1.small” }
  16. ©︎ 2019 SB Cloud Corp. 2-3. Pragmatic Terraform on Alibaba

    Cloud 27 ② module機能を活用する T01/ess.tf module “web" { source = “../../modules/ess” env_id = “t01” instance_type = “ecs.t1.large” } modules/ess/main.tf resource "alicloud_instance" "web" { image_id = “centos_7-6_64bit" security_groups = ["sg_t00_common“, “sg_${env_id}_web”] key_name = “key_pair_common” instance_name = “ecs_web_${env_id}" instance_type = “${instance_type}” } T02/ess.tf module “web" { source = “../../modules/ess” env_id = “t02” instance_type = “ecs.c1.small” } 共通処理を外出しする ことで記述量を削減! Point !!
  17. ©︎ 2019 SB Cloud Corp. 2-3. Pragmatic Terraform on Alibaba

    Cloud 28 ③ 適切にディレクトリ/ファイル分割を行う terraform/ ├ envs/ │ ├ T00/ │ │ ├ provider.tf │ │ ├ remote_state.tf │ │ ├ variables.tf │ │ ├ terraform.tfvars │ │ ├ vpc.tf │ │ ├ ess.tf │ │ : : │ │ └ sg.tf │ │ │ ├ T01/ │ : │ └ TXX/ : ディレクトリ構成 : └ modules/ ├ vpc/ │ ├ main.tf │ ├ output.tf │ └ variables.tf ├ ecs/ ├ ess/ : : └ xxx 適切にディレクトリ/ファイルを分割す ることで、可読性up & 処理性能up !! Point !!
  18. ©︎ 2019 SB Cloud Corp. 4. おわりに 32 実現出来なかったこと 

    terraform apply失敗時のリカバリ ・ terraform planで検知出来るのは構文チェックまで ・ パラメータの妥当性等はチェックしてくれない ⇒ terraform apply時にコケた場合の対応をフローに組み込む必要あり  プルリクエスト発行者の切り替え ・ プルリクエストはjenkinsが自動で発行するためユーザを指定していない ⇒ Githubからのpayloadを解析して発行者を切り替える必要あり  そもそも... ・ エンタープライズのお客様がGithubの利用を許可するの?? ⇒ 次回登壇時までに対応させます!!
  19. ©︎ 2019 SB Cloud Corp. 4. おわりに 33 宣伝 

    Github:https://github.com/satouruzg  SBクラウドtechブログ 【APIシリーズ】 ・https://www.sbcloud.co.jp/entry/2019/05/15/api-orchestration-1/ ・https://www.sbcloud.co.jp/entry/2019/05/23/api-orchestration-2 ・https://www.sbcloud.co.jp/entry/2019/05/30/api-orchestration-3 ・https://www.sbcloud.co.jp/entry/2019/06/10/api-orchestration-4 ・https://www.sbcloud.co.jp/entry/2019/06/19/api-orchestration-5 ・https://www.sbcloud.co.jp/entry/2019/07/05/api-orchestration-6 ⇒「Alibaba AIP」で検索!! 【CI/CDシリーズ】 ⇒ 乞うご期待!!