From 0aefe6ab27a7a46220064b852108c67c823a9f0e Mon Sep 17 00:00:00 2001 From: Chris Beukers Date: Mon, 3 Jul 2017 07:25:03 -0700 Subject: [PATCH] Adding serial console support This change is to add serial console support serial console is needed in the case the underlying platform does not support the spice or novnc option. Another benefit is more extended configurations options users have more options in how their Openstack enviroment is configured Defaults for serialconsole are added to /defaults/main.yml /templates/nova.conf.j2 template has been changed so new variables can be imported the file nova_install.yml has been changed: added conditional to ensure no new console playbooks are loaded. Change-Id: I02dc48a8d562d20f37b21e03207e91a220b6dbaf Partial-Bug: #1696701 Depends-On: I30f91b20b195e578647ea2a0cfe087bdac2b5b6b --- defaults/main.yml | 19 +++++++++++++++++-- tasks/nova_install.yml | 1 + templates/nova.conf.j2 | 16 +++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/defaults/main.yml b/defaults/main.yml index 56834575..5f1e9f9b 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -237,6 +237,15 @@ nova_novncproxy_agent_enabled: True nova_novncproxy_git_repo: https://github.com/novnc/noVNC nova_novncproxy_git_install_branch: master +## Nova serialconsole +nova_serialconsoleproxy_proto: "ws" +nova_serialconsoleproxy_port: 6083 +nova_serialconsoleproxy_port_range: 10000:20000 +nova_serialconsoleproxy_base_uri: "{{ nova_serialconsoleproxy_proto }}://{{ external_lb_vip_address }}:{{ nova_serialconsoleproxy_port }}" +nova_serialconsoleproxy_base_url: "{{ nova_serialconsoleproxy_base_uri }}" +nova_serialconsoleproxy_serialconsole_proxyserver_proxyclient_address: "{{ ansible_host }}" +nova_serialconsoleproxy_enabled: True + ## Nova metadata nova_metadata_proxy_enabled: "{{ nova_network_services[nova_network_type]['metadata_proxy_enabled'] | bool }}" nova_metadata_host: "{{ internal_lb_vip_address }}" @@ -292,7 +301,7 @@ nova_libvirt_hw_disk_discard: '{{ nova_libvirt_images_rbd_pool is defined | tern ## Nova console nova_console_agent_enabled: True -# Set the console type. Presently the only options are ["spice", "novnc"]. +# Set the console type. Presently the only options are ["spice", "novnc", "serialconsole"]. nova_console_type: spice # Nova console ssl info, presently only used by novnc console type @@ -420,6 +429,7 @@ nova_novncproxy_init_overrides: {} nova_scheduler_init_overrides: {} nova_spicehtml5proxy_init_overrides: {} nova_placement_api_init_overrides: {} +nova_serialproxy_init_overrides: {} ## Service Name-Group Mapping nova_services: @@ -489,7 +499,12 @@ nova_services: uwsgi_port: "{{ nova_placement_service_port }}" wsgi_name: nova-placement-api wsgi_overrides: "{{ nova_placement_uwsgi_ini_overrides }}" - + nova-serialconsole-proxy: + group: nova_console + service_name: nova-serialproxy + init_config_overrides: "{{ nova_serialproxy_init_overrides }}" + condition: "{{ nova_console_type == 'serialconsole' }}" + start_order: 4 nova_novnc_pip_packages: - websockify diff --git a/tasks/nova_install.yml b/tasks/nova_install.yml index b9d73a25..fe2cad0e 100644 --- a/tasks/nova_install.yml +++ b/tasks/nova_install.yml @@ -161,6 +161,7 @@ - include: "consoles/nova_console_{{ nova_console_type }}_install.yml" when: - "'nova_console' in group_names" + - "nova_console_type != 'serialconsole'" tags: - nova-install - nova-novnc-console diff --git a/templates/nova.conf.j2 b/templates/nova.conf.j2 index 01918fd5..126361cf 100644 --- a/templates/nova.conf.j2 +++ b/templates/nova.conf.j2 @@ -111,7 +111,6 @@ catalog_info = volumev3:cinderv3:internalURL cross_az_attach = {{ nova_cross_az_attach }} os_region_name = {{ nova_service_region }} - {% if nova_console_type == 'spice' %} [spice] agent_enabled = {{ nova_console_agent_enabled }} @@ -133,6 +132,21 @@ novncproxy_base_url = {{ nova_novncproxy_base_url }} vncserver_listen = {{ nova_novncproxy_vncserver_listen }} vncserver_proxyclient_address = {{ nova_novncproxy_vncserver_proxyclient_address }} +{% elif nova_console_type == 'serialconsole' %} +[serial_console] +enabled = {{ nova_serialconsoleproxy_enabled }} +# Console Url and binds +base_url= {{ nova_serialconsoleproxy_base_url }} +proxyclient_address = {% if nova_management_address == 'localhost' %}127.0.0.1{% else %}{{ nova_management_address }}{% endif %} +port_range = {{ nova_serialconsoleproxy_port_range }} +{% if 'nova_console' in group_names %} +serialproxy_host= {{ nova_serialconsoleproxy_serialconsole_proxyserver_proxyclient_address }} +serialproxy_port= {{ nova_serialconsoleproxy_port }} +{% endif %} + +[vnc] +enabled = False + {% endif %} # Glance