Remove Hyper-V integration

Change-Id: I2e22ec47f644de2f1509a0111c9e1fffe8da0a1a
This commit is contained in:
Christian Berendt 2020-06-10 10:36:28 +02:00 committed by Mark Goddard
parent 61e32bb131
commit 6eb02245d6
27 changed files with 10 additions and 513 deletions

View File

@ -601,7 +601,6 @@ enable_horizon_trove: "{{ enable_trove | bool }}"
enable_horizon_vitrage: "{{ enable_vitrage | bool }}"
enable_horizon_watcher: "{{ enable_watcher | bool }}"
enable_horizon_zun: "{{ enable_zun | bool }}"
enable_hyperv: "no"
enable_influxdb: "{{ enable_monasca | bool or (enable_cloudkitty | bool and cloudkitty_storage_backend == 'influxdb') }}"
enable_ironic: "no"
enable_ironic_ipxe: "no"

View File

@ -75,16 +75,6 @@ control
[haproxy:children]
network
[hyperv]
#hyperv_host
[hyperv:vars]
#ansible_user=user
#ansible_password=password
#ansible_port=5986
#ansible_connection=winrm
#ansible_winrm_server_cert_validation=ignore
[mariadb:children]
control

View File

@ -99,16 +99,6 @@ control
[haproxy:children]
network
[hyperv]
#hyperv_host
[hyperv:vars]
#ansible_user=user
#ansible_password=password
#ansible_port=5986
#ansible_connection=winrm
#ansible_winrm_server_cert_validation=ignore
[mariadb:children]
control

View File

@ -357,12 +357,10 @@ mechanism_drivers:
enabled: "{{ neutron_plugin_agent == 'linuxbridge' }}"
- name: "openvswitch"
enabled: "{{ neutron_plugin_agent == 'openvswitch' }}"
- name: "hyperv"
enabled: "{{ enable_hyperv | bool }}"
- name: "baremetal"
enabled: "{{ enable_ironic_neutron_agent | bool }}"
- name: "l2population"
enabled: "{{ not enable_hyperv | bool and neutron_plugin_agent != 'ovn' }}"
enabled: "{{ neutron_plugin_agent != 'ovn' }}"
- name: "ovn"
enabled: "{{ neutron_plugin_agent == 'ovn' }}"
@ -373,13 +371,13 @@ neutron_mechanism_drivers: "{{ mechanism_drivers | selectattr('enabled', 'equalt
####################
extension_drivers:
- name: "qos"
enabled: "{{ enable_neutron_qos | bool and not enable_hyperv | bool }}"
enabled: "{{ enable_neutron_qos | bool }}"
- name: "port_security"
enabled: true
- name: "dns"
enabled: "{{ enable_designate | bool and not enable_hyperv | bool }}"
enabled: "{{ enable_designate | bool }}"
- name: "sfc"
enabled: "{{ enable_neutron_sfc | bool and not enable_hyperv | bool }}"
enabled: "{{ enable_neutron_sfc | bool }}"
neutron_extension_drivers: "{{ extension_drivers | selectattr('enabled', 'equalto', true) | list }}"

View File

@ -1,21 +0,0 @@
---
project_name: "nova-hyperv"
msi_dir: "%SYSTEMDRIVE%\\OpenStack\\MSIs"
log_dir: "%SYSTEMDRIVE%\\OpenStack\\Log"
freerdp_msi_url: "https://cloudbase.it/downloads/FreeRDPWebConnect.msi"
hyperv_compute_msi: "HyperVNovaCompute.msi"
freerdp_webconnect_msi: "FreeRDPWebConnect.msi"
####################
# Notification
####################
nova_notification_topics:
- name: notifications
enabled: "{{ enable_ceilometer | bool or enable_searchlight | bool or enable_neutron_infoblox_ipam_agent | bool }}"
- name: notifications_designate
enabled: "{{ enable_designate | bool }}"
- name: vitrage_notifications
enabled: "{{ enable_vitrage | bool }}"
nova_enabled_notification_topics: "{{ nova_notification_topics | selectattr('enabled', 'equalto', true) | list }}"

View File

@ -1,15 +0,0 @@
---
- name: Restart nova-compute
win_service:
name: nova-compute
state: restarted
- name: Restart neutron-hyperv-agent
win_service:
name: neutron-hyperv-agent
state: restarted
- name: Restart FreeRDP-WebConnect
win_service:
name: wsgate
state: restarted

View File

@ -1 +0,0 @@
---

View File

