Slide 1

Slide 1 text

Ansible Tower 構築方法と使い方 with VMware モジュール レッドハット株式会社 パートナーソリューションアーキテクト部 岡野浩史 2018年 12月

Slide 2

Slide 2 text

現在、企業のIT管理者は、多種多様なハードウェア、ソフトウェア、ク ラウド等々、多くのシステムの構築し、それを最新のIT環境として維持 していく必要に迫られています。そんな中、構築や管理の手間を劇的に 改善するツールとして Ansible Engine / Towerへの関心が高まってい ます。この資料は Ansible Towerに関する以下の点をハンズオン形式で 学ぶことを目的にしています。インストールに関しては手間をかけず、 DBも内蔵。使い方にフォーカスした資料です。 ・Ansible Tower (3.3.3) のインストール ・Ansible Tower の使い方 ・VMwareモジュールの使い方 Ansibleは、モジュールを利用することにより多くの機器やクラウド環境 の管理が可能です。今回はその一例として、VMwareモジュールを利用 して vSphere 環境の設定をAnsible Tower から行ってみます。 2 資料作成の背景と目的

Slide 3

Slide 3 text

この資料はAnsible Tower の導入から Ansible Tower でのプレイブッ クの実行、権限管理など、Ansible Towerの使い方、さらには VMware モジュールを利用した、vSphere 6.5 の環境の自動化についてハンズオ ンで学んで頂くことを目的としています。vSphere 6.5の環境 (vCenter Server / ESXi ホスト)については、既にあるものを利用することを前提 としているためセットアップ方法は含まれません。また、VMware に関 する用語や機能の説明等も含まれません。Ansible Tower の使い方に フォーカスした資料ですので、構築に関しては簡単な記述にとどめてお ります。ご了承ください。 3 前提条件

Slide 4

Slide 4 text

1. 環境説明と Ansible Tower インストール要件など 2. Ansible Tower インストールとサンプルジョブの実行 3. Ansible Tower オブジェクトの理解、プレイブックの作成~実行まで 4. 組織とユーザーの作成、及び、権限の委譲 5. テンプレートのオプション機能 ・Survey 機能による変数入力 ・ワークフローによる複数テンプレートの一括実行 6. VMwareモジュールの様々な使い方 4 アジェンダ

Slide 5

Slide 5 text

ハンズオン環境の説明及び Ansible Tower インストール要件など

Slide 6

Slide 6 text

このハンズオンでは以下の環境を想定して作成しています。 ・Ansible Tower サーバー X 1台 ・管理対象サーバー X 1 台以上 ・vSphere 6.5 (vCenter Server + ESXi X 2 台) 上記各サーバーは、RHEL7.5 をサーバー(GUI使用)でインストールし たものを前提としています。 6 環境の説明

Slide 7

Slide 7 text

OS ・Red Hat Enterprise Linux 7.4 or later(64-bit) ・CentOS 7.4 or later(64-bit) ・Ubuntu 14.04 LTS(64-bit) ・Ubuntu 16.04 LTS(64-bit) スペック(抜粋) ・CPU: 2CPU (forks に依存 / デフォルト値は 5) ・メモリ:4GB 以上 ( 4GB / 100 forks ) ・ディスク容量:/var/に 20 GB の内の 10 GB 以上の空き領域 など Ansible : version 2.2 以降 7 インストール要件 - Ansible Tower 3.3.3 http://docs.ansible.com/ansible-tower/latest/html/installandreference/requirements_refguide.html その他 Disk IOPS やブラウザの条件等、詳しくはこちらをご確認ください *Forks とは?: リモートホストとの通信の際生成する並列プロセス数(詳細は上記マニュアル参照

Slide 8

Slide 8 text

Ansible Tower 3.2.xまでは インストールにインターネット接続が必須で したが、3.3.xからインターネット接続が無くてもインストール可能とな りました。ただし、一般的な方法とは異なります。 詳しくは https://bit.ly/2CyTbA8 をご確認ください。今回の資料は、以 下のバージョンで動作確認をしています。 Ansible : 2.7.5 Ansible Tower : 3.3.3 8 インストール要件 - 環境の前提

Slide 9

Slide 9 text

Ansible Tower ~インストールとサンプルジョブの実行~

Slide 10

Slide 10 text

リポジトリの登録 など # 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 # yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm バイナリの取得とインストール # wget https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-3.3.3-1.tar.gz # tar xvzf ansible-tower-setup-bundle-3.3.3-1 # cd ansible-tower-setup-bundle-3.3.3-1.el7 # vim inventory admin_password=‘redhat’ pg_password =‘redhat’ rabbitmq_password =‘redhat’ # ./setup.sh 10 インストール① 事前準備とAnsibleのインストール インストーラー設定ファイルに パスワードを3か所入力 Ansible Tower インストール! Ansible Tower をインストールする端末への操作です

Slide 11

Slide 11 text

11 インストールが完了することを確認!

Slide 12

Slide 12 text

1. 操作端末よりブラウザで以下にアクセスし、 ライセンスの要求をクリックします。 https:/// ※ID / Password は、 admin / redhat 2. FREE TOWER TRIAL - ENTERPRISE FEATURESを選択。 必要事項を記入し、"Submit" します。 12 インストール② Ansible Towerライセンス適応

Slide 13

Slide 13 text

3. 登録したメールアドレス宛、以下のようなメールが来ます。 ライセンス発行には少し時間がかかります。(1営業日程度) 13 インストール② Ansible Towerライセンス適応 ※1営業日待ってもライセンス発行が行われない場合は、ansible-jp@redhat.com へご連絡ください。

Slide 14

Slide 14 text

4. 再度 Ansible Tower にブラウザでアクセスし、参照をクリック。 入手したライセンスファイルを選択、使用許諾にチェックして、送信をクリックします。 https://<Ansigle Tower IP Address>/ 14 インストール② Ansible Towerライセンス適応 以上でインストールは 完了です!!

Slide 15

Slide 15 text

Towerの概要から、Ansible 及び、Towerのバージョンを確認しておきましょう。 既存環境をご利用の場合など、Tower 3.3.3、Ansible 2.7.5 (or later)になっていない場合は Updateをお願いします! 15 インストール Ansible バージョン確認

Slide 16

Slide 16 text

16 Ansible Tower ダッシュボード Tower のダッシュボードです。各項目はドリルダウンで詳細が確認できるようになって います。自分自身(localhost)が“ホスト“として登録された”インベントリー”が1つ、お よび、サンプルプロジェクトがあらかじめ1つ作成されています。 左ペインの各オブジェクトの意味につては後程説明します。

Slide 17

Slide 17 text

17 Ansible Tower - サンプルジョブの実行 Towerにはサンプルジョブが登録されいます。プレイブックを作る前 に、これを実行してみましょう。その前に、SSH で Towerに接続し、 Playbookが存在しないことを確認しておきます。 Tower 内のPlaybookの置き場は、/var/lib/awx/projects/ です。 後で確認しますが、Project 毎のディレクトリ構造となっています。 現状”空”です

Slide 18

Slide 18 text

18 Ansible Tower - サンプルジョブの実行 Towerにログオンし、設定内容を確認しながらサンプルジョブを実 行してみましょう。プロジェクトをクリックします。

Slide 19

Slide 19 text

19 Ansible Tower - サンプルジョブの実行 Demo Project クリック。github のサンプルが指定されています 中身は、Hello World! を表示するだけのものです。 ansible-tower-samplの中身

Slide 20

Slide 20 text

20 Ansible Tower - サンプルジョブの実行 ページを下にスクロールし、Demo Project の 右横のアイコンをクリッ クし、最新のプレイブックをダウンロードします。同期が完了すると、 Github上のリビジョンが入力され、最終更新日時が表示されます。

Slide 21

Slide 21 text

21 Ansible Tower - サンプルジョブの実行 テンプレートをクリックし、Demo Job Template をクリックします

Slide 22

Slide 22 text

22 Ansible Tower - サンプルジョブの実行 Playbook 欄に、hello_world.yml が入力されていることを確認し、 「取り消し」をクリックします

Slide 23

Slide 23 text

23 Ansible Tower - サンプルジョブの実行 テンプレート画面に戻るので、ジョブ実行のアイコン(ロケット)を クリックします

Slide 24

Slide 24 text

24 Ansible Tower - サンプルジョブの実行 Jobが成功し、Hello World! が表示されました。

Slide 25

Slide 25 text

25 Ansible Tower - サンプルジョブの実行 Gitを使った場合、実行したプレイブックのリビジョン情報が確認可能です。 ブラウザを更新し、ダウンロード元の Githubとリビジョン番号が同じであ ることを確認します。 https://github.com/ansible/ansible-tower-samples/commits/master/hello_world.yml

Slide 26

Slide 26 text

