Automating bios settings for HP servers!

Hi,

I was at the PDXdevops meeting last night and I was asked a question on whether or not I had been able to automate bios settings since I had previously given a speech on automating HP ilo settings. Turns out I didn't know the answer but felt very optimistic this level of automation could be done. After about an hour of research I found a solution.

HP Smart start script toolkit for linux and windows.

In this toolkit there is a tool called conrep which gets/sets the bios settings. At first I was afraid the settings were saved in a binary file format but to my surprise its all based in XML. With this level of abstraction it would be very simple to query bios settings and additionally automate the deployment of settings from within puppet or foreman (smart proxy). One of the first tasks that come to mind are PXE boot order setting. Below are the steps to get and set the bios. Further below is the output from my HP DL380 G4 bios config as outputted by conrep. Furthermore, there is also a tool called bootorder which changes just the boot order for HP systems. If your using non-HP hardware your out of luck but I am sure that IBM, Dell and others have similar deployment toolkits that can set bios settings from a script.

ftp://ftp.hp.com/pub/c-products/servers/management/smartstart/LinuxUserGuide(415597-401).pdf

Page 9, step 8

Capture the system BIOS configuration using the CONREP utility:
cd /mnt/toolkit_share/utilities
./conrep -s -f/mnt/toolkit_share/data_files/conrep.dat

Apply the system BIOS configuration using the CONREP utility:
cd /mnt/toolkit_share/utilities
./conrep -l -f/mnt/toolkit_share/data_files/conrep.dat

Toolkit download:

http://tinyurl.com/3q2h7vn