@ -1,39 +0,0 @@
---
- name: Create log directory
win_command: "cmd /c mkdir {{ log_dir }}"
args:
creates: "{{ log_dir }}"
- name: Configure nova-compute
win_template:
src: "{{ item }}"
dest: "%PROGRAMFILES%\\Cloudbase Solutions\\OpenStack\\Nova\\etc\\nova.conf"
with_first_found:
- "{{ node_custom_config }}/nova-hyperv/{{ inventory_hostname }}/nova_hyperv.conf"
- "{{ node_custom_config }}/nova-hyperv/nova_hyperv.conf"
- "nova_hyperv.conf.j2"
notify: Restart nova-compute
- name: Configure neutron-hyperv-agent
win_template:
src: "{{ item }}"
dest: "%PROGRAMFILES%\\Cloudbase Solutions\\OpenStack\\Nova\\etc\\neutron_hyperv_agent.conf"
with_first_found:
- "{{ node_custom_config }}/nova-hyperv/{{ inventory_hostname }}/neutron_hyperv_agent.conf"
- "{{ node_custom_config }}/nova-hyperv/neutron_hyperv_agent.conf"
- "neutron_hyperv_agent.conf.j2"
notify: Restart neutron-hyperv-agent
- name: Configure FreeRDP-WebConnect
win_template:
src: "{{ item }}"
dest: "%PROGRAMFILES%\\Cloudbase Solutions\\FreeRDP-WebConnect\\etc\\wsgate.ini"
with_first_found:
- "{{ node_custom_config }}/nova-hyperv/{{ inventory_hostname }}/wsgate.ini"
- "{{ node_custom_config }}/nova-hyperv/wsgate.ini"
- "wsgate.ini.j2"
notify: Restart FreeRDP-WebConnect
- include_tasks: copy-certs.yml
when:
- kolla_copy_ca_into_containers | bool

View File

@ -1,6 +0,0 @@
---
- name: "Copy certificates and keys for {{ project_name }}"
import_role:
role: service-cert-copy
vars:
project_services: "{{ nova_hyperv_services }}"

View File

@ -1,6 +0,0 @@
---
- include_tasks: install.yml
when: inventory_hostname in groups['hyperv']
- include_tasks: config.yml
when: inventory_hostname in groups['hyperv']

View File

@ -1,26 +0,0 @@
---
- name: Create MSIs download directory
win_command: "cmd /c mkdir {{ msi_dir }}"
args:
creates: "{{ msi_dir }}"
- name: Download Nova and FreeRDP-WebConnect MSIs
win_get_url:
url: "{{ item.name }}"
dest: "{{ item.destination }}"
force: no
with_items:
- { name: "{{ nova_msi_url }}", destination: "{{ msi_dir }}\\{{ hyperv_compute_msi }}" }
- { name: "{{ freerdp_msi_url }}", destination: "{{ msi_dir }}\\{{ freerdp_webconnect_msi }}" }
- name: Install the Compute MSI
win_command: "msiexec /i {{ hyperv_compute_msi }} SKIPNOVACONF=0"
args:
chdir: "{{ msi_dir }}"
creates: "%PROGRAMFILES%\\Cloudbase Solutions\\OpenStack\\Nova\\bin"
- name: Install the FreeRDP-WebConnect MSI
win_command: "msiexec.exe /i {{ freerdp_webconnect_msi }}"
args:
chdir: "{{ msi_dir }}"
creates: "%PROGRAMFILES%\\Cloudbase Solutions\\FreeRDP-WebConnect\\Binaries"

View File

@ -1,8 +0,0 @@
---
- name: Warn about deprecation
debug:
msg: >
Nova Hyper-V deployment role is deprecated in Ussuri and will be removed
in Victoria. Please read release notes for more background.
- include_tasks: "{{ kolla_action }}.yml"

View File

@ -1 +0,0 @@
---

View File

@ -1 +0,0 @@
---

View File

@ -1,2 +0,0 @@
---
- include_tasks: deploy.yml

View File

@ -1 +0,0 @@
---

View File

@ -1,26 +0,0 @@
[DEFAULT]
debug = {{ openstack_logging_debug }}
control_exchange = neutron
rpc_backend = rabbit
log_dir = C:\OpenStack\Log
log_file = neutron-hyperv-agent.log
transport_url = {{ rpc_transport_url }}
[AGENT]
polling_interval = 2
physical_network_vswitch_mappings = *:{{ vswitch_name }}
enable_metrics_collection = false
enable_qos_extension = false
[SECURITYGROUP]
firewall_driver = hyperv
enable_security_group = true
[oslo_messaging_notifications]
transport_url = {{ notify_transport_url }}
{% if nova_enabled_notification_topics %}
driver = messagingv2
topics = {{ nova_enabled_notification_topics | map(attribute='name') | join(',') }}
{% else %}
driver = noop
{% endif %}