26 Ansible Tower - サンプルジョブの実行 再度 SSH でTower に接続し、/var/lib/awx/projects/ を確認します。 雲アイコンをクリックしてプレイブックをダウンロードしたことによ り、以下が実施されたことが分かります。 ・サンプルプロジェクト用のディレクトリの作成 ・hello_world.yml のダウンロード

Slide 27

Slide 27 text

Ansible Tower 使い方 ~Ansible Towerの理解、プレイブックの作成から実行まで~

Slide 28

Slide 28 text

Ansible Tower を理解する - 階層構造の把握!! 28 Ansible Tower を理解するためにはまず階層構造を把握しておくと良い。 Ansibleの階層構造。一番上の概念はOrganization(組織)です。

Slide 29

Slide 29 text

Ansible Tower – 各オブジェクトが持つ意味 29 組織(Organization) ・Ansible Tower の1番上位の概念です。ジョブを実行する ために、Ansible Tower のオブジェクトをまとめて管理す る仕組みを提供します。ユーザーは少なくとも1つの組織 に対してアクセスが許可されている必要があります。 ・組織の下にユーザーとチーム(グループ)オブジェクトが 見えていますが、これらのユーザーを組織の管理者や閲覧 者などで定義します ・Ansible Tower 管理者は複数の組織を管理できます。マ ルチテナントという概念で考えると、組織が1つのテナン トとなります。 次に大事なのは、各コンポーネントの大まかな意味と連携です。 重要なコンポーネントを順を追ってご説明します。

Slide 30

Slide 30 text

30 Ansible Tower – 各オブジェクトが持つ意味 プロジェクト(Project) ・プレイブックのパスを管理する仕組み。1つの プロジェクトには、1つのプレイブックの保存 場所(ローカルディレクトリ、Gitアドレスな ど)が割り当てられます。ローカルディレクト リの場合は各プロジェクトのパスを /var/lib/awx/projects/ 配下に作成します。 ・プロジェクトではプレイブックファイルまでは 指定しません。あくまでパスのみです。

Slide 31

Slide 31 text

31 Ansible Tower – 各オブジェクトが持つ意味 インベントリー(Inventory) ・被管理ホストのホスト名やホストを含むグルー プ名などの情報を定義します。※ 認証に関する 情報(ユーザー名やパスワード)は別管理 ・接続ホストに関する接続方法などを変数で定義 することも可能です(Windows ホストへの WinRM接続など) ・VMwareやAWSの仮想マシン、インスタンスの 情報を取得して自動的に登録するダイナミック インベントリにも対応しています。

Slide 32

Slide 32 text

32 Ansible Tower – 各オブジェクトが持つ意味 認証情報(Credential) ・ホストへのssh接続や、AWS、VMwareなどの クラウド環境へのID・パスワードなどの認証情 報をまとめて管理するための仕組みを提供しま す。ssh接続のキー認証では、プライベート キーを登録することも可能です。 ・仮想化やクラウドでは、例えば、vCenter の認 証情報を登録すると、vCenterが管理する仮想 マシンインベントリを入手し、インベントリに 登録するダイナミックインベントリも利用可能 になります。AWSなども同様です。

Slide 33

Slide 33 text

33 Ansible Tower – 各オブジェクトが持つ意味 テンプレート(Template) ・ジョブテンプレートとワークフローテンプレー トの統合名称です ・ジョブテンプレート プレイブックを実行するために必要な、プロ ジェクト、インベントリ、認証情報、プレイ ブックファイル名をまとめて定義したもの ・ワークフローテンプレート 複数のジョブテンプレートをまとめて定義・ 実行するための仕組み ・プレイブック内で記述された変数への入力 (サーベイ)にも対応しています

Slide 34

Slide 34 text

34 Ansible Tower – 各オブジェクトが持つ意味 ジョブ(Job) テンプレートの実行状況、実行結果(成功・ 失敗など)を確認することができます。プロ ジェクトでGitなどのSCMを指定した場合、実 行結果にプレイブックのバージョン情報が含 まれ、以下のような情報を過去にさかのぼり 確認することができます。 いつ、誰が、どのシステムに対して、どの バージョンのプレイブックを実行したか

Slide 35

Slide 35 text

プレイブック実行までの道のり 35 1. プレイブックの作成 プレイブックは Ansible Tower から抽象化されているため、直接作成できません。別途 作成するか、Git や Subversion、Mercurial などのバージョン管理システムからプレイ ブックを取得します。作成したプレイブック、及び、Git などから取得されたプレイブッ クは、AnsibleTower Server の特定のパス(/var/lib/awx/project/)配下に保存されます。 2. プロジェクト作成 プレイブックの取得場所 (Local / Gitなど) を指定します。1プロジェクト = 1 パスで す。1パスの中に複数のプレイブックを入れることも可能です。 3. インベントリの作成 管理対象のホストを登録します。ホスト名 / IP アドレスを直接指定することも可能です し、VMware や AWS 上の仮想マシン情報を取得し、ダイナミックインベントリとして 取得・利用することも可能です。

Slide 36

Slide 36 text

プレイブック実行までの道のり 36 4. ホストやクラウドなどの認証情報の作成 管理するホストや VMware、AWS 等の認証情報を一括管理する仕組みを提供します。 Linux ホストに ssh 接続する際の ID / Password や、vCenter Server や AWS にアク セスして仮想マシン情報を引いてくる際の認証情報等をあらかじめ登録することが可能 で、これらの認証情報を抽象化することができます。 5. ジョブテンプレートの作成 2.プロジェクト(プレイブックのパス)と、3.インベントリ、4ホスト認証情報、さら に、実際のプレイブックファイルを紐づけます。複数のテンプレートを順序だてて実行 するワークフローテンプレートを作成することも可能です。 6. ジョブの実行 テンプレートを実行します!!

Slide 37

Slide 37 text

プレイブック作成 – sl のインストール 37 1-1. プレイブックの作成(yamlファイル作成) 次に、直接 yaml ファイルを作成して実行させてみましょう。 今回は、SL をアニメーション表示させるソフトをインストールしてみます。 $ sudo mkdir /var/lib/awx/projects/sl $ sudo vim /var/lib/awx/projects/sl/sl.yml $ sudo chown awx sl $ sudo 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 もインストールしています。 sl.yml はこちらよりダウンロードも可能です。https://github.com/coral-reaf/sl-inst

Slide 38

Slide 38 text

プロジェクト作成 38 2. プロジェクトの作成 プロジェクトは、プレイブックを管理する仕組みを提供。早速作成します。 プロジェクトを選択し、+をクリック

Slide 39

Slide 39 text

プロジェクト作成 39 2-1. プロジェクトの作成(ローカルファイル編) ホストローカルに作成したyamlファイルに対するプロジェクト作成例です。 ・プロジェクト名:SL-Project ・SCM Type:Manual ※ /var/lib/awx/project 配下のディレクトリが参照されます ・Playbook Directory:sl (先ほど作成したディレクトリを指定します)

Slide 40

Slide 40 text

プロジェクト作成 - オプションラボ 40 2-2. プロジェクトの作成(Github編) こちらはオプションLABです、ご興味があれば実施ください。 Githubを利用した際のプロジェクト作成例です。 ・プロジェクト名:SL-Project-Git ・SCM タイプ:Git ・SCM URL : https://github.com/coral-reaf/sl-inst ・組織:Default 起動時の更新とは? Github 上のプレイブックが更新され た場合、ローカルプレイブックを更 新してから実行します。

Slide 41

Slide 41 text

プロジェクト作成 41 プロジェクトは権限設定が可能です。 権限については次章で説明します。

Slide 42

Slide 42 text

インベントリ作成 42 3. インベントリの作成 Tower によって管理されるホストを指定する仕組みです。 作成は、インベントリをクリックし、「+」→ 「インベントリ」を選択。

Slide 43

Slide 43 text

インベントリ作成 43 名前 ”SL-Hosts” を付けて「保存」をクリックします。 組織は Default を選択。

Slide 44

Slide 44 text

インベントリ作成 44 「ホスト」をクリックし、「+」で管理対象サーバーのアドレスを入力 し、保存します。2台以上の場合は、右下の「+」をクリックします。 ※もし管理対象サーバーが他に無い場合、Towerサーバー自身を指定してもOKです。

Slide 45

Slide 45 text

インベントリ作成 45 インベントリに関しては権限の委譲が可能です。 権限に関しては次章でご説明します。

Slide 46

Slide 46 text

ホスト認証情報の作成 46 4. ホストへの認証情報の作成 管理するホストやクラウドへの認証情報を一括管理する仕組みを提供します。 Ansible Towerでは不用意にホスト認証情報を渡すことなく、一括管理が可能です。 「認証情報」クリックし、「+」をクリック

Slide 47

Slide 47 text