<?xml version="1.0" encoding="UTF-8"?>
<!–generated by conrep version 3.30–>
<Conrep version="3.30" originating_platform="ProLiant DL380 G4" originating_family="P51" originating_romdate="10/10/2005" originating_processor_manufacturer="Intel">
<Section name="IPL_Order" helptext="Current Initial ProgramLoad device boot order.">
<Index0>00 </Index0>
<Index1>01 </Index1>
<Index2>03 </Index2>
<Index3>02 </Index3>
<Index4>04 </Index4>
<Index5>ff </Index5>
<Index6>ff </Index6>
<Index7>ff </Index7>
</Section>
<Section name="PCI_Devices" helptext="Lists of PCI devices and their interrupts - not displayed if default values are set.">EMPTY_DELETE</Section>
<Section name="Controller_Order" helptext="Lists the current boot controller ordering.">
<Id0>0e 11 40 91 </Id0>
<Slot0>00 </Slot0>
<BusDev0>04 18 </BusDev0>
<Rest0>41 </Rest0>
</Section>
<Section name="Language" helptext="Defines current language identifier">ENGUSAus </Section>
<Section name="System_WOL" helptext="System Wake On Lan Capabilities.">Enabled</Section>
<Section name="System_APIC" helptext="System APIC Settings(MPS Table Mode).">Full Table</Section>
<Section name="System_Mouse" helptext="Enable or Disable the onboard mouse port.">Enabled</Section>
<Section name="System_CPU_Serial_Number" helptext="Enables or disabled CPU serial numbers on systems that support it.">Disabled</Section>
<Section name="System_COMA" helptext="Settings for UART 1 on systems that support it.">COM1</Section>
<Section name="System_COMA_IRQ" helptext="Settings for UART 1 on systems that support it.">IRQ4</Section>
<Section name="System_COMB" helptext="Settings for UART 2 on systems that support it.">Disabled</Section>
<Section name="System_COMB_IRQ" helptext="Settings for UART 2 on systems that support it.">Undefined</Section>
<Section name="System_Virtual_Serial_Port" helptext="Virtual Serial Port Settings for systems that support it.">COM2</Section>
<Section name="System_Virtual_Serial_Port_IRQ" helptext="Virtual Serial Port IRQ Settings for systems that support it.">IRQ3</Section>
<Section name="System_LPT" helptext="System parallel port settings for systems that support it.">Disabled</Section>
<Section name="System_LPT_IRQ" helptext="System parallel port settings for systems that support it.">Undefined</Section>
<Section name="System_LPT_Mode" helptext="System parallel port settings for systems that support it.">SPP</Section>
<Section name="System_USB_Control" helptext="Systemwide USB settings.">Enabled</Section>
<Section name="System_USB_EHCI_Controller" helptext="Enables or disabled EHCI mode(USB 2.0) of the system USB controller.">Enabled</Section>
<Section name="Diskette_Write_Control" helptext="Toggles write control of integrated floppy.">Writes_Enabled</Section>
<Section name="POST_F1_Prompt" helptext="Controls display of the F1 POST prompt.">Disabled</Section>
<Section name="Hyperthreading" helptext="Toggles hyperthreading on systems that support it. This setting is supported on G5 and earlier systems. For newer systems, use the Intel_Hyperthreading setting.">Enabled</Section>
<Section name="NMI_Debug_Button" helptext="Allows generating NMI(non-maskable interrupt) via NMI button/jumper for hardware debugging.">Enabled</Section>
<Section name="ACPI_Power_Button" helptext="Switches power button to operate in APCI mode. Enabling permits enhanced power button handling(push and hold to shut off, and single push to shutdown) instead of on/off operation.">Enabled</Section>
<Section name="CPU_Performance" helptext="Allows tuning of system performance goals">Memory</Section>
<Section name="ASR" helptext="Allows enabling/disabling of the Automatic Server Recovery feature.">Disabled</Section>
<Section name="ASR_Timeout" helptext="User Configuration Timeout for Automatic Server Recovery">10 Minutes</Section>
<Section name="Thermal_Shutdown" helptext="Enables shutdown when thermal events occur">Enabled</Section>
<Section name="RBSU_Language" helptext="Language to use for the RBSU menus">01</Section>
<Section name="PXE_NIC1" helptext="Enable or disable PXE boot on the given NIC">Enabled</Section>
<Section name="PXE_NIC2" helptext="Enable or disable PXE boot on the given NIC">Disabled</Section>
<Section name="PXE_NIC3" helptext="Enable or disable PXE boot on the given NIC">Disabled</Section>
<Section name="PXE_NIC4" helptext="Enable or disable PXE boot on the given NIC">Disabled</Section>
<Section name="PXE_NIC5" helptext="Enable or disable PXE boot on the given NIC">Disabled</Section>
<Section name="BIOS_Console" helptext="Used to select the port for the BIOS console">Auto</Section>
<Section name="BIOS_Baud_Rate" helptext="BIOS console communications settings">9600</Section>
<Section name="BIOS_Type" helptext="BIOS console communications settings">VT100</Section>
<Section name="EMS_Console" helptext="Used to select the port for the EMS console">Disabled</Section>
<Section name="BIOS_Interface_Mode" helptext="BIOS console communications settings">Auto Mode</Section>
<Section name="System_Embedded_IDE" helptext="Settings for the embedded IDE controller on systems that support it">Enabled</Section>
<Section name="Embedded_Virtual_Disk" helptext="Enables or disable the Virtual Disk when available.">Enabled</Section>
<Section name="No_Execute_Memory_Protection" helptext="Enables No Execute mode if the system CPU supports it">Disabled</Section>
<Section name="Legacy_SERR">Enabled</Section>
<Section name="CPU_Virtualization" helptext="When enabled, a Virtual Machine Manager supporting this feature can utilize hardware capabilities provided by the server.">Disabled</Section>
<Section name="Diskette_Boot">Enabled</Section>
<Section name="NumLock">Off</Section>
<Section name="POST_Speed_Up">Enabled</Section>
<Section name="Integrated_Diskette_Controller">Enabled</Section>
<Section name="PCI_Bus_Reset">Enabled</Section>
<Section name="Hot_Plug_Reservation">Auto Set</Section>
<Section name="Memory_Protection" helptext="Sets the type of memory protection used on the server. Not all modes are supported on all servers.">Advanced_ECC_Support</Section>
<Section name="Automatic_Poweron" helptext="Configures server to automatically power on when A/C power is applied to the system. This setting is not support by blade servers.">Enabled</Section>
<Section name="Power-On_Delay" helptext="Sets the delay for the system to be begin the boot up process">No_Delay</Section>
<Section name="USB_Capability">USB_1.1</Section>
<Section name="PCI_Enumeration_Method" helptext="Controls the PCI enumeration method on G6 or higher servers.">Standard</Section>
<Section name="Option_ROM_Loading_Sequence" helptext="Choses whether Option ROMs for embedded devices or expansion cards are loaded first.">Option_Card_First</Section>
<Section name="Intel_Processor_Core_Disable" helptext="Allows disabling of processor cores using Intel's Core Multi-Processing(CMP) technology.">All_Cores_Enabled</Section>
<Section name="Intel_QPI_Link_Power_Management" helptext="Places the Quick Path Interconnect (QPI) links into a low power state to save power.">Enabled</Section>
<Section name="Memory_Interleaving" helptext="Modifies the level of interleaving for which the memory system will be configured. Typically, higher levels of memory interleaving result in maximum performance, but reducing interleaving level may result in power savings.">Channel_Only_Interleaving</Section>
<Section name="Intel_PCI_Express_Generation_20_Support" helptext="Allows disabling PCI-E Gen 2.0 support on Intel based servers. If disabled, all PCI-Express devices will run at PCI-E 1.0 speeds (2.5 Gb/s) even if a PCI-E device is 2.0 capable (5.0 Gb/s).">Auto</Section>
</conrep>

