Adoptable Cookbooks List

Looking for a cookbook to adopt? You can now see a list of cookbooks available for adoption!
List of Adoptable Cookbooks

Supermarket Belongs to the Community

Supermarket belongs to the community. While Chef has the responsibility to keep it running and be stewards of its functionality, what it does and how it works is driven by the community. The chef/supermarket repository will continue to be where development of the Supermarket application takes place. Come be part of shaping the direction of Supermarket by opening issues and pull requests or by joining us on the Chef Mailing List.

Select Badges

Select Supported Platforms

RSS

ilo (5) Versions 1.3.1

Configure HPE iLO

Berkshelf/Librarian
Policyfile
Knife
cookbook 'ilo', '~> 1.3.1'
cookbook 'ilo', '~> 1.3.1', :supermarket
knife cookbook site install ilo
knife cookbook site download ilo
README
Dependencies
Changelog
Quality

iLO Cookbook

Cookbook Version

Enables configuration of HPE iLOs via their APIs.

Requirements

  • Chef 12+
  • iLO 4

Cookbook Dependencies

  • compat_resource

How to use the iLO Cookbook:

This cookbook is not intended to include any recipes. Use it by specifying a dependency on this cookbook in your own cookbook.

# my_cookbook/metadata.rb
...
depends 'ilo'

Now you can use the resources this cookbook provides. See below for some examples.

iLO Authentication

Each of the resources below requires you to pass in the info necessary to connect with the iLO API. The basic structure accepted by the ilos property is an array of hashes (or ILO_SDK::Client objects):

ilos = [
  {
    host: 'ilo1.example.com',  # Required. IP or hostname
    user: 'Administrator',     # Optional. Defaults to 'Administrator'
    password: 'secret123',     # Required
    ssl_enabled: false         # Optional
  },
  {
    host: '10.0.0.3',
    user: 'User2',
    password: 'secret456'
  }
]

This array can be built using a variety of different sources, including [encrypted] databags, attributes, or read from json or yaml files. For example:

# Set directly in recipe:
ilo_list1 = []
ilo_list1.push { host: 'ilo1.example.com', user: 'Administrator', password: 'secret123' }

# Read from data_bag:
ilo_list2 = data_bag_item('ilo_secrets', 'data_center_1')

# Load from yaml file:
ilo_list3 = YAML.load_file('/root/ilo_secrets.yml')

iLO Resources

The following resources are available for usage in your recipes:

ilo_bios

  • ####Set BIOS configuration:
  ilo_bios 'set BIOS configuration' do
    ilos [ilo1, ilo2]
    settings(
      UefiShellStartup: 'Enabled',
      UefiShellStartupLocation: 'Auto',
      UefiShellStartupUrl: 'http://www.uefi.nsh',
      Dhcpv4: 'Enabled',
      Ipv4Address: '10.1.1.0',
      Ipv4Gateway: '10.1.1.11',
      Ipv4PrimaryDNS: '10.1.1.1',
      Ipv4SecondaryDNS: '10.1.1.2',
      Ipv4SubnetMask: '255.255.255.0',
      UrlBootFile: 'http://www.urlbootfile.iso',
      ServiceName: 'iLO Admin',
      ServiceEmail: 'admin@domain.com'
      # NOTE: This is just an example; you can set as many or as few settings as you want.
      # (And there's a whole lot more you can set. See the API docs for the complete list.)
    )
    action :set # Not necessary, as this is the default
  end
  • ####Revert to default BIOS base configuration:
  ilo_bios 'revert BIOS' do
    ilos [ilo1, ilo2]
    action :revert
  end