ホスト認証情報の作成 47 ホストに対する認証情報を入力し保存します。 ・名前:SL-Cre ・タイプ:マシン(ssh接続のことです) ・ユーザー名:root ・パスワード: ※組織には何も入力しないでください ※Typeではサーバの他 ・Network機器 ・クラウドプロバイダ (VMware vCenter, AWS, Azule など) に対する認証情報も登録可能です。

Slide 48

Slide 48 text

ホスト認証情報の作成 48 認証設定についても権限設定を行うことが可能です。 権限設定は組織を指定したときのみ指定が可能です。 権限設定については次章で説明します。

Slide 49

Slide 49 text

ジョブテンプレート作成 49 5. ジョブテンプレートの作成 以下4つの情報を紐づけて実行 Job を作成する機能を提供します。 ・プロジェクト(プレイブックのパス) ・インベントリ(ホスト) ・ホストの認証情報 ・実際のプレイブックファイル 「+」をクリックしジョブテンプレートを選択。

Slide 50

Slide 50 text

ジョブテンプレート作成 50 ジョブテンプレートは紐づけなので、2-4で作成してきたものを選択して紐づける感じ です。以下を入力(選択)し保存。 ・名前:SL-Job ・インベントリー:SL-Hosts ・プロジェクト:SL-Project ・Playbook:sl.yml ・認証情報(タイプ):Machine ・認証情報(名前):SL-Cre 実行に権限昇格が必要な場合 はチェックを入れます

Slide 51

Slide 51 text

ジョブテンプレート作成 51 ジョブテンプレートには、ユーザー、チームを指定して権限を付与することも可能です。 権限の機能については次章で説明します。

Slide 52

Slide 52 text

ジョブ実行 52 5. ジョブの実行 作成したジョブテンプレートの実行、コピー、編集の各オペレーションと、実行 結果が確認できます。今作成した、SL-Jobの実行(ロケット)をクリックします。 実行 コピー 削除 スケジュール設定はこちら ※Ansible Tower 3.3 より、スケジュール設定はテンプレート編集画面で設定を行います

Slide 53

Slide 53 text

ジョブ実行 53 実行中の画面 大小を繰り返し、動作中であることを表現 ステータス表示

Slide 54

Slide 54 text

ジョブ実行 54 成功しました 実行エラーになる場合は作成した sl.yml ファイルを見直してみてください。 また、https://github.com/coral-reaf/sl-inst からダウンロードも可能です。 正常終了時の表示例

Slide 55

Slide 55 text

ジョブ実行 – 確認 55 管理対象サーバーに ssh 接続、sl を実行すると、確かにインス トールされていることが分かります。 # ssh root@<管理対象サーバー> # sl

Slide 56

Slide 56 text

ジョブスケジューリング設定について 56 None(1回のみ実行)、分、時、日、週、月、年 開始日と開始時刻 ジョブは先述の通りアドホック実行も可能ですし、テンプレート編集 画面から、スケジューリングを設定することも可能です。

Slide 57

Slide 57 text

Ansible Tower 使い方 ~組織とユーザー、認証情報の管理~

Slide 58

Slide 58 text

強固で柔軟な権限管理 58 Ansibe Tower では以下のような対象に対し柔軟な権限設定が可能です。 ・Ansible Tower 管理者・監査・ユーザー ・組織 管理者・メンバー - プロジェクト (プレイブック) - ホスト認証情報 - ジョブ 管理対象ホストの認証情報 IT一括? 組織毎? プレイブック Ansible Tower への サーバ認証情報 ジョブ インベントリA インベントリB インベントリC

Slide 59

Slide 59 text

Ansible Tower - 権限管理モデル 59 Ansibe Tower のユーザー定義とロールモデル - Ansible Tower(管理者・監査担当・ユーザー) Tower 管理者は、複数の組織を一括管理・閲覧する権限を持ちます。 単一の組織の管理者は、Towerのユーザー + 組織の管理者権限 で設定します - 組織(管理者・メンバー・読み込み) 組織内に存在する以下のオブジェクトに対する管理・閲覧権限を定義 プロジェクト、インベントリー、テンプレート、ホスト認証情報 *それぞれに定義可能なロールは後述 例えば、以下の様な権限の設定が可能です ・A・・・Tower の管理者 ・B・・・Tower ユーザー、組織 A 管理者 ・C・・・Tower ユーザー、組織 A メンバー、組織 A 特定テンプレートの実行 ・D・・・Tower ユーザー、組織 B 管理者、組織 A 特定インベントリの管理者

Slide 60

Slide 60 text

組織管理者の権限(付与済み) 60 組織管理者には以下の権限が与えられています ・組織内に対するプロジェクトの作成と閲覧 Ansible Tower のローカルプレイブックの利用 ・インベントリ管理(管理対象ホストの登録と削除) ・ホスト認証情報の作成とジョブテンプレートへの適応 ・組織内のジョブテンプレートの作成とジョブの実行と実行結果の確認 ・組織内で行われたイベントの履歴の確認 (ホスト認証情報の作成、ジョブ作成、実行など) ・ユーザー作成・削除と組織内への権限の設定(管理者・メンバーなど) ※Tower管理者が作成したユーザーの削除は出来ない ・組織内の各コンポーネント(ジョブテンプレート等)への権限の委譲 権限の委譲は、組織を超えて定義可能です

Slide 61

Slide 61 text

組織管理者の権限(制限) 61 以下の権限は付与されていません ・他の組織内のプロジェクト、ジョブテンプレートなどの閲覧、 実行、イベント履歴の閲覧など、他の組織にかかわるもの ※但し、Tower管理者や、他の組織で作成されたユーザーに、 自分の組織への権限(管理者・メンバーなど)追加は可能 ・Tower サーバへのsshでの直接アクセス ・Tower サーバに保存されている yaml ファイルの編集

Slide 62

Slide 62 text

組織メンバーの権限(付与済み) 62 権限を付与されるまで出来ることが非常に限られます。以下が可能。 ・ホスト認証情報の作成・削除 管理者作成のものは閲覧できません、個人所有のもののみ可能 ・組織内のユーザー情報の一覧 ・自身に対して実行されたイベント一覧

Slide 63

Slide 63 text

組織メンバーへの権限の与え方 63 組織管理者は以下の管理や実行権限を委譲することが可能 移譲対象ユーザーは同一組織内に限りません (他の組織で作成されたユーザーもOK) ・プロジェクト プロジェクト毎に、管理者 or 利用者 or 更新を付与 ・インベントリ インベントリ毎に、使用 or 管理者 or アドホック or 更新を付与 ・ホスト認証情報 認証情報毎に、管理者 or 利用者を付与 ・ジョブテンプレート テンプレート毎に、管理権限 or 実行権限を付与 上記権限が全てそろえば、ジョブテンプレート の作成と実行が可能になります!!

Slide 64

Slide 64 text

多彩な認証情報の管理 64 Linux の ssh 接続だけではなく、以下の様な 多彩な認証情報の管理が可能です。 ・Machine (Linux:ssh / Windows:winrm) ・AWS(アクセスキー、シークレットキーなど) ・GCP ・OpenStack ・RHV ・VMware ...etc 上記認証情報を利用してLinuxホストへのアプリのインス トールや、AWS 仮想マシン情報の取得、指定、インス トールなどが可能です。

Slide 65

Slide 65 text

組織とユーザーの動作確認 65 実際に組織とユーザーを新規に作成し、動作を確認してみましょう! admin 権限で作成したオブジェクトの権限委譲も行います。 1. 組織を作成 2. ユーザーを作成し、組織内の管理者とメンバーとして割り当て 3. admin 権限で作成したインベントリ "SL-Hosts" の”使用”権限を 組織管理者に割り当て 4. admin 権限で作成した認証情報 "SL-Cre" の”使用”権限を組織管 理者に割り当て 5. 組織管理者権限で、プロジェクト作成~ジョブの実行まで実施 6. 組織ユーザーにジョブの実行権限を付与と組織ユーザーでの実行

Slide 66

Slide 66 text

1.組織の作成 66 組織は1番上位の概念で、他のオブジェクトをまとめて管理するため の “入れ物” のイメージです。前章では、インストール時に作成され る “Default” 組織内にJob作成を行いましたが、その他の組織を作成 してみます。組織をクリックして「+」をクリックします。

Slide 67

Slide 67 text

1.組織の作成 67 以下の名前を入力して保存をクリックします 名前:Mktg-Org 続いて、「+」を押して同様に Sales-Org を作成します。

Slide 68

Slide 68 text

1.組織の作成 68 Mktg-Orgと、Sales-Org作成完了。 最終的なジョブを管理するための “入れ物” が出来上がりました。

Slide 69

Slide 69 text

