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.

Ansible tower 構築方法と使い方

4,386 views

Published on

Ansible Tower のインストールから使い方までをハンズオン形式で説明した資料です。この資料をご覧いただくことにより、Ansible Towerのセットアップから、ジョブの実行、権限管理などを学ぶことができます。
なお、プレイブックの書き方についてはこの資料には含まれませんのであらかじめご了承ください。

Published in: Technology

Ansible tower 構築方法と使い方

  1. 1. Ansible Tower 構築方法と使い方 レッドハット株式会社 パートナーソリューションアーキテクト部 岡野浩史 2017年 5月
  2. 2. 現在、企業のIT管理者は、多種多様なハードウェア、ソフトウェア、ク ラウド等々、多くのシステム構築・管理・設定を行う必要に迫られてい ます。そんな中、管理を自動化するためのツールとして Ansible / Ansible Towerへの関心が高まっています。この資料は Ansible Tower に関する以下の点をハンズオン形式で学ぶことを目的にしています。 ・Ansible Tower (3.1.3) のインストール ・Ansible Tower の特徴と使い方 なお、本資料はTowerの説明に特化しているため、プレイブックの書き 方の説明は含まれません。プレイブックの作り方に関しては別途資料作 成予定ですのでご期待ください。 2 資料作成の背景と目的
  3. 3. Ansible Tower ~インストールとサンプルジョブの実行~
  4. 4. OS ・Red Hat Enterprise Linux 7.2 or later(64-bit) ・CentOS 7(64-bit) ・Ubuntu 14.04 LTS(64-bit) ・Ubuntu 16.01 LTS(64-bit) スペック ・メモリ:2GB以上(推奨4GB以上) ・ディスク容量:/var/に20GB以上の空き領域 4 インストール要件 - Ansible Tower 3.1.3 http://docs.ansible.com/ansible-tower/latest/html/installandreference/requirements_refguide.html その他ブラウザの条件等、詳しくはこちらをご確認ください
  5. 5. Ansible Tower のインストールにはインターネット接続が必要です。 本資料でもインターネット接続前提でインストール方法を示します。 http://docs.ansible.com/ansible-tower/latest/html/installandreference/install_notes_reqs.html また、今回の資料は、RHEL7.3をサーバー(GUI使用)でインストール したものを前提としています。 5 インストール要件 - 環境の前提
  6. 6. リポジトリの登録 # subscription-manager repos --disable=* # subscription-manager repos --enable=rhel-7-server-rpms # subscription-manager repos --enable=rhel-7-server-extras-rpms # subscription-manager repos --enable=rhel-7-server-optional-rpms バイナリの取得とインストール # wget https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz # tar xvzf ansible-tower-setup-latest.tar.gz # cd ansible-tower-setup # vim inventory admin_password=‘redhat’ pg_password =‘redhat’ rabbitmq_password =‘redhat’ # ./setup.sh 6 インストール① 事前準備とAnsibleのインストール インストーラー設定ファイルに パスワードを記述 Ansible Tower インストール! Ansible Tower をインストールする端末への操作です
  7. 7. 7 インストールが完了することを確認!
  8. 8. 1. 操作端末よりブラウザで以下にアクセスし、 ライセンスの要求をクリックします。 https://<Ansible Tower IP Address>/ ※ID / Password は、 admin / redhat 2. FREE TOWER TRIAL - ENTERPRISE FEATURESを選択。 必要事項を記入し、"Submit" します。 8 インストール② Ansible Towerライセンス適応
  9. 9. 3. 登録したメールアドレス宛、以下のようなメールが来ます。 ライセンス発行には少し時間がかかります。(1営業日程度) 9 インストール② Ansible Towerライセンス適応
  10. 10. 4. 再度 Ansible Tower にブラウザでアクセスし、参照をクリック。 入手したライセンスファイルを選択、使用許諾にチェックして、送信をクリックします。 https://<Ansigle Tower IP Address>/ 10 インストール② Ansible Towerライセンス適応 以上でインストールは 完了です!!
  11. 11. 11 Ansible Tower - サンプルジョブの実行 Towerにログオンしていると思います。 サンプルジョブを実行してみましょう。プロジェクトをクリック。
  12. 12. 12 Ansible Tower - サンプルジョブの実行 Demo Project クリック。github のサンプルが指定されています 中身は、Hello World! を表示するだけのものです。 ansible-tower-samの中身
  13. 13. 13 Ansible Tower - サンプルジョブの実行 テンプレートをクリック。ジョブ実行のアイコン(ロケット)をク リックします
  14. 14. 14 Ansible Tower - サンプルジョブの実行 Jobが成功し、Hello World! が表示されました。
  15. 15. Ansible Tower 使い方 ~Ansible Towerの理解、プレイブックの作成から実行まで~
  16. 16. Ansible Tower を理解する - 階層構造の把握!! 16 Ansible Tower を理解するためにはまず階層構造を把握しておくと良い。 Ansibleの階層構造。一番上の概念はOrganizationです。
  17. 17. Ansible 階層が持つ意味(概要) 17 ・組織(Organization) ・ジョブを実行するための、プロジェクト、インベントリ、認証情報、ジョブテンプレート などのAnsible Tower の構成要素をまとめて管理する単位。 ・Ansible Tower 管理者は複数の組織を管理するという構図 ・プロジェクト(Project) プレイブックを管理する単位。1つのプロジェクトには、1つのプレイブックオブジェクト (ローカルディレクトリ、Githubアドレスなど)が割り当てられる。 ・インベントリ(Inventory) 被管理ホストのホスト名や変数などの情報を保持する。 ※ 認証に関する情報(ユーザー名やパスワード)は別管理 次に大事なのは、各コンポーネントの大まかな意味と連携です。 重要なコンポーネントを下記します。
  18. 18. Ansible 階層が持つ意味(概要) 18 ・認証情報(Credential) 被管理ホストや、AWS、VMwareなどのクラウド環境への認証情報をまとめて管理するた めの仕組みを提供します。 ・ジョブテンプレート(Job Template) プロジェクト(プレイブック)、インベントリ、認証情報をまとめて、実行ジョブとして定 義したもの。これが出来れば、あとは実行するのみ。 ・ジョブ(Job) ジョブテンプレートを元に作成された実行情報、実行結果 の確認等行うことができる
  19. 19. プレイブック実行までの道のり 19 1. プレイブックの作成 プレイブックは Ansible Tower から直接作成できません。別途作成するか、Gitや Subversionなどからプレイブックを取得します。今回はプレイブックを作成します。 2. プロジェクト作成 プレイブックの取得場所 (Local / Github) を指定します。 3. インベントリの作成 管理するホストを登録します。 4. ホストの認証情報の作成 管理するホストの認証情報を設定します。 5. ジョブテンプレートの作成 2.プレイブックと、3.インベントリと、4ホスト認証情報を紐づけます。 6. ジョブの実行 テンプレートを元に実行です!!
  20. 20. プレイブック作成 – プレイブック保存場所の確認 20 1-1. プレイブックの作成(yamlファイル作成) プレイブックを置くディレクトリは、/var/lib/awx/projects/ です。 Ansible Tower に SSH 接続し以下のコマンドで上記ホルダの中身を確認してみます。 # ls /var/lib/awx/projects # ls -l /var/lib/awx/projects/_4__demo_project /var/lib/awx/projects/_4__demo_projectというディレクトリが作成され、 hello_world.yml がダウンロードされていることが分かります。オーナーは awx。 これは、前章でサンプルジョブを実行した際、自動的にgithubよりダウンロードされた ファイルです。
  21. 21. プレイブック作成 – sl のインストール 21 1-1. プレイブックの作成(yamlファイル作成) 次に、直接 yaml ファイルを作成して実行させてみましょう。 今回は、sl を表示させるソフトをインストールしてみます。 # mkdir /var/lib/awx/projects/sl # vim /var/lib/awx/projects/sl/sl.yml # chown awx sl # chown awx sl/sl.yml awxユーザで実行されるため、オーナーを awxに変更しておく - name: SL Install hosts: all tasks: - name: epel Install yum: name: http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state: present - name: SL Install yum: name: sl state: present ※sl のインストールには epel が必要となりますので事前に epel もインストールしています。
  22. 22. プレイブック作成 – Githubから取得 22 1-2. プレイブックの作成(Githubからのダウンロード) Githubからの取得(前セクションでサンプルジョブ実行!) プレイブックをGithubなどから取得することも可能です。 例えば、既存の“Demo Project”では、あらかじめ、SCM URLとして、 https://github.com/ansible/ansible-tower-samples が指定されています。 ジョブ実行の際は、githubからローカルにymlファイルがダウンロードされます。
  23. 23. プロジェクト作成 23 2. プロジェクトの作成 プロジェクトは、プレイブックを管理する仕組みを提供。早速作成します。 プロジェクトを選択し、追加をクリック
  24. 24. プロジェクト作成 24 2-1. プロジェクトの作成(ローカルファイル編) ホストローカルに作成したyamlファイルに対するプロジェクト作成例です。 ・プロジェクト名:SL-Project ・SCM Type:Manual ※ /var/lib/awx/project 配下のディレクトリが参照されます ・Playbook Directory:sl (先ほど作成したディレクトリを指定します)
  25. 25. プロジェクト作成 25 2-2. プロジェクトの作成(Github編) Githubを利用した際のプロジェクト作成例です。 ・プロジェクト名:SL-Project-Git ・SCM タイプ:Git ・SCM URL : https://github.com/hiro52/sl-inst
  26. 26. プロジェクト作成 26 プロジェクトは権限設定が可能です。 権限については次章で説明します。
  27. 27. インベントリ作成 27 3. インベントリの作成 管理するホストを指定する仕組みを提供します。 作成は、インベントリタブをクリックし、+ADDを押下します。
  28. 28. インベントリ作成 28 名前 ”SL-Hosts” を付けて保存。
  29. 29. インベントリ作成 29 +ADD HOST で Ansible Tower のアドレスを追加します。 ※もし、他にRHEL7などのホストがあればそちらを指定してもOKです。 Host Name 欄は、ホスト名もしくは、IP Address を入力し、保存。
  30. 30. インベントリ作成 30 インベントリに関しては権限の委譲が可能です。 権限に関しては次章でご説明します。
  31. 31. ホスト認証情報の作成 31 4. ホストへの認証情報の作成 管理するホストやクラウドへの認証情報を一括管理する仕組みを提供します。 Ansible Towerでは不用意にホスト認証情報を渡すことなく、一括管理が可能です。 右上の設定アイコンをクリックし、認証情報をクリック
  32. 32. ホスト認証情報の作成 32 今回はホストに対する認証情報を入力し保存します。 ・名前:SL-Cre ・タイプ:マシン(ssh接続のサーバ) ・ユーザー名:root ・パスワード:redhat ※Typeではサーバの他 ・Network機器 ・クラウドプロバイダ (VMware vCenter, AWS, Azule など) に対する認証情報も登録可能です。
  33. 33. ホスト認証情報の作成 33 認証設定についても権限設定を行うことが可能です。 権限設定は組織を指定したときのみ指定が可能です。 権限設定については次章で説明します。
  34. 34. ジョブテンプレート作成 34 5. ジョブテンプレートの作成 以下3つの情報を紐づけて実行 Job を作成する機能を提供します。 ・プロジェクト(プレイブック) ・インベントリ(ホスト) ・ホストの認証情報 追加をクリックしジョブテンプレートを選択。
  35. 35. ジョブテンプレート作成 35 紐づけなので、2-4で作成してきたものを選択して紐づける感じです。入力し保存。 ・名前:SL-Job ・インベントリー:SL-Hosts ・プロジェクト:SL-Project ・Playbook:sl.yml ・マシンの認証情報:SL-Cre
  36. 36. ジョブテンプレート作成 36 ジョブテンプレートには、ユーザー、チームを指定して権限を付与することも可能です。 権限の機能については次章で説明します。
  37. 37. ジョブ実行 37 5. ジョブの実行 作成したジョブテンプレートの実行、スケジューリング、コピー、編集、のオペ レーションと、実行中のジョブのステータスがリアルタイムで確認できます。 今作成した、SL-Jobの実行(ロケット)をクリックします。 実行 スケジュール コピー 編集
  38. 38. ジョブ実行 38 実行中の画面 大小を繰り返し、動作中であることを表現 ステータス表示
  39. 39. ジョブ実行 39 成功しました 実行エラーになる場合は作成した sl.yml ファイルを見直してみてください。 また、https://github.com/hiro52/sl-inst からダウンロードも可能です。 正常終了時の表示例
  40. 40. ジョブ実行 – 確認 40 Tower に ssh 接続、sl を実行すると、確かにインストールされて いることが分かります。 # ssh root@<Ansible Tower IP Address> # sl
  41. 41. ジョブスケジューリング設定について 41 None(1回のみ実行)、分時、 日、週、月、年 無制限、回数指定、 最終実行日時など 繰り返し頻度 ジョブは先述の通りアドホック実行も可能ですし、スケジューリング も可能です。スケジューリングは以下の通り、細かく指定可能です。
  42. 42. Ansible Tower 使い方 ~組織とユーザーの管理~
  43. 43. 強固で柔軟な権限管理 43 Ansibe Tower では以下のような対象に対し柔軟な権限設定が可能です。 ・Ansible Tower 管理者・監査・ユーザー ・組織 管理者・メンバー - プロジェクト (プレイブック) - ホスト認証情報 - ジョブ 管理対象ホストの認証情報 IT一括? 組織毎? プレイブック Ansible Tower への サーバ認証情報 ジョブ インベントリA インベントリB インベントリC
  44. 44. 組織管理者の権限(付与済み) 44 組織管理者には以下の権限が与えられています ・組織内に対するプロジェクトの作成と閲覧 Ansible Tower のローカルプレイブックの利用 ・インベントリ管理(管理対象ホストの登録と削除) ・ホスト認証情報の作成とジョブテンプレートへの適応 ・組織内のジョブテンプレートの作成とジョブの実行と実行結果の確認 ・組織内で行われたイベントの履歴の確認 (ホスト認証情報の作成、ジョブ作成、実行など) ・ユーザー作成・削除と組織内への権限の設定(管理者・メンバーなど) ※Tower管理者が作成したユーザの削除は出来ない ・組織内の各コンポーネント(ジョブテンプレート等)への権限の委譲 権限の委譲は、組織を超えて定義可能です
  45. 45. 組織管理者の権限(制限) 45 以下の権限は付与されていません ・他の組織内のプロジェクト、ジョブテンプレートなどの閲覧、 実行、イベント履歴の閲覧など、他の組織にかかわるもの ※但し、Tower管理者や、他の組織で作成されたユーザーに、 自分の組織への権限(管理者・メンバーなど)追加は可能 ・Tower サーバへのsshでの直接アクセス ・Tower サーバに保存されている yaml ファイルの編集
  46. 46. 組織メンバーの権限(付与済み) 46 権限を付与されるまで出来ることが非常に限られます。以下が可能。 ・ホスト認証情報の作成・削除 管理者作成のものは閲覧できません、個人所有のもののみ可能 ・組織内のユーザー情報の一覧 ・自身に対して実行されたイベント一覧
  47. 47. 組織メンバーへの権限の与え方 47 組織管理者は以下の管理や実行権限を委譲することが可能 移譲対象ユーザーは同一組織内に限りません (他の組織で作成されたユーザーもOK) ・プロジェクト プロジェクト毎に、管理者 or 利用者 or 更新を付与 ・インベントリ インベントリ毎に、管理者 or Add hoc(利用?) or 更新を付与 ・ホスト認証情報 認証情報毎に、管理者 or 利用者を付与 ・ジョブテンプレート テンプレート毎に、管理権限 or 実行権限を付与 上記権限が全てそろえば、ジョブテンプレート の作成と実行が可能になります!!
  48. 48. 組織とユーザーの動作確認 48 実際に組織とユーザーを新規に作成し、動作を確認してみましょう! 今回は、以下を実行してみます。 1. 組織を作成 2. ユーザーを作成し、組織内の管理者とメンバーとして割り当て 3. 組織管理者権限で、プロジェクト作成~ジョブの実行まで実施 4. ユーザーにジョブの実行権限を付与 5. ユーザーでジョブの実行!
  49. 49. 1.組織の作成 49 組織は一番上位の概念で、他のオブジェクトをまとめて管理するため の “入れ物” のイメージです。 前章では、インストール時に作成される “Default” 組織内にJob作成 を行いましたが、その他の組織を作成してみます。
  50. 50. 1.組織の作成 50 現在、Defaultだけなので、追加をクリックします。 名前:Mktg-Org を入力して保存。続いて、同様に Sales-Org を作成します。
  51. 51. 1.組織の作成 51 Mktg-Orgと、Sales-Org作成完了。 最終的なジョブを管理するための “入れ物” が出来上がりました。
  52. 52. 2.ユーザーの作成 52 Ansible Tower では様々なオブジェクトに対し権限設定が可能です。 組織に紐づけるための、以下の 4 ユーザーを作成します。 Sato Ichiro システム:ノーマルユーザー Sales-Org:管理者 Suzuki Jiro システム:ノーマルユーザー Sales-Org:メンバー Murata Ichiro システム:ノーマルユーザー Mktg-Org:管理者 Minami Jiro システム:ノーマルユーザー Mktg-Org:メンバー
  53. 53. 2.ユーザーの作成 53 ユーザーの作成はこちらから行います。
  54. 54. 2.ユーザーの作成 54 ユーザー作成画面です。ID、パスワードとメールアドレスなど記 入し、ユーザータイプは、標準ユーザーを選択します。 前々項の4名分作成します。 例)Murata Ichiro システム:ノーマルユーザー Mktg-Org:管理者
  55. 55. 2.ユーザーへの権限設定 55 作成したユーザーに対し、組織への権限(管理者 or 利用者)を付与し ます。組織管理画面を表示し、Adminis をクリック。Murataにチェッ クを入れてSAVEします。同様に、他の3ユーザーも作成します。 ※ユーザー作成時点で、指定された組織のUserには登録されています。 このため、単なる組織ユーザーは特に設定する必要はありません。
  56. 56. 2.ユーザーへの権限設定 56 最終的にこうなればOKです。
  57. 57. 3.組織管理者でログオン 57 Mktg-Org 管理者の、imurataでログオンします。まだ何もないので、 Projectから作成します。Projects タブをクリック。
  58. 58. 3.プロジェクト作成 58 名前:Mktg-Pro 組織:Mktg-Org(変更不可) SCM:Git URL:https://github.com/ansible/ansible-tower-samples
  59. 59. 3.インベントリ作成 59 前章同様、インベントリを作成し、ホストを追加します。
  60. 60. 3.インベントリ作成 60 前章同様、インベントリを作成し、ホストを追加します。 Host Name : Ansible Tower のアドレスを入力し保存をクリック。 ※Tower 以外にRHEL7等、利用可能なホストがある場合はそちらを指定頂いても構いません。
  61. 61. 3.ホスト認証情報作成 61 前章同様、ホスト認証情報を作成します。
  62. 62. 3.ホスト認証情報作成 62 追加をクリックの上、以下の情報を入力し保存。 ・名前:Mktg-Cre ・タイプ:マシン ・ユーザー名:root ・パスワード:redhat
  63. 63. 3.ジョブテンプレート作成 63 前章同様ジョブテンプレートを作成します。 名前:Mktg-job インベントリー:MktgInv プロジェクト:Mktg-Pro Playbook:hello_world.yml マシンの認証情報:Mktg-Cre
  64. 64. 3.ジョブの実行 64 テンプレートが出来たら一度実行してみましょう! Hello World! が表示されれば成功です!!
  65. 65. 4.権限の付与 – メンバー権限で出来ることの確認 65 では、組織管理者からログオフして、Mktg-orgのユーザー権限でログオ ンしてみます。jminami です。
  66. 66. 4.権限の付与 – メンバー権限で出来ることの確認 66 先ほど作成したプロジェクトや、インベントリ、ジョブテンプレート など全く表示されないことを確認します。
  67. 67. 4.権限の付与 – メンバー権限で出来ることの確認 67 先ほど作成したプロジェクトや、インベントリ、ジョブテンプレート など全く表示されないこと、また追加もできないことを確認します。
  68. 68. 4.権限の付与 68 ユーザーへの権限移譲の一例として、ジョブテンプレートの実行権限を 与えてみます。jminami からログオフし、imurataでログオンします。 ジョブテンプレートで、作成したジョブテンプレートの編集をクリック。
  69. 69. 4.権限の付与 69 パーミッションをクリックし、追加、Jiro Minamiにチェックを入れて、 実行権限を与えて、SAVEします。
  70. 70. 5.メンバーでジョブの実行! 70 ジョブテンプレートの権限移譲設定が完了しましたので、 imurata から ログオフし、jminami でログオンします。権限移譲されたジョブテンプ レートが今回は表示されていることを確認します。確認のため、ジョブ を実行し、問題なく終了することを確認します。
  71. 71. 他の組織ユーザーでログオン 71 Mktg-Orgでジョブテンプレートを作成しました。この組織向けに作成 したプロジェクトやジョブテンプレートなどが、この組織に所属しない ユーザーからどのように見えるか、Sales-Org管理者のisatoでログオン して確認してみてください。先ほど作成したプロジェクト、Mktg-Proは 閲覧できないと思います。
  72. 72. 番外編 – コマンドラインプレイブックを実行! 72 /var/lib/awx/projects/resource ディレクトリを作成し、その配下に 以下のプレイブックをそれぞれ保存します。 - name: Disk Size Check! hosts: all tasks: - name: Check "df -h" as DISK SIZE shell: "df -h" ignore_errors: yes - name: Memory Check! hosts: all tasks: - name: Check "free -m" as Memory SIZE shell: "free -m" ignore_errors: yes - name: Resource Check! hosts: all tasks: - name: Check Server Resources shell: "vmstat 1 10 | while read line; do echo `date` $line ; done" ignore_errors: yes # df –l でチェック (disk.yml) # free –m でチェック (memory.yml) # vmstat でチェック (resource.yml)
  73. 73. 番外編 – コマンドラインプレイブックを実行! 73 プロジェクトを新規に1個作成し、それぞれのプレイブックを実行する ジョブテンプレートを3個作成します。下記のような感じです。
  74. 74. 番外編 – コマンドラインプレイブックを実行! 74 ジョブテンプレート一覧です。 出来上がったプレイブックを実行してみます。
  75. 75. 番外編 – コマンドラインプレイブックを実行! 75 ジョブ実行が成功したことを確認し、コマンド実行TASKをクリック
  76. 76. 番外編 – コマンドラインプレイブックを実行! 76 Standard Outに実行結果が表示されていることを確認します。
  77. 77. THANK YOU plus.google.com/+RedHat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHatNewslinkedin.com/company/red-hat

×