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.

Elasticbeanstalk で Ansible を使っている話

1,408 views

Published on

Ansible Night in Tokyo 2018.09 の LT 資料です
https://ansible-users.connpass.com/event/100344/

Published in: Technology
  • Be the first to comment

Elasticbeanstalk で Ansible を使っている話

  1. 1. ElasticBeanstalk で Ansible を使っている話 2018.09.21 Ansible Night in Tokyo 2018.09 LT Kei IWASAKI at SQUEEZE Inc.
  2. 2. お前誰よ Kei IWASAKI Twitter: @laugh_k Github: @laughk 株式会社SQUEEZE所属 スラスラわかるPython(翔泳社) という本の共著者 の⼀⼈ 最近は Django REST Framework, AngularJS でWeb 開発をやりながらもインフラ周りやそれ以外の改 善を模索したりしてます
  3. 3. 宿泊施設の運⽤管理サービスの 開発・インフラやってます
  4. 4. CM Python ⼊⾨者向けの本 スラスラわかる Python 発売中!
  5. 5. 今⽇の話
  6. 6. ElasticBeanstalk で Ansible を使っている話
  7. 7. ElasticBeanstalk https://aws.amazon.com/jp/elasticbeanstalk/
  8. 8. AWS Elastic Beanstalk は、Java、.NET、PHP、 Node.js、Python、Ruby、Go および Docker を使 ⽤して開発されたウェブアプリケーションやサー ビスを、Apache、Nginx、Passenger、IIS など使 い慣れたサーバーでデプロイおよびスケーリング するための、使いやすいサービスです。 “ “ お客様はコードをアップロードするだけで、 Elastic Beanstalk が、キャパシティーのプロビジ ョニング、ロードバランシング、Auto Scaling か らアプリケーションの状態モニタリングまで、デ プロイを⾃動的に処理します。同時に、お客様の アプリケーションが稼動している AWS リソース の完全なコントロールを維持でき、いつでも基本 的なリソースにアクセスすることができます。 “ “
  9. 9. ElasticBeanstalk ものすごくざっくり説明すると AWS が提供してくれる Heroku っぽい環境 実態は EC2, ALB, RDS, SQS あたりを AutoScale で よしなにしてくれている 直接インフラを触ることもできる 専⽤ CLI があり、コマンド⼀発でアプリケーショ ンをデプロイできる スタートアップなどで⼿間をかけずに Webアプリ を動かすにはかなりお⼿軽でよい選択肢
  10. 10. ElasticBenstalk 簡単な構成管理ツールのような機構もある ebextensions https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/ latest/dg/ebextensions.html
  11. 11. ebextensions
  12. 12. ebextensions アプリケーションのトップディレ クトリに .ebextensions ディレク トリを掘ってそこに YAML or JSON でいろいろ書ける ちょっとしたパッケージのインス トールや AWS のリソースを管理 したりできる アプリケーションをデプロイする タイミングで実⾏される
  13. 13. ebextensions の例 Resources: AWSEBAutoScalingGroup: Type: "AWS::AutoScaling::AutoScalingGroup" Properties: HealthCheckType: ELB HealthCheckGracePeriod: 300
  14. 14. ebextensions の例 packages: yum: git: [] libffi-devel: [] libxml2-devel: [] libxslt-devel: []
  15. 15. ebextensions の例 files: "/etc/httpd/conf.d/server-status.conf": mode: "000644" owner: root group: root content: | <Location /server-status> SetHandler server-status Require local </Location>
  16. 16. ebextensions 便利!
  17. 17. なんだけども そこまで万能でもない
  18. 18. ebextensions のつらみ あくまで ElasticBeanstalk で管理できるものをよ しなにするためのもの。それ以外のものを管理し ようとすると⼀気に難易度が上がる 適⽤時の挙動がブラックボックス。実際にどうや って設定した内容が適⽤されるのか追うのが難し いことがある 開発フローとの兼ね合いによっては、ちょっとし た con g ファイルの変更をするのにアプリケーシ ョンの Hot x をリリースする必要になるケースも
  19. 19. ebextensions のつらみ 実際 Celery (Python製のジョブキュー) や Datadog を導⼊しようとしたときにかなり苦労した
  20. 20. _⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈⼈_ > そこでAnsibleですよ <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
  21. 21. ElasticBeanstalk x Ansible
  22. 22. ElasticBeanstalk x Ansible ebextension で基本的に以下のことだけやってもらう ようする Ansible のインストール playbook の取得 local_action の実⾏だけやってもらうようにする
  23. 23. これで済むようにする container_commands: "01.setup_and_execute_ansible": command: "ansible-playbook playbook.yml" ※ イメージです
  24. 24. Plan 1. インフラ的に管理したいものに限って Playbook 管 理する 例: 監視関連のもの、ミドルウェアの設定 など 2. Playbook を Github リポジトリで管理 3. ebextension 経由では Github から playbook の tarball を取得し、 local_action で Playbook で適⽤ 4. ⼿元のPCからも直接SSH経由で Playbook を適⽤可 能にする
  25. 25. ElasticBeanstalk x Ansible のために やったこと Ansible のインストールとPlaybookの取得はシェル スクリプト password 情報を扱うための vault_file は KMS で 暗号化。復号化は ElasticBeanstalk 管理下の EC2 に IAM Role を割り当てて対応 EC2 で local_action , PC からは通常どおり SSH で やるためにそれ⽤の dynamic inventory を作成
  26. 26. Dynamic Inventory の例 PC EC2
  27. 27. やってみた結果
  28. 28. ebextensions container_commands: "01.setup_and_execute_ansible": command: | /bin/bash .ebextensions/setup-and-exec-ansible-playbook.sh wrapper スクリプトはやっぱり必要だった
  29. 29. Playbook の適⽤
  30. 30. アプリケーションのデプロイ時
  31. 31. AutoScale 発動時
  32. 32. Playbook だけ普通に適⽤
  33. 33. ElasticBeanstalk x Ansible な環境にしてよかったこと
  34. 34. ElasticBeanstalk x Ansible な環境に してよかったこと AutoScale でよしなにしてくれる感じが上がった アプリケーションの Hot x 切らなくても設定変更 の適⽤ができるようになった Galaxy Role が使えるようになった など 圧倒的にインフラ環境に整備がやりやすくなった
  35. 35. ElasticBeanstalk x Ansible な環境に 思うこと ElasticBeanstalk がある程度よしなにやってくれる ところにいい感じに Ansible を使える状況は結構楽 mitamae でも同様なことはできそう とはいえこの状況はそもそもインフラに求めるも のが ElasticBeanstalk の守備範囲を超えてしまっ ていることでもある。より適切な環境への移設を 検討したほうがよさそう
  36. 36. おしまい

×