2.ユーザーの作成 69 Ansible Tower では様々なオブジェクトに対し権限設定が可能です。 組織に紐づけるための、以下の 4 ユーザーを作成します。 Sato Ichiro システム:ノーマルユーザー Sales-Org:管理者 Suzuki Jiro システム:ノーマルユーザー Sales-Org:メンバー Murata Ichiro システム:ノーマルユーザー Mktg-Org:管理者 Minami Jiro システム:ノーマルユーザー Mktg-Org:メンバー ※Ansible Tower は LDAP 連携も可能ですが、ここではユーザー作成を行っています。

Slide 70

Slide 70 text

2.ユーザーの作成 70 ユーザーをクリックし、「+」をクリックします。

Slide 71

Slide 71 text

2.ユーザーの作成 71 ユーザー作成画面です。ID、パスワードとメールアドレスなど記 入し、ユーザータイプは、標準ユーザーを選択します。 前々項の4名分作成します。 例)Murata Ichiro システム:ノーマルユーザー Mktg-Org:管理者

Slide 72

Slide 72 text

2.ユーザーへの組織管理者権限設定 72 作成したimurata と isatoに対し、各組織への管理者権限 を付与します。 左ペインでMktg-org の管理者 をクリック。imurataにチェックを入れて SAVEします。同様に isato も Sales-org の管理者に設定します。 ※ユーザー作成時点で指定された組織に対するUser登録は既に行われています。 このため、単なる組織ユーザーは特に設定する必要はありません。

Slide 73

Slide 73 text

2.ユーザーへの組織管理者権限設定 73 最終的にこうなればOKです。

Slide 74

Slide 74 text

3.インベントリ権限の委譲 - admin → 組織管理者 74 admin で作成したインベントリに対する使用権限を組織管理者に 与えます。SL-Hosts の編集アイコンをクリックします。

Slide 75

Slide 75 text

3.インベントリ権限の委譲 - admin → 組織管理者 75 パーミッションをクリックし、「+」をクリックします。

Slide 76

Slide 76 text

3.インベントリ権限の委譲 - admin → 組織管理者 76 Mktg-Org、Sales-Org の組織管理者である、imurata と isato に チェックを入れ、”使用”を選択し、保存します。

Slide 77

Slide 77 text

4.認証情報権限の委譲 - admin → 組織管理者 77 次にadmin で作成した認証情報に対する使用権限を組織管理者に 与えます。認証情報をクリックし、SL-Cre をクリックします。

Slide 78

Slide 78 text

4.認証情報権限の委譲 - admin → 組織管理者 78 パーミッションをクリックし、「+」をクリックします。

Slide 79

Slide 79 text

4.認証情報権限の委譲 - admin → 組織管理者 79 Mktg-Org、Sales-Org の組織管理者である、imurata と isato に チェックを入れ、”使用”を選択し、保存します。

Slide 80

Slide 80 text

5.組織管理者でログオン 80 admin からログオフし、Mktg-Org 管理者の、imurataでログオンしま す。インベントリは使用権を与えられていますので、SL-Hostsの ”1 個” が見えています。プロジェクトは権限の委譲を行っていませんの で ”0” です。左ペインのプロジェクトをクリックし作成します。 ログオフはこちら

Slide 81

Slide 81 text

5.プロジェクト作成 81 名前:Mktg-Pro 組織:Mktg-Org(変更不可) SCM:Git URL:https://github.com/ansible/ansible-tower-samples

Slide 82

Slide 82 text

5.プロジェクト作成 82 同期アイコンをクリックし、Gitから最新のプレイブックをダウンロードします。

Slide 83

Slide 83 text

5.権限移譲されたインベントリの確認(確認のみ) 83 インベントリタブをクリックします。admin から "使用" 権限を委 譲されているので、既に SL-Hosts が存在します。ただし、使用権 限なので、コピーや削除アイコンがないことを確認します。 コピー、削除アイコンは存在しない。閲覧のみ。 勿論、インベントリを新規に作成することも可能です。自身で作成したインベントリに関しては オーナーですので、編集・削除も自由に行うことができます。

Slide 84

Slide 84 text

5.権限移譲された認証情報の確認(確認のみ) 84 ホスト認証情報も同様に確認してみます。インベントリ同様、使 用権限が委譲されているため、SL-Cre が存在しますが、編集・ 削除・コピーは出来ません。閲覧のみです。 コピー、削除アイコンは存在しない。閲覧のみ。 勿論、認証情報を新規に作成することも可能で、作成した認証情報に関してはオーナーですので、 編集・削除も自由に行うことができます。

Slide 85

Slide 85 text

5.ジョブテンプレート作成 85 前章同様ジョブテンプレートを作成します。 名前:Mktg-job インベントリー:SL-Hosts プロジェクト:Mktg-Pro Playbook:hello_world.yml マシンの認証情報:SL-Cre 権限昇格の有効化にチェック

Slide 86

Slide 86 text

5.ジョブの実行 86 テンプレートが出来たら一度実行してみましょう! Hello World! がインベントリに指定したサーバー台数の数表示されれ ば成功です!!(例では3台)

Slide 87

Slide 87 text

6.権限の付与 – メンバー権限で出来ることの確認 87 では、組織管理者からログオフして、Mktg-orgのユーザー権限でログオ ンしてみます。jminami です。

Slide 88

Slide 88 text

6.権限の付与 – メンバー権限で出来ることの確認 88 先ほど作成したプロジェクトや、インベントリ、ジョブテンプレート など全く表示されないことを確認します。色んなタブをクリックして みて下さい。

Slide 89

Slide 89 text

6.権限の付与 89 ユーザーへの権限移譲の一例として、ジョブテンプレートの実行権限を 与えてみます。jminami からログオフし、imurataでログオンします。 ジョブテンプレートで、作成したジョブテンプレートをクリック。

Slide 90

Slide 90 text

6.権限の付与 90 パーミッションをクリックし、追加、Jiro Minamiにチェックを入れて、 実行権限を与えて、保存します。

Slide 91

Slide 91 text

6.メンバーでジョブの実行! 91 ジョブテンプレートの権限移譲設定が完了しましたので、 imurata から ログオフし、jminami でログオンします。権限移譲されたジョブテンプ レートが今回は表示されていることを確認します。Mktg-jobの詳細に 入っても一切変更できないことを確認し、ジョブを実行してみましょう。

Slide 92

Slide 92 text

92 ジョブをクリックし、自分が実行したものしかみえない(imurataが実 行したものは見えない)ことを確認します。 6.メンバーでジョブの実行!

Slide 93

Slide 93 text

他の組織ユーザーでログオン 93 Mktg-Orgでジョブテンプレートを作成しました。この組織向けに作成 したプロジェクトやジョブテンプレートなどが、この組織に所属しない ユーザーからどのように見えるか、Sales-Org管理者のisatoでログオン して確認してみてください。先ほど作成したプロジェクト、Mktg-Proは 閲覧できないことを確認します。

Slide 94

Slide 94 text

Ansible Tower 使い方 ~変数入力とワークフロー~

Slide 95

Slide 95 text

テンプレートのオプション機能 - Survey 95 Ansibe Tower はプレイブック実行時に変数に対し値を入力すること が可能です。先ほど作成した sl.yml を編集して確認してみます。 Tower サーバーに ssh 接続して、sl.ymlを編集します。 $ sudo vim /var/lib/awx/projects/sl/sl.yml - 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: ”{{sl_state}}” slインストールの状態を定義するstateを変数 "sl_state"で置き換えます。

Slide 96

Slide 96 text

テンプレートのオプション機能 - Survey 96 続いて、Tower UI に admin でログインし、先ほど作成した、sl-job テンプレートを開き、SURVEYの追加をクリックします。

Slide 97

Slide 97 text

テンプレートのオプション機能 - Survey 97 以下のように入力し、"+ ADD" ボタンをクリックします。 プロンプト:slのインストール状態を定義します 説明:present / absent 回答の変数名:sl_state 回答タイプ:テキスト Default Answer:present

Slide 98

Slide 98 text

テンプレートのオプション機能 - Survey 98 以下の画面で "保存" ボタンをクリックします。

Slide 99

Slide 99 text

テンプレートのオプション機能 - Survey 99 テンプレート画面に戻るので "保存" ボタンをクリックします。

Slide 100

Slide 100 text

100 編集したジョブを実行してみます 実行 テンプレートのオプション機能 - Survey

Slide 101

Slide 101 text

101 変数入力の画面が出ることを確認し、"present" or "absent"を入力し、 「次へ」をクリックします。さらにプレビュー画面で「起動」をク リックします。 テンプレートのオプション機能 - Survey

Slide 102

Slide 102 text

102 ジョブが正常に終了することを確認の上、slのインストール状態を 確認してみましょう。また、変数の値、"absent" "present" を変 更してジョブを何度か実行し、インストール状態を確認してみて下 さい。 テンプレートのオプション機能 - Survey

