【図解】初めてのAnsibleからVMware ESXiを操作する
概要
AnsibleからVMwareを操作する手順を残したいと思います。
背景
社内ではVMware ESXi(無償ライセンス)を検証環境として常用しているが、環境作成が都度手動だったので、Ansibleで自動構築できるように検証しました。
ただし、残念なことに無償ライセンスではAPI経由(Ansible経由)で仮想マシンの作成、更新などの操作(※参照は可能)を行うことができません。有償もしくは評価ライセンスであれば以下の構成で一連の操作は実現可能です。また、VMUG Advantageに加入することで、非商用利用であれば$200/年でライセンスを取得できますので、上記のような社内テスト専用環境にはピッタリです。
前提条件
- Ansibleが使える
- VMwareで仮想マシンを作ったことがある
- Windows環境
構成図
AnsibleなどのAPI経由からVMware ESXiを操作するためには、vCenterを経由する必要があります。EXSiのライセンスによっては直接ESXiを操作できるらしいが、今回はベターにvCenter経由で構成しました。
なお、筐体の都合上vCenterをVMware Workstation上に載せていますが、筐体に余裕があれば、完全独立した筐体で構成して頂いても問題ありません。
ちなみにvCenterは何かというと複数のVMware ESXiなどを集中管理するためのプラットフォームになります。
手順
簡単な流れとして、以下のようになります。
- ESXiをインスコ
- vCenterをインスコ&初期設定
- vCenterにESXiを登録
- Ansibleから操作
※以下の操作でMy VMwareからISOファイルを取得することになりますが、ブラウザによっては「Content Not Available」と表示され、ダウンロードできないこと(拡張機能と干渉しているのかも)がありますので、Chromeのシークレットモードでアクセスすると問題なくダウンロードできるようになります。
重要
下記ではESXiやvCenterなどには便利上IPで接続していますが、FQDNで接続することをお勧めします。
DHCPでIPが変わっても正常に動作できるようになります。
1. VMware ESXi(vSphere Hypervisor)のインストール
- インストール用のISOファイルを取得するためにはMy VMwareのアカウントが必要になりますので、アカウントの登録またはログインします。
- ダウンロードセンター(ログイン後にリンク)からVMware vSphere Hypervisor (ESXi)をダウンロードします。
- ダウンロードしたISOファイルをCD/DVDに焼くかブート可能なUSBメモリを作成します。
- VMware ESXiのインストールし、IP、DNS設定などを済ます。
2. VMware vCenter Server Appliance(以下VCSAとする)のインストール
※今回の構成はVCSAをVMware Workstationに載せていますが、Workstationの導入手順は割愛します。
※VMware ESXiにインストールする場合も基本同じ手順になりますので、適宜読み替えてください。
※vCenterにはいくつかのライセンス体系?があるようです。公式の仮想マシンを用いるタイプは仮想アプライアンスと呼ばれています。
ライセンスも異なるようなのですが、まだ理解できていないので割愛します。
- 同じくMy VMwareからVMware-VCSA-all-6.7.0-xxxx.isoを取得します。
- iso内の
\DVD\vcsa\VMware-vCenter-Server-Appliance-6.7.0.xxxxx-xxxxx_OVF10.ova
を抽出します。
Windows 10であればツールを使わずにISOファイルを展開できるので、そのままドラッグ&ドロップで抽出できます。 前述で抽出したovaを元にVCSA用の仮想マシンを作成します。
※isoファイル内の\DVD\vcsa-ui-installer\win32\installer.exe
でESXiに直接インストールすることもできます。
ただし、インストール先の性能要件の確認があり、それに満たしていない場合はインストールできません。
なお、下記のようにovaから作成する場合は性能に満たしていなくてもインストールできます。
vCenterのインストールが始まりますので、しばらくお待ちください。。。
IP(IPv6を無効)とDNSを設定し、ポート5480が表示されたら完了です。
※英語キーボードになっているので、記号の入力はご注意を!
VCSAの設定
表示されたURLにアクセスし、VCSAを設定していきます。
DNSがなくてもhttps://IPアドレス:5480
でアクセスできます。
アクセスできない場合は、仮想マシンのネットワークアダプタの設定(ブリッジのアダプタ)を見直してください。
3. vCenterにVMware ESXiを登録
VMware ESXiに無償ライセンスを適用している場合は、評価ライセンスもしくは有償ライセンスに変更してください。
無償ライセンスでは連携ができません。
VMware ESXi Clientと同じくWebブラウザからコンソールにアクセスすることができます。
※ポート5480は必要ないのでご注意ください!
なお、仮想アプライアンスそのものの設定を変更したい場合は、:5480
でアクセスして設定変更してください。
SSO設定時に設定したadministratorのPWとドメイン名でログインします。
評価ライセンスを適用している場合は、画像内上部のようにライセンス期限切れに関するメッセージが表示されますが、検証中なのでそのまま無視で問題ありません。
vCenterで管理対象を論理的に束ねるためにデータセンターを作成する必要があります。
データセンター名は「DC1」とします。
Ansibleから操作
手持ちにAnsibleの実行環境があれば、そのままお使いください。
なければDockerベースですがこちらのコードでAnsibleの実行環境を作成してください。
VSCode Remote-Containersに対応していますので、「Remote-Containers: Reopen Folder in Container」で簡単に起動できます。
起動後下記のvmware.ymlの各種変数(vars:
配下)を環境に合わせ修正し、実行すればCentOSベースの仮想マシンが作成されます。
- hosts: all
gather_facts: false
vars:
# vCenterのIPもしくはFQDN
vcenter_hostname: "192.168.1.69"
# vCenterのユーザ名
vcenter_username: "[email protected]"
# vCenterのPW
vcenter_password: ""
# ESXiのホストIPもしくはFQDN
esxi_hostname: "192.168.1.110"
# 前述で作成したデータセンター名
datacenter_name: "DC1"
# ESXiのデータストア名
datastore_name: "datastore1"
tasks:
- name: Provide information about vCenter
vmware_about_info:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: false
delegate_to: localhost
register: cluster_info
- debug:
var: cluster_info
# メモリ: 2GB
# CPU: 2コア
# ディスクサイズ: 10GB
- name: Create a virtual machine on given ESXi hostname
vmware_guest:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
datacenter: "{{ datacenter_name }}"
validate_certs: no
folder: "/{{ datacenter_name }}/vm/"
name: test_vm_0001
state: poweredon
guest_id: centos64Guest
esxi_hostname: "{{ esxi_hostname }}"
disk:
- size_gb: 10
type: thin
datastore: "{{ datastore_name }}"
hardware:
memory_mb: 2048
num_cpus: 2
scsi: paravirtual
boot_firmware: "bios"
# device type:
# https://docs.vmware.com/jp/VMware-vSphere/7.0/com.vmware.vsphere.vm_admin.doc/GUID-AF9E24A8-2CFA-447B-AC83-35D563119667.html
networks:
- name: VM Network
start_connected: true
device_type: vmxnet3
# ブート時にISOを読み込む場合はISOファイルのパス
# 下記のサンプルは予めESXiのデータストアにアップロードされたISOファイルを用いるものです。
cdrom:
type: iso
iso_path: "[{{ datastore_name }}] iso/CentOS-8.2.2004-x86_64-minimal.iso"
register: deploy_vm
- debug:
var: deploy_vm
> ansible-playbook -i hosts.conf vmware.yml
実行後は以下のようにゲストマシンが作成され、パワーオンになっています。
今回はここまで。
この後のOSの自動インストール、ミドルウェアの導入などはSSH繋げて、CLIで全部やっていくイメージになるかと思います。
こんな感じ「Ansible Tower による VMware vSphere 環境の自動化 Part5 (仮想マシンの作成編)」
参考ページ
Author And Source
この問題について(【図解】初めてのAnsibleからVMware ESXiを操作する), 我々は、より多くの情報をここで見つけました https://qiita.com/comefigo/items/4230445b2af7eae3f107著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .