Merge "Update docs to portgroup with creating windows images"
This commit is contained in:
commit
92114bb9ff
91
doc/source/admin/building-windows-images.rst
Normal file
91
doc/source/admin/building-windows-images.rst
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
.. _building_image_windows:
|
||||||
|
|
||||||
|
Building images for Windows
|
||||||
|
---------------------------
|
||||||
|
We can use ``New-WindowsOnlineImage`` in `windows-openstack-imaging-tools`_
|
||||||
|
tool as an option to create Windows images (whole disk images) corresponding
|
||||||
|
boot modes which will support for Windows NIC Teaming. And allow the
|
||||||
|
utilization of link aggregation when the instance is spawned on hardware
|
||||||
|
servers (Bare metals).
|
||||||
|
|
||||||
|
Requirements:
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* A Microsoft Windows Server Operating System along with
|
||||||
|
``Hyper-V virtualization`` enabled,
|
||||||
|
``PowerShell`` version >=4 supported,
|
||||||
|
``Windows Assessment and Deployment Kit``,
|
||||||
|
in short ``Windows ADK``.
|
||||||
|
* The windows Server compatible drivers.
|
||||||
|
* Working git environment.
|
||||||
|
|
||||||
|
Preparation:
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* Download a Windows Server 2012R2/ 2016 installation ISO.
|
||||||
|
* Install Windows Server 2012R2/ 2016 OS on workstation PC along with
|
||||||
|
following feature:
|
||||||
|
|
||||||
|
- Enable Hyper-V virtualization.
|
||||||
|
- Install PowerShell 4.0.
|
||||||
|
- Install Git environment & import git proxy (if have).
|
||||||
|
- Create new ``Path`` in Microsoft Windows Server Operating System which
|
||||||
|
support for submodule update via ``git submodule update –init`` command::
|
||||||
|
|
||||||
|
- Variable name: Path
|
||||||
|
- Variable value: C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\bin
|
||||||
|
|
||||||
|
- Rename virtual switch name in Windows Server 2012R2/ 2016 in
|
||||||
|
``Virtual Switch Manager`` into `external`.
|
||||||
|
|
||||||
|
Implementation:
|
||||||
|
~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
* ``Step 1``: Create folders: ``C:\<folder_name_1>`` where output images will
|
||||||
|
be located, ``C:\<folder_name_2>`` where you need to place the necessary
|
||||||
|
hardware drivers.
|
||||||
|
|
||||||
|
* ``Step 2``: Copy and extract necessary hardware drivers in
|
||||||
|
``C:\<folder_name_2>``.
|
||||||
|
|
||||||
|
* ``Step 3``: Insert or burn Windows Server 2016 ISO to ``D:\``.
|
||||||
|
|
||||||
|
* ``Step 4``: Download ``windows-openstack-imaging-tools`` tools.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
git clone https://github.com/cloudbase/windows-openstack-imaging-tools.git
|
||||||
|
|
||||||
|
* ``Step 5``: Create & running script `create-windows-cloud-image.ps1`:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
git submodule update --init
|
||||||
|
Import-Module WinImageBuilder.psm1
|
||||||
|
$windowsImagePath = "C:\<folder_name_1>\<output_file_name>.qcow2"
|
||||||
|
$VirtIOISOPath = "C:\<folder_name_1>\virtio.iso"
|
||||||
|
$virtIODownloadLink = "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.133-2/virtio-win.iso"
|
||||||
|
(New-Object System.Net.WebClient).DownloadFile($virtIODownloadLink, $VirtIOISOPath)
|
||||||
|
$wimFilePath = "D:\sources\install.wim"
|
||||||
|
$extraDriversPath = "C:\<folder_name_2>\"
|
||||||
|
$image = (Get-WimFileImagesInfo -WimFilePath $wimFilePath)[1]
|
||||||
|
$switchName = 'external'
|
||||||
|
New-WindowsOnlineImage -WimFilePath $wimFilePath
|
||||||
|
-ImageName $image.ImageName ` -WindowsImagePath $windowsImagePath -Type 'KVM' -ExtraFeatures @() `
|
||||||
|
-SizeBytes 20GB -CpuCores 2 -Memory 2GB -SwitchName $switchName ` -ProductKey $productKey -DiskLayout 'BIOS' `
|
||||||
|
-ExtraDriversPath $extraDriversPath ` -InstallUpdates:$false -AdministratorPassword 'Pa$$w0rd' `
|
||||||
|
-PurgeUpdates:$true -DisableSwap:$true
|
||||||
|
|
||||||
|
After executing this command you will get two output files, first one being
|
||||||
|
"C:\<folder_name_1>\<output_file_name>.qcow2", which is the resulting windows
|
||||||
|
whole disk image and "C:\<folder_name_1>\virtio.iso", which is virtio iso
|
||||||
|
contains all the synthetic drivers for the KVM hypervisor.
|
||||||
|
|
||||||
|
See `example_windows_images`_ for more details and examples.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
We can change ``SizeBytes``, ``CpuCores`` and ``Memory`` depending on requirements.
|
||||||
|
|
||||||
|
.. _`example_windows_images`: https://github.com/cloudbase/windows-openstack-imaging-tools/blob/master/Examples
|
||||||
|
.. _`windows-openstack-imaging-tools`: https://github.com/cloudbase/windows-openstack-imaging-tools
|
@ -29,6 +29,7 @@ the services.
|
|||||||
Conductor Groups <conductor-groups>
|
Conductor Groups <conductor-groups>
|
||||||
Upgrade Guide <upgrade-guide>
|
Upgrade Guide <upgrade-guide>
|
||||||
Security <security>
|
Security <security>
|
||||||
|
Windows Images <building-windows-images>
|
||||||
Troubleshooting FAQ <troubleshooting>
|
Troubleshooting FAQ <troubleshooting>
|
||||||
|
|
||||||
Dashboard Integration
|
Dashboard Integration
|
||||||
|
@ -117,3 +117,18 @@ group, in no particular order. It starts with 0 and increments by 1 for every
|
|||||||
configured port group.
|
configured port group.
|
||||||
|
|
||||||
.. _`kernel documentation on bonding`: https://www.kernel.org/doc/Documentation/networking/bonding.txt
|
.. _`kernel documentation on bonding`: https://www.kernel.org/doc/Documentation/networking/bonding.txt
|
||||||
|
|
||||||
|
Link aggregation/teaming on windows
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
Portgroups are supported for Windows Server images, which can created by
|
||||||
|
:ref:`building_image_windows` instruction.
|
||||||
|
|
||||||
|
You can customise an instance after it is launched along with
|
||||||
|
`script file <../../../../tools/link_aggregation_on_windows.ps1>`_ in
|
||||||
|
``Configuration`` of ``Instance`` and selected ``Configuration Drive`` option.
|
||||||
|
Then ironic virt driver will generate network metadata and add all the
|
||||||
|
additional information, such as bond mode, transmit hash policy,
|
||||||
|
MII link monitoring interval, and of which links the bond consists.
|
||||||
|
The information in InstanceMetadata will be used afterwards to generate
|
||||||
|
the config drive.
|
||||||
|
40
tools/link_aggregation_on_windows.ps1
Normal file
40
tools/link_aggregation_on_windows.ps1
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
#ps1_sysnative
|
||||||
|
|
||||||
|
# Copyright 2018 FUJITSU LIMITED
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
# Load network_data.json
|
||||||
|
$dir_data_config_file = (Get-ChildItem -Path ($PSCommandPath | Split-Path -Parent) -Filter 'network_data.json' -File -Recurse).fullname
|
||||||
|
$network_data = Get-Content -Raw -Path $dir_data_config_file | ConvertFrom-Json
|
||||||
|
|
||||||
|
# Create NIC Teaming base on netwok_data.json
|
||||||
|
$MAC_MASTER=''
|
||||||
|
foreach ($nic in $network_data.links)
|
||||||
|
{
|
||||||
|
if ($nic.type -like 'bond')
|
||||||
|
{
|
||||||
|
$nic_master=Get-NetAdapter | where MacAddress -eq $nic.ethernet_mac_address.Replace(':','-').ToUpper()
|
||||||
|
$MAC_MASTER = $nic.ethernet_mac_address.Replace(':','-').ToUpper()
|
||||||
|
New-NetLbfoTeam -Name 'openstack' -TeamMembers $nic_master.Name -TeamingMode SwitchIndependent -LoadBalancingAlgorithm MacAddresses -Confirm:$false
|
||||||
|
}
|
||||||
|
if ($nic.type -like 'phy')
|
||||||
|
{
|
||||||
|
$MAC_MEMBER = $nic.ethernet_mac_address.Replace(':','-').ToUpper()
|
||||||
|
if($MAC_MEMBER -notlike $MAC_MASTER)
|
||||||
|
{
|
||||||
|
$nic_member=Get-NetAdapter | where MacAddress -eq $MAC_MEMBER
|
||||||
|
Add-NetLbfoTeamMember -Name $nic_member.Name -Team 'openstack' -Confirm:$false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user