ilo_boot_settings

  • ####Set boot configuration:
  ilo_boot_settings 'set boot configuration' do
    ilos [ilo1, ilo2]
    boot_order [       # Optional
      "FD.Virtual.1.1",
      "Generic.USB.1.1",
      "HD.Emb.1.1",
      "HD.Emb.1.2",
      "NIC.LOM.1.1.IPv4",
      "NIC.LOM.1.1.IPv6"
    ]
    boot_target 'None' # Optional
    action :set        # Not necessary, as this is the default
  end
  • ####Revert to default boot configuration:
  ilo_boot_settings 'revert boot configuration' do
    ilos [ilo1, ilo2]
    action :revert
  end
  • ####Dump the boot configuration to a file:
  ilo_boot_settings 'dump boot configuration' do
    ilos [ilo1, ilo2]
    dump_file '/full/path/to/boot_settings.yml'
    owner 'JohnDoe'        # Optional: Owner of the file. Defaults to the current user
    group 'Administrators' # Optional: Group ownership for the file. Defaults to the current user
    action :dump
  end

ilo_chassis

  • ####Dump power metrics and thermal metrics information to a file:
  ilo_chassis 'dump power metrics and thermal metrics' do
    ilos [ilo1, ilo2]
    power_metrics_file '/full/path/to/power_metrics.yml'
    thermal_metrics_file '/full/path/to/thermal_metrics.yml'
    owner 'JohnDoe'        # Optional: Owner of the file. Defaults to the current user
    group 'Administrators' # Optional: Owner of the file. Defaults to the current user
    action :dump           # Not necessary, as this is the default
  end

ilo_computer_details

  • ####Dump computer details to a file and data bag:
  ilo_computer_details 'dump computer details' do
    ilos [ilo1, ilo2]
    dump_file '/full/path/to/computer_details.yml'
    data_bag 'computer_details_bag'
    owner 'JohnDoe'        # Optional: Owner of the file. Defaults to the current user
    group 'Administrators' # Optional: Owner of the file. Defaults to the current user
    action :dump           # Not necessary, as this is the default
  end

ilo_computer_system

  • ####Set computer system information:
  ilo_computer_system 'set computer system info' do
    ilos [ilo1, ilo2]
    asset_tag 'HPE001' # Optional
    led_state 'Lit'    # Optional: 'Lit' or 'Off'
    action :set        # Not necessary, as this is the default
  end

ilo_date_time

  • ####Set the time zone and NTP settings:
  ilo_date_time 'set time zone' do
    ilos [ilo1, ilo2]
    time_zone 'Africa/Abidjan' # Optional
    use_ntp true  # Optional
    ntp_servers [ # Optional
      "10.168.0.2",
      "10.168.0.3"
    ]
    action :set   # Not necessary, as this is the default
  end

ilo_firmware_update

  • ####Upgrade firmware:
  ilo_firmware_update 'upgrade firmware' do
    ilos [ilo1, ilo2]
    fw_version '2.51'
    fw_uri 'www.firmware.domain.com/2.51'
    action :upgrade # Not necessary, as this is the default
  end

ilo_https_cert

