Ansibleを使用してDellPowerEdgeサーバーにすべてのファームウェアアップデートをインストールする手順ということで、この組み合わせで運用しているケースってあんまりないかもしれませんが、海外のブログで分かりやすく説明されていました。
こちらです。
情報元※機械翻訳
Ansibleを使用してDellPowerEdgeサーバーにすべてのファームウェアアップデートをインストールする
※この機能は、iDRACエンタープライズライセンスでのみ使用できます。
サポートされているサーバーは次のとおりです。
・12Gおよび13GPowerEdgeサーバー:ファームウェアバージョン2.50.50.50以降を搭載したiDRAC7および8
・14G PowerEdgeサーバー:ファームウェアバージョン3.18.18.18以降を搭載したiDRAC 9
デルのサーバーファームウェアを更新する最も簡単な方法をもう一度探している間、私はこの素晴らしいビデオを踏んで、デルの誰かがAnsibleを使用してサーバーのすべてのファームウェアを一度に更新することを示しました。
したがって、それを行う方法についていくつかの調査を行った後、LinuxOut-of-BandマシンのCLIのみを使用してこれを実現するために必要なすべての手順を次に示します。
概要
このガイドでは、Dell EMCリポジトリマネージャーをインストールして、サーバーの更新ファイルを含むリポジトリを作成および保守し、関係情報を含むCatalog.xmlファイルを生成します。次に、これらの更新をNFS共有にエクスポートし、Ansible + Dell EMC OpenManage Ansible Modules(Dell EMC OpenManage Python SDKを内部で使用)を使用してiDRACと通信し、NFS共有からダウンロードされる更新をトリガーします。
前提条件
DellEMCリポジトリマネージャー
デルのWebサイトからDellRepositoryManagerをダウンロードしてインストールする必要があります。.BINファイルとして見つけることができ、実行するだけでインストールできます。デルが述べていない場合でも、Ubuntu/Debianでも動作します。
chmod +x DRMInstaller_3.1.0.468.bin
./DRMInstaller_3.1.0.468.bin
drmコマンドを使用してGUIを起動しようとしたときに次のエラーが発生したため、GUIがすぐに機能しませんでした。
Graphics Device initialization failed for : es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:221)
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:248)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:209)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:695)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$154(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
... 1 more
No toolkit found
libswt-gtk-3-javaこの問題を修正するには、パッケージをインストールする必要がありました。
ただし、この構成では、CLIからすべてを実行しようとするため、実際には問題になりません。
オプション
プラグインは、ファームウェア、連結されたBINファイルなどを含む起動可能なISOを作成するためにインストールできます。次のコマンドを使用して、使用可能なプラグインを一覧表示できます。
drm --list=plugin
Listing Plugins...
Plugin Current Version Latest Version
-------------- -------------- --------------
Dell EMC System Update(BIN) 1.5.3 1.5.3
Dell EMC Bootable ISO Plug-in 902.1 902.1
Dell EMC Server Update Utility x64 Plug-in 782 782
Dell EMC System Update(EXE) 1.5.3 1.5.3
プラグインをインストールするには、次のコマンドを使用できます:drm --update --plugin="Dell EMC System Update(EXE)"。
Dell EMC OpenManage Python SDK
Ansibleモジュールをインストールするには、 Dell EMC OpenManagePythonSDKがシステムにインストールされている必要があります。だからここにそれを行うためのいくつかのステップがあります:
git clone https://github.com/dell/omsdk.git
sudo apt-get install python-pip
cd omsdk
sudo -H pip install -r requirements-python2x.txt # use requirements-python3x.txt if using Python 3
sh build.sh 1.2 345
cd dist
sudo -H pip install omsdk-1.2.345-py2.py3-none-any.whl
最新バージョンをインストールするには、プロジェクトのGitHubページを参照してください
Ansibleモジュール
プレイブックを機能させるには、 Dell-EMC-Ansible-Modules-for-iDRACをインストールする必要があります。
git clone https://github.com/dell/Dell-EMC-Ansible-Modules-for-iDRAC.git
cd Dell-EMC-Ansible-Modules-for-iDRAC
sudo -H python install.py
NFSサーバー
NFS共有は、iDRACが最新のファームウェアバージョンにアクセスし、それらをマシンにインストールするために使用されます。また、iDRACがサーバー構成プロファイルファイルを作成するために使用し、Ansibleがこれらのファイルを変更するために使用します。
外部NFSボリュームを使用できますが、前述の理由により、iDRACからアクセス可能であり、Ansibleを実行するサーバーにローカルにマウントする必要があります。
NFS共有を作成するには、次のように進めることができます。
これはNFSサーバーの完全に安全な構成ではありません。POC専用に使用してください
sudo apt-get install rpcbind nfs-kernel-server
次に、NFS共有用のフォルダーを作成します。
mkdir -p /opt/dell/dellemcrepositorymanager/export
chmod 777 /opt/dell/dellemcrepositorymanager/export
次に、/ etc / exportsファイルを変更して共有を追加します(IPをネットワークからのものに適合させます):
/opt/dell/dellemcrepositorymanager/export 10.220.0.0/25(rw,fsid=0,insecure,no_subtree_check,async)
共有を利用できるようにするには、サービスを再起動する必要があります。
service nfs-kernel-server restart
に変更し、NFSサーバーのIPアドレスと共有名に関する情報を入力した後、、のボタンをTest network connection使用してiDRACからのアクセスを確認できます。MaintenanceSystem UpdateManual UpdateLocation TypeNetwork Share
NFS共有へのDUPのエクスポート
Dellリポジトリマネージャをインストールしたら、リポジトリを使用して設定し、DellEMCアップデートパッケージをNFS共有にエクスポートする必要があります。これは、次のコマンドを使用して実行できます。
まず、リポジトリを作成しましょう。サーバーでフィルタリングしないと、数百ギガバイトがダウンロードされることに注意してください。
$ drm --create --repository=Dell --inputplatformlist="R640,R740xd"
Creating repository Dell
Job Submitted for repository creation
次のコマンドでステータスを確認できます。
drm --repository=Dell --details
Listing version information for: Dell
Version Size Date Created
------- ---- ------------
1.00 5.63 GB 11/23/18 12:24 A.M
ファームウェアは/var/ dell / drm /store/にダウンロードされます
次のコマンドを使用して進行状況を確認できます。
drm --list=job
Listing Jobs...
Name Status Job Type Next Execution date/time Last Execution date/time
---- ------ -------- ------------------------ ------------------------
Download_11/23/2018_11:04 SUCCESS DOWNLOAD COMPONENTS NA 11/23/18 11:11 A.M
Plugin Download- Dell EMC Server Update Utility x64 Plug-in SUCCESS PLUGIN_UPDATE NA 11/23/18 11:12 A.M
Plugin Download- Dell EMC Bootable ISO Plug-in SUCCESS PLUGIN_UPDATE NA 11/23/18 11:27 A.M
Plugin Download- Dell EMC System Update(BIN) SUCCESS PLUGIN_UPDATE NA 11/23/18 11:28 A.M
Plugin Download- Dell EMC System Update(EXE) SUCCESS PLUGIN_UPDATE NA 11/23/18 11:28 A.M
すべてがダウンロードされたら、ファームウェアバイナリとCatalog.xmlファイルをエクスポートしましょう。Catalog.xmlファイルにはファームウェアに関する情報が含まれており、iDRACがインストールする更新を決定するために使用されます。
drm --deployment-type=export --repository=Dell:1.00 --location=/opt/dell/dellemcrepositorymanager/export
Job Submitted for export
場所は外部NFSにすることができます。この場合、--locationコマンドで指定してローカルにマウントする必要があります。
もう一度、次のコマンドを使用して進行状況を確認しましょう。
drm --list=job
Listing Jobs...
Name Status Job Type Next Execution date/time Last Execution date/time
---- ------ -------- ------------------------ ------------------------
Download_11/23/2018_11:04 SUCCESS DOWNLOAD COMPONENTS NA 11/23/18 11:11 A.M
Plugin Download- Dell EMC Server Update Utility x64 Plug-in SUCCESS PLUGIN_UPDATE NA 11/23/18 11:12 A.M
Plugin Download- Dell EMC Bootable ISO Plug-in SUCCESS PLUGIN_UPDATE NA 11/23/18 11:27 A.M
Plugin Download- Dell EMC System Update(BIN) SUCCESS PLUGIN_UPDATE NA 11/23/18 11:28 A.M
Plugin Download- Dell EMC System Update(EXE) SUCCESS PLUGIN_UPDATE NA 11/23/18 11:28 A.M
Export_11/23/2018_12:42 RUNNING SHARE NA NA
SUCCESSAnsibleを実行する前に、ステータスが取得されるのを待ちましょう。
Ansibleプレイブック
Ansibleプレイブックは次のようになります。
---
- hosts: hosts
connection: local
name: Update Firmware Inventory
gather_facts: False
tasks:
- name: Update Firmware Inventory
dellemc_install_firmware:
idrac_ip: "{{ inveotry_hostname }}"
idrac_user: "ansible"
idrac_pwd: "*******"
share_name: "10.220.0.10:/opt/dell/dellemcrepositorymanager/export"
share_mnt: "/opt/dell/dellemcrepositorymanager/export"
catalog_file_name: "Dell_1.00_Catalog.xml"
reboot: True
job_wait: True
tags :
- installfirmware
share_mntオプションは、ローカルサーバー上のローカルNFSエクスポートディレクトリ、または使用される外部NFSボリュームのローカルマウントのいずれかです。サーバーによって生成され、NFS共有にコピーされるサーバー構成プロファイルファイルとして、ローカルでアクセスできる必要があります。
関連ドキュメントで指定されているように、他のオプションを提供できます
インベントリファイルも作成しましょう:
# inventory file
---
[hosts]
ipmi-01.example.com
ipmi-02.example.com
Ansibleを実行しています!
エクスポートが正常に完了すると、プレイブックを実行できます。
reboot: Trueプレイブックで指定したように、必要に応じてホストを再起動して更新を適用することに注意してください
sudo -H ansible-playbook dellemc_install_firmware.yml -i inventory -t installfirmware -vvvvv
アップデートの読み込みと適用には非常に長い時間がかかり、最大1時間かかる場合があります。また、更新がiDRACログとジョブキューに表示されるまで待つ必要があります。
この長い待機の後、これが私たちが見ることができるものです:
changed: [ipmi-01.example.com] => {
"changed": true,
"invocation": {
"module_args": {
"catalog_file_name": "Dell_1.00_Catalog.xml",
"idrac_ip": "ipmi-01.example.com",
"idrac_port": 443,
"idrac_pwd": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
"idrac_user": "root",
"job_wait": true,
"reboot": true,
"share_mnt": "/opt/dell/dellemcrepositorymanager/export",
"share_name": "10.220.0.10:/opt/dell/dellemcrepositorymanager/export",
"share_pwd": null,
"share_user": null
}
},
"msg": {
"@odata.context": "/redfish/v1/$metadata#DellJob.DellJob",
"@odata.id": "/redfish/v1/Managers/iDRAC.Embedded.1/Jobs/JID_430165520584",
"@odata.type": "#DellJob.v1_0_0.DellJob",
"CompletionTime": "2018-11-23T18:25:58",
"Description": "Job Instance",
"EndTime": null,
"Id": "JID_430165520584",
"JobState": "Completed",
"JobType": "ImportConfiguration",
"Message": "Successfully imported and applied Server Configuration Profile.",
"MessageArgs": [],
"MessageId": "SYS053",
"Name": "Import Configuration",
"PercentComplete": 100,
"StartTime": "TIME_NOW",
"Status": "Success",
"TargetSettingsURI": null,
"retval": true
}
}
===