More Related Content
Similar to Ansible tower 構築方法と使い方 with VMware モジュール Rev2.2 (20)
Ansible tower 構築方法と使い方 with VMware モジュール Rev2.2
- 3. この資料はAnsible Tower の導入から Ansible Tower でのプレイブッ
クの実行、権限管理など、Ansible Towerの使い方、さらには VMware
モジュールを利用した、vSphere 6.5 の環境の自動化についてハンズオ
ンで学んで頂くことを目的としています。vSphere 6.5の環境 (vCenter
Server / ESXi ホスト)については、既にあるものを利用することを前提
としているためセットアップ方法は含まれません。また、VMware に関
する用語や機能の説明等も含まれません。Ansible Tower の使い方に
フォーカスした資料ですので、構築に関しては簡単な記述にとどめてお
ります。ご了承ください。
3
前提条件
- 5. OS
・Red Hat Enterprise Linux 7.2 or later(64-bit)
・CentOS 7.2 or later(64-bit)
・Ubuntu 14.04 LTS(64-bit)
・Ubuntu 16.01 LTS(64-bit)
スペック(抜粋)
・CPU: 2CPU / 20 forks* 推奨 (デフォルト設定は 5)
・メモリ:2GB 以上 ( 4GB / 100 forks )
・ディスク容量:/var/に 20 GB の内の 10 GB 以上の空き領域 など
Ansible : version 2.2 以降
5
インストール要件 - Ansible Tower 3.2.2
http://docs.ansible.com/ansible-tower/latest/html/installandreference/requirements_refguide.html
その他 Disk IOPS やブラウザの条件等、詳しくはこちらをご確認ください
*Forks とは?: リモートホストとの通信の際生成する並列プロセス数(詳細は下記参照)
http://docs.ansible.com/ansible/latest/intro_configuration.html#forks
- 7. リポジトリの登録 など
# 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-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.sh7
インストール① 事前準備とAnsibleのインストール
インストーラー設定ファイルに
パスワードを記述
Ansible Tower インストール!
Ansible Tower をインストールする端末への操作です
- 11. 4. 再度 Ansible Tower にブラウザでアクセスし、参照をクリック。
入手したライセンスファイルを選択、使用許諾にチェックして、送信をクリックします。
https://<Ansigle Tower IP Address>/
11
インストール② Ansible Towerライセンス適応
以上でインストールは
完了です!!
- 13. 13
Ansible Tower - サンプルジョブの実行
サンプルジョブを実行する前に、SSH で Towerに接続し、Playbook
が存在しないことを確認しておきます。
Tower 内のPlaybookの置き場は、/var/lib/awx/projects/ です。
後で確認しますが、Project 毎のディレクトリ構造となっています。
現状”空”です
- 15. 15
Ansible Tower - サンプルジョブの実行
Demo Project クリック。github のサンプルが指定されています
中身は、Hello World! を表示するだけのものです。
ansible-tower-samの中身
- 18. 18
Ansible Tower - サンプルジョブの実行
Gitを使った場合、実行したプレイブックのリビジョン情報が確認可能です。
ダウンロード元の Githubとリビジョン番号が同じであることを確認します。
https://github.com/ansible/ansible-tower-samples/commits/master/hello_world.yml
- 19. 19
Ansible Tower - サンプルジョブの実行
再度 SSH でTower に接続し、/var/lib/awx/projects/ を確認します。
Jobを実行したことにより、以下が実施されたことが分かります。
・サンプルプロジェクト用のディレクトリの作成
・hello_world.yml のダウンロード
- 21. Ansible Tower を理解する - 階層構造の把握!!
21
Ansible Tower を理解するためにはまず階層構造を把握しておくと良い。
Ansibleの階層構造。一番上の概念はOrganizationです。
- 24. プレイブック実行までの道のり
24
1. プレイブックの作成
プレイブックは Ansible Tower から直接作成できません。別途作成するか、Gitや
Subversionなどからプレイブックを取得します。今回はプレイブックを作成します。
2. プロジェクト作成
プレイブックの取得場所 (Local / Github) を指定します。
3. インベントリの作成
管理するホストを登録します。
4. ホストの認証情報の作成
管理するホストの認証情報を設定します。
5. ジョブテンプレートの作成
2.プレイブックと、3.インベントリと、4ホスト認証情報を紐づけます。
6. ジョブの実行
テンプレートを実行します!!
- 25. プレイブック作成 – sl のインストール
25
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 もインストールしています。
- 26. プレイブック作成 – Githubから取得
26
1-2. プレイブックの作成(Githubからのダウンロード)
Githubからの取得(前セクションでサンプルジョブ実行!)
プレイブックをGithubなどから取得することも可能です。
例えば、既存の“Demo Project”では、あらかじめ、SCM URLとして、
https://github.com/ansible/ansible-tower-samples が指定されています。
ジョブ実行の際は、githubからローカルにymlファイルがダウンロードされます。
- 44. ジョブ実行 – 確認
44
Tower に ssh 接続、sl を実行すると、確かにインストールされて
いることが分かります。
# ssh root@<Ansible Tower IP Address>
# sl
- 77. Ansible モジュール - 概要
77
Ansibleには様々な機器、ソフトウェア、クラウドと連携するための仕
組みがモジュールという形で提供されています。モジュールは、
Ansible と管理対象ノードとのやり取りを仲介する役割を果たします。
モジュールの一覧はこちらにあります。
http://docs.ansible.com/ansible/latest/modules_by_category.html
今回はこの中で、VMware モジュールを使って vSphere 環境の自動化
を行ってみます。
- 78. Ansible VMware モジュール
78
VMware モジュールは、こちらにあります。(2017年12月28日現在:32個)
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 が持つ、データセンターオブジェクト
の操作が可能となるのですが、次項の様な情報があります。
- 81. Ansible モジュール - winrm 用
81
VMwareモジュールとは関係ありませんが、後ほど PowerCLIのリモート実行に
winrmを利用します。以下実行し、pip とwinrmをインストールしておきます。
# curl -O https://bootstrap.pypa.io/get-pip.py
# python get-pip.py
# pyp install pywinrm
- 82. Ansible VMware モジュール - 実施内容
82
では実際にVMware モジュールを使って以下のような自動化を行ってみましょう!
1.データーセンター及びクラスターの作成・削除
2.ESXi ホストの vCenter Serverへの追加・削除
3.ESXi ホストの設定
3-1.標準仮想スイッチの作成と NIC のアサイン
3-2.vmkernel ポートの作成と vMotion の有効化
3-3.ESXi ホストへの NFS データストアのマウント(PowerCLI利用)
4.テンプレートからのRHEL仮想マシンのデプロイ
5.httpd インストール、FW設定(80ポート解放)、httpdサービス起動・有効化
- 83. Ansible モジュール - DC/CLの作成
83
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 よりダウンロードも可能
- 84. Ansible モジュール - DC/CLの作成
84
プレイブックの中身をもう少し詳しく見ていきます。
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}}"
- 85. Ansible モジュール - DC/CLの作成
85
https://<Ansible Tower IP>/ でAnsible Tower にログインします。
ユーザー名:admin
パスワード:redhat
- 93. 93
Ansible モジュール - DC/CLの作成
名前:TowerSSH、Type:Machineを選択し、Towerへの SSH ユーザー名とパ
スワードを入力の上、保存をクリック
- 94. 94
Ansible モジュール - DC/CLの作成
もう一つ、vCenter Serverの認証情報も作成しておきます。
こちらは後ほどインベントリ情報を取得するために利用します。
名前:vCenter-Cre、Type:VMware vCenterを選択し、vCenterServerへの接
続情報(IPアドレス、ユーザー名、パスワード)を入力します。
- 95. 95
Ansible モジュール - DC/CLの作成
以下を参照の上、名前、インベントリー、プロジェクト、Playbook、認証情報
を入力し、保存をクリックさらに、SURVEYの編集をクリックします
- 96. 96
Ansible モジュール - DC/CLの作成
SURVEYでは、プレイブックに存在する変数への値の入力を行う機能を提供し
ます。作成したプレイブックを vim で開きつつハンズオンを進めるとより理解
が深まります。以下を参照に入力し、Updateをクリックします。
プロンプト:データセンターの名前を入力します
回答の変数名:dc_name
回答タイプ:Text
DEFAULT ANSWER:DC2
- 97. 97
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}}"
- 98. 98
Ansible モジュール - DC/CLの作成
変数 dc_state これは、データセンターを存在状態にするか否かの設定です。
回答が特定の値を取る場合、説明の所に
取り得る値を書いておくと便利です。
今回の場合は "present" or "absent" で
present : 存在状態にする
absent:存在しない状態にする
です。
- 99. 99
Ansible モジュール - DC/CLの作成
変数 hostname これは、vCenter Server の名前 or IP を定義します
DEFAULT ANSWERには、vCenter
Serverのホスト名もしくはIPアドレスを
入力します。
- 100. 100
Ansible モジュール - DC/CLの作成
変数 username これは、vCenter Server へのログインユーザーです。
DEFAULT ANSWERには、vCenter
Server ログインするユーザー名を記述
します。
例)administrator@vsphere.local
- 101. 101
Ansible モジュール - DC/CLの作成
変数 password これは、前項ユーザーのパスワードを入力し、保存をクリック
します。テンプレート作成画面に戻るので、もう一度保存をクリックします。
回答タイプに Password を選択すると、
DEFAULT ANSWERに入力した文字が、
隠し文字となります。
- 103. 103
Ansible モジュール - DC/CLの作成
デフォルト値が入力されていることを確認し、LAUNCHをクリック!!
*vCenter Serverの名前と、ユーザー名の入力値は消してあります。ご了承ください。
- 105. Ansible モジュール - DC/CLの作成
105
既存のデータセンター配下にクラスターを作成するプレイブックを作成します。
変数の取りうる値(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 よりダウンロードも可能
- 107. Ansible モジュール - DC/CLの作成
107
SURVEYは下記参照
Datacenterの例を参考にして、Survey
を完成させてください。
左の他に、vCenter Server 名、ユー
ザー名、パスワードの指定があります。
実行して、データセンター配下にクラス
ターが作成されることを確認します。
- 108. Ansible モジュール - ESXiホストの構成の自動化
108
次に以下に示す ESXi ホストへの各種設定を行ってみます。
・ESXi ホストの vCenter Server への登録
・標準仮想スイッチの作成と NIC のアサイン
・vmkernelポートの作成(vMotion 有効化)
・ESXi ホストへの NFS データストアのマウント
※以降のスライドでは、モジュールの具体的な説明(オプションの記述方法の確認)や、ジョブテ
ンプレート作成方法、Surveyの具体的な記述方法など、一部記載を省略しています。具体的な記述
方法については、前項までの内容及び、各モジュール内に記載の説明をご確認の上進めてください。
- 109. ESXi ホストの設定 - vCenter Server への登録
109
利用モジュール: 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は必要情報を適宜入力ください
ジョブテンプレート
も作成ください!!
- 110. ESXi ホストの設定 - 標準仮想スイッチの作成
110
利用モジュール: 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
ジョブテンプレート
も作成ください!!
- 111. ESXi ホストの設定 - vmkernel ポートの作成
111
利用モジュール: vmware_vswitch
http://docs.ansible.com/ansible/latest/vmware_vmkernel_module.html
プレイブック:t-manageVMKernel.yml
https://github.com/coral-reaf/vmwareより入手可能 - hosts: 127.0.0.1
tasks:
- name: vmkernel Config
local_action:
module: vmware_vmkernel
hostname: "{{esxi_host}}"
username: "{{esx_user}}"
password: "{{esx_password}}"
validate_certs: False
vswitch_name: "{{vss_name}}"
portgroup_name: "{{pg_name}}"
vlan_id: "{{vlan_id}}"
ip_address: "{{ip_address}}"
subnet_mask: "{{subnet}}"
enable_vmotion: "{{vmotion}}"
enable_ft: "{{ft}}"
enable_mgmt: "{{mgmt}}"
enable_vsan: "{{vsan}}"
t-manageVMKernel.yml
vmkernel 情報の入力
名前、IP アドレス、サブネット、
各種サービスの有効化の有無
(vMotion / FT など)
Towerのジョブテンプレート
・インベントリー:vCenter
・認証情報:TowerSSH
※Surveyは必要情報を適宜入力ください
enable_vmotion: yes
...etc
ジョブテンプレート
も作成ください!!
- 112. ESXi ホストの設定 - NFS データストアのマウント
112
残念ながら2018年1月中旬現在 ESXi データストアを自動化するモジュールは
提供されていません。そこで、NFS マウント自体はVMware PowerCLI で実
現し、そのPowerCLIをプレイブックから実行することでNFSマウント操作を
行います。モジュールがない場合はこの様な連携が可能です。動きは以下の通
りです。
PowerCLI 実行ホストAnsible Tower
vCenter Server
winrm
PowerCLI・PowerCLI実行ホストへの認証情報
・SSHではなく winrm接続すること
をインベントリに記載
vCenterServer
への認証情報
*.ps1 *.batPlaybook Inventory
winrmによりリモート実行
※VMware PowerCLIに関する説明やインストール方法に関する説明はここでは行いません、ご了承ください
- 113. NFS データストアのマウント - プレイブック作成
113
利用モジュール: win_psexec
http://docs.ansible.com/ansible/latest/win_psexec_module.html
プレイブック:t-mount-nfs.yml
https://github.com/coral-reaf/vmwareより入手可能
- hosts: all
gather_facts: no
tasks:
- name: Execute Command on Windwos Host
win_psexec:
command: "{{command}}"
t-mount-nfs.yml
Windows 環境でリモートコマンドを
実行する win_psexecを利用します。
コマンドは変数 (Survey) 入力します。
手順は以下の通りです。
・モジュール利用のプレイブックの作成
・PowerCLIホストに接続するためのインベントリーの作成(winrm記述含む)
・PowerCLIスクリプトの作成
・winrm接続するための認証情報の作成
- 114. NFS データストアのマウント - インベントリー作成
114
リモートでWindowsサーバーを操作するためのインベントリーをTower上に作
成します。ssh ではなく、winrm 接続となりますのでその旨記載します。
「ホストの作成」で
PowerCLIを実行するホ
スト名を入力します。
今回は vCenter Server
(Windows版)と PowerCLI 実行ホ
ストが同一であることを想定して
いますが、両者が同一ホストであ
る必要はありません。
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
ansible_port: 5986
変数に以下を入力します
- 115. NFS データストアのマウント - PowerCLIスクリプト作成
115
PowerCLIを実行するホストに以下の二つのファイルを作成し、PowerCLIホスト上
の特定のホルダに置きます。(パスとファイルは後ほどSurveyで指定します)
1.mount_nfs.ps1
# VMware Automation Core Module の追加
import-module VMware.VimAutomation.Core
# vCenter Server にログイン
Connect-VIServer <vCenterIP> -user <User> -password <Password>
# NFSマウント
New-Datastore -nfs -vmhost <ESXi_IP> -name NFS -path <NFS_Path> -nfshost <nfs_serverIP>
2.mount_nfs.bat
@echo off
C:¥Windows¥System32¥WindowsPowerShell¥v1.0¥powershell.exe <file_path>¥mount_nfs.ps1
< >の部分はご自身の環境に合うものを入力ください
mount_nfs.batを実行して nfsデータストアが
マウントされることを確認しておきます。
※二つのファイルは以下からダウンロードも可能です。
https://github.com/coral-reaf/vmware
- 127. Ansible モジュール - 仮想マシンの作成と設定
127
次に以下に示す仮想マシンの作成に関する自動化を行ってみます。
・テンプレートからのRHEL仮想マシンのデプロイ
同時に、VMware Toolsを使ってIP、ホスト名などをカスタマイズします
・仮想マシンが起動するまで待ちます(VMwareToolsの応答を待つ)
・httpd インストール、FW設定(80/443の解放)、httpdサービス起動・有効化
※このハンズオンではあらかじめ、VMware toolsインストール済みの、RHEL7.xの仮想マシンテ
ンプレートを準備の上進めてください。名前はプレイブックで指定可能ですが、ここでは
"RHEL74-Temp"を想定しています。仮想マシンの作成方法等は割愛しています、ご了承ください。
仮想マシンの起動確認にVMwareToolsの応答を利用していますが、厳密には
ssh接続が可能になるタイミングとは異なるため、後述するtools応答のプレイ
ブックではVMwareToolsの応答確認後、Delayを置いています。環境によって
最適値があると思います。このあたりも色々確認してみて下さい♬
- 128. Ansible モジュール - 仮想マシンの作成
128
利用モジュール: 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
・認証情報:TowerSSH
- 129. Ansible モジュール - プレイブックの説明
129
今回はテンプレートからのデプロイということで、デプロイする仮想マシンの数を、
最終行、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、ネット
ワーク名)などには、環境に応じた値をプレイブック内に記述ください
ジョブテンプレートも作成ください!!
- 130. Ansible モジュール- VMware Tools の応答を待つ
130
利用モジュール: vmware_guest
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: 120
t-wait-tools-mod.yml
Towerのジョブテンプレート
・インベントリー:vCenter
・認証情報:TowerSSH
※Surveyは必要情報を適宜入力ください
nameに関しては、前項の仮想マシン名に合わせてください
{{item}}は繰り返し数が自動入力されます。(前頁参照)
最終行でdelayを入れているのは、vmwartoolsの返答を返すタイミン
グと、ssh接続が可能になる(次頁でhttpdのインストールを行うため
必要)タイミングのずれを修正するためのものです。
ジョブテンプレートも作成ください!!
- 131. Ansible モジュール - httpdのインストールと設定
131
仮想マシンのデプロイ、Toolsの応答待ちは、VMwareモジュールで対応でき
ましたが、ここからは、仮想マシンOSへのアクセスとなりますのでインベン
トリ情報の取得がキーとなります。方法は以下の通りいくつかあります。
1. 固定IPでアクセス
2. ホスト名とIPアドレスをDNS登録して、ホスト名でアクセス
3. vCenter Server のインベントリ情報を取得してアクセス
今回は3の方法を利用してみます。
- 132. Ansible モジュール - httpdのインストールと設定
132
vCenter Server が持つ、仮想マシンインベントリ情報取得のため、Tower上
に、以下の様なインベントリーを作成します。
「インベントリー」 → 「追加」(インベントリーを選択)
名前:httpd インストールホスト を入力し、保存をクリックします。
- 133. Ansible モジュール - httpdのインストールと設定
133
さらに、「ソース」→ 「追加」をクリックし以下を入力します。
名前:vcenter、認証情報:vCenter-Cre、ソース:VMware vCenter
オプション:上書き、変数の上書き、起動時の更新全てチェック✔
- 134. Ansible モジュール - httpdのインストールと設定
134
「同期プロセスの開始」ボタンをクリックし、Error無く同期が完了すること
を確認します。保存すればインベントリ作成は完了です。
- 135. Ansible モジュール - httpdのインストールと設定
135
利用モジュール: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
- 136. Ansible モジュール - httpdのインストールと設定
136
以下を参照し、ジョブテンプレートを作成します。インベントリーは先ほど作
成した、httpd インストールホストを利用します。(プロジェクトは必要に応
じ、事前に作成の上実施ください)
- 137. Ansible モジュール - httpdのインストールと設定
137
「仮想マシンのデプロイ」→「VMware Toolsの応答を待つ」→「httpdのイ
ンストール、FWの設定、デーモンの有効化」のワークフローを作成します。
Surveyも追加の上、ワークフローを保存し実行してみます。