use ipmitool to provide serial console access

Registered by Sun Jing on 2013-11-19

use ipmitool to enter IPMI Serial-over-LAN mode. An RMCP+ connection is made to the BMC, the terminal is set to raw mode, and user input is sent to the serial console on the remote server. On exit,the the SOL payload mode is deactivated and the terminal is reset to its original settings.

use ~. to terminate connection.

Blueprint information

Status:
Complete
Approver:
Devananda van der Veen
Priority:
High
Drafter:
Sun Jing
Direction:
Approved
Assignee:
Sun Jing
Definition:
Approved
Series goal:
Accepted for juno
Implementation:
Implemented
Milestone target:
None
Started by
Sun Jing on 2013-12-26
Completed by
Devananda van der Veen on 2014-05-18

Related branches

Sprints

Whiteboard

Sun, please add details to the blueprint explaining how you plan to expose the serial console to the end-user. Will you use shellinaboxd (as the nova-baremetal driver did)? If so, how will you route the traffic and keep it secure? Or, will you do something else?

--Devananda, 2013-11-19

Deva, yes, I read nova-baremetal ipmi.py for console implementation, and it's basically shellinaboxd + ipmitool, I also set it up in my dev cluster. But I know Jarrod implemented serial console in pyghmi, so I'm working with him to see which solution is better, will update you once it's done.

Also, I'm a little confused about the "end-user" of console, I originally assumed it should be the cloud admin, please correct me if I'm wrong.Thx

--Sun Jing 2013-11-21

-------------------------
@Sun, I think an implementation based on shellinaboxd + ipmitool is acceptable for now, if Jarrod's work is going to take a while. Serial console is part of nova-baremetal and so Ironic needs it in order to graduate from incubation. The Icehouse-2 milestone is Jan 23rd, so we should have something working by then (doesn't need to be bug-free, just functional).

As far as "who is the end-user" -- no, it will not necessarily be cloud admin. Any user who can "nova boot" can request a console to their nova instance. The request will be routed through Nova and to Ironic.

--Devananda, 2013-11-21

------------------------
There should be two implementation of console. One uses shellinaboxd + ipmitool for user who chooses ipmitool as the ipmi power driver. The other one uses shellinaboxd + pyghmi for user who chooses ipminative as the ipmi power driver. Mixing ipmitool and pyghmi is not preferred.

 ---Ling Gao 2013-12-16

@Ling, correct, this is what I supposed to do. To make ironic be able to graduate from incubation, I'm implementing shellinabox + ipmitool in ipmitoo.py first, then check with Jarrod about his console implementation in pyghmi to see if we can integrate it into ironic, so we could have two sets of console solutions for the users: console via ipmitool, console via nativeipmi.

--Sun Jing 2013-12-17

-------------------------
Code is ready for review - ipmitool + shellinaboxd, see:
https://review.openstack.org/64100

Also, I plan to work with Jarrod about the console implementation in ipminative.py and pyghmi, wanted to include this part into this blueprint too.

--Sun Jing 2013-12-26

Gerrit topic: https://review.openstack.org/#q,topic:bp/serial-console-access,n,z

-------------------------

I understand we use ipmitool + shellinaboxd to redirect the physical server serial console to the web interface shellinaboxd provided, but our user don't know the how to launch this console, should we expose the shellinaboxd url to enduser to launch the serial console via web? Such as our nova command get-vnc-console can show a url for user to launch the console.

--Haomeng, 2014-01-03

Addressed by: https://review.openstack.org/72698
    Add get_console() method

Addressed by: https://review.openstack.org/72998
    API: Expose a way to start/stop the console

------------------
Hi Sun Jing,

Given that the ironic nodes are listed as hypervisors in the horizon, how do we gain access to console from horizon? Does the blueprint covers the access via horizon?

- Nisha Agarwal , 2014-03-21

------------------
Hi Nisha,

I have some new assignment from IBM, so Matt Wagner might be the new owner of this blueprint, you could double check with Deva.

As you may know, this blueprint mainly addresses the driver side, Lucas has implemented the REST API side, not sure it should be horizon or ironic to cover the GUI access. @Deva, your thoughts?

-----------------

I carried over this BP from Sun Jing with the help of Matt Wagner. After many iterations of the code review, the ipmitool + shellinabox console patch is finally landed today. Cheers! https://review.openstack.org/#/c/64100/

--Ling Gao, 2014-05-06

----------------

I have the following in mind for next phase:
1. Add ipminative + shellinabox console support
2. Add ipminatve + confluent console support. Confluent is a console server written for pyghmi. http://sourceforge.net/p/xcat/confluent/ci/master/tree/. It supports access remote console from both web and cli.
3. Add console log support.
4. Integrate console with Horizon.

Any thoughts? Should we create more BP for these or just use this one?

--Ling Gao, 2014-05-06

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.