ESXi 上の RHEL7 をいじる

  •  
  •  
  •  

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日

いい感じですね!