ESXi 6.7 を立てまして、RHEL 7.6 を5台インストールしました。これを Ansible からいじってみます。
まずはインベントリの取得から。
https://github.com/ansible/ansible/blob/devel/contrib/inventory/vmware_inventory.py
を使ってみました。vmware_inventory.py と vmware_inventory.ini を取得してきます。
vmware_inventory.ini を編集して設定します。このように作ってみました。
[sugimura@iMac esxi]$ grep -v "^#" vmware_inventory.ini | grep -v "^$"
[vmware]
server=192.168.0.3
username=root
password=xxxx
validate_certs = False
cache_max_age = 0
max_object_level=5
skip_keys = declaredalarmstate,disabledmethod,dynamicproperty,dynamictype,environmentbrowser,managedby,parent,childtype,resourceconfig,resourcepool,permission,storage,configissue,parentvapp,recenttask,availablefield,datastore,summary,overallstatus,triggeredalarmstate,network,capability,guestheartbeatstatus,layout,effectiverole,rootsnapshot,configstatus,value,snapshot,layoutex
alias_pattern={{ config.name }}
host_pattern={{ guest.ipaddress }}
groupby_patterns={{ guest.guestid }},{{ 'templates' if config.template else 'guests'}}
[properties]
prop01=name
prop02=config.name
prop03=guest.hostName
prop04=guest.ipAddress
prop05=guest.nic
prop06=guest.guestId
実行してみます。かなり大きな JSON が返ってきました。いまの ESXi には RHEL7 や RHEL8beta、Kali Linux が入っています。
[sugimura@iMac esxi]$ python vmware_inventory.py
{
"None": {
"hosts": [
"Kali Linux",
"RHEL7.6",
"RHEL8beta"
]
},
"_meta": {
"hostvars": {
"Kali Linux": {
"name": "Kali Linux",
"ansible_ssh_host": "None",
...
"RHEL7.6D",
"RHEL7.6E"
]
},
"rhel8_64Guest": {
"hosts": [
"RHEL8betaB",
"RHEL8betaE",
"RHEL8betaC",
"RHEL8betaD",
"RHEL8betaA"
]
}
}
vmware-inventory コマンドを使って、ダイナミックインベントリとして読めることを確認します。–graph か –list を指定すると、インベントリとして読み取った結果を表示することができます。グループ分けもされていることがわかります。
[sugimura@iMac esxi]$ ansible-inventory -i vmware_inventory.py --graph
@all:
|--@None:
| |--Kali Linux
| |--RHEL7.6
| |--RHEL8beta
|--@guests:
| |--Kali Linux
| |--RHEL7.6
| |--RHEL7.6A
| |--RHEL7.6B
| |--RHEL7.6C
| |--RHEL7.6D
| |--RHEL7.6E
| |--RHEL8beta
| |--RHEL8betaA
| |--RHEL8betaB
| |--RHEL8betaC
| |--RHEL8betaD
| |--RHEL8betaE
|--@rhel7_64Guest:
| |--RHEL7.6A
| |--RHEL7.6B
| |--RHEL7.6C
| |--RHEL7.6D
| |--RHEL7.6E
|--@rhel8_64Guest:
| |--RHEL8betaA
| |--RHEL8betaB
| |--RHEL8betaC
| |--RHEL8betaD
| |--RHEL8betaE
|--@ungrouped:
この RHEL7.6 のグループ5台に対して、subscribe して yum update してみる playbook を書いてみました。
---
- hosts: rhel7_64Guest
become: true
become_method: sudo
tasks:
- name: subscribe
redhat_subscription:
state: present
username: xxxx
password: xxxx
auto_attach: true
- name: yum update
yum: name=* state=latest
実行してみます。
[sugimura@iMac esxi]$ ansible-playbook -i vmware_inventory.py yum_update.yml -k -K
SSH password:
SUDO password[defaults to SSH password]:
PLAY [rhel7_64Guest] ***************************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************************************
ok: [RHEL7.6D]
ok: [RHEL7.6C]
ok: [RHEL7.6E]
ok: [RHEL7.6A]
ok: [RHEL7.6B]
TASK [subscribe] *******************************************************************************************************************************
changed: [RHEL7.6B]
changed: [RHEL7.6A]
changed: [RHEL7.6E]
changed: [RHEL7.6D]
changed: [RHEL7.6C]
TASK [yum update] ******************************************************************************************************************************
changed: [RHEL7.6C]
changed: [RHEL7.6A]
changed: [RHEL7.6B]
changed: [RHEL7.6D]
changed: [RHEL7.6E]
PLAY RECAP *************************************************************************************************************************************
RHEL7.6A : ok=3 changed=2 unreachable=0 failed=0
RHEL7.6B : ok=3 changed=2 unreachable=0 failed=0
RHEL7.6C : ok=3 changed=2 unreachable=0 failed=0
RHEL7.6D : ok=3 changed=2 unreachable=0 failed=0
RHEL7.6E : ok=3 changed=2 unreachable=0 failed=0
無事処理できました。ログインして確認してみます。
[root@rhel7a sugimura]# yum history
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
ID | ログイン ユーザー | 日時 | 操作 | 変更
-------------------------------------------------------------------------------
3 | sugimura <sugimura> | 2019-04-28 09:33 | I, U | 70
2 | sugimura <sugimura> | 2019-04-28 09:32 | Install | 3
1 | システム <未設定> | 2019-04-27 19:49 | Install | 352
history list
[root@rhel7a sugimura]# subscription-manager list
+-------------------------------------------+
インストール済み製品のステータス
+-------------------------------------------+
製品名: Red Hat Enterprise Linux Server
製品 ID: 69
バージョン: 7.6
アーキテクチャー: x86_64
状態: サブスクライブ済み
状態の詳細:
開始: 2018年09月19日
終了: 2019年09月19日
いい感じですね!