Slide 103

Slide 103 text

ワークフローテンプレート 103 作成したテンプレートを一連の動作として定義・実行可能な機能です。 例)VMware Module を利用 START Linux仮想マシンのテン プレートからのデプロイ 仮想マシンのTools応 答を待つ(起動確認) httpd インストール& デーモン起動& Firewall設定 START vCenter へ ESXi登録 NFS マウント vMotion ネット ワークの作成 仮想スイッチ の作成 作成済みのプレイブックを組み合わせて ワークフローとして定義・実行!

Slide 104

Slide 104 text

ワークフローテンプレート 104 今回は、テンプレートを組織を超えて権限の委譲を行った上で以下の様 なワークフローを作成し、実行してみます。 1. Sales-Org の管理者(isato)で httpd のインストール、FW設定、 デーモンの起動などを行うプレイブックとテンプレートを作成 2. ジョブテンプレートの実行権限を Mktg-Org の管理者に与える 3. Mktg-Org の管理者で以下の二つのテンプレートを連続実行する ワークフローを作成 Hello World! の表示 → httpd インストールの実行

Slide 105

Slide 105 text

1.テンプレート作成 – プレイブックの作成 105 以下のプレイブックを作成します。 ・httpd のインストール ・FW(80/443の解放)の設定 ・デーモンの起動と有効化 Tower サーバーに sshで接続します。 $ sudo mkdir /var/lib/awx/projects/httpd $ sudo vim /var/lib/awx/projects/httpd/httpd.yml 記述内容は、右を参照。また、以下からダウンロードも可能です。 https://github.com/coral-reaf/vmware/blob/master/httpd-inst.yml $ sudo chown awx /var/lib/awx/projects/httpd $ sudo chown awx /var/lib/awx/projects/httpd/httpd.yml - hosts: all tasks: - name: httpd install & Firewall (80/443) config yum: name: httpd state: latest - name: httpd running & Enabled service: name: httpd state: started enabled: yes - name: Firewall Setting 80 firewalld: service: http zone: public state: enabled permanent: true immediate: true - name: Firewall Setting 443 firewalld: service: https zone: public state: enabled permanent: true immediate: true httpd.yml の書き方

Slide 106

Slide 106 text

1.テンプレートの作成 106 作成したプレイブックを使ってまずはプロジェクトを作成します。 Ansible Tower UI に Sales-Org の管理者(isato)でログオンし、プ ロジェクトをクリック、さらに、「+」をクリックします。

Slide 107

Slide 107 text

107 以下のパラメータを入力し、「保存」します ・プロジェクト名 httpd インストール ・SCM タイプ 手動 ・Playbook ディレクトリー httpd 1.テンプレートの作成

Slide 108

Slide 108 text

108 テンプレートを作成します。インベントリー情報と、認証情報は先のハ ンズオンでadminから使用権限を与えられたものを利用します。 テンプレートをクリックし、「+」、ジョブテンプレートを選択します。 1.テンプレートの作成

Slide 109

Slide 109 text

必要に応じて権限昇格の有効 化にチェックを入れます! 109 以下の内容を入力し、ジョブテンプレートを作成します。 ・名前:httpd インストール ・インベントリー:SL-Hosts ・プロジェクト:httpd インストール ・Playbook:httpd.yml ・認証情報(タイプ):Machine ・認証情報(名前):SL-Cre 1.テンプレートの作成

Slide 110

Slide 110 text

110 パーミッションをクリックし、+追加をクリックします。Mktg-Org の 管理者である、imurata に対し、実行権限を与えて、保存します。 2.テンプレート - 実行権限の他者への適応

Slide 111

Slide 111 text

3.ワークフローテンプレートの作成 111 Sales-Org 管理者の isato からログオフし、Mktg-Org 管理者の imurata でログオンします。Sales-Org より実行権限を与えられ た、httpd インストールテンプレートの存在を確認し、「+」で ワークフローテンプレートを選択します。

Slide 112

Slide 112 text

112 名前:Hello-httpd ワークフロー を入力し保存、さらにワークフロービジュアライザーをクリックします。 3.ワークフローテンプレートの作成

Slide 113

Slide 113 text

113 左ペインで 開始 をクリックし、右ペインで Mktg-job にチェックを 入れて選択をクリック 3.ワークフローテンプレートの作成

Slide 114

Slide 114 text

114 作成された左ペインの Mktg-job にマウスを当てて、緑色の+をク リックします。 3.ワークフローテンプレートの作成

Slide 115

Slide 115 text

115 今度は右ペインで httpd インストールをチェックし、成功時が選択 されていることを確認の上、「選択」をクリック、さらに、右下の 「保存」をクリックします。 3.ワークフローテンプレートの作成

Slide 116

Slide 116 text

116 作成したワークフローを実行してみましょう! 3.ワークフローテンプレートの実行

Slide 117

Slide 117 text

117 両方ともが緑になれば成功です! それぞれのテンプレートの実行 状況は、DETAILS をクリックしてみて下さい。 3.ワークフローテンプレートの実行

Slide 118

Slide 118 text

118 管理対象サーバーにブラウザで接続し、httpd がインストールされていることを確認します。

Slide 119

Slide 119 text

モジュールの使い方 ~ 他システムとの連携 VMware モジュールの使い方 ~

Slide 120

Slide 120 text

Ansible モジュール - 概要 120 Ansibleには様々な機器、ソフトウェア、クラウドと連携するための仕 組みがモジュールという形で提供されています。モジュールは、 Ansible と管理対象ノードとのやり取りを仲介する役割を果たします。 モジュールの一覧はこちらにあります。 http://docs.ansible.com/ansible/latest/modules_by_category.html 今回はこの中で、VMware モジュールを使って vSphere 環境の自動化 を行ってみます。Ansible 2.5では、VMware モジュールが 32個 → 55 個 に拡張され、大幅に出来ることが増えています。一例として、今まで 未対応だったデータストアの操作が可能となっています!早速今回この 新しいモジュールを使ってNFSマウントを実行してみます!

Slide 121

Slide 121 text

Ansible VMware モジュール 121 VMware モジュールは、こちらにあります。(2018年12月27日現在:80個) http://docs.ansible.com/ansible/latest/list_of_cloud_modules.html#vmware 例えば以下で示す、vmware_datacenter というモジュールを見てみます。 http://docs.ansible.com/ansible/latest/vmware_datacenter_module.html このモジュールを使うとvCenter Server が持つ、データセンターオブジェクト の操作が可能となるのですが、次項の様な情報があります。

Slide 122

Slide 122 text

Ansible VMware モジュール(例) 122 vmware_datacenter ・動作要件 python 2.6以降及び、PyVmomiが必要 ・パラメータの記述 (必須か否か、デフォルト値、取りうる値) ・プレイブックの書き方の例 など

Slide 123

Slide 123 text

Ansible モジュール 123 利用モジュールによって異なりますが、VMwareモジュールの利用には、 PyVmomi とpysphere が必要です。2つともインストールしておきます。インス トール先は Ansible Tower Server です。 # easy_install pysphere # easy_install PyVmomi

Slide 124

Slide 124 text

Ansible モジュール - winrm 用 (オプション) 124 このハンズオン資料では利用しませんのでインストールは不要ですが、vSphere 環境の操作がモジュールでサポートされていない場合、プレイブックから PowerCLI 経由で vSphere を自動化することも可能です。この様なケースでは、 pip とwinrmをインストールしておきます。 # curl -O https://bootstrap.pypa.io/get-pip.py # python get-pip.py # pyp install pywinrm

Slide 125

Slide 125 text

Ansible VMware モジュール - 実施内容 125 では実際にVMware モジュールを使って以下のような自動化を行ってみましょう! 1.データーセンター及びクラスターの作成・削除 2.ESXi ホストの vCenter Serverへの追加・削除 3.ESXi ホストの設定 3-1.標準仮想スイッチの作成と NIC のアサイン 3-2.vmkernel ポートの作成と vMotion の有効化 3-3.ESXi ホストへの NFS データストアのマウント 4.テンプレートからのRHEL仮想マシンのデプロイ 5.httpd インストール、FW設定(80ポート解放)、httpdサービス起動・有効化

Slide 126

Slide 126 text

