SlideShare a Scribd company logo
IRONIC
A MODERN APPROACH
TO MACHINE DEPLOYMENT
DEVANANDA VAN DER VEEN
@DEVANANDA
GITHUB.COM/DEVANANDA/TALKS
ABOUT
Performance Consultant
Engineer @ HP Cloud
Likes interactive audiences
Favorite whisky: Nikka
Observation:
Every company has their own
PXE-based installation framework
Binary image copy
improves repeatability and reduces entropy
So why not do this for bare metal, too?
Ironically, a physical machine behaves
a lot like a VM or a container
Based on the name, you might have expected that joke
Ironic - A modern approach to machine deployment
Ironic - A modern approach to machine deployment
Build and customize your own images
$ pip install diskimage­builder
$ disk­image­create ­o my­image ­t qcow2 ­a amd64 
    ubuntu vm serial­console cloud­init­datasources
"vm" element creates partition table and installs a
bootloader
Don't ask me why it's called "vm"
You can build your own deploy ramdisk
Or download a and image
from our build server
$ pip install diskimage­builder
$ ramdisk­image­create ­o my­ramdisk ­a amd64 
    ubuntu deploy­ironic
kernel ramdisk
http://tarballs.openstack.org/ironic-python-
agent/coreos/files
STANDARD PROTOCOLS
Power
IPMI: intelligent platform management interface, for
remote control of machine power state, boot device,
serial console, etc.
SNMP: simple network management protocol, often used
with Power Distribution Units for remote control of power
status.
STANDARD PROTOCOLS
Boot
DHCP: dynamic host configuration protocol, used to
locate the NBP on the network, and provide the host OS
with IP address during init
TFTP: trivial file transfer protocol, copies the NBP over the
network
PXE: pre-boot execution environment, allows host to boot
from network
[g,i]PXE: recent enhancements make PXE more flexible,
supported on most hardware
IPMI HAS NOT SIGNIFICANTLY
CHANGED IN THE LAST 10 YEARS
Meanwhile, vendors continue to add new (and different!)
capabilities to their management controllers,
each with different protocols
A new standard is in the works (RedFish)
but software will continue to change
faster than hardware standards
Vendor value is derived from quality of
hardware, services, support, and integration
not from proprietary solutions to common problems
ARCHITECTURE
SERVICE COMPONENTS
DRIVER API
This gives driver authors a lot ofsimplicity flexibility
While the REST API provides common abstraction for
provisioning a pool of servers
repeatably
regardless of vendor
Resource types: Node, Port, Driver (*)
Documentation is continually built from source
and packaged with each release
REST API
docs.openstack.org/developer/ironic/webapi/v1.html
(*) There is a fourth resource type, "chassis". This is a remnant of early designs, and doesn't perform
a meaningful function today
GET /v1/nodes/
{
   "nodes" : [
      {
         "name" : "nuc",
         "maintenance" : false,
         "instance_uuid" : null,
         "power_state" : "power off",
         "uuid" : "ba031dea­e7a8­4917­89f1­0f3ad31344ee",
         "provision_state" : "available"
         "links" : [
            {
               "href" : "http://127.0.0.1:6385/v1/nodes/ba031dea­e7a8­4917­89
               "rel" : "self"
            },
            {
               "rel" : "bookmark",
               "href" : "http://127.0.0.1:6385/nodes/ba031dea­e7a8­4917­89f1­
GET /v1/nodes/ba031dea-e7a8-4917-89f1-0f3ad31344ee
{
   "name" : "nuc",                                      # human readable name
   "uuid" : "ba031dea­e7a8­4917­89f1­0f3ad31344ee",     # canonical reference
   "driver" : "pxe_amt",                                # hardware driver
   "properties" : {                                     # hardware characteri
      "ram" : 8096,
      "cpu_arch" : "x86_64",
      "cpus" : 2,
      "disk_size" : 500
   },
   "driver_info" : {                                    # driver management d
      "amt_password" : "******",
      "amt_address" : "192.168.2.3",
      "amt_username" : "admin"
   },
   "power_state" : "power off",                         # last known power st
   "target_power_state" : null,                         # non­null if change 
Every driver is different
and requires specific attributesdriver_info
You enter this once, when enrolling the Node
Read the driver's documentation
Or discover it from the API
GET /v1/drivers/ /propertiesdrivername
{
   "ilo_username" : "username for the iLO with administrator privileges. Requ
   "client_timeout" : "timeout (in seconds) for iLO operations. Optional."
   "ilo_address" : "IP address or hostname of the iLO. Required.",
   "deploy_ramdisk" : "UUID (from Glance) of the ramdisk that is mounted at b
   "console_port" : "node's UDP port to connect to. Only required for console
   "ilo_change_password" : "new password for iLO. Required if the clean step 
   "deploy_kernel" : "UUID (from Glance) of the deployment kernel. Required."
   "client_port" : "port to be used for iLO operations. Optional.",
   "ilo_password" : "password for ilo_username. Required."
}
{
   "snmp_outlet" : "PDU power outlet index (1­based).  Required.",
   "snmp_version" : "SNMP protocol version: 1, 2c, 3  (optional, default 1)"
   "snmp_driver" : "PDU manufacturer driver.  Required.",
   "snmp_port" : "SNMP port, default 161",
   "snmp_address" : "PDU IPv4 address or hostname.  Required.",
Instances are assumed to be different.
Therefore, is cleared after instance
deletion.
instance_info
Vendors can implement additional capabilities
which are to their driver.passed directly
These are implemented at:
/v1/drivers/NAME/vendor_passthru/
/v1/nodes/UUID/vendor_passthru/
In practice, this is little used, as drivers
are encouraged to converge into a common API.
This is just an example.
Different drivers do things differently, after all.
DEPLOYMENT SEQUENCE
Ironic - A modern approach to machine deployment
Ironic - A modern approach to machine deployment
PROVISIONING STATE MACHINE
STATE
- stable (or passive) state
R:verb
- request that begins a transition
[STATE*/TARGET]
- active, momentary, or error state
Progress is reflected in the API
   "power_state" : "power on",                          # last known power st
   "target_power_state" : null,                         # non­null if
   "provision_state" : "deploying",                     # current provision s
   "target_provision_state" : "active",                 # last requested prov
   "updated_at" : "2015­06­02T19:39:04+00:00",          # exposed timing data
   "reservation" : Leni,                                # exposed lock status
PROVISIONING STATE MACHINE
(it's always more complicated than you expect)
Use Ansible for automation
Separate and reusable playbooks
KEEPING IT SIMPLE
Ironic - A modern approach to machine deployment
First things first: input environment vars
$ cat bifrost/playbooks/inventory
­­­
node_default_network_interface: eth0
network_interface: eth2
ipv4_subnet_mask: 255.255.255.0
ipv4_gateway: 192.168.1.1
ipv4_nameserver: 8.8.8.8
dhcp_pool_start: 192.168.2.200
dhcp_pool_end: 192.168.2.250
deploy_kernel: "{{http_boot_folder}}/coreos_production_pxe.vmlinuz"
deploy_ramdisk: "{{http_boot_folder}}/coreos_production_pxe_image­oem.cpio.gz
deploy_image_filename: "deployment_image.qcow2"
deploy_image: "{{http_boot_folder}}/{{deploy_image_filename}}"
                    
installs external dependencies, configures your environment
Install
$ bash ./scripts/env­setup.sh
$ source /opt/stack/ansible/hacking/env­setup
$ cd playbooks
$ ansible­playbook ­K ­vvvv ­i inventory/localhost install.yaml
supply inventory file
OR
use CLI to create Nodes, Ports
Enroll
$ ansible­playbook ­vvvv ­i inventory/localhost enroll.yaml 
    ­e baremetal_csv_file=baremetal.csv
$ ironic node­create ­d agent_amttool ­n nuc 
    ­i amt_password='Pa$$w0rd' ­i amt_address='192.168.2.3' ­i amt_username=
    ­p cpu_arch=x86_64 ­p local_gb=64 ­p memory_mb=8192 ­p cpus=2 
    ­i deploy_ramdisk='http://192.168.2.2:8080/coreos_production_pxe_image­oe
    ­i deploy_kernel='http://192.168.2.2:8080/coreos_production_pxe.vmlinuz'
$ ironic port­create ­n $UUID ­a ec:a8:6b:fe:e1:b0
reads inventory file
OR
gathers list from Ironic directly
then populates and starts the deploy
Deploy
$ ansible­playbook ­vvvv ­i inventory/bifrost_inventory.py 
    deploy­dynamic.yaml
instance_info
OPENSTACK?
@devananda
THANKS!
devananda.github.io/talks
github.com/openstack/ironic
github.com/openstack/bifrost

More Related Content

PDF
Osic tech talk presentation on ironic inspector
PDF
Provisioning Bare Metal with OpenStack
PDF
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
PDF
今だからこそ知りたい Docker Compose/Swarm 入門
PDF
OpenStack Ironic - Bare Metal-as-a-Service
PDF
Ironic
PDF
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
PDF
ゼロからはじめるKVM超入門
Osic tech talk presentation on ironic inspector
Provisioning Bare Metal with OpenStack
Isn't it ironic - managing a bare metal cloud (OSL TES 2015)
今だからこそ知りたい Docker Compose/Swarm 入門
OpenStack Ironic - Bare Metal-as-a-Service
Ironic
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
ゼロからはじめるKVM超入門

What's hot (20)

PDF
TripleOの光と闇
PDF
mTCP使ってみた
PDF
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
日本OpenStackユーザ会 第37回勉強会
PPTX
Ironic - Vietnam OpenStack Technical Meetup #12
PDF
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
PPTX
iostat await svctm の 見かた、考え方
PPTX
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
PDF
OpenStack勉強会
PDF
Configuration management II - Terraform
PDF
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
PDF
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
PDF
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
PPTX
Dockerからcontainerdへの移行
PDF
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
PDF
ML2/OVN アーキテクチャ概観
PPTX
Docker Tokyo
PPTX
root権限無しでKubernetesを動かす
PPTX
急速に進化を続けるCNIプラグイン Antrea
TripleOの光と闇
mTCP使ってみた
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
日本OpenStackユーザ会 第37回勉強会
Ironic - Vietnam OpenStack Technical Meetup #12
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
iostat await svctm の 見かた、考え方
NginxとLuaを用いた動的なリバースプロキシでデプロイを 100 倍速くした
OpenStack勉強会
Configuration management II - Terraform
OpenStack-Ansibleで作るOpenStack HA環境 手順書解説 - OpenStack最新情報セミナー 2016年3月
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
Dockerからcontainerdへの移行
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
ML2/OVN アーキテクチャ概観
Docker Tokyo
root権限無しでKubernetesを動かす
急速に進化を続けるCNIプラグイン Antrea
Ad

Similar to Ironic - A modern approach to machine deployment (20)

PDF
Ironic 140622212631-phpapp02
PDF
Ironic 140622212631-phpapp02
PDF
OSMC 2019 | Monitoring Alerts and Metrics on Large Power Systems Clusters by ...
PDF
The advantages of Arista/OVH configurations, and the technologies behind buil...
PDF
Open stack wtf_(1)
PDF
Training Ensimag OpenStack 2016
PDF
TripleO
PDF
Upcoming services in OpenStack
PPTX
An Intrudction to OpenStack 2017
PDF
Openstackinsideoutv10 140222065532-phpapp01
PDF
OpenStack: Inside Out
PPTX
Openstack architure part 1
PPTX
DEVNET-1106 Upcoming Services in OpenStack
PDF
Gordonh0945deepdive openstackcompute-140417174059-phpapp02
PPTX
Openstack
PPTX
Cloud and OpenStack
PPTX
OpenStack and Windows
PDF
Sven Vogel: Running CloudStack and OpenShift with NetApp on KVM
PPTX
Oct meetup open stack 101 clean
PPTX
Power of OpenStack & Hadoop
Ironic 140622212631-phpapp02
Ironic 140622212631-phpapp02
OSMC 2019 | Monitoring Alerts and Metrics on Large Power Systems Clusters by ...
The advantages of Arista/OVH configurations, and the technologies behind buil...
Open stack wtf_(1)
Training Ensimag OpenStack 2016
TripleO
Upcoming services in OpenStack
An Intrudction to OpenStack 2017
Openstackinsideoutv10 140222065532-phpapp01
OpenStack: Inside Out
Openstack architure part 1
DEVNET-1106 Upcoming Services in OpenStack
Gordonh0945deepdive openstackcompute-140417174059-phpapp02
Openstack
Cloud and OpenStack
OpenStack and Windows
Sven Vogel: Running CloudStack and OpenShift with NetApp on KVM
Oct meetup open stack 101 clean
Power of OpenStack & Hadoop
Ad

Recently uploaded (20)

PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Machine learning based COVID-19 study performance prediction
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
cuic standard and advanced reporting.pdf
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
A Presentation on Artificial Intelligence
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
Cloud computing and distributed systems.
PDF
Modernizing your data center with Dell and AMD
Digital-Transformation-Roadmap-for-Companies.pptx
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Dropbox Q2 2025 Financial Results & Investor Presentation
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
NewMind AI Weekly Chronicles - August'25 Week I
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
NewMind AI Monthly Chronicles - July 2025
The Rise and Fall of 3GPP – Time for a Sabbatical?
Machine learning based COVID-19 study performance prediction
Per capita expenditure prediction using model stacking based on satellite ima...
cuic standard and advanced reporting.pdf
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
A Presentation on Artificial Intelligence
Network Security Unit 5.pdf for BCA BBA.
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
The AUB Centre for AI in Media Proposal.docx
Cloud computing and distributed systems.
Modernizing your data center with Dell and AMD

Ironic - A modern approach to machine deployment