HCIBench の利用方法を模索しているなかで Ansible による設定自動化をこころみたので
アイデアを残しておこうと思います。
HCIBench は、仮想アプライアンスをデプロイしたあとに、Web UI からテスト対象の設定をしたり
内部で利用している vdbench のパラメータファイルを用意したりする必要があります。
HCIBench のデプロイについては
以前に PowerCLI で OVA をデプロイするアイデアを投稿したのでこちらもどうぞ。
HCIBench の OVA を PowerCLI でデプロイする。
デプロイ後の設定は、設定ファイルを直接編集することができます。
HCIBench の仮想アプライアンスの Photon OS にログインすると、
下記のようなファイルが配置されています。
- 設定内容は適当なので、ここでは雰囲気をお伝えできればと・・・
- 一度 Web UI で設定を完了すると、よい perf-conf.yaml のテンプレートが取得できると思います。
root@photon-HCIBench [ ~ ]# cat /opt/automation/conf/perf-conf.yaml
vc: 'vc-sv01.go-lab.jp'
vc_username: 'hci-bench-connect'
vc_password: 'パスワード'
datacenter_name: 'dc01'
cluster_name: 'vsan-cluster-01'
network_name: 'dvpg-vds01-vlan-1012'
static_enabled: true
reuse_vm: false
datastore_name:
- 'vsanDatastore-01'
deploy_on_hosts: false
hosts:
host_username:
host_password:
easy_run: false
clear_cache: false
number_vm: 2
number_data_disk: 2
size_data_disk: 10
self_defined_param_file_path: '/opt/tmp/tmp20180210190537'
output_path: 'Test_vsanDatastore-01_take01'
warm_up_disk_before_testing: 'NONE'
testing_duration:
cleanup_vm: false
このファイルの設定などを、Ansible に置き換えてみます。
Ansible 実行環境の準備。
私の自宅ラボでは、Linux に Ansible の環境を用意しています。
[gowatana@client01 ~]$ cat /etc/oracle-release
Oracle Linux Server release 7.4
[gowatana@client01 ~]$ ansible --version
ansible 2.3.1.0
config file = /home/gowatana/.ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.5 (default, May 29 2017, 20:42:36) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
Ansible の Playbook の管理には、Git(GitHub の)を利用しています。
実際に利用しているものは荒れているので非公開にしていますが、下記のような感じのものです。
GitHub - gowatana/hci-bench-config-sample
ある程度の環境設定(vCenter の接続情報など)をもったブランチ(ここでは master を利用)
を用意して、テストごとにそこからさらにブランチを作成して利用しています。
[gowatana@client01 hci-bench-config]$ git branch
ha-cluster-03-nvme
ha-cluster-03-ssd
ha-cluster-04-ssd-02
* master
vsan-cluster-01
vsan-cluster-02
vsan-cluster-03_case-002
Ansaible で利用する Playbook やソフトウェアは、下記のように配置しています。
- files/vdbench-param-files ディレクトリ配下に、vdbench のパラメータファイルを作成して配置します。
- files/conf/perf-conf.yaml.j2 が、HCIBench の perf-conf.yaml のテンプレートになります。
- oracle/ ディレクトリ配下には、vdbench のバイナリ(vdbench~.zip)を ORACLE のサイトからダウンロードして配置します。
ORACLE の vdbench のバイナリも Playbook で配布しますが、Git のリポジトリからは除外しています。
(ライセンスの都合上) - vars/vsphere.yml には、vCenter への接続情報などを記載しています。
今回は HCIBench むけに hci-bench-connect というユーザを用意しています。 - vCenter 接続用のパスワードは別に、vars/vault/pass_hci-bench-connect.yml に記載しています。
- これらの変更したら、ディレクトリ直下にある setup.yml を編集します。
この YAML ファイルを ansible-playbook コマンドで指定します。
[gowatana@client01 hci-bench-config-sample]$ LANG=C tree
.
|-- README.md
|-- files
| |-- conf
| | `-- perf-conf.yaml.j2
| `-- vdbench-param-files
| |-- vdb-case-101
| `-- vdb-case-102
|-- hosts
|-- oracle
| |-- README
| `-- vdbench50406.zip
|-- setup.yml
`-- vars
|-- vault
| |-- README.md
| `-- pass_hci-bench-connect.yml
`-- vsphere.yml
6 directories, 11 files
vars/vsphere.yml の内容は下記だけです。
[gowatana@client01 hci-bench-config-sample]$ cat vars/vsphere.yml
---
vc_address: vc-sv01.go-lab.jp
vc_user: hci-bench-connect
vCenter 接続用のパスワードの管理には、下記のように Ansible Vault を使用しています。
ふぃあるを編集する場合は、view ではなく「ansible-vault edit ~」といったコマンドラインになります。
[gowatana@client01 hci-bench-config-sample]$ ansible-vault view vars/vault/pass_hci-bench-connect.yml
Vault password: ★このYAMLファイルを作成した時のパスワードを入力
---
password: (パスワードを記載しておく)
vdbench のパラメータファイル のサンプル(vdb-case-101 など)も、
とりあえず HCIBench が動作するか確認するためだけに配置してあるので
一瞬で終了する適当なテスト パラメータになっています。
HCIBench 設定の実行イメージ。
Ansible での接続のために、HCIBench に SSH 公開鍵をコピーしておきます。
[gowatana@client01 ~]$ ssh-copy-id root@hci-bench02.go-lab.jp
接続確認です。
[gowatana@client01 ~]$ ansible -i hosts -u root -m ping hci-bench02.go-lab.jp
hci-bench02.go-lab.jp | SUCCESS => {
"changed": false,
"ping": "pong"
}
[gowatana@client01 ~]$
Anaible 実行にかかわるファイルを配置します。
今回は、サンプルを GitHub をダウンロード(git clone)しています。
[gowatana@client01 ~]$ git clone https://github.com/gowatana/hci-bench-config-sample.git
[gowatana@client01 ~]$ cd hci-bench-config-sample/
新しいテスト実施の準備としてブランチを作成します。
[gowatana@client01 hci-bench-config-sample]$ git checkout -b vsan-cluster-01_case-101
Switched to a new branch 'vsan-cluster-01_case-101'
設定編集、パラメータファイルの追加、編集などを実施します。
vCenter のログインパスワードを指定するファイルも追加します。
vdbench ソフトウェアの zip ファイル、パラメータファイルなども配置します。
(ここでは、これらの手順記載は省略しています)
Ansible のインベントリ ファイルに HCIBench 仮想アプライアンスのホストを記載しておきます。
[gowatana@client01 hci-bench-config-sample]$ cat hosts
hci-bench02.go-lab.jp
HCIBench の設定ファイルなどを編集します。
最初のうちは Web UI で生成された perf-conf.yaml を scp などで取得して
それをもとに修正したほうがうまくいきます。
そして 適宜、git でファイル管理しておきます。
[gowatana@client01 hci-bench-config-sample]$ vi files/conf/perf-conf.yaml.j2
[gowatana@client01 hci-bench-config-sample]$ git add files/conf/perf-conf.yaml.j2
[gowatana@client01 hci-bench-config-sample]$ git commit -m "set test parameters."
[gowatana@client01 hci-bench-config-sample]$ git push origin vsan-cluster-01_case-101
下記のように、パラメータを変更していきます。
他にも VM 数、ディスク数、時間などを変更したり、 vdbench のパラメータ ファイルを追加、編集したりします。
https://github.com/gowatana/hci-bench-config-sample/commit/635d691963b02417a53d07b288c85d99afc0b023
それでは、HCIBench を設定します。
ここでは「--ask-vault-pass」をつけて、Ansible Vault のパスワードを入力します。
[gowatana@client01 hci-bench-config-sample]$ ansible-playbook -i hosts --ask-vault-pass setup.yml
実行の様子は下記のような感じです。
HCIBench の Web UI にログインすると、すでに設定されている状態になります。
ただし、vdbench のパラメータ ファイルを複数指定していると、Web UI でも選択が必要です。
また、設定ファイルがうまく記載できていないと、デフォルト値や空欄の箇所があったりします。
テストを実行する前に「Save Configuration」と「Validate」をクリックしておきます。
ここで、何か不足があったら コンフィグを修正して、再び ansible-playbook で修正します。
(状況によっては、Web UI で直接変更して、あとで Playbook に反映でも・・・)
その都度、Web ブラウザは更新したほうがよさそうです。
「Test」でテストを開始します。
ファイルの編集個所やファイル管理の手順を精査することで
ベンチマーク テストの効率や安定性を向上させられるのではないかと考えられます。
また vSAN 環境ではクラスタあたりのデータストアが 1つに限定されていたりと構成に特徴があるので、
変数の管理にも、さらに工夫ができそうな気がします。
まだ試行錯誤の途中なので、ひきつづき工夫していきたいと思います。
以上、HCIBench の設定に Ansible を取り入れてみる話でした。