Ansible モジュール - DC/CLの作成 126 Ansible Tower を使ったデータセンターとクラスターの作成・削除を行ってみます。 モジュールは以下です。このモジュールの使い方を確認しながら進めてください。 http://docs.ansible.com/ansible/latest/vmware_datacenter_module.html Ansible Tower サーバーに root ユーザーでssh接続しプレイブックを作成します。 # mkdir /var/lib/awx/projects/ # mkdir dc-cl-cre # cd dc-cl-cre # vim t-createDC.yml 記述例)t-createDC.yml - hosts: all gather_facts: no tasks: - name: Create Datacenter local_action: module: vmware_datacenter hostname: "{{hostname}}" username: "{{username}}" password: "{{password}}" validate_certs: False datacenter_name: "{{dc_name}}" state: "{{dc_state}}" vCenter Server のホスト名、ユーザー名、パス ワードの情報及び、データセンター名とその”作成” or "削除" を指定する変数です。後ほど Ansible Towerのジョブテンプレートの中で定義します Tips:プレイブックはスペースなど記述フォーマットに敏感です。実行時 に記述にまつわるエラーが出た場合、記述のお作法を見直してみましょう。 vmware_datacenter モジュールの利用を宣言 https://github.com/coral-reaf/vmware よりダウンロードも可能

Slide 127

Slide 127 text

Ansible モジュール - DC/CLの作成 127 プレイブックの中身をもう少し詳しく見ていきます。 module: vmware_datacenter ---> 利用モジュールを宣言 hostname: "{{hostname}}" ---> モジュールで定義されているオプション "hostname"へ値を入力。"{{ }}"は、変数入力であることを示す。 ※変数への値の入力は、Towerの場合以下の二つ から行うことが出来ます。 ・Ansible同様、/group_vars/ 内のファイル # vim /var/lib/awx/projects/dc-cd-cre/group_vars/all.yml hostname: vcenter.local など。 ・ジョブテンプレート内の、Survey (後述) - hosts: all gather_facts: no tasks: - name: Create Datacenter local_action: module: vmware_datacenter hostname: "{{hostname}}" username: "{{username}}" password: "{{password}}" validate_certs: False datacenter_name: "{{dc_name}}" state: "{{dc_state}}"

Slide 128

Slide 128 text

Ansible モジュール - DC/CLの作成 128 https:/// でAnsible Tower にログインします。 ユーザー名:admin パスワード:redhat

Slide 129

Slide 129 text

Ansible モジュール - DC/CLの作成 129 プロジェクトで「+」をクリック

Slide 130

Slide 130 text

130 Ansible モジュール - DC/CLの作成 キャプチャー画面を参考に、以下の設定を行い、保存をクリック

Slide 131

Slide 131 text

131 Ansible モジュール - DC/CLの作成 インベントリーで、追加をクリックし、インベントリーを選択

Slide 132

Slide 132 text

132 Ansible モジュール - DC/CLの作成 名前:vCenter を入力し、保存をクリック。さらに、ホストをクリックします

Slide 133

Slide 133 text

133 Ansible モジュール - DC/CLの作成 ホストの追加をクリック

Slide 134

Slide 134 text

134 Ansible モジュール - DC/CLの作成 vCenter Server のホスト名(IP アドレスも可)を入力し、保存をクリック

Slide 135

Slide 135 text

135 Ansible モジュール - DC/CLの作成 vCenter Server に接続するための認証情報を作成します。

Slide 136

Slide 136 text

136 Ansible モジュール - DC/CLの作成 この認証情報は vCenter 内のインベントリ情報を取得するために利用します。 名前:vCenter-Cre、Type:VMware vCenterを選択し、vCenterServerへの接 続情報(IPアドレス、ユーザー名、パスワード)を入力します。

Slide 137

Slide 137 text

137 Ansible モジュール - DC/CLの作成 以下を参照し、名前、ジョブタイプ、インベントリー、プロジェクト、Playbookを 入力の上右下の保存をクリック。さらにSURVEYの編集をクリックします

Slide 138

Slide 138 text

138 Ansible モジュール - DC/CLの作成 SURVEYでは、プレイブックに存在する変数への値の入力を行う機能を提供し ます。作成したプレイブックを vim で開きつつハンズオンを進めるとより理解 が深まります。以下を参照に入力し、Updateをクリックします。 プロンプト:データセンターの名前を入力します 回答の変数名:dc_name 回答タイプ:Text DEFAULT ANSWER:DC2

Slide 139

Slide 139 text

139 Ansible モジュール - DC/CLの作成 今回入力した変数は、プレイブックの datacenter_nameで定義されている変数 "dc_name" への入力を定義するものです。他の4つの変数の分も作成します。 t-createDC.yml - hosts: all gather_facts: no tasks: - name: Create Datacenter local_action: module: vmware_datacenter hostname: "{{hostname}}" username: "{{username}}" password: "{{password}}" validate_certs: False datacenter_name: "{{dc_name}}" state: "{{dc_state}}"

Slide 140

Slide 140 text

140 Ansible モジュール - DC/CLの作成 変数 dc_state これは、データセンターを存在状態にするか否かの設定です。 回答が特定の値を取る場合、説明の所に 取り得る値を書いておくと便利です。 今回の場合は "present" or "absent" で present : 存在する状態にする absent:存在しない状態にする です。

Slide 141

Slide 141 text

141 Ansible モジュール - DC/CLの作成 変数 hostname これは、vCenter Server の名前 or IP を定義します DEFAULT ANSWERには、vCenter Serverのホスト名もしくはIPアドレスを 入力します。

Slide 142

Slide 142 text

142 Ansible モジュール - DC/CLの作成 変数 username これは、vCenter Server へのログインユーザーです。 DEFAULT ANSWERには、vCenter Server ログインするユーザー名を記述 します。 例)administrator@vsphere.local

Slide 143

Slide 143 text

143 Ansible モジュール - DC/CLの作成 変数 password これは、前項ユーザーのパスワードを入力し、保存をクリック します。テンプレート作成画面に戻るので、もう一度保存をクリックします。 回答タイプに Password を選択すると、 DEFAULT ANSWERに入力した文字が、 隠し文字となります。

Slide 144

Slide 144 text

144 Ansible モジュール - DC/CLの作成 ブラウザで、vCenter Server の画面を見ながら、”データセンターの作成”を実 行してみましょう!

Slide 145

Slide 145 text

145 Ansible モジュール - DC/CLの作成 デフォルト値が入力されていることを確認し「次へ」→「起動」をクリック!! *vCenter Serverの名前と、ユーザー名の入力値は消してあります。ご了承ください。

Slide 146

Slide 146 text

146 Ansible モジュール - DC/CLの作成 ジョブが成功し、データセンターDC2が作成されることを確認します。 変数を "present" → "absent" に変更し、削除されることも確認してみます。

Slide 147

Slide 147 text

Ansible モジュール - DC/CLの作成 147 既存のデータセンター配下にクラスターを作成するプレイブックを作成します。 変数の取りうる値(choices欄)などは、下記モジュールを参照 http://docs.ansible.com/ansible/latest/vmware_cluster_module.html # cd /var/lib/awx/projects/dc-cl-cre # vim t-createCL.yml - hosts: all gather_facts: no tasks: - name: Create Cluster local_action: module: vmware_cluster hostname: "{{hostname}}" username: "{{username}}" password: "{{password}}" validate_certs: False datacenter_name: "{{dc_name}}" cluster_name: "{{cluster_name}}" enable_ha: "{{ha}}" enable_drs: "{{drs}}" enable_vsan: "{{vsan}}" state: "{{cluster_state}}" https://github.com/coral-reaf/vmware よりダウンロードも可能

Slide 148

Slide 148 text

Ansible モジュール - DC/CLの作成 148 ジョブテンプレートは下記参照

Slide 149

Slide 149 text

Ansible モジュール - DC/CLの作成 149 SURVEYは下記参照 Datacenterの例を参考にして、Survey を完成させてください。 左の他に、vCenter Server 名、ユー ザー名、パスワードの指定があります。 実行して、データセンター配下にクラス ターが作成されることを確認します。こ ちらも変数を変更して動作の違いを確認 してみましょう。

Slide 150

Slide 150 text

Ansible モジュール - ESXiホストの構成の自動化 150 次に以下に示す ESXi ホストへの各種設定を行ってみます。 ・ESXi ホストの vCenter Server への登録 ・標準仮想スイッチの作成と NIC のアサイン ・vmkernelポートの作成(vMotion 有効化) ・ESXi ホストへの NFS データストアのマウント ※以降のスライドでは、モジュールの具体的な説明(オプションの記述方法の確認)や、ジョブテ ンプレート作成方法、Surveyの具体的な記述方法など、一部記載を省略しています。具体的な記述 方法については、前項までの内容及び、各モジュール内に記載の説明をご確認の上進めてください。

Slide 151

Slide 151 text