View File

@ -1,78 +0,0 @@
[DEFAULT]
compute_driver = compute_hyperv.driver.HyperVDriver
instances_path = C:\OpenStack\Instances
use_cow_images = true
flat_injected = true
mkisofs_cmd = C:\Program Files\Cloudbase Solutions\OpenStack\Nova\bin\mkisofs.exe
debug = {{ openstack_logging_debug }}
allow_resize_to_same_host = true
running_deleted_instance_action = reap
running_deleted_instance_poll_interval = 120
resize_confirm_window = 5
resume_guests_state_on_host_boot = true
rpc_response_timeout = 1800
lock_path = C:\OpenStack\Log
vif_plugging_is_fatal = false
vif_plugging_timeout = 60
rpc_backend = rabbit
log_dir = C:\OpenStack\Log
log_file = nova-compute.log
force_config_drive = True
transport_url = {{ rpc_transport_url }}
[placement]
auth_type = password
auth_url = {{ keystone_admin_url }}/v3
project_name = service
username = {{ placement_keystone_user }}
password = {{ placement_keystone_password }}
project_domain_name = {{ default_project_domain_name }}
user_domain_name = {{ default_user_domain_name }}
os_region_name = {{ openstack_region_name }}
cafile = {{ openstack_cacert }}
[glance]
api_servers = {{ internal_protocol }}://{{ glance_internal_fqdn | put_address_in_context('url') }}:{{ glance_api_port }}
cafile = {{ openstack_cacert }}
[hyperv]
vswitch_name = {{ vswitch_name }}
limit_cpu_features = false
config_drive_inject_password = true
qemu_img_cmd = C:\Program Files\Cloudbase Solutions\OpenStack\Nova\bin\qemu-img.exe
config_drive_cdrom = true
dynamic_memory_ratio = 1
enable_instance_metrics_collection = false
[rdp]
enabled = true
html5_proxy_base_url = {{ public_protocol }}://{{ kolla_internal_vip_address | put_address_in_context('url') }}:{{ rdp_port }}
[neutron]
url = {{ internal_protocol }}://{{ neutron_internal_fqdn | put_address_in_context('url') }}:{{ neutron_server_port }}
auth_strategy = keystone
project_domain_name = default
project_name = service
user_domain_name = default
username = {{ neutron_keystone_user }}
password = {{ neutron_keystone_password }}
auth_url = {{ keystone_admin_url }}/v3
auth_type = v3password
cafile = {{ openstack_cacert }}
[oslo_messaging_notifications]
transport_url = {{ notify_transport_url }}
{% if nova_enabled_notification_topics %}
driver = messagingv2
topics = {{ nova_enabled_notification_topics | map(attribute='name') | join(',') }}
{% else %}
driver = noop
{% endif %}
[notifications]
{% if not enable_searchlight | bool %}
notification_format = unversioned
{% else %}
notification_format = both
{% endif %}

View File

@ -1,28 +0,0 @@
[global]
debug = {{ openstack_logging_debug }}
redirect = false
port = {{ rdp_port }}
bindaddr = {% for host in groups['hyperv'] %}{% for ip in hostvars[inventory_hostname]['ansible_ip_addresses'] %}{% if host == ip %}{{ ip }}{% endif %}{% endfor %}{% endfor %}
[http]
documentroot = C:\Program Files\Cloudbase Solutions\FreeRDP-WebConnect\WebRoot\
[ssl]
port=4430
bindaddr = {% for host in groups['hyperv'] %}{% for ip in hostvars[inventory_hostname]['ansible_ip_addresses'] %}{% if host == ip %}{{ ip }}{% endif %}{% endfor %}{% endfor %}
certfile = C:\Program Files\Cloudbase Solutions\FreeRDP-WebConnect\etc\server.cer
[rdpoverride]
nofullwindowdrag = true
[openstack]
authurl = {{ keystone_admin_url }}/v2.0
tenantname = service
username = {{ nova_keystone_user }}
password = {{ nova_keystone_password }}
[hyperv]
hostusername = {{ hyperv_username }}
hostpassword = {{ hyperv_password }}

View File