I wanted to say thanks for this. We use ProLiant systems and have an
issue with keeping BIOS in a standard configuration since its a
"manual" process, which it seems it doesn't need to be. I'm
definitely going to be checking this out!

Regards,
Jake

··· On Aug 16, 1:04 pm, Corey Osman wrote: > Hi, > > I was at the PDXdevops meeting last night and I was asked a question on whether or not I had been able to automate bios settings since I had previously given a speech on automating HP ilo settings. Turns out I didn't know the answer but felt very optimistic this level of automation could be done. After about an hour of research I found a solution. > > HP Smart start script toolkit for linux and windows. > > In this toolkit there is a tool called conrep which gets/sets the bios settings. At first I was afraid the settings were saved in a binary file format but to my surprise its all based in XML. With this level of abstraction it would be very simple to query bios settings and additionally automate the deployment of settings from within puppet or foreman (smart proxy). One of the first tasks that come to mind are PXE boot order setting. Below are the steps to get and set the bios. Further below is the output from my HP DL380 G4 bios config as outputted by conrep. Furthermore, there is also a tool called bootorder which changes just the boot order for HP systems. If your using non-HP hardware your out of luck but I am sure that IBM, Dell and others have similar deployment toolkits that can set bios settings from a script. > > ftp://ftp.hp.com/pub/c-products/servers/management/smartstart/LinuxUs... > > Page 9, step 8 > > Capture the system BIOS configuration using the CONREP utility: > cd /mnt/toolkit_share/utilities > ./conrep -s -f/mnt/toolkit_share/data_files/conrep.dat > > Apply the system BIOS configuration using the CONREP utility: > cd /mnt/toolkit_share/utilities > ./conrep -l -f/mnt/toolkit_share/data_files/conrep.dat > > Toolkit download: > > http://tinyurl.com/3q2h7vn > > <?xml version="1.0" encoding="UTF-8"?> > > > > 00 > 01 > 03 > 02 > 04 > ff > ff > ff > > EMPTY_DELETE > > 0e 11 40 91 > 00 > 04 18 > 41 > > ENGUSAus > Enabled > Full Table > Enabled > Disabled > COM1 > IRQ4 > Disabled > Undefined > COM2 > IRQ3 > Disabled > Undefined > SPP > Enabled > Enabled > Writes_Enabled > Disabled > Enabled > Enabled > Enabled > Memory > Disabled > 10 Minutes > Enabled > 01 > Enabled > Disabled > Disabled > Disabled > Disabled > Auto > 9600 > VT100 > Disabled > Auto Mode > Enabled > Enabled > Disabled > Enabled > Disabled > Enabled > Off > Enabled > Enabled > Enabled > Auto Set > Advanced_ECC_Support > Enabled > No_Delay > USB_1.1 > Standard > Option_Card_First > All_Cores_Enabled > Enabled > Channel_Only_Interleaving > Auto >

