Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Ansible with AWX

4.972 visualizaciones

Publicado el

Session slide in July Tech Festa 2018 Tokyo Japan

Publicado en: Tecnología
  • Sé el primero en comentar

Ansible with AWX

  1. 1. Ansible with AWX ~ Move to the next step of IT automation ~ Hideki Saito
 Software Maintenance Engineer for Ansible@Red Hat K.K.
 2018-07-29
  2. 2. Red Hat / Ansible2 • 氏名: 齊藤 秀喜 (さいとう ひでき) • TwitterID: @saito_hideki • 所属: Ansible Support Team / Red Hat K.K. • 仕事: Software Maintenance Engineer • 趣味: Ansible / Ansible Tower / AWX 自己紹介 Ansible方面からきました 怪しい者ではありません
  3. 3. Red Hat / Ansible3 Ansibleを利用した自動化を管理するコントローラ "AWX" を紹介します。 本日のテーマ 本日お話すること: 1. Ansibleによる自動化 2. Ansible + AWX で実現する一歩進んだ自動化 3. デモ (AWX on OpenShift)
  4. 4. Ansibleによる自動化
  5. 5. Red Hat / Ansible5 手作業で行っていたシステム運用の自動化を実現するためのツールです。 Ansibleの特徴を表す3つのキーワード : 1. SIMPLE ๏ 手順書感覚で自動化するオペレーションを記述することができる ๏ 最低限必要なのはInventoryファイルとPlaybookファイルのみ 2. POWERFUL ๏ 同時に複数台のターゲットを操作することができる ๏ モジュールを利用することで、さまざまな操作を自動化できる 3. AGENTLESS ๏ ターゲット側でエージェントを起動させることなく遠隔操作できる Ansibleで実現できること
  6. 6. Red Hat / Ansible Ansibleの仕組み Ansibleが管理対象となるリモートホストを操作する方法は大きく3つ。 公式ドキュメントのUsing Ansible(https://goo.gl/bLvNFq)で解説されています。 6 コントロールホスト ansibleコマンド ansible-playbookコマンド (1)SSH (2)WinRM (3)API ターゲットホスト (2)SSH / WinRM を利用する場合はターゲット上に実行可能プログラムを転送 (1)モジュールから生成した実行可能なプログラムコード (2)APIを利用するモジュールの場合は コントローラ上で実行 (3)SSH / WinRM を利用する場合は
 ターゲットホスト上で実行
  7. 7. Red Hat / Ansible7 Ansibleの仕組み ネットワーク機器とITサーバでは管理の仕組みが違います。
  8. 8. Red Hat / Ansible8 目的、利用者、利用方法を5W1Hで表現すると… Ansibleで実現する自動化 WHY ITインフラの構成管理業務の品質向上とオペレータの負荷の軽減をめざして WHO オペレータ自身が WHEN 日常業務として WHERE さまざまなシステムの構成要素に対して WHAT 実施する作業を共通の手法でコード化する HOW 自動化を共通のツールを利用して実現する
  9. 9. Red Hat / Ansible9 Ansibleは、シンプルであることを重要視しているために不足している機能があり ます。こんな機能があったらいいのになぁ... 次のステップに進むためには... 1. いつ・誰が・どこで・どのようなPlaybookを実行したのか知りたい! 2. Playbookの実行結果をまとめて管理しておきたい! 3. そのPlaybook古くない? 4. 複数のPlaybookをワークフローのように実行したいんだけど... 5. ターゲットホストの認証情報を一元管理したい! 6. コントロールホストのキャパシティをちゃんと管理したい...OOM killerさんが大暴 れしてるの... 7. 他のシステムと連携させたいけどAPIがない...だってただのコマンドだもの などなど...自動化を進める上で、このような課題が見えてきます。
  10. 10. Ansible + AWXで実現する 一歩進んだ自動化
  11. 11. Red Hat / Ansible11 旧Ansible, Inc (2015年に Red Hat が買収)が、商用ソフトウェアとして提供し ている Ansible Tower のアップストリーム版で、Apache v2ライセンスに基づい てOSSとして開発が進められています。 AWXの位置付け 分類 アップストリーム エンタープライズ (レッドハットが提供&サポート) 自動化プラットフォーム (GUI/REST API/ 権限管理/ 実行履歴管理など) AWX Project Ansible Tower 動作エンジン (コマンド等のコア部分、
 モジュール、プラグインなど) Ansible Project Ansible Engine
  12. 12. Red Hat / Ansible12 AWXに関する情報は、以下のサイトから入手することができます。 ユーザガイドや管理者ガイドなどのドキュメント類は、AWX向けとしては存在しません。 Enterprise版であるAnsible Towerのものを参照してください。 ★Source Code ➡ https://github.com/ansible/awx ★Install Guide ➡ https://github.com/ansible/awx/blob/devel/INSTALL.md ★User Guide • https://docs.ansible.com/ansible-tower/latest/html/userguide/index.html ★Administration Guide ➡ https://docs.ansible.com/ansible-tower/latest/html/administration/index.html ★API Guide ➡ https://docs.ansible.com/ansible-tower/latest/html/towerapi/index.html AWXに関する情報
  13. 13. Red Hat / Ansible13 2018-08-16にv1.0.0がリリースされました。 最新版(2018-07-22時点)は、2018-04-28にリリースさらたv1.0.6です。 AWXのリリースタイムライン ’2017-08-16 v1.0.0 v1.0.1 v1.0.2 v1.0.3 v1.0.4 v1.0.5 v1.0.6 ’2017-10-11 ’2017-12-14 ’2018-02-02 ’2018-02-21 ’2018-03-27 ’2018-04-28
  14. 14. Red Hat / Ansible14 ここでは、以下の主要な10機能を紹介します。 AWXが提供する主な機能 1. WebUI / RESTful API / Callback URL 機能 2. ユーザ管理機能(Active DirectoryやGoogle OAuth2などと連携可能) 3. ターゲットホストの認証情報を一元管理するCredential機能 4. AWS / GCP / Azure / OpenStack などと連携可能なDynamic Inventory機能 5. Github / Gitlab などの外部SCM上のPlaybookを取得するための連携機能 6. 複数のジョブ(Playbook)をワークフローとして実行する機能 7. ジョブやワークフローを指定の日時で実行するスケジュール実行機能 8. ジョブの実行結果をIRCやSlackなどに送信する機能 9. ログをlogstashやsplunkなどの外部システムに転送する機能 10.AWXサービスをクラスタ化(HAではなくマルチノード構成)する機能
  15. 15. Red Hat / Ansible15 AWXリポジトリをクローンしてから、Playbookを利用してインストール(*) *) 事前にAnsibleのインストールが必要です AWXをインストールする RHEL7系のOSの場合: # yum install docker python-docker-py # systemctl enable docker # systemctl start docker # git clone https://github.com/ansible/awx.git # cd awx/installer # ansible-playbook -i inventory install.yml
  16. 16. Red Hat / Ansible16 モダンなWeb Dashboardを利用して操作することができます。 AWXを利用する
  17. 17. Red Hat / Ansible17 AWXでオペレーションを自動化する AWXで自動化を実現するための機能要素は以下の通りです。
  18. 18. Red Hat / Ansible18 AWXで外部システムと連携 AWX Authentication NotificationLogging IaaS PaaS SCM API Provisioning Callback AWXは外部からAPI経由で操作可能。Job TemplateのProvisioning Callbacks 機能を有効化することで、外部からのジョブ起動も簡単に行えます。
  19. 19. Red Hat / Ansible19 PlaybookをもとにしてJob Templateを作り、これをJobとして実行します。 AWXの機能要素 機能要素 概要 Organization 全ての機能要素を収容するグループ Project Playbookを収容するディレクトリ Credential 操作対象となるホストの認証情報(SSHユーザ・パスワード等) Inventory 操作対象となるホスト及びホストをグループ化したリスト Job Template Project(Playbook)/Credential/Inventoryから構成されるジョブ Workflow 複数のJob Templateから作られたワークフロー Job Job Template / Workflowの実行単位 User Towerの各機能要素を操作する権限を付与されたユーザ Team 複数のTeamを所属させたチーム。User同様に権限を付与可能
  20. 20. Red Hat / Ansible FinishedLaunch "Job template"Grant permissions to "User" Create "Organization" Add "User" to "Team" Create "Host" in "Inventory" Create "Project" Create "Team" Create "Inventory" Add "Host" to "Group" Setting up "Job template" 20 基本的な操作の全体の流れ Create "User" Create "Credential" Create "Group" in "Inventory" Create "Job template"
  21. 21. Red Hat / Ansible21 Organizationを作成する。 基本的な操作の流れ(1) AWXの管理情報は Organization単位で管理される
  22. 22. Red Hat / Ansible22 Userを作成する。 基本的な操作の流れ(2)
  23. 23. Red Hat / Ansible23 AWXにログインして操作するためのユーザには、ユーザタイプの中から1つを選択 して割り当てることができます。 基本的な操作の流れ(2) - ユーザの種類 ユーザタイプ 概要 Normal User (標準ユーザ) 一般ユーザとして、AWXのさまざまなオブジェクト(Project / Credential / Inventory / Job template など)に設定された権限にしたがって操作を実行する。 System Auditor
 (システム監査者) AWXシステムの監査を目的として、全てのオブジェクトに対する読み込み権限をデフ ォルト状態で持っている。 System Administrator (システム管理者) AWXシステム管理者として、全てのオブジェクトの管理者権限を持っている。
  24. 24. Red Hat / Ansible24 Teamを作成する。 基本的な操作の流れ(3)
  25. 25. Red Hat / Ansible25 UserをTeamに所属させて、適切な役割を設定する。 基本的な操作の流れ(4)
  26. 26. Red Hat / Ansible26 Credentialを作成する 基本的な操作の流れ(5)
  27. 27. Red Hat / Ansible27 現時点(v1.0.6)でプリセットされている認証情報タイプは以下の通りです。 基本的な操作の流れ(5) - 認証情報の種類 認証情報 用途 Amazon Web Services AWSとの連携に必要な認証情報(ACCESS_KEY/SECRET_KEY/STS_TOKEN) Ansible Tower Ansibleのモジュールから利用できるTower/AWXの認証情報 Google Compute Engine GCEとの連携に必要な認証情報(サービス用アカウントのEmailアドレス等) Insights Insightsと連携するための認証情報(USERNAME/PASSWORD) Machine (必須) SSH/WinRMでターゲットホストに接続するために利用する認証情報 Microsoft Azure Resource Manager Azure Resource Managerとの連携に必要な認証情報(SUBSCRIPTION_ID等) Network Ansibleから操作可能なネットワーク機器への接続に利用する認証情報 OpenStack OpenStackの認証情報(OS_USERNAME/OS_PASSWORD/OS_AUTH_URL等) Red Hat Cloud Forms CloudFormsの認証情報(URL/USERNAME/PASSWORD) Red Hat Satellite 6 Satellite 6.3以降との連携するための認証情報(URL/USERNAME/PASSWORD) Red Hat Virtualization RHEV(Ovirt)と連携するための認証情報(URL/USERNAME/PASSWORD) Souce Control Github/Gitlab等のSCMと連携するための認証情報(USERNAME/PASSWORD等) Vault Ansible Vaultを利用するために必要な認証情報(PASSWORD) VMware vCenter vCenterとの連携に必要な認証情報(HOST/USERNAME/PASSWORD)
  28. 28. Red Hat / Ansible28 Inventoryを作成する 基本的な操作の流れ(6)
  29. 29. Red Hat / Ansible29 Inventory内にホストを作成する 基本的な操作の流れ(7)
  30. 30. Red Hat / Ansible30 Inventory内にグループを作成する。 基本的な操作の流れ(8)
  31. 31. Red Hat / Ansible31 Inventory内に作成したグループにホストを登録する。 基本的な操作の流れ(9)
  32. 32. Red Hat / Ansible32 AnsibleのInventoryファイルと同様に、AWXのInventoryにはHostとGroupをを 定義します。varsパラメータも定義可能です。 基本的な操作の流れ(9) - GroupとHost Inventory {vars} host-A {vars} host-B {vars} group-A {vars} group-B {vars} host-C {vars}
  33. 33. Red Hat / Ansible33 Projectを作成する。 基本的な操作の流れ(10) Playbookが配置されているGithub/Gitlabなどの 外部SCMのリポジトリを指定する
  34. 34. Red Hat / Ansible34 Job templateを作成する。 基本的な操作の流れ(11) Projectに指定したリポジトリ内の Playbookを指定する
  35. 35. Red Hat / Ansible35 Project / Credential / Inventory / Job Template に対する権限を設定する。 基本的な操作の流れ(12)
  36. 36. Red Hat / Ansible36 AnsibleのInventoryファイルと同様に、AWXのInventoryにはHostとGroupをを 定義します。varsパラメータも定義可能です。 基本的な操作の流れ(12) - 権限(Role) オブジェクト 権限 Project • Admin => 使用権限 / 編集権限 / SCMのリポジトリの同期権限 • Use => 使用権限 • Update => SCMリポジトリの同期権限 • Credential • Admin => 使用権限 / 編集権限 • Use => 使用権限 Inventory • Admin => 使用権限 / Dynamic Inventoryの同期権限 / Ad Hocコマンド実行権 限 • Use => 使用権限 • Update => Dynamic Inventoryの同期権限 • Ad Hoc => Ad Hocコマンド実行権限 Job template • Admin => 実行権限 / 編集権限 • Execute => 実行権限
  37. 37. Red Hat / Ansible Project-A Credential-A Inventory-A Job template-A role:use role:use role:use role:execute 37 Project / Credential / Inventory / Job template などのAWXの各オブジェ クトに対する操作権限(role)は、ユーザ毎に割り当てられますが、これを複数のユー ザを所属させたチームに対して行うことで一括設定が可能です。 基本的な操作の流れ(12) - 権限の割当 Team-A foo bar baz
  38. 38. Red Hat / Ansible38 Job Templateを実行する。 基本的な操作の流れ(13)
  39. 39. Red Hat / Ansible39 Jobの実行結果を確認する。 基本的な操作の流れ(14) ansible-playbookコマンドの実行結果は Live Eventとしてリアルタイム出力 ansible-playbookコマンドの実行結果を テキストファイルとしてダウンロード可能
  40. 40. AWX on OpenShift デモ
  41. 41. Red Hat / Ansible41 デモ内容 1. 組織を作成する 2. プロジェクトを作成する 3. ユーザを作成する 4. 認証情報を作成する 5. インベントリを作成する 6. ジョブテンプレートを作成して実行する 7. ジョブの実行結果をダウンロードする 8. OpenShift上のpodを増やしてクラスタ化する
  42. 42. まとめ
  43. 43. Red Hat / Ansible43 まとめ Ansibleは、シンプルで強力な自動化ツールです。しかし、シンプルであるために、あ えて実装していない、さまざまな機能があります。 AWXは、Ansibleを自動化のエンジン部分として利用することで、自動化の根幹とな るPlaybookなどの仕組みをシンプルなまま維持し、これに加えてモダンなWeb UIや APIを提供することで、人だけではなく外部システムからも利用することを想定した機 能を補完しています。 みなさんも、AWXを利用して、Ansibleで実装してきた自動化をもう一歩進めてみま せんか?
  44. 44. plus.google.com/+RedHat linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat ご清聴ありがとうございました

×