@ -35,12 +35,6 @@ nova_services:
external: true
port: "{{ nova_metadata_port }}"
listen_port: "{{ nova_metadata_listen_port }}"
nova_rdp:
enabled: "{{ enable_nova|bool and nova_console == 'rdp' }}"
mode: "http"
external: false
port: "{{ rdp_port }}"
host_group: "hyperv"
nova-scheduler:
container_name: "nova_scheduler"
group: "nova-scheduler"

View File

@ -35,7 +35,6 @@
- enable_haproxy_{{ enable_haproxy | bool }}
- enable_heat_{{ enable_heat | bool }}
- enable_horizon_{{ enable_horizon | bool }}
- enable_hyperv_{{ enable_hyperv | bool }}
- enable_influxdb_{{ enable_influxdb | bool }}
- enable_ironic_{{ enable_ironic | bool }}
- enable_iscsid_{{ enable_iscsid | bool }}
@ -728,17 +727,6 @@
tags: ovn,
when: enable_ovn | bool }
- name: Apply role nova-hyperv
gather_facts: false
hosts:
- hyperv
- '&enable_hyperv_True'
serial: '{{ kolla_serial|default("0") }}'
roles:
- { role: nova-hyperv,
tags: nova-hyperv,
when: enable_hyperv | bool }
# NOTE(gmmaha): Please do not change the order listed here. The current order is a
# workaround to fix the bug https://bugs.launchpad.net/kolla/+bug/1546789
- name: Apply role neutron

View File

@ -1,173 +0,0 @@
.. _hyperv-guide:
===========
Nova HyperV
===========
.. note::
Hyper-V support has been deprecated and will be removed in the Victoria cycle.
Overview
~~~~~~~~
Currently, Kolla can deploy the following OpenStack services for Hyper-V:
* nova-compute
* neutron-hyperv-agent
* wsgate
It is possible to use Hyper-V as a compute node within an OpenStack Deployment.
The nova-compute service runs as openstack-compute, a 64-bit service directly
upon the Windows platform with the Hyper-V role enabled. The necessary Python
components as well as the nova-compute service are installed directly onto
the Windows platform. Windows Clustering Services are not needed for
functionality within the OpenStack infrastructure.
The wsgate is the FreeRDP-WebConnect service that is used for accessing
virtual machines from Horizon web interface.
.. note::
HyperV services are not currently deployed as containers. This functionality
is in development. The current implementation installs OpenStack services
via MSIs.
.. note::
HyperV services do not currently support outside the box upgrades. Manual
upgrades are required for this process. MSI release versions can be found
`here <https://cloudbase.it/openstack-hyperv-driver/>`__.
To upgrade an existing MSI to a newer version, simply uninstall the current
MSI and install the newer one. This will not delete the configuration files.
To preserve the configuration files, check the Skip configuration checkbox
during installation.
Preparation for Hyper-V node
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ansible communicates with Hyper-V host via WinRM protocol. An HTTPS WinRM
listener needs to be configured on the Hyper-V host, which can be easily
created with `this PowerShell script
<https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1>`__.
A virtual switch has to be created with which Hyper-V virtual machines
communicate with OpenStack. To quickly enable an interface to be used as a
Virtual Interface the following PowerShell may be used:
.. code-block:: console
PS C:\> $if = Get-NetIPAddress -IPAddress 192* | Get-NetIPInterface
PS C:\> New-VMSwitch -NetAdapterName $if.ifAlias -Name YOUR_BRIDGE_NAME -AllowManagementOS $false
.. note::
It is very important to make sure that when you are using a Hyper-V node
with only 1 NIC the ``-AllowManagementOS`` option is set on ``True``,
otherwise you will lose connectivity to the Hyper-V node.
To prepare the Hyper-V node to be able to attach to volumes provided by
cinder you must first make sure the Windows iSCSI initiator service is
running and started automatically.
.. code-block:: console
PS C:\> Set-Service -Name MSiSCSI -StartupType Automatic
PS C:\> Start-Service MSiSCSI
Preparation for Kolla deployer node
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Hyper-V role is required, enable it in ``/etc/kolla/globals.yml``:
.. code-block:: yaml
enable_hyperv: "yes"
Hyper-V options are also required in ``/etc/kolla/globals.yml``:
.. code-block:: yaml
hyperv_username: <HyperV username>
hyperv_password: <HyperV password>
vswitch_name: <HyperV virtual switch name>
nova_msi_url: "https://www.cloudbase.it/downloads/HyperVNovaCompute_Beta.msi"
If tenant networks are to be built using VLAN add corresponding type in
``/etc/kolla/globals.yml``:
.. code-block:: yaml
neutron_tenant_network_types: 'flat,vlan'
The virtual switch is the same one created on the HyperV setup part.
For nova_msi_url, different Nova MSI (Mitaka/Newton/Ocata) versions can
be found on `Cloudbase website
<https://cloudbase.it/openstack-hyperv-driver/>`__.
Add the Hyper-V node in ``ansible/inventory`` file:
.. code-block:: ini
[hyperv]
<HyperV IP>
[hyperv:vars]
ansible_user=<HyperV user>
ansible_password=<HyperV password>
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
``pywinrm`` package needs to be installed in order for Ansible to work
on the HyperV node:
.. code-block:: console
pip install "pywinrm>=0.2.2"
.. note::
In case of a test deployment with controller and compute nodes as
virtual machines on Hyper-V, if VLAN tenant networking is used,
trunk mode has to be enabled on the VMs:
.. code-block:: console
Set-VMNetworkAdapterVlan -Trunk -AllowedVlanIdList <VLAN ID> -NativeVlanId 0 <VM name>
networking-hyperv mechanism driver is needed for neutron-server to
communicate with HyperV nova-compute. This can be built with source
images by default. Manually it can be intalled in neutron-server
container with pip:
.. code-block:: console
pip install "networking-hyperv>=4.0.0"
For neutron_extension_drivers, ``port_security`` and ``qos`` are
currently supported by the networking-hyperv mechanism driver.
By default only ``port_security`` is set.
Verify Operations
~~~~~~~~~~~~~~~~~
OpenStack HyperV services can be inspected and managed from PowerShell:
.. code-block:: console
PS C:\> Get-Service nova-compute
PS C:\> Get-Service neutron-hyperv-agent
.. code-block:: console
PS C:\> Restart-Service nova-compute
PS C:\> Restart-Service neutron-hyperv-agent
For more information on OpenStack HyperV, see
:nova-doc:`Hyper-V virtualization platform
<admin/configuration/hypervisor-hyper-v.html>`.