I would like to know what scripts or puppet configs you write if you end up doing this.

Corey

··· On Aug 23, 2011, at 11:58 AM, Jake - USPS wrote:

I wanted to say thanks for this. We use ProLiant systems and have an
issue with keeping BIOS in a standard configuration since its a
"manual" process, which it seems it doesn’t need to be. I’m
definitely going to be checking this out!

Regards,
Jake

On Aug 16, 1:04 pm, Corey Osman co...@logicminds.biz wrote:

Hi,

I was at the PDXdevops meeting last night and I was asked a question on whether or not I had been able to automate bios settings since I had previously given a speech on automating HP ilo settings. Turns out I didn’t know the answer but felt very optimistic this level of automation could be done. After about an hour of research I found a solution.

HP Smart start script toolkit for linux and windows.

In this toolkit there is a tool called conrep which gets/sets the bios settings. At first I was afraid the settings were saved in a binary file format but to my surprise its all based in XML. With this level of abstraction it would be very simple to query bios settings and additionally automate the deployment of settings from within puppet or foreman (smart proxy). One of the first tasks that come to mind are PXE boot order setting. Below are the steps to get and set the bios. Further below is the output from my HP DL380 G4 bios config as outputted by conrep. Furthermore, there is also a tool called bootorder which changes just the boot order for HP systems. If your using non-HP hardware your out of luck but I am sure that IBM, Dell and others have similar deployment toolkits that can set bios settings from a script.

ftp://ftp.hp.com/pub/c-products/servers/management/smartstart/LinuxUs

Page 9, step 8

Capture the system BIOS configuration using the CONREP utility:
cd /mnt/toolkit_share/utilities
./conrep -s -f/mnt/toolkit_share/data_files/conrep.dat

Apply the system BIOS configuration using the CONREP utility:
cd /mnt/toolkit_share/utilities
./conrep -l -f/mnt/toolkit_share/data_files/conrep.dat

Toolkit download:

http://tinyurl.com/3q2h7vn

<?xml version="1.0" encoding="UTF-8"?> 00 01 03 02 04 ff ff ff EMPTY_DELETE 0e 11 40 91 00 04 18 41 ENGUSAus Enabled Full Table Enabled Disabled COM1 IRQ4 Disabled Undefined COM2 IRQ3 Disabled Undefined SPP Enabled Enabled Writes_Enabled Disabled Enabled Enabled Enabled Memory Disabled 10 Minutes Enabled 01 Enabled Disabled Disabled Disabled Disabled Auto 9600 VT100 Disabled Auto Mode Enabled Enabled Disabled Enabled Disabled Enabled Off Enabled Enabled Enabled Auto Set Advanced_ECC_Support Enabled No_Delay USB_1.1 Standard Option_Card_First All_Cores_Enabled Enabled Channel_Only_Interleaving Auto


You received this message because you are subscribed to the Google Groups “Foreman users” group.
To post to this group, send email to foreman-users@googlegroups.com.
To unsubscribe from this group, send email to foreman-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/foreman-users?hl=en.

I'll be sure too. Shortly after reading what you have above I also
learned there is a tool that comes with PSP in the hp-health package
called "hpasmcli" which:

is a scriptable command line interface for interacting with the
hpasmd or hpasmxld management daemons. It is used to view/set/modify
BIOS
settings such as hyperthreading, boot control, and UID LEDs. It
can be
used to display hardware status, such as fans, power supplies,
etc. It
also can show, repair, and clear the IML."

But I haven't played with either yet to comment on which route I like
more and what I'll choose to use.

Regards,
Jake

