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.

運用のためのPlaybook (Playbook for Operation)

2,877 views

Published on

Ansible Practice Meetup
「Ansible実践ガイド」出版記念イベント 発表資料
https://thinkit.connpass.com/event/47283/

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/qURD } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/qURD } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/qURD } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/qURD } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/qURD } ......................................................................................................................... Download doc Ebook here { https://soo.gd/qURD } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

運用のためのPlaybook (Playbook for Operation)

  1. 1. Playbook for Operation Ansible Practical Meetup #1 Shingo.Kitayama
  2. 2. 2 元楽天株式会社 所属 国際ECサービスのインフラ部門 日本ヒューレット・パッカード株式会社 所属 テクニカルアーキテクト テクノロジーコンサルティング事業統括 クロス・インダストリ・ソリューション統括本部 テクノロジーアーキテクト部 http://book.impress.co.jp/books/1115101157 2016年末「Ansible実践ガイド」執筆 北山 晋吾 (Shingo.Kitayama) 経歴など もーど2のかお shkitayama spchildren Introduction
  3. 3. 3 Agenda 1. Infrastructure as Codeの原理 2. 運用のためのPlaybook 3. まとめ ※本資料に関しては、個人の意見に基づくものであり、十分考慮の上ですが、所属組織団体の公式見解とは異なる場 合がございます。 ご了承下さい。
  4. 4. Infrastructure as Codeの原理 4
  5. 5. 構成管理の変遷 Infrastructure as Codeが必要となった背景 5 構成管理DB (CMDB) Code手順書 InstallInstall 変更履歴 Install Install API 構成管理ツール 動的機器情報取得 Cloud Platform ・機器情報 ・変更情報 ・属性情報 情報更新 状態の管理 構成情報全てを管理 仮想化による物理的な制約 がなくなり管理が複雑化 クラウド活用の時代オンプレミス主流の時代 ・構成管理情報と実態を常に同期 ・変更管理と変更が必要 → 構成管理範囲が広い ・動的情報収集 ・管理内容の可視化 → 自動化のために状態管理を行うこと
  6. 6. Infrastructure as Code(IaC)のメリット IaCを適用することでアジリティの高いサービスを提供 6 オペレーション工数の削減 従来、手動で行ってきた作業をコード化、自動化することにより、オペレーション工数および納期の短縮 が期待できる。 オペレーション品質の向上 作業をコード化して、自動化することにより、オペレーション品質を均一に保つ効果がある。 システム運用の標準化の促進 自動化やバージョン管理を適切に行うことで、システム運用のポリシーや業務標準化を形成できる。 作業統制の強化 作業オペレーションを自動化することにより、内部統制やセキュリティ対策面での効果が期 待できます。
  7. 7. Infrastructure as Codeの範囲 ソフトウェア開発で実施されてきたプロセスをインフラの管理に適用 7 継続的デリバリー 継続的インテグレーション バージョン管理 バージョン管理 システム CI Server Build Test Check 構成管理ツール Feedback Commit Code 自動化(デプロイ/テスト) Development CI/Test Staging Production Deployment Release Monitoring インフラリソースをコードで操作するということは、そのコード自体が 「品質管理」「バージョン管理」「テスト」の対象となるということ
  8. 8. 8 プレイブックのベストプラクティス プレイブックは設定ファイルではなく、コードである。 --- - name: Install Apache yum: name=http when: ansible_distribution == 'CentOS' - name: Configure Apache template: src: httpd.conf dest: /etc/httpd/conf/httpd.conf - name: Start Apache service: name: httpd state: started enabled: yes Ansibleのプレイブックを上手く構成、管理したければ、 コードの原理原則を知るべきである。 プレイブックの ベストプラクティスとは?? ? ? ? Infrastructure as Codeは インフラリソースをコードで操作するということ
  9. 9. コードの原理 The Principles of Programming 9参照: プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則 プログラミングに銀の弾丸はない プログラミングは本質的に複雑なものであるため、課題に直面した場合は、そのコードができた背景や、 歴史から追う必要がある。 コードは設計書である プログラミングとは仕様のコード化だけではなく、仕様を改善する必要がある。 コードは必ず変更される コードは修正されるものであり、一度書いて終わりということはほぼない。そのため、変更されることを想定 してプログラミングする必要がある。 コードを書くことに時間をかけるよりも、読みやすいものを作る方がいい。 AnsibleのSimpleと 言う特徴を損ねては いけない
  10. 10. 10 コードの原則 The Principles of Programming 変化に強く柔軟なシス テムを構築するために 重要な考え方。 重複したコードを書か ないこと。 その考えに基づいて設 計すること。 多分必要になるだろう ではなく、本当に必要 になったときに必要な モノを作成する。 同じメソッドに属する コードの抽象化レベル をすべて統一する。 読む人に意図がきちん と伝わるコードを書く。 こざかしい、むずかし い、頭脳をアピールす るコードは書かない。 問題解決において、簡 潔性こそが本質的価値 でありシステムのゴー ルでありプロセスであ るという経験則。 DRY YAGNI PIE SLAPKISS Don't Repeat Yourself. You Aren't Going to Need It. Program Intently and Expressively. Single Level of Abstraction Principle Keep it short and simple. 参照: http://d.hatena.ne.jp/asakichy/20100203/1265158263
  11. 11. YAGNIの一例 You Aren't Going to Need It. 11 --- - name: Install the selinux python module yum: name=libselinux-python state=present when: ansible_os_family == "RedHat" - name: Copy the epel packages copy: src=epel.repo dest=/etc/yum.repos.d/epel_ansible.repo when: ansible_os_family == "RedHat" - name: Install the nginx packages yum: name={{ item }} state=present with_items: redhat_pkg when: ansible_os_family == "RedHat" - name: Install the nginx packages apt: name={{ item }} state=present update_cache=yes with_items: ubuntu_pkg environment: env when: ansible_os_family == "Debian" 多分必要になるだろうではなく、本当に必要 になったときに必要なモノを作成する。 あらかじめいろいろな事態にそなえて機能を 盛り込んでおいても、結局利用されないこと が多く、余計に複雑性を盛り込むことになる。 例) Factによる条件分岐は便利だけれども、必要以 上に利用する必要はない。 ./roles/nginx/tasks/main.yml
  12. 12. PIEの一例 Program Intently and Expressively. 12 - name: Create the links to enable site configurations file: path: /etc/nginx/sites-enabled/{{ item['server']['file_name'] }} state: link src: /etc/nginx/sites-available/{{ item['server']['file_name'] }} with_items: nginx_sites when: nginx_sites|lower != 'none' コードを書くときには、書きやすさより読み やすさを重視すべき。 例) 動的な値を除き、変数を必要以上に使いすぎ ない。 ./roles/nginx/tasks/main.yml - name: Create the links to enable site configurations file: path: /etc/nginx/sites-enabled/{{ item }} state: link src=/etc/nginx/sites-available/{{ item }} with_items: - foo - var when: nginx_sites|lower != 'none'
  13. 13. 運用のためのプレイブック 13
  14. 14. Ansibleの適応範囲 デプロイやリリース作業がメイン 14 要件定義 開発 ビルド 開発 デプロイ テスト 本番 デプロイ テスト リリース 運用 (2) 継続的インテグレーション (3) 継続的デリバリー (4) 継続的アセスメント Business Needs Business Apps 手順の一部が、スクリプト化されバージョン管理されている。 手順が完全自動化されており、環境を変更しても、バージョン管理された設定を更新するフローが確立している。 (4) 継続的オペレーション 運用を踏まえた自動化の仕組みが完備されている。 (1) バージョン管理 ビジネス アジリティ 手順のほとんどが自動化され、プロビジョニングツールで記述されており、即時に開発環境を作成できる。 Ansibleはデプロイの自動化に利 用されることがほとんど。
  15. 15. 15 Ansibleで運用作業ってできないの??
  16. 16. 再掲) Infrastructure as Code(IaC)のメリット IaCを適用することでアジリティの高いサービスを提供 16 オペレーション工数の削減 従来、手動で行ってきた作業をコード化、自動化することにより、オペレーション工数および納期の短縮 が期待できる。 オペレーション品質の向上 作業をコード化して、自動化することにより、オペレーション品質を均一に保つ効果がある。 システム運用の標準化の促進 自動化やバージョン管理を適切に行うことで、システム運用のポリシーや業務標準化を形成できる。 作業統制の強化 作業オペレーションを自動化することにより、内部統制やセキュリティ対策面での効果が期 待できます。
  17. 17. 再掲) Infrastructure as Code(IaC)のメリット IaCを適用することでアジリティの高いサービスを提供 17 オペレーション工数の削減 従来、手動で行ってきた作業をコード化、自動化することにより、オペレーション工数および納期の短縮 が期待できる。 オペレーション品質の向上 作業をコード化して、自動化することにより、オペレーション品質を均一に保つ効果がある。 システム運用の標準化の促進 自動化やバージョン管理を適切に行うことで、システム運用のポリシーや業務標準化を形成できる。 作業統制の強化 作業オペレーションを自動化することにより、内部統制やセキュリティ対策面での効果が期 待できます。 標準化、再利用性がある運用をターゲットとすべき
  18. 18. 再利用性のある運用Playbook 再利用性を持たせるための切替ポイント 18 タスクファイル roleの mainタスク Playbook ロールのtasksファイル配下に個別 のタスクを配置する。 tasks/{{ TASK }}.yml ロールのmain.ymlを利用する。 tasks/main.yml Playbookを運用ごとに作成する。 ロール内のタスクファイルをどれだけ再利用化できるかが運用 Playbookを作成するメリット ロールで作成する範囲
  19. 19. タスクファイル(tasks/{{ TASK }}.yml)の役割り ロールのタスクを定常業務の作業単位で作成 19 ./roles/nginx/tasks/ - start_process.yml (プロセスの起動) - stop_process.yml (プロセスの停止) - check_process.yml (プロセスの確認) - modify_configuration.yml (設定更新) - initial_setup.yml (初期構築) - … - name: 利用ポートの確認 - name: 利用IPアドレスの確認 - name: nginxの起動 - name: nginxのコンテンツ確認 などなど 各タスクファイルは 疎結合で完了するように作成する。 ./roles/nginx/tasks/start_process.yml 起動タスクと言っても、 運用上起動だけを行 うわけではない。 タスクファイル roleの mainタスク Playbook
  20. 20. 20 roleのメインタスク(tasks/main.yml)の役割り 定常業務の流れをmain.ymlで制御 --- block: - include: ./check_process.yml vars: check_status: start - include: ./stop_process.yml - include: ./modify_configuration.yml - include: ./start_process.yml - include: ./check_process.yml vars: check_status: start when: operation == "update_config" block: - include: ./stop_process.yml - include: ./start_process.yml - include: ./check_process.yml vars: check_status: start when: operation == "restart_process" ./roles/nginx/tasks/main.yml メインタスクでは、各タスクファイ ルを業務作業にあわせた形で並 べる。 この際に、特定の変数で業務作 業単位で呼び出せるように設定 しておく。 タスクファイル roleの mainタスク Playbook
  21. 21. 21 Playbookの役割り ロールと、行いたい定常業務作業を制御 --- - hosts: web_servers serial: 1 vars: operation: update_config pre_tasks: … roles: - role: nginx ./nginx_update_config.yml Playbookは各定常業務の呼び出 し、ホストの切替、ロールの切替 などを制御する。 1つのPlaybookで全ての運用業 務(TESTを含め)を行うことはでき ない。 タスクファイル roleの mainタスク Playbook
  22. 22. まとめ 22
  23. 23. 運用Playbookのまとめ 23 Ansibleはコードのため、コードの原理原則を守る コードの原理原則が分かれば、 チーム運用に適したAnsibleのベストプラクティスできる。 運用Playbookは定常業務を対象とすべき すべての運用を自動化することはできない。(Ansibleの役割りを超えている) 運用Playbookを作成しても、再利用性のあるプレイブックを心掛ける 再利用性がないのであれば、運用Playbookを作る必要はない Ansibleはコードです。。。
  24. 24. 24 Enjoy Ansible!! Thank you

×