View File

@ -3,17 +3,16 @@ Compute
=======
This section describes configuring nova hypervisors and
compute services like HyperV and so on.
compute services.
.. note::
Hyper-V and VMware support have been deprecated and will
VMware support has been deprecated and will
be removed in the Victoria cycle.
.. toctree::
:maxdepth: 1
hyperv-guide
libvirt-guide
masakari-guide
nova-cells-guide

View File

@ -16,15 +16,6 @@ The virtualisation driver may be selected via ``nova_compute_virt_type`` in
``globals.yml``. Supported options are ``qemu``, ``kvm``, and ``vmware``.
The default is ``kvm``.
HyperV
------
.. note::
Hyper-V support has been deprecated and will be removed in the Victoria cycle.
Information on using Nova with HyperV can be found in :doc:`hyperv-guide`.
Libvirt
-------

View File

@ -289,7 +289,6 @@
#enable_horizon_vitrage: "{{ enable_vitrage | bool }}"
#enable_horizon_watcher: "{{ enable_watcher | bool }}"
#enable_horizon_zun: "{{ enable_zun | bool }}"
#enable_hyperv: "no"
#enable_influxdb: "{{ enable_monasca | bool or (enable_cloudkitty | bool and cloudkitty_storage_backend == 'influxdb') }}"
#enable_ironic: "no"
#enable_ironic_ipxe: "no"
@ -523,19 +522,6 @@
# Enable distributed floating ip for OVN deployments
#neutron_ovn_distributed_fip: "no"
#################
# Hyper-V options
#################
# NOTE: Hyper-V support has been deprecated and will be removed in the Victoria cycle.
# Hyper-V can be used as hypervisor
#hyperv_username: "user"
#hyperv_password: "password"
#vswitch_name: "vswitch"
# URL from which Nova Hyper-V MSI is downloaded
#nova_msi_url: "https://www.cloudbase.it/downloads/HyperVNovaCompute_Beta.msi"
#############################
# Horizon - Dashboard Options
#############################

View File

@ -0,0 +1,4 @@
---
upgrade:
- |
Support for deploying with Hyper-V integrations has been removed.

View File

@ -113,16 +113,6 @@ control
[haproxy:children]
network
[hyperv]
#hyperv_host
[hyperv:vars]
#ansible_user=user
#ansible_password=password
#ansible_port=5986
#ansible_connection=winrm
#ansible_winrm_server_cert_validation=ignore
[mariadb:children]
control