Note that this resource requires an ilo property (Hash or ILO_SDK::Client) instead of an ilos property (Array). You'll need seperate ilo_https_cert resources for each ilo you'd like to perform a task on.

  • ####Generate Certificate Signing Request (CSR):
  ilo_https_cert 'generate CSR' do
    ilo ilo1
    country 'USA'
    state 'Texas'
    city 'Houston'
    orgName 'Example Company'
    orgUnit 'Example'
    commonName 'example.com'
    action :generate_csr
  end
  • ####Dump CSR to a file:
  ilo_https_cert 'dump CSR to file' do
    ilo ilo1
    file_path '/full/path/to/CSR.cert'
    action :dump_csr
  end
  • ####Import certificate:
  ilo_https_cert 'import certificate' do
    ilo ilo1
    certificate '-----BEGIN CERTIFICATE-----
    SecretCertificateContent
    -----END CERTIFICATE-----'
    action :import
  end
  • ####Import certificate from file:
  ilo_https_cert 'import certificate from file' do
    ilo ilo1
    file_path '/full/path/to/certificate_file.cert'
    action :import
  end
  • ####Complete HTTPS Certificate Replacement Example
  require 'ilo-sdk'

  ilo1 = ILO_SDK::Client.new(
    host: 'ilo1.example.com',
    user: 'Administrator',
    password: 'secret123'
  )
  # NOTE: The ILO_SDK::Client class is required here instead of a hash because we'll be calling the #get_csr method on it.

  # Get the current SSL Certificate and check to see if expires within 24 hours
  expiration = ilo1.get_certificate.not_after.to_datetime
  tomorrow = DateTime.now + 1

  valid = expiration > tomorrow
  ilo_https_cert 'generate CSR' do
    ilo ilo1
    country 'USA'
    state 'Texas'
    city 'Houston'
    orgName 'Example Company'
    orgUnit 'Example'
    commonName 'example.com'
    action :generate_csr
    not_if { valid || ilo1.get_csr } # Only generate if the cert is expiring soon and the CSR has not already been generated
  end

  ilo_https_cert 'dump CSR to file' do
    ilo ilo1
    file_path '~/certs/CSR.cert'
    action :dump_csr
    not_if { valid || ilo1.get_csr.nil? } # Don't dump the CSR file if the cert is still valid or the csr is not finished being generated
  end

  # Here you'll need to have a step that submits the CSR to a certificate authority
  # (or self-signs it) and gets back the signed certificate. It will look something like:
  # -----BEGIN CERTIFICATE-----
  # lines_of_secret_text
  # -----END CERTIFICATE-----
  # For this example, we're assuming we've read in the content of the certificate to the
  # "cert" variable (as a string).

  ilo_https_cert 'import certificate' do
    ilo ilo1
    certificate cert
    action :import
    not_if { valid || cert.nil? }
  end

ilo_log_entry

  • ####Dump log entries to a file:
  ilo_log_entry 'dump log entries' do
    ilos [ilo1, ilo2]
    dump_file '/full/path/to/IEL_logs.txt'
    log_type 'IEL'         # 'IEL' or 'IML
    owner 'JohnDoe'        # Optional: Owner of the dump file. Defaults to the current user
    group 'Administrators' # Optional: Owner of the dump file. Defaults to the current user
    duration 30            # Optional: Number of hours ago to begin collection at (until now)
    severity_level 'OK'    # Optional: Exclude this property to get all serverities
    action :dump           # Not necessary, as this is the default
  end
  • ####Clear log entries:
  ilo_log_entry 'clear log entries' do
    ilos [ilo1, ilo2]
    log_type 'IEL'
    action :clear
  end

ilo_manager_network_protocol

  • ####Set ilo session timeout:
  ilo_manager_network_protocol 'set timeout' do
    ilos [ilo1, ilo2]
    timeout 60  # Minutes
    action :set # Not necessary, as this is the default
  end

ilo_power

  • ####Power on the system:
  ilo_power 'power on' do
    ilos [ilo1, ilo2]
    action :poweron # Not necessary, as this is the default
  end
  • ####Power off the system:
  ilo_power 'power off' do
    ilos [ilo1, ilo2]
    action :poweroff
  end
  • ####Reset the system:
  ilo_power 'reset system' do
    ilos [ilo1, ilo2]
    action :resetsys
  end
  • ####Reset ilo:
  ilo_power 'reset ilo' do
    ilos [ilo1, ilo2]
    action :resetilo
  end

ilo_secure_boot

  • ####Set whether or not to enable UEFI secure boot:
  ilo_secure_boot 'enable secure boot' do
    ilos [ilo1, ilo2]
    enable true # Optional: Defaults to false
    action :set # Not necessary, as this is the default
  end

ilo_service_root

  • ####Dump schema and registry information to a file:
  ilo_service_root 'dump schema and registry' do
    ilos [ilo1, ilo2]
    schema_prefix 'Account'
    schema_file '/full/path/to/schema.txt'
    registry_prefix 'Base'
    registry_file '/full/path/to/registry.txt'
    owner 'JohnDoe'        # Optional: Owner of the dump file(s). Defaults to the current user
    group 'Administrators' # Optional: Owner of the dump file(s). Defaults to the current user
    action :dump           # Not necessary, as this is the default
  end

  # Note: You must set the :schema_file or :registry_file property, but are not required to set both