ESXi ホストの設定 - vCenter Server への登録 151 利用モジュール: vmware_host http://docs.ansible.com/ansible/latest/vmware_host_module.html プレイブック:t-add-host.yml https://github.com/coral-reaf/vmwareより入手可能 - hosts: all gather_facts: no tasks: - name: Add Remove ESXi host to vCenterServer vmware_host: hostname: "{{hostname}}" username: "{{username}}" password: "{{password}}" validate_certs: False datacenter_name: "{{dc_name}}" cluster_name: "{{cl_name}}" esxi_hostname: "{{esxi_host}}" esxi_username: "{{esxi_user}}" esxi_password: "{{esxi_pass}}" state: "{{esxi_state}}" delegate_to: localhost - name: Manage Maintenance Mode local_action: module: vmware_maintenancemode hostname: "{{hostname}}" username: "{{username}}" password: "{{password}}" validate_certs: False esxi_hostname: "{{esxi_host}}" state: absent when: esxi_state == "present" t-add-host.yml 設定するesxi ホスト に関する情報 ホスト登録先を指定 ホストの登録と 削除の選択 ホストがメンテナンスモードの場合 はメンテナンスモードの解除を行う 利用モジュール: vmware_maintenancemode Towerのジョブテンプレート ・インベントリー:vCenter ・認証情報:TowerSSH ※Surveyは必要情報を適宜入力ください

Slide 152

Slide 152 text

152 ジョブテンプレートの作成例は以下の通りです。SURVEYも編集し、変数に必 要な情報が入る様記述ください。 ESXi ホストの設定 - vCenter Server への登録

Slide 153

Slide 153 text

ESXi ホストの設定 - 標準仮想スイッチの作成 153 利用モジュール: vmware_vswitch http://docs.ansible.com/ansible/latest/vmware_vswitch_module.html プレイブック:t-createVSS.yml https://github.com/coral-reaf/vmwareより入手可能 - hosts: 127.0.0.1 tasks: - name: Standard Switch Config action: module: vmware_vswitch hostname: "{{esxi_host}}" username: "{{esxi_user}}" password: "{{esxi_password}}" validate_certs: False switch: "{{vss_name}}" nics: "{{vmnic_name}}" mtu: "{{mtu}}" state: "{{vss_state}}" delegate_to: localhost t-createVSS.yml 仮想スイッチ情報の入力 名前、物理NIC、 MTU、作成・削除 Towerのジョブテンプレート ・インベントリー:vCenter ・認証情報:TowerSSH ※Surveyは以下を参考に必要 情報を適宜入力ください vss_name: vSwitch1 nics: vmnic1 MTU:1500 state:present ジョブテンプレート も作成ください!!

Slide 154

Slide 154 text

ESXi ホストの設定 - vmkernel ポートの作成 154 次は vmkernel の作成です。利用モジュールは vmware_vmkernelで すが、2018年12月27日現在、単独では作成・削除がうまく動きません。 このため、ポートグループの作成削除を行う vmware_ portgroup と連 携動作させてみます。 利用モジュール: vmware_vmkernel / vmware_portgroup http://docs.ansible.com/ansible/latest/vmware_vmkernel_module.html http://docs.ansible.com/ansible/latest/modules/vmware_portgroup_module.html プレイブック:t-manageVMK25.yml https://github.com/coral-reaf/vmwareより入手可能 Ver 2.5 こちらのモジュールは Ansible 2.5以降で利用可能です。2.4の場合は、t-manageVMKernel.yml をご利用 ください。使い方は次のリンク参照。https://www.slideshare.net/ssuserf487dc/ansible-tower-with-vmware-rev22-88033172

Slide 155

Slide 155 text

ESXi ホストの設定 - vmkernel ポートの作成 155 - hosts: 127.0.0.1 tasks: - name: Portgroup Create vmware_portgroup: hosts: "{{esxi_host}}" hostname: "{{hostname}}" username: "{{username}}" password: "{{password}}" portgroup_name: "{{pg_name}}" state: "{{vmk_state}}" switch_name: "{{vss_name}}" validate_certs: no vlan_id: "{{vlan_id}}" when: vmk_state == "present" - name: vmkernel Config vmware_vmkernel: esxi_hostname: "{{esxi_host}}" hostname: "{{hostname}}" username: "{{username}}" password: "{{password}}" validate_certs: no vswitch_name: "{{vss_name}}" state: "{{vmk_state}}" portgroup_name: "{{pg_name}}" vlan_id: "{{vlan_id}}" network: type: 'static' ip_address: "{{ip_address}}" subnet_mask: "{{subnet}}" enable_vmotion: "{{vmotion}}" enable_ft: "{{ft}}" enable_mgmt: "{{mgmt}}" enable_vsan: "{{vsan}}" - name: Portgroup Delete vmware_portgroup: hosts: "{{esxi_host}}" hostname: "{{hostname}}" username: "{{username}}" password: "{{password}}" portgroup_name: "{{pg_name}}" state: "{{vmk_state}}" switch_name: "{{vss_name}}" validate_certs: no vlan_id: "{{vlan_id}}" when: vmk_state == "absent" ジョブテンプレートも作成ください!! プレイブックは右の通りです。中心の vmware_vmkernelモ ジュールを作成・削除用のvmware_portgroupモジュールで挟 んだ形です。字が小さく見にくいと思いますので、以下よりダウ ンロードしてみて下さい。 プレイブック:t-manageVMK25.yml https://github.com/coral-reaf/vmwareよりダウンロード 長いですが、やっていることは難しくありません。vCenterや ESXiホスト、vSwitchなどvmkernel作成にまつわる必要なベー ス情報を与えたうえで、ip addressや、vmotionの有効化など、 vmkernel 独自のパラメータを変数入力しています。 Ver 2.5

Slide 156

Slide 156 text

ESXi ホストの設定 - NFSデータストアの作成 156 次に、NFS データストアをマウント / アンマウント してみます。こちらは Ansible Ver2.5 から新たに追 加されたモジュールです。 利用モジュール:vmware_host_datastore http://docs.ansible.com/ansible/latest/modules/vmware_host_datastore_module.html プレイブック:t-mount-nfs-mod.yml https://github.com/coral-reaf/vmwareより入手可能 - hosts: 127.0.0.1 tasks: - name: Manage Maintenance Mode local_action: module: vmware_maintenancemode hostname: "{{hostname}}" username: "{{username}}" password: "{{password}}" validate_certs: False esxi_hostname: "{{esxi_host}}" evacuate: yes state: present when: nfs_state == "absent" - name: Manage NFS Datastore vmware_host_datastore: esxi_hostname: "{{esxi_host}}" hostname: "{{hostname}}" username: "{{username}}" password: "{{password}}" datacenter_name: DC datastore_name: "{{nfs_name}}" datastore_type: nfs nfs_path: "{{nfs_path}}" nfs_server: "{{nfs_server}}" state: "{{nfs_state}}" validate_certs: no t-mount-nfs-mod.yml データーストア名、データストアタイプ、 NFSサーバーアドレス、パス、 マウント or アンマウントを指定 ジョブテンプレート も作成ください!! Ver 2.5 *アンマウントは、登録された仮想マシンが存在すると失敗してしまいま すので、ホストをメンテナンスモードして仮想マシンの移行を事前に 行っています。 *

Slide 157

Slide 157 text

157 ESXiの一連の設定をワークフローで実行してみます。 ※それぞれのジョブテンプレートが必要となりますので、未作成の場合は事前に作成 しておいてください。 1.ESXi ホストのvCenter Serverへの登録 2.vSwitch の作成 3.vmkernel ポートの作成(vmotion 有効化) 4.NFSデータストアのマウント ESXi ホストの設定 - ワークフローで実行

Slide 158

Slide 158 text

158 テンプレートから「+」「ワークフローテンプレート」を選択 ESXi ホストの設定 - ワークフローで実行

Slide 159

Slide 159 text

159 「保存」をクリックし、「ワークフロービジュアライザー」をクリック ESXi ホストの設定 - ワークフローで実行

Slide 160

Slide 160 text

160 「Start」をクリックし、右ペインで「ESXiホストの追加テンプレート」 を選択します ESXi ホストの設定 - ワークフローで実行

Slide 161

Slide 161 text

161 「ESXiホスト追加のテンプレート」上にある緑色の「+」をクリック 「成功時」を選択し、「vssの追加・削除のテンプレート」を選択 ESXi ホストの設定 - ワークフローで実行

Slide 162

Slide 162 text

162 同様に、「vmkernelテンプレート」と「NFSマウントテンプレート」を 追加します。NFSデータストアのマウントは、Netwrok設定とは前後関係 がありませんので、ここでは並行作業としています。 ESXi ホストの設定 - ワークフローで実行

Slide 163

Slide 163 text

163 ESXi ホストの設定 - ワークフローで実行 数が多いですが、Surveyも各テンプレートを参照しながら追加の上、ワーク フローを保存します。

Slide 164

Slide 164 text

164 ESXi ホストの設定 - ワークフローで実行 実行してうまく動作することを確認します。

Slide 165

Slide 165 text