··· On Aug 26, 12:29 pm, Corey Osman wrote: > I would like to know what scripts or puppet configs you write if you end up doing this. > > Corey > On Aug 23, 2011, at 11:58 AM, Jake - USPS wrote: > > > > > > > > > I wanted to say thanks for this. We use ProLiant systems and have an > > issue with keeping BIOS in a standard configuration since its a > > "manual" process, which it seems it doesn't need to be. I'm > > definitely going to be checking this out! > > > Regards, > > Jake > > > On Aug 16, 1:04 pm, Corey Osman wrote: > >> Hi, > > >> I was at the PDXdevops meeting last night and I was asked a question on whether or not I had been able to automate bios settings since I had previously given a speech on automating HP ilo settings. Turns out I didn't know the answer but felt very optimistic this level of automation could be done. After about an hour of research I found a solution. > > >> HP Smart start script toolkit for linux and windows. > > >> In this toolkit there is a tool called conrep which gets/sets the bios settings. At first I was afraid the settings were saved in a binary file format but to my surprise its all based in XML. With this level of abstraction it would be very simple to query bios settings and additionally automate the deployment of settings from within puppet or foreman (smart proxy). One of the first tasks that come to mind are PXE boot order setting. Below are the steps to get and set the bios. Further below is the output from my HP DL380 G4 bios config as outputted by conrep. Furthermore, there is also a tool called bootorder which changes just the boot order for HP systems. If your using non-HP hardware your out of luck but I am sure that IBM, Dell and others have similar deployment toolkits that can set bios settings from a script. > > >>ftp://ftp.hp.com/pub/c-products/servers/management/smartstart/LinuxUs... > > >> Page 9, step 8 > > >> Capture the system BIOS configuration using the CONREP utility: > >> cd /mnt/toolkit_share/utilities > >> ./conrep -s -f/mnt/toolkit_share/data_files/conrep.dat > > >> Apply the system BIOS configuration using the CONREP utility: > >> cd /mnt/toolkit_share/utilities > >> ./conrep -l -f/mnt/toolkit_share/data_files/conrep.dat > > >> Toolkit download: > > >>http://tinyurl.com/3q2h7vn > > >> <?xml version="1.0" encoding="UTF-8"?> > >> > >> > >> > >> 00 > >> 01 > >> 03 > >> 02 > >> 04 > >> ff > >> ff > >> ff > >> > >> EMPTY_DELETE > >> > >> 0e 11 40 91 > >> 00 > >> 04 18 > >> 41 > >> > >> ENGUSAus > >> Enabled > >> Full Table > >> Enabled > >> Disabled > >> COM1 > >> IRQ4 > >> Disabled > >> Undefined > >> COM2 > >> IRQ3 > >> Disabled > >> Undefined > >> SPP > >> Enabled > >> Enabled > >> Writes_Enabled > >> Disabled > >> Enabled > >> Enabled > >> Enabled > >> Memory > >> Disabled > >> 10 Minutes > >> Enabled > >> 01 > >> Enabled > >> Disabled > >> Disabled > >> Disabled > >> Disabled > >> Auto > >> 9600 > >> VT100 > >> Disabled > >> Auto Mode > >> Enabled > >> Enabled > >> Disabled > >> Enabled > >> Disabled > >> Enabled > >> Off > >> Enabled > >> Enabled > >> Enabled > >> Auto Set > >> Advanced_ECC_Support > >> Enabled > >> No_Delay > >> USB_1.1 > >> Standard > >> Option_Card_First > >> All_Cores_Enabled > >> Enabled > >> <Section name="Memory_Interleaving" helptext="Modifies the level of interleaving for which the memory system will be configured. Typically, higher levels of memory interleaving result in maximum performance, but reducing interleaving level may result in power > > ... > > read more » </details>

These are probably just easier methods of using hpasmcli

hpuid – control kid light
hpbootcfg – controls boot order and one time boot modes
hplog – see sensor, fan, power and other log related data.

These tools fill the gap that currently exist with foreman and puppet in that there are still quite a few steps one must do to get a new physical server online.

– Specific Bios settings
– Array Card configuration and LUN setup
– Boot Order Control
– Hardware query
– iLo management

