Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ansible tower 構築方法と使い方 with VMware モジュール Rev 4.0

Hiroshi Okano
December 27, 2018

Ansible tower 構築方法と使い方 with VMware モジュール Rev 4.0

2018年12月
 AnsibleTower3.2.7 → 3.3.3 対応となりました。

2018年10月
 P13ライセンス発行に関する連絡先を追加しました。

2018年9月
 資料を微修正しました。AnsibleTower3.3が出てきて、既存の手順の場合、UIの異なる3.3でインストールされてしまうため、3.2.7固定でインストールするよう手順を修正しました。

Slide Share で公開している Rev 2.2 の更新Verです。資料はAnsible Tower をハンズオン形式で学んで頂くことを目的にしています。こちらバージョンから、Ansible2.5対応となっています。Ansible2.5では、VMwareモジュールがデータストア操作可能となっていますので、以前PowerCLIで書いていた内容を、モジュールで記述しなおしています。また、資料に関しては、各所見直しを行い、権限委譲のハンズオン等も充実させています。

是非お楽しみください!

Hiroshi Okano

December 27, 2018
Tweet

More Decks by Hiroshi Okano

Other Decks in Technology

Transcript

  1. 現在、企業のIT管理者は、多種多様なハードウェア、ソフトウェア、ク ラウド等々、多くのシステムの構築し、それを最新のIT環境として維持 していく必要に迫られています。そんな中、構築や管理の手間を劇的に 改善するツールとして Ansible Engine / Towerへの関心が高まってい ます。この資料は Ansible

    Towerに関する以下の点をハンズオン形式で 学ぶことを目的にしています。インストールに関しては手間をかけず、 DBも内蔵。使い方にフォーカスした資料です。 ・Ansible Tower (3.3.3) のインストール ・Ansible Tower の使い方 ・VMwareモジュールの使い方 Ansibleは、モジュールを利用することにより多くの機器やクラウド環境 の管理が可能です。今回はその一例として、VMwareモジュールを利用 して vSphere 環境の設定をAnsible Tower から行ってみます。 2 資料作成の背景と目的
  2. この資料はAnsible Tower の導入から Ansible Tower でのプレイブッ クの実行、権限管理など、Ansible Towerの使い方、さらには VMware モジュールを利用した、vSphere

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

    Ansible Tower オブジェクトの理解、プレイブックの作成~実行まで 4. 組織とユーザーの作成、及び、権限の委譲 5. テンプレートのオプション機能 ・Survey 機能による変数入力 ・ワークフローによる複数テンプレートの一括実行 6. VMwareモジュールの様々な使い方 4 アジェンダ
  4. このハンズオンでは以下の環境を想定して作成しています。 ・Ansible Tower サーバー X 1台 ・管理対象サーバー X 1 台以上

    ・vSphere 6.5 (vCenter Server + ESXi X 2 台) 上記各サーバーは、RHEL7.5 をサーバー(GUI使用)でインストールし たものを前提としています。 6 環境の説明
  5. 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 とは?: リモートホストとの通信の際生成する並列プロセス数(詳細は上記マニュアル参照
  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 # 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 をインストールする端末への操作です
  7. 1. 操作端末よりブラウザで以下にアクセスし、 ライセンスの要求をクリックします。 https://<Ansible Tower IP Address>/ ※ID / Password

    は、 admin / redhat 2. FREE TOWER TRIAL - ENTERPRISE FEATURESを選択。 必要事項を記入し、"Submit" します。 12 インストール② Ansible Towerライセンス適応
  8. 26 Ansible Tower - サンプルジョブの実行 再度 SSH でTower に接続し、/var/lib/awx/projects/ を確認します。

    雲アイコンをクリックしてプレイブックをダウンロードしたことによ り、以下が実施されたことが分かります。 ・サンプルプロジェクト用のディレクトリの作成 ・hello_world.yml のダウンロード
  9. Ansible Tower – 各オブジェクトが持つ意味 29 組織(Organization) ・Ansible Tower の1番上位の概念です。ジョブを実行する ために、Ansible

    Tower のオブジェクトをまとめて管理す る仕組みを提供します。ユーザーは少なくとも1つの組織 に対してアクセスが許可されている必要があります。 ・組織の下にユーザーとチーム(グループ)オブジェクトが 見えていますが、これらのユーザーを組織の管理者や閲覧 者などで定義します ・Ansible Tower 管理者は複数の組織を管理できます。マ ルチテナントという概念で考えると、組織が1つのテナン トとなります。 次に大事なのは、各コンポーネントの大まかな意味と連携です。 重要なコンポーネントを順を追ってご説明します。
  10. 31 Ansible Tower – 各オブジェクトが持つ意味 インベントリー(Inventory) ・被管理ホストのホスト名やホストを含むグルー プ名などの情報を定義します。※ 認証に関する 情報(ユーザー名やパスワード)は別管理

    ・接続ホストに関する接続方法などを変数で定義 することも可能です(Windows ホストへの WinRM接続など) ・VMwareやAWSの仮想マシン、インスタンスの 情報を取得して自動的に登録するダイナミック インベントリにも対応しています。
  11. 32 Ansible Tower – 各オブジェクトが持つ意味 認証情報(Credential) ・ホストへのssh接続や、AWS、VMwareなどの クラウド環境へのID・パスワードなどの認証情 報をまとめて管理するための仕組みを提供しま す。ssh接続のキー認証では、プライベート

    キーを登録することも可能です。 ・仮想化やクラウドでは、例えば、vCenter の認 証情報を登録すると、vCenterが管理する仮想 マシンインベントリを入手し、インベントリに 登録するダイナミックインベントリも利用可能 になります。AWSなども同様です。
  12. 33 Ansible Tower – 各オブジェクトが持つ意味 テンプレート(Template) ・ジョブテンプレートとワークフローテンプレー トの統合名称です ・ジョブテンプレート プレイブックを実行するために必要な、プロ

    ジェクト、インベントリ、認証情報、プレイ ブックファイル名をまとめて定義したもの ・ワークフローテンプレート 複数のジョブテンプレートをまとめて定義・ 実行するための仕組み ・プレイブック内で記述された変数への入力 (サーベイ)にも対応しています
  13. 34 Ansible Tower – 各オブジェクトが持つ意味 ジョブ(Job) テンプレートの実行状況、実行結果(成功・ 失敗など)を確認することができます。プロ ジェクトでGitなどのSCMを指定した場合、実 行結果にプレイブックのバージョン情報が含

    まれ、以下のような情報を過去にさかのぼり 確認することができます。 いつ、誰が、どのシステムに対して、どの バージョンのプレイブックを実行したか
  14. プレイブック実行までの道のり 35 1. プレイブックの作成 プレイブックは Ansible Tower から抽象化されているため、直接作成できません。別途 作成するか、Git や

    Subversion、Mercurial などのバージョン管理システムからプレイ ブックを取得します。作成したプレイブック、及び、Git などから取得されたプレイブッ クは、AnsibleTower Server の特定のパス(/var/lib/awx/project/)配下に保存されます。 2. プロジェクト作成 プレイブックの取得場所 (Local / Gitなど) を指定します。1プロジェクト = 1 パスで す。1パスの中に複数のプレイブックを入れることも可能です。 3. インベントリの作成 管理対象のホストを登録します。ホスト名 / IP アドレスを直接指定することも可能です し、VMware や AWS 上の仮想マシン情報を取得し、ダイナミックインベントリとして 取得・利用することも可能です。
  15. プレイブック実行までの道のり 36 4. ホストやクラウドなどの認証情報の作成 管理するホストや VMware、AWS 等の認証情報を一括管理する仕組みを提供します。 Linux ホストに ssh

    接続する際の ID / Password や、vCenter Server や AWS にアク セスして仮想マシン情報を引いてくる際の認証情報等をあらかじめ登録することが可能 で、これらの認証情報を抽象化することができます。 5. ジョブテンプレートの作成 2.プロジェクト(プレイブックのパス)と、3.インベントリ、4ホスト認証情報、さら に、実際のプレイブックファイルを紐づけます。複数のテンプレートを順序だてて実行 するワークフローテンプレートを作成することも可能です。 6. ジョブの実行 テンプレートを実行します!!
  16. プレイブック作成 – 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
  17. プロジェクト作成 - オプションラボ 40 2-2. プロジェクトの作成(Github編) こちらはオプションLABです、ご興味があれば実施ください。 Githubを利用した際のプロジェクト作成例です。 ・プロジェクト名:SL-Project-Git ・SCM

    タイプ:Git ・SCM URL : https://github.com/coral-reaf/sl-inst ・組織:Default 起動時の更新とは? Github 上のプレイブックが更新され た場合、ローカルプレイブックを更 新してから実行します。
  18. 強固で柔軟な権限管理 58 Ansibe Tower では以下のような対象に対し柔軟な権限設定が可能です。 ・Ansible Tower 管理者・監査・ユーザー ・組織 管理者・メンバー

    - プロジェクト (プレイブック) - ホスト認証情報 - ジョブ 管理対象ホストの認証情報 IT一括? 組織毎? プレイブック Ansible Tower への サーバ認証情報 ジョブ インベントリA インベントリB インベントリC
  19. Ansible Tower - 権限管理モデル 59 Ansibe Tower のユーザー定義とロールモデル - Ansible

    Tower(管理者・監査担当・ユーザー) Tower 管理者は、複数の組織を一括管理・閲覧する権限を持ちます。 単一の組織の管理者は、Towerのユーザー + 組織の管理者権限 で設定します - 組織(管理者・メンバー・読み込み) 組織内に存在する以下のオブジェクトに対する管理・閲覧権限を定義 プロジェクト、インベントリー、テンプレート、ホスト認証情報 *それぞれに定義可能なロールは後述 例えば、以下の様な権限の設定が可能です ・A・・・Tower の管理者 ・B・・・Tower ユーザー、組織 A 管理者 ・C・・・Tower ユーザー、組織 A メンバー、組織 A 特定テンプレートの実行 ・D・・・Tower ユーザー、組織 B 管理者、組織 A 特定インベントリの管理者
  20. 組織管理者の権限(付与済み) 60 組織管理者には以下の権限が与えられています ・組織内に対するプロジェクトの作成と閲覧 Ansible Tower のローカルプレイブックの利用 ・インベントリ管理(管理対象ホストの登録と削除) ・ホスト認証情報の作成とジョブテンプレートへの適応 ・組織内のジョブテンプレートの作成とジョブの実行と実行結果の確認

    ・組織内で行われたイベントの履歴の確認 (ホスト認証情報の作成、ジョブ作成、実行など) ・ユーザー作成・削除と組織内への権限の設定(管理者・メンバーなど) ※Tower管理者が作成したユーザーの削除は出来ない ・組織内の各コンポーネント(ジョブテンプレート等)への権限の委譲 権限の委譲は、組織を超えて定義可能です
  21. 組織メンバーへの権限の与え方 63 組織管理者は以下の管理や実行権限を委譲することが可能 移譲対象ユーザーは同一組織内に限りません (他の組織で作成されたユーザーもOK) ・プロジェクト プロジェクト毎に、管理者 or 利用者 or

    更新を付与 ・インベントリ インベントリ毎に、使用 or 管理者 or アドホック or 更新を付与 ・ホスト認証情報 認証情報毎に、管理者 or 利用者を付与 ・ジョブテンプレート テンプレート毎に、管理権限 or 実行権限を付与 上記権限が全てそろえば、ジョブテンプレート の作成と実行が可能になります!!
  22. 多彩な認証情報の管理 64 Linux の ssh 接続だけではなく、以下の様な 多彩な認証情報の管理が可能です。 ・Machine (Linux:ssh /

    Windows:winrm) ・AWS(アクセスキー、シークレットキーなど) ・GCP ・OpenStack ・RHV ・VMware ...etc 上記認証情報を利用してLinuxホストへのアプリのインス トールや、AWS 仮想マシン情報の取得、指定、インス トールなどが可能です。
  23. 組織とユーザーの動作確認 65 実際に組織とユーザーを新規に作成し、動作を確認してみましょう! admin 権限で作成したオブジェクトの権限委譲も行います。 1. 組織を作成 2. ユーザーを作成し、組織内の管理者とメンバーとして割り当て 3.

    admin 権限で作成したインベントリ "SL-Hosts" の”使用”権限を 組織管理者に割り当て 4. admin 権限で作成した認証情報 "SL-Cre" の”使用”権限を組織管 理者に割り当て 5. 組織管理者権限で、プロジェクト作成~ジョブの実行まで実施 6. 組織ユーザーにジョブの実行権限を付与と組織ユーザーでの実行
  24. 2.ユーザーの作成 69 Ansible Tower では様々なオブジェクトに対し権限設定が可能です。 組織に紐づけるための、以下の 4 ユーザーを作成します。 Sato Ichiro

    システム:ノーマルユーザー Sales-Org:管理者 Suzuki Jiro システム:ノーマルユーザー Sales-Org:メンバー Murata Ichiro システム:ノーマルユーザー Mktg-Org:管理者 Minami Jiro システム:ノーマルユーザー Mktg-Org:メンバー ※Ansible Tower は LDAP 連携も可能ですが、ここではユーザー作成を行っています。
  25. 2.ユーザーへの組織管理者権限設定 72 作成したimurata と isatoに対し、各組織への管理者権限 を付与します。 左ペインでMktg-org の管理者 をクリック。imurataにチェックを入れて SAVEします。同様に

    isato も Sales-org の管理者に設定します。 ※ユーザー作成時点で指定された組織に対するUser登録は既に行われています。 このため、単なる組織ユーザーは特に設定する必要はありません。
  26. 5.権限移譲されたインベントリの確認(確認のみ) 83 インベントリタブをクリックします。admin から "使用" 権限を委 譲されているので、既に SL-Hosts が存在します。ただし、使用権 限なので、コピーや削除アイコンがないことを確認します。

    コピー、削除アイコンは存在しない。閲覧のみ。 勿論、インベントリを新規に作成することも可能です。自身で作成したインベントリに関しては オーナーですので、編集・削除も自由に行うことができます。
  27. テンプレートのオプション機能 - 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"で置き換えます。
  28. ワークフローテンプレート 103 作成したテンプレートを一連の動作として定義・実行可能な機能です。 例)VMware Module を利用 START Linux仮想マシンのテン プレートからのデプロイ 仮想マシンのTools応

    答を待つ(起動確認) httpd インストール& デーモン起動& Firewall設定 START vCenter へ ESXi登録 NFS マウント vMotion ネット ワークの作成 仮想スイッチ の作成 作成済みのプレイブックを組み合わせて ワークフローとして定義・実行!
  29. ワークフローテンプレート 104 今回は、テンプレートを組織を超えて権限の委譲を行った上で以下の様 なワークフローを作成し、実行してみます。 1. Sales-Org の管理者(isato)で httpd のインストール、FW設定、 デーモンの起動などを行うプレイブックとテンプレートを作成

    2. ジョブテンプレートの実行権限を Mktg-Org の管理者に与える 3. Mktg-Org の管理者で以下の二つのテンプレートを連続実行する ワークフローを作成 Hello World! の表示 → httpd インストールの実行
  30. 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 の書き方
  31. 3.ワークフローテンプレートの作成 111 Sales-Org 管理者の isato からログオフし、Mktg-Org 管理者の imurata でログオンします。Sales-Org より実行権限を与えられ

    た、httpd インストールテンプレートの存在を確認し、「+」で ワークフローテンプレートを選択します。
  32. Ansible モジュール - 概要 120 Ansibleには様々な機器、ソフトウェア、クラウドと連携するための仕 組みがモジュールという形で提供されています。モジュールは、 Ansible と管理対象ノードとのやり取りを仲介する役割を果たします。 モジュールの一覧はこちらにあります。

    http://docs.ansible.com/ansible/latest/modules_by_category.html 今回はこの中で、VMware モジュールを使って vSphere 環境の自動化 を行ってみます。Ansible 2.5では、VMware モジュールが 32個 → 55 個 に拡張され、大幅に出来ることが増えています。一例として、今まで 未対応だったデータストアの操作が可能となっています!早速今回この 新しいモジュールを使ってNFSマウントを実行してみます!
  33. Ansible モジュール - winrm 用 (オプション) 124 このハンズオン資料では利用しませんのでインストールは不要ですが、vSphere 環境の操作がモジュールでサポートされていない場合、プレイブックから PowerCLI

    経由で vSphere を自動化することも可能です。この様なケースでは、 pip とwinrmをインストールしておきます。 # curl -O https://bootstrap.pypa.io/get-pip.py # python get-pip.py # pyp install pywinrm
  34. 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サービス起動・有効化
  35. 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 よりダウンロードも可能
  36. 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}}"
  37. Ansible モジュール - DC/CLの作成 128 https://<Ansible Tower IP>/ でAnsible Tower

    にログインします。 ユーザー名:admin パスワード:redhat
  38. 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}}"
  39. 141 Ansible モジュール - DC/CLの作成 変数 hostname これは、vCenter Server の名前

    or IP を定義します DEFAULT ANSWERには、vCenter Serverのホスト名もしくはIPアドレスを 入力します。
  40. 142 Ansible モジュール - DC/CLの作成 変数 username これは、vCenter Server へのログインユーザーです。

    DEFAULT ANSWERには、vCenter Server ログインするユーザー名を記述 します。 例)[email protected]
  41. 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 よりダウンロードも可能
  42. Ansible モジュール - DC/CLの作成 149 SURVEYは下記参照 Datacenterの例を参考にして、Survey を完成させてください。 左の他に、vCenter Server

    名、ユー ザー名、パスワードの指定があります。 実行して、データセンター配下にクラス ターが作成されることを確認します。こ ちらも変数を変更して動作の違いを確認 してみましょう。
  43. Ansible モジュール - ESXiホストの構成の自動化 150 次に以下に示す ESXi ホストへの各種設定を行ってみます。 ・ESXi ホストの

    vCenter Server への登録 ・標準仮想スイッチの作成と NIC のアサイン ・vmkernelポートの作成(vMotion 有効化) ・ESXi ホストへの NFS データストアのマウント ※以降のスライドでは、モジュールの具体的な説明(オプションの記述方法の確認)や、ジョブテ ンプレート作成方法、Surveyの具体的な記述方法など、一部記載を省略しています。具体的な記述 方法については、前項までの内容及び、各モジュール内に記載の説明をご確認の上進めてください。
  44. 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は必要情報を適宜入力ください
  45. 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 ジョブテンプレート も作成ください!!
  46. 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
  47. 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
  48. 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 *アンマウントは、登録された仮想マシンが存在すると失敗してしまいま すので、ホストをメンテナンスモードして仮想マシンの移行を事前に 行っています。 *
  49. Ansible モジュール - 仮想マシンの作成と設定 165 次に以下に示す仮想マシンの作成に関する自動化を行ってみます。 ・テンプレートからのRHEL仮想マシンのデプロイ 同時に、VMware Toolsを使ってIP、ホスト名などをカスタマイズします ・仮想マシンが起動するまで待ちます(VMwareToolsの応答を待つ)

    ・httpd インストール、FW設定(80/443の解放)、httpdサービス起動・有効化 ※このハンズオンではあらかじめ、VMware toolsインストール済みの、RHEL7.xの仮想マシンテ ンプレートを準備の上進めてください。名前はプレイブックで指定可能ですが、ここでは "RHEL74-Temp"を想定しています。仮想マシンの作成方法等は割愛しています、ご了承ください。 仮想マシンの起動確認にVMwareToolsの応答を利用していますが、厳密には ssh接続が可能になるタイミングとは異なるため、後述するtools応答のプレイ ブックではVMwareToolsの応答確認後、Delayを置いています。環境によって 最適値があると思います。このあたりも色々確認してみて下さい♬
  50. 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: <subnet> gateway: <gateway ip> state: poweredon disk: - datastore: NFS size_gb: 15 type: thin validate_certs: no customization: dns_servers: <dns ip> with_sequence: count={{number}} t-cloneVM-cust.yml Towerのジョブテンプレート ・インベントリー:vCenter
  51. 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~<gateway 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: <subnet> gateway: <gateway ip> state: poweredon disk: - datastore: NFS size_gb: 15 type: thin validate_certs: no customization: dns_servers: <dns ip> with_sequence: count={{number}} t-cloneVM-cust.yml ※<>の値や、仮想ディスクを作成するデータストア(ここではNFS、ネット ワーク名)などには、環境に応じた値をプレイブック内に記述ください ジョブテンプレートも作成ください!!
  52. 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のインストールを行うため 必要)タイミングのずれを修正するためのものです。 ジョブテンプレートも作成ください!!
  53. 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
  54. 177 お疲れさまでした!以上でハンズオントレーニングは終了です!! いかがでしたでしょうか?Ansible Towerを使うことにより、以下の ようなことがお分かりいただけたのではないかと存じます。 ・容易なマルチテナント(複数組織)管理 ・プレイブックの抽象化と Github と連携したプレイブックのバー ジョン管理とバージョン含めた実行ログ管理

    ・インベントリや認証情報などオブジェクト毎の細かい権限の設定 と組織越えも可能な柔軟な権限委譲の仕組み ・ワークフローによる容易なテンプレートの再利用 ・モジュールを使った他システムの管理 まとめ 是非 Ansible Tower ご利用ください!!