Ansible モジュール - 仮想マシンの作成と設定 165 次に以下に示す仮想マシンの作成に関する自動化を行ってみます。 ・テンプレートからのRHEL仮想マシンのデプロイ 同時に、VMware Toolsを使ってIP、ホスト名などをカスタマイズします ・仮想マシンが起動するまで待ちます(VMwareToolsの応答を待つ) ・httpd インストール、FW設定(80/443の解放)、httpdサービス起動・有効化 ※このハンズオンではあらかじめ、VMware toolsインストール済みの、RHEL7.xの仮想マシンテ ンプレートを準備の上進めてください。名前はプレイブックで指定可能ですが、ここでは "RHEL74-Temp"を想定しています。仮想マシンの作成方法等は割愛しています、ご了承ください。 仮想マシンの起動確認にVMwareToolsの応答を利用していますが、厳密には ssh接続が可能になるタイミングとは異なるため、後述するtools応答のプレイ ブックではVMwareToolsの応答確認後、Delayを置いています。環境によって 最適値があると思います。このあたりも色々確認してみて下さい♬

Slide 166

Slide 166 text

Ansible モジュール - 仮想マシンの作成 166 利用モジュール: vmware_guest http://docs.ansible.com/ansible/latest/vmware_guest_module.html プレイブック:t-cloneVM-cust.yml https://github.com/coral-reaf/vmwareより入手可能 - hosts: 127.0.0.1 tasks: - name: Boot up instance vmware_guest: hostname: "{{hostname}}" username: "{{user_name}}" password: "{{password}}" datacenter: DC cluster: CL name: "{{vmname}}{{item}}" template: "{{template}}" networks: - name: VM Network ip: 192.168.1.{{item}} netmask: gateway: state: poweredon disk: - datastore: NFS size_gb: 15 type: thin validate_certs: no customization: dns_servers: with_sequence: count={{number}} t-cloneVM-cust.yml Towerのジョブテンプレート ・インベントリー:vCenter

Slide 167

Slide 167 text

Ansible モジュール - プレイブックの説明 167 今回はテンプレートからのデプロイということで、デプロイする仮想マシンの数を、 最終行、with_sequence で指定しています。その他、変数の意味は以下の通りです。 name: {{vmname}}{{item}} ・・・仮想マシン名の指定です vmnameには、Surveyで値を入力ください itemには繰り返し回数1,2,…が自動的に入力されます。Surveyでの指定は不要です。 ip: 192.168.21.{{item}} この書き方で、仮想マシンのIPは、192.168.21.1、192.168.21.2・・・ となります。お好みのIPとなる様記述ください。こちらの変数{{item}}も上記 同様別途Surveyで定義する必要はありません。繰り返し回数の自動入力です。 dhcpを利用したい場合は、ip~の所をtype: dhcpで置き換えて、 下の緑字のdns_serversの部分を#でコメントアウトすればOKです。 with_sequence: {{number}} デプロイする仮想マシンの数を繰り返しの数により設定しています。 Surveyより指定します。 - hosts: 127.0.0.1 tasks: - name: Boot up instance vmware_guest: hostname: "{{hostname}}" username: "{{user_name}}" password: "{{password}}" datacenter: DC cluster: CL name: "{{vmname}}{{item}}" template: "{{template}}" networks: - name: VM Network ip: 192.168.1.{{item}} netmask: gateway: state: poweredon disk: - datastore: NFS size_gb: 15 type: thin validate_certs: no customization: dns_servers: with_sequence: count={{number}} t-cloneVM-cust.yml ※<>の値や、仮想ディスクを作成するデータストア(ここではNFS、ネット ワーク名)などには、環境に応じた値をプレイブック内に記述ください ジョブテンプレートも作成ください!!

Slide 168

Slide 168 text

Ansible モジュール- VMware Tools の応答を待つ 168 利用モジュール: vmware_guest_guest_tools_wait http://docs.ansible.com/ansible/latest/vmware_guest_tools_wait_module.html プレイブック:t-wait-tools-mod.yml https://github.com/coral-reaf/vmwareより入手可能 - hosts: 127.0.0.1 tasks: - name: Wait Tools VM vmware_guest_tools_wait: hostname: "{{hostname}}" username: "{{user_name}}" password: "{{password}}" validate_certs: False name: "{{vmname}}{{item}}" folder: /DC/ delegate_to: localhost register: facts with_sequence: count={{number}} - name: Wait for reachable over ssh wait_for_connection: delay: 80 t-wait-tools-mod.yml Towerのジョブテンプレート ・インベントリー:vCenter ・認証情報:TowerSSH ※Surveyは必要情報を適宜入力ください nameに関しては、前項の仮想マシン名に合わせてください {{item}}は繰り返し数が自動入力されます。(前頁参照) 最終行でdelayを入れているのは、vmwartoolsの返答を返すタイミン グと、ssh接続が可能になる(次頁でhttpdのインストールを行うため 必要)タイミングのずれを修正するためのものです。 ジョブテンプレートも作成ください!!

Slide 169

Slide 169 text

Ansible モジュール - httpdのインストールと設定 169 仮想マシンのデプロイ、Toolsの応答待ちは、VMwareモジュールで対応でき ましたが、ここからは、仮想マシンOSへのアクセスとなりますのでインベン トリ情報の取得がキーとなります。方法は以下の通りいくつかあります。 1. 固定IPでアクセス 2. ホスト名とIPアドレスをDNS登録して、ホスト名でアクセス 3. vCenter Server のインベントリ情報を取得してアクセス 今回は3の方法を利用してみます。

Slide 170

Slide 170 text

Ansible モジュール - httpdのインストールと設定 170 vCenter Server が持つ、仮想マシンインベントリ情報取得のため、Tower上 に、以下の様なインベントリーを作成します。 「インベントリー」 → 「追加」(インベントリーを選択) 名前:httpd インストールホスト を入力し、保存をクリックします。

Slide 171

Slide 171 text

Ansible モジュール - httpdのインストールと設定 171 さらに、「ソース」→ 「追加」をクリックし以下を入力します。 名前:vcenter、認証情報:vCenter-Cre、ソース:VMware vCenter オプション:上書き、変数の上書き、起動時の更新全てチェック✔

Slide 172

Slide 172 text

Ansible モジュール - httpdのインストールと設定 172 「同期プロセスの開始」ボタンをクリックし、Error無く同期が完了すること を確認します。保存すればインベントリ作成は完了です。

Slide 173

Slide 173 text

Ansible モジュール - httpdのインストールと設定 173 利用モジュール:yum, service, firewalld http://docs.ansible.com/ansible/latest/yum_module.html http://docs.ansible.com/ansible/latest/service_module.html http://docs.ansible.com/ansible/latest/firewalld_module.html プレイブック:httpd-inst.yml https://github.com/coral-reaf/vmwareより入手可能 次に、yumインストールモジュールを使って プレイブックの作成を行います。 - hosts: all tasks: - name: httpd install & Firewall (80/443) config yum: name: httpd state: latest - name: httpd running & Enabled service: name: httpd state: started enabled: yes - name: Firewall Setting 80 firewalld: service: http zone: public state: enabled permanent: true immediate: true - name: Firewall Setting 443 firewalld: service: https zone: public state: enabled permanent: true immediate: true httpd-inst.yml

Slide 174

Slide 174 text

Ansible モジュール - httpdのインストールと設定 174 以下を参照し、ジョブテンプレートを作成します。インベントリーは先ほど作 成した、httpd インストールホストを利用します。(プロジェクトは必要に応 じ、事前に作成の上実施ください)

Slide 175

Slide 175 text

Ansible モジュール - httpdのインストールと設定 175 「仮想マシンのデプロイ」→「VMware Toolsの応答を待つ」→「httpdのイ ンストール、FWの設定、デーモンの有効化」のワークフローを作成します。 Surveyも追加の上、ワークフローを保存し実行してみます。

Slide 176

Slide 176 text

176 デプロイした仮想マシンに対してブラウザで接続でき れば成功です!お疲れさまでした!!

Slide 177

Slide 177 text

177 お疲れさまでした!以上でハンズオントレーニングは終了です!! いかがでしたでしょうか?Ansible Towerを使うことにより、以下の ようなことがお分かりいただけたのではないかと存じます。 ・容易なマルチテナント(複数組織)管理 ・プレイブックの抽象化と Github と連携したプレイブックのバー ジョン管理とバージョン含めた実行ログ管理 ・インベントリや認証情報などオブジェクト毎の細かい権限の設定 と組織越えも可能な柔軟な権限委譲の仕組み ・ワークフローによる容易なテンプレートの再利用 ・モジュールを使った他システムの管理 まとめ 是非 Ansible Tower ご利用ください!!

Slide 178

Slide 178 text

THANK YOU plus.google.com/+RedHat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHatNews linkedin.com/company/red-hat