ilo_snmp_service

  • ####Configure SNMP service:
  ilo_snmp_service 'set snmp mode and turn alerts on' do
    ilos [ilo1, ilo2]
    snmp_mode 'Agentless' # Optional: Defaults to 'Agentless'
    snmp_alerts true      # Optional: Defaults to  false
    action :configure     # Not necessary, as this is the default
  end

ilo_user

  • ####Create or modify user:
  ilo_user 'creater user' do
    ilos [ilo1, ilo2]
    username 'test'                   # Defaults to the resource's name attribute
    password 'password123'
    login_priv true                   # Optional
    remote_console_priv false         # Optional
    user_config_priv true             # Optional
    virtual_media_priv false          # Optional
    virtual_power_and_reset_priv true # Optional
    ilo_config_priv false             # Optional
    action :create                    # Not necessary, as this is the default
  end
  • ####Delete user:
  ilo_user 'delete user' do
    ilos [ilo1, ilo2]
    username 'test'
    action :delete
  end
  • ####Change Password:
  ilo_user 'change user password' do
    ilos [ilo1, ilo2]
    username 'test'
    password 'password123'
    action :create
  end

ilo_virtual_media

  • ####Insert virtual media:
  ilo_virtual_media 'insert virtual media' do
    ilos [ilo1, ilo2]
    iso_uri 'http://10.254.224.38:5000/ubuntu-15.04-desktop-amd64.iso'
    action :insert # Not necessary, as this is the default
  end
  • ####Eject virtual media:
  ilo_virtual_media 'eject virtual media' do
    ilos [ilo1, ilo2]
    action :eject
  end

Contributing & Feature Requests

Contributing: Please see CONTRIBUTING.md for more info.

Feature Requests: If you have a need that is not met by the current implementation, please let us know (via a new issue). This feedback is crucial for us to deliver a useful product. Do not assume we have already thought of everything, because we assure you that is not the case.

License

This project is licensed under the Apache 2.0 license. Please see LICENSE for more info.

Testing

Please see CONTRIBUTING.md for more info.

Authors

Dependent cookbooks

compat_resource >= 0.0.0

Contingent cookbooks

There are no cookbooks that are contingent upon this one.

1.3.1

  • Fixed bug in ilo_https_cert resource: Accept ILO_SDK::Client object for ilo property.
  • Fixed bug in ilo_firmware_update resource: Accept String for fw_version property.
  • Fix other various property restrictions,
  • Fixed bug in ilo_https_cert :import when importing from file.

1.3.0

  • Refactored ilo_bios resource to support all settings. (Breaking Change)

1.2.0

  • Moved resources into libraries
  • Added ilo_https_cert resource

1.0.1

  • Updated metadata.rb file

1.0.0

Initial release

Collaborator Number Metric
            

1.3.1 passed this metric

Contributing File Metric
            

1.3.1 passed this metric

Foodcritic Metric
            

1.3.1 failed this metric

FC069: Ensure standardized license defined in metadata: ilo/metadata.rb:1
Run with Foodcritic Version 11.1.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any

License Metric
            

1.3.1 failed this metric

ilo does not have a valid open source license.
Acceptable licenses include Apache-2.0, apachev2, Apache 2.0, MIT, mit, GPL-2.0, gplv2, GNU Public License 2.0, GPL-3.0, gplv3, GNU Public License 3.0.

No Binaries Metric
            

1.3.1 passed this metric

Publish Metric
            

1.3.1 passed this metric

Supported Platforms Metric
            

1.3.1 passed this metric

Testing File Metric
            

1.3.1 failed this metric

Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file

Version Tag Metric
            

1.3.1 passed this metric