All of these types of configurations are normally done by hand. However HP has a mini Linux distro that will give the ability to automate these steps above. However, I have not seen any tool that can boot a system twice automatically to install the OS.

Ohad,

Do you know of a way to have foreman do the following:

  1. boot to a "hardware setup distro"
  2. reboot
  3. Boot to the OS distro for Install that foreman currently supports?

Corey

··· On Aug 29, 2011, at 7:05 AM, Jake - USPS wrote:

I’ll be sure too. Shortly after reading what you have above I also
learned there is a tool that comes with PSP in the hp-health package
called “hpasmcli” which:

is a scriptable command line interface for interacting with the
hpasmd or hpasmxld management daemons. It is used to view/set/modify
BIOS
settings such as hyperthreading, boot control, and UID LEDs. It
can be
used to display hardware status, such as fans, power supplies,
etc. It
also can show, repair, and clear the IML."

But I haven’t played with either yet to comment on which route I like
more and what I’ll choose to use.

Regards,
Jake

On Aug 26, 12:29 pm, Corey Osman co...@logicminds.biz wrote:

I would like to know what scripts or puppet configs you write if you end up doing this.

Corey
On Aug 23, 2011, at 11:58 AM, Jake - USPS wrote:

I wanted to say thanks for this. We use ProLiant systems and have an
issue with keeping BIOS in a standard configuration since its a
"manual" process, which it seems it doesn’t need to be. I’m
definitely going to be checking this out!

Regards,
Jake

On Aug 16, 1:04 pm, Corey Osman co...@logicminds.biz wrote:

Hi,

I was at the PDXdevops meeting last night and I was asked a question on whether or not I had been able to automate bios settings since I had previously given a speech on automating HP ilo settings. Turns out I didn’t know the answer but felt very optimistic this level of automation could be done. After about an hour of research I found a solution.

HP Smart start script toolkit for linux and windows.

In this toolkit there is a tool called conrep which gets/sets the bios settings. At first I was afraid the settings were saved in a binary file format but to my surprise its all based in XML. With this level of abstraction it would be very simple to query bios settings and additionally automate the deployment of settings from within puppet or foreman (smart proxy). One of the first tasks that come to mind are PXE boot order setting. Below are the steps to get and set the bios. Further below is the output from my HP DL380 G4 bios config as outputted by conrep. Furthermore, there is also a tool called bootorder which changes just the boot order for HP systems. If your using non-HP hardware your out of luck but I am sure that IBM, Dell and others have similar deployment toolkits that can set bios settings from a script.

ftp://ftp.hp.com/pub/c-products/servers/management/smartstart/LinuxUs

Page 9, step 8

Capture the system BIOS configuration using the CONREP utility:
cd /mnt/toolkit_share/utilities
./conrep -s -f/mnt/toolkit_share/data_files/conrep.dat

Apply the system BIOS configuration using the CONREP utility:
cd /mnt/toolkit_share/utilities
./conrep -l -f/mnt/toolkit_share/data_files/conrep.dat

Toolkit download:

http://tinyurl.com/3q2h7vn

<?xml version="1.0" encoding="UTF-8"?> 00 01 03 02 04 ff ff ff EMPTY_DELETE 0e 11 40 91 00 04 18 41 ENGUSAus Enabled Full Table Enabled Disabled COM1 IRQ4 Disabled Undefined COM2 IRQ3 Disabled Undefined SPP Enabled Enabled Writes_Enabled Disabled Enabled Enabled Enabled Memory Disabled 10 Minutes Enabled 01 Enabled Disabled Disabled Disabled Disabled Auto 9600 VT100 Disabled Auto Mode Enabled Enabled Disabled Enabled Disabled Enabled Off Enabled Enabled Enabled Auto Set Advanced_ECC_Support Enabled No_Delay USB_1.1 Standard Option_Card_First All_Cores_Enabled Enabled foreman-users@googlegroups.com.
To unsubscribe from this group, send email to foreman-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/foreman-users?hl=en.