diff --git a/.github/workflows/gen-docs.yaml b/.github/workflows/gen-docs.yaml new file mode 100644 index 0000000000..4588d22c8c --- /dev/null +++ b/.github/workflows/gen-docs.yaml @@ -0,0 +1,32 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + +name: readthedocs/actions + +on: + pull_request_target: + +permissions: + pull-requests: write + +jobs: + pull-request-links: + runs-on: ubuntu-latest + steps: + - uses: readthedocs/actions/preview@v1 + with: + project-slug: "cloudstack-documentation" diff --git a/.gitignore b/.gitignore index 92e85090da..bd89c3fe36 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ build/ .vscode source/_build/ +/.idea +/.tx diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 0000000000..78c7c22c1d --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,10 @@ +version: 2 + +build: + os: "ubuntu-22.04" + tools: + python: "3.11" + +python: + install: + - requirements: requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000..1193b3931c --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +docutils<0.18 +sphinx<2 +sphinx-rtd-theme<0.5 +readthedocs-sphinx-ext<2.3 +jinja2<3.1.0 diff --git a/source/_global.rst b/source/_global.rst index 9a4d2a50dc..b8d35314bd 100644 --- a/source/_global.rst +++ b/source/_global.rst @@ -17,33 +17,27 @@ .. This file contain Variables shared across other .rst files in this project -.. _CloudStack Installation Guide: https://docs.cloudstack.apache.org/projects/cloudstack-installation -.. _CloudStack Administrator's Guide: https://docs.cloudstack.apache.org/projects/cloudstack-administration +.. _CloudStack Installation Guide: https://docs.cloudstack.apache.org/en/latest/installguide/index.html +.. _CloudStack Administrator's Guide: https://docs.cloudstack.apache.org/en/latest/adminguide/index.html .. _CloudStack Apidocs: https://cloudstack.apache.org/api.html .. |documentation_home| replace:: https://docs.cloudstack.apache.org/ .. Latest version systemvm template name -.. |sysvm64-version| replace:: 4.16.0 -.. |sysvm64-name-xen| replace:: systemvm-xenserver-4.16.0 -.. |sysvm64-name-kvm| replace:: systemvm-kvm-4.16.0 -.. |sysvm64-name-vmware| replace:: systemvm-vmware-4.16.0 -.. |sysvm64-name-hyperv| replace:: systemvm-hyperv-4.16.0 -.. |sysvm64-name-ovm| replace:: systemvm-ovm-4.16.0 +.. |sysvm64-version| replace:: 4.18.1 +.. |sysvm64-name-xen| replace:: systemvm-xenserver-4.18.1 +.. |sysvm64-name-kvm| replace:: systemvm-kvm-4.18.1 +.. |sysvm64-name-vmware| replace:: systemvm-vmware-4.18.1 +.. |sysvm64-name-hyperv| replace:: systemvm-hyperv-4.18.1 +.. |sysvm64-name-ovm| replace:: systemvm-ovm-4.18.1 .. Latest version systemvm template URL -.. |sysvm64-url-xen| replace:: https://download.cloudstack.org/systemvm/4.16/systemvmtemplate-4.16.0-xen.vhd.bz2 -.. |sysvm64-url-kvm| replace:: https://download.cloudstack.org/systemvm/4.16/systemvmtemplate-4.16.0-kvm.qcow2.bz2 -.. |sysvm64-url-vmware| replace:: https://download.cloudstack.org/systemvm/4.16/systemvmtemplate-4.16.0-vmware.ova -.. |sysvm64-url-hyperv| replace:: https://download.cloudstack.org/systemvm/4.16/systemvmtemplate-4.16.0-hyperv.vhd.zip -.. |sysvm64-url-ovm| replace:: https://download.cloudstack.org/systemvm/4.16/systemvmtemplate-4.16.0-ovm.raw.bz2 - -.. Version specific: 4.5 systemvm template URL -.. |acs45-sysvm64-url-xen| replace:: https://download.cloudstack.org/systemvm/4.5/systemvm64template-4.5-xen.vhd.bz2 -.. |acs45-sysvm64-url-kvm| replace:: https://download.cloudstack.org/systemvm/4.5/systemvm64template-4.5-kvm.qcow2.bz2 -.. |acs45-sysvm64-url-vmware| replace:: https://download.cloudstack.org/systemvm/4.5/systemvm64template-4.5-vmware.ova -.. |acs45-sysvm64-url-hyperv| replace:: https://download.cloudstack.org/systemvm/4.5/systemvm64template-4.5-hyperv.vhd.zip +.. |sysvm64-url-xen| replace:: http://download.cloudstack.org/systemvm/4.18/systemvmtemplate-4.18.1-xen.vhd.bz2 +.. |sysvm64-url-kvm| replace:: http://download.cloudstack.org/systemvm/4.18/systemvmtemplate-4.18.1-kvm.qcow2.bz2 +.. |sysvm64-url-vmware| replace:: http://download.cloudstack.org/systemvm/4.18/systemvmtemplate-4.18.1-vmware.ova +.. |sysvm64-url-hyperv| replace:: http://download.cloudstack.org/systemvm/4.18/systemvmtemplate-4.18.1-hyperv.vhd.zip +.. |sysvm64-url-ovm| replace:: http://download.cloudstack.org/systemvm/4.18/systemvmtemplate-4.18.1-ovm.raw.bz2 .. Images diff --git a/source/_static/images/BnR-Networker-Cluster-Client-General.jpg b/source/_static/images/BnR-Networker-Cluster-Client-General.jpg new file mode 100755 index 0000000000..7a142014f3 Binary files /dev/null and b/source/_static/images/BnR-Networker-Cluster-Client-General.jpg differ diff --git a/source/_static/images/BnR-Networker-Cluster-Client-Globals1.jpg b/source/_static/images/BnR-Networker-Cluster-Client-Globals1.jpg new file mode 100755 index 0000000000..1fb533a759 Binary files /dev/null and b/source/_static/images/BnR-Networker-Cluster-Client-Globals1.jpg differ diff --git a/source/_static/images/BnR-Networker-Cluster-Client-Globals2.jpg b/source/_static/images/BnR-Networker-Cluster-Client-Globals2.jpg new file mode 100755 index 0000000000..5fcb9b51a1 Binary files /dev/null and b/source/_static/images/BnR-Networker-Cluster-Client-Globals2.jpg differ diff --git a/source/_static/images/BnR-Networker-Cluster-Clients-overview.jpg b/source/_static/images/BnR-Networker-Cluster-Clients-overview.jpg new file mode 100755 index 0000000000..80c4bb2e6d Binary files /dev/null and b/source/_static/images/BnR-Networker-Cluster-Clients-overview.jpg differ diff --git a/source/_static/images/BnR-Networker-MediaPool-Configuration.jpg b/source/_static/images/BnR-Networker-MediaPool-Configuration.jpg new file mode 100755 index 0000000000..6b980fc46b Binary files /dev/null and b/source/_static/images/BnR-Networker-MediaPool-Configuration.jpg differ diff --git a/source/_static/images/BnR-Networker-MediaPool-General.jpg b/source/_static/images/BnR-Networker-MediaPool-General.jpg new file mode 100755 index 0000000000..de4eaafbcb Binary files /dev/null and b/source/_static/images/BnR-Networker-MediaPool-General.jpg differ diff --git a/source/_static/images/BnR-Networker-Policies.jpg b/source/_static/images/BnR-Networker-Policies.jpg new file mode 100755 index 0000000000..2b26069ba5 Binary files /dev/null and b/source/_static/images/BnR-Networker-Policies.jpg differ diff --git a/source/_static/images/BnR-Networker-Policy.jpg b/source/_static/images/BnR-Networker-Policy.jpg new file mode 100755 index 0000000000..df92245b7e Binary files /dev/null and b/source/_static/images/BnR-Networker-Policy.jpg differ diff --git a/source/_static/images/BnR-Networker-clustername.jpg b/source/_static/images/BnR-Networker-clustername.jpg new file mode 100755 index 0000000000..ab3879bda5 Binary files /dev/null and b/source/_static/images/BnR-Networker-clustername.jpg differ diff --git a/source/_static/images/add-Host.png b/source/_static/images/add-Host.png new file mode 100644 index 0000000000..85eaf5ec00 Binary files /dev/null and b/source/_static/images/add-Host.png differ diff --git a/source/_static/images/add-bucket.png b/source/_static/images/add-bucket.png new file mode 100644 index 0000000000..988a7e48c0 Binary files /dev/null and b/source/_static/images/add-bucket.png differ diff --git a/source/_static/images/add-guest-ipv6-prefix-form.png b/source/_static/images/add-guest-ipv6-prefix-form.png new file mode 100644 index 0000000000..f436b9edb7 Binary files /dev/null and b/source/_static/images/add-guest-ipv6-prefix-form.png differ diff --git a/source/_static/images/add-guest-network.png b/source/_static/images/add-guest-network.png index 28fd769c6a..1c749a6179 100644 Binary files a/source/_static/images/add-guest-network.png and b/source/_static/images/add-guest-network.png differ diff --git a/source/_static/images/add-guest-os-button.png b/source/_static/images/add-guest-os-button.png new file mode 100644 index 0000000000..3f66eb98fd Binary files /dev/null and b/source/_static/images/add-guest-os-button.png differ diff --git a/source/_static/images/add-guest-os-form.png b/source/_static/images/add-guest-os-form.png new file mode 100644 index 0000000000..435f2f0857 Binary files /dev/null and b/source/_static/images/add-guest-os-form.png differ diff --git a/source/_static/images/add-guest-os-mapping-button.png b/source/_static/images/add-guest-os-mapping-button.png new file mode 100644 index 0000000000..d59a8885b1 Binary files /dev/null and b/source/_static/images/add-guest-os-mapping-button.png differ diff --git a/source/_static/images/add-ipv6-acl-rule-form.png b/source/_static/images/add-ipv6-acl-rule-form.png new file mode 100644 index 0000000000..ae36e640c1 Binary files /dev/null and b/source/_static/images/add-ipv6-acl-rule-form.png differ diff --git a/source/_static/images/add-ipv6-network-offering-form.png b/source/_static/images/add-ipv6-network-offering-form.png new file mode 100644 index 0000000000..fa73ae6382 Binary files /dev/null and b/source/_static/images/add-ipv6-network-offering-form.png differ diff --git a/source/_static/images/add-ipv6-vpc-offering-form.png b/source/_static/images/add-ipv6-vpc-offering-form.png new file mode 100644 index 0000000000..1d9ee59031 Binary files /dev/null and b/source/_static/images/add-ipv6-vpc-offering-form.png differ diff --git a/source/_static/images/add-new-gateway-vpc.png b/source/_static/images/add-new-gateway-vpc.png deleted file mode 100644 index 8e26579b26..0000000000 Binary files a/source/_static/images/add-new-gateway-vpc.png and /dev/null differ diff --git a/source/_static/images/add-new-gateway-vpc2.png b/source/_static/images/add-new-gateway-vpc2.png new file mode 100644 index 0000000000..8962e58e4b Binary files /dev/null and b/source/_static/images/add-new-gateway-vpc2.png differ diff --git a/source/_static/images/add-object-store.png b/source/_static/images/add-object-store.png new file mode 100644 index 0000000000..a0222f7b09 Binary files /dev/null and b/source/_static/images/add-object-store.png differ diff --git a/source/_static/images/add-public-ipv6-range-form.png b/source/_static/images/add-public-ipv6-range-form.png new file mode 100644 index 0000000000..42a7ff08a0 Binary files /dev/null and b/source/_static/images/add-public-ipv6-range-form.png differ diff --git a/source/_static/images/add-shared-network.png b/source/_static/images/add-shared-network.png new file mode 100644 index 0000000000..77bffead0b Binary files /dev/null and b/source/_static/images/add-shared-network.png differ diff --git a/source/_static/images/add-vpc.png b/source/_static/images/add-vpc.png index c2a07ed287..58f4384d36 100644 Binary files a/source/_static/images/add-vpc.png and b/source/_static/images/add-vpc.png differ diff --git a/source/_static/images/autoscale-vmgroup-delete.png b/source/_static/images/autoscale-vmgroup-delete.png new file mode 100644 index 0000000000..21d8177577 Binary files /dev/null and b/source/_static/images/autoscale-vmgroup-delete.png differ diff --git a/source/_static/images/autoscale-vmgroup-deploy-parameters.png b/source/_static/images/autoscale-vmgroup-deploy-parameters.png new file mode 100644 index 0000000000..2224052823 Binary files /dev/null and b/source/_static/images/autoscale-vmgroup-deploy-parameters.png differ diff --git a/source/_static/images/autoscale-vmgroup-details.png b/source/_static/images/autoscale-vmgroup-details.png new file mode 100644 index 0000000000..56336d1f33 Binary files /dev/null and b/source/_static/images/autoscale-vmgroup-details.png differ diff --git a/source/_static/images/autoscale-vmgroup-policy-new.png b/source/_static/images/autoscale-vmgroup-policy-new.png new file mode 100644 index 0000000000..5033102b12 Binary files /dev/null and b/source/_static/images/autoscale-vmgroup-policy-new.png differ diff --git a/source/_static/images/autoscale-vmgroup-policy.png b/source/_static/images/autoscale-vmgroup-policy.png new file mode 100644 index 0000000000..87199752f1 Binary files /dev/null and b/source/_static/images/autoscale-vmgroup-policy.png differ diff --git a/source/_static/images/autoscale-vmgroup-profile-parameters.png b/source/_static/images/autoscale-vmgroup-profile-parameters.png new file mode 100644 index 0000000000..fbee85ca0b Binary files /dev/null and b/source/_static/images/autoscale-vmgroup-profile-parameters.png differ diff --git a/source/_static/images/autoscale-vmgroup-profile-reset-userdata.png b/source/_static/images/autoscale-vmgroup-profile-reset-userdata.png new file mode 100644 index 0000000000..59fe60bdc5 Binary files /dev/null and b/source/_static/images/autoscale-vmgroup-profile-reset-userdata.png differ diff --git a/source/_static/images/autoscale-vmgroup-profile-update.png b/source/_static/images/autoscale-vmgroup-profile-update.png new file mode 100644 index 0000000000..ef5a90035a Binary files /dev/null and b/source/_static/images/autoscale-vmgroup-profile-update.png differ diff --git a/source/_static/images/autoscale-vmgroup-profile.png b/source/_static/images/autoscale-vmgroup-profile.png new file mode 100644 index 0000000000..69024ab72a Binary files /dev/null and b/source/_static/images/autoscale-vmgroup-profile.png differ diff --git a/source/_static/images/autoscale-vmgroup-update.png b/source/_static/images/autoscale-vmgroup-update.png new file mode 100644 index 0000000000..ba8656c834 Binary files /dev/null and b/source/_static/images/autoscale-vmgroup-update.png differ diff --git a/source/_static/images/change-offering-for-volume.png b/source/_static/images/change-offering-for-volume.png new file mode 100644 index 0000000000..850a2c1179 Binary files /dev/null and b/source/_static/images/change-offering-for-volume.png differ diff --git a/source/_static/images/ckp-ip-fw.png b/source/_static/images/ckp-ip-fw.png new file mode 100644 index 0000000000..bad6c3cbfd Binary files /dev/null and b/source/_static/images/ckp-ip-fw.png differ diff --git a/source/_static/images/ckp-ip-lb.png b/source/_static/images/ckp-ip-lb.png new file mode 100644 index 0000000000..87be0c2b86 Binary files /dev/null and b/source/_static/images/ckp-ip-lb.png differ diff --git a/source/_static/images/ckp-ip.png b/source/_static/images/ckp-ip.png new file mode 100644 index 0000000000..e4075ec79e Binary files /dev/null and b/source/_static/images/ckp-ip.png differ diff --git a/source/_static/images/cks-create-cluster-form.png b/source/_static/images/cks-create-cluster-form.png index 84ca28a4f2..e12bf741c2 100644 Binary files a/source/_static/images/cks-create-cluster-form.png and b/source/_static/images/cks-create-cluster-form.png differ diff --git a/source/_static/images/compute_offering_dailog_with_compute_only_disk_offering.png b/source/_static/images/compute_offering_dailog_with_compute_only_disk_offering.png new file mode 100644 index 0000000000..af6f52a1fa Binary files /dev/null and b/source/_static/images/compute_offering_dailog_with_compute_only_disk_offering.png differ diff --git a/source/_static/images/compute_offering_dailog_with_diskoffering.png b/source/_static/images/compute_offering_dailog_with_diskoffering.png new file mode 100644 index 0000000000..fa0ac654c3 Binary files /dev/null and b/source/_static/images/compute_offering_dailog_with_diskoffering.png differ diff --git a/source/_static/images/configure-2fa-action-button.png b/source/_static/images/configure-2fa-action-button.png new file mode 100644 index 0000000000..9697b11a2c Binary files /dev/null and b/source/_static/images/configure-2fa-action-button.png differ diff --git a/source/_static/images/configure-2fa-at-login-page.png b/source/_static/images/configure-2fa-at-login-page.png new file mode 100644 index 0000000000..25c6ee0816 Binary files /dev/null and b/source/_static/images/configure-2fa-at-login-page.png differ diff --git a/source/_static/images/configure-google-2fa-form.png b/source/_static/images/configure-google-2fa-form.png new file mode 100644 index 0000000000..705849d3f5 Binary files /dev/null and b/source/_static/images/configure-google-2fa-form.png differ diff --git a/source/_static/images/configure-staticpin-2fa-form.png b/source/_static/images/configure-staticpin-2fa-form.png new file mode 100644 index 0000000000..0737a1c947 Binary files /dev/null and b/source/_static/images/configure-staticpin-2fa-form.png differ diff --git a/source/_static/images/dbLoadAverages.png b/source/_static/images/dbLoadAverages.png new file mode 100644 index 0000000000..4a0c62ecec Binary files /dev/null and b/source/_static/images/dbLoadAverages.png differ diff --git a/source/_static/images/deployvm_userdata.png b/source/_static/images/deployvm_userdata.png new file mode 100644 index 0000000000..bcc249d59d Binary files /dev/null and b/source/_static/images/deployvm_userdata.png differ diff --git a/source/_static/images/deployvm_userdata_with_variables.png b/source/_static/images/deployvm_userdata_with_variables.png new file mode 100644 index 0000000000..59089c1cdd Binary files /dev/null and b/source/_static/images/deployvm_userdata_with_variables.png differ diff --git a/source/_static/images/diagnostics-data-form.png b/source/_static/images/diagnostics-data-form.png new file mode 100755 index 0000000000..4b3710e91a Binary files /dev/null and b/source/_static/images/diagnostics-data-form.png differ diff --git a/source/_static/images/disable-2fa.png b/source/_static/images/disable-2fa.png new file mode 100644 index 0000000000..0f1eb4000d Binary files /dev/null and b/source/_static/images/disable-2fa.png differ diff --git a/source/_static/images/disk_offering_dailog.png b/source/_static/images/disk_offering_dailog.png new file mode 100644 index 0000000000..53678dccb6 Binary files /dev/null and b/source/_static/images/disk_offering_dailog.png differ diff --git a/source/_static/images/drs-cluster-settings.png b/source/_static/images/drs-cluster-settings.png new file mode 100644 index 0000000000..28db8add28 Binary files /dev/null and b/source/_static/images/drs-cluster-settings.png differ diff --git a/source/_static/images/drs-cluster-tab.png b/source/_static/images/drs-cluster-tab.png new file mode 100644 index 0000000000..1ec570e9ce Binary files /dev/null and b/source/_static/images/drs-cluster-tab.png differ diff --git a/source/_static/images/drs-plan.png b/source/_static/images/drs-plan.png new file mode 100644 index 0000000000..d68ec71fac Binary files /dev/null and b/source/_static/images/drs-plan.png differ diff --git a/source/_static/images/get-diagnostics-icon.png b/source/_static/images/get-diagnostics-icon.png new file mode 100755 index 0000000000..ce27fe5510 Binary files /dev/null and b/source/_static/images/get-diagnostics-icon.png differ diff --git a/source/_static/images/guest-os-button.png b/source/_static/images/guest-os-button.png new file mode 100644 index 0000000000..c04c265fdf Binary files /dev/null and b/source/_static/images/guest-os-button.png differ diff --git a/source/_static/images/guest-os-details-form.png b/source/_static/images/guest-os-details-form.png new file mode 100644 index 0000000000..4c926371d5 Binary files /dev/null and b/source/_static/images/guest-os-details-form.png differ diff --git a/source/_static/images/guest-os-mapping-button.png b/source/_static/images/guest-os-mapping-button.png new file mode 100644 index 0000000000..e9f85e90c4 Binary files /dev/null and b/source/_static/images/guest-os-mapping-button.png differ diff --git a/source/_static/images/guest-os-mapping-form.png b/source/_static/images/guest-os-mapping-form.png new file mode 100644 index 0000000000..bdea4c6f0b Binary files /dev/null and b/source/_static/images/guest-os-mapping-form.png differ diff --git a/source/_static/images/ipv6-acl-list.png b/source/_static/images/ipv6-acl-list.png new file mode 100644 index 0000000000..f9fb2bdebf Binary files /dev/null and b/source/_static/images/ipv6-acl-list.png differ diff --git a/source/_static/images/legacy/template-permissions-update-1.png b/source/_static/images/legacy/template-permissions-update-1.png index f1961c13e0..f0bb6923d6 100644 Binary files a/source/_static/images/legacy/template-permissions-update-1.png and b/source/_static/images/legacy/template-permissions-update-1.png differ diff --git a/source/_static/images/legacy/vm-settings-values-dropdown-KVM-list.png b/source/_static/images/legacy/vm-settings-values-dropdown-KVM-list.png index 1302f4ba12..74a241869d 100644 Binary files a/source/_static/images/legacy/vm-settings-values-dropdown-KVM-list.png and b/source/_static/images/legacy/vm-settings-values-dropdown-KVM-list.png differ diff --git a/source/_static/images/network-details-ipv6-firewall.png b/source/_static/images/network-details-ipv6-firewall.png new file mode 100644 index 0000000000..78133fec65 Binary files /dev/null and b/source/_static/images/network-details-ipv6-firewall.png differ diff --git a/source/_static/images/network-details-upstream-ipv6-routes.png b/source/_static/images/network-details-upstream-ipv6-routes.png new file mode 100644 index 0000000000..f128360800 Binary files /dev/null and b/source/_static/images/network-details-upstream-ipv6-routes.png differ diff --git a/source/_static/images/network-permissions.png b/source/_static/images/network-permissions.png new file mode 100644 index 0000000000..3da9fd550e Binary files /dev/null and b/source/_static/images/network-permissions.png differ diff --git a/source/_static/images/oauth-configuration-details.png b/source/_static/images/oauth-configuration-details.png new file mode 100644 index 0000000000..fb9cc4d21f Binary files /dev/null and b/source/_static/images/oauth-configuration-details.png differ diff --git a/source/_static/images/oauth-login.png b/source/_static/images/oauth-login.png new file mode 100644 index 0000000000..acc3bac007 Binary files /dev/null and b/source/_static/images/oauth-login.png differ diff --git a/source/_static/images/oauth-sub-section.png b/source/_static/images/oauth-sub-section.png new file mode 100644 index 0000000000..1cef614d1a Binary files /dev/null and b/source/_static/images/oauth-sub-section.png differ diff --git a/source/_static/images/primary-storage-file-browser.png b/source/_static/images/primary-storage-file-browser.png new file mode 100644 index 0000000000..066e6db64d Binary files /dev/null and b/source/_static/images/primary-storage-file-browser.png differ diff --git a/source/_static/images/register_userdata.png b/source/_static/images/register_userdata.png new file mode 100644 index 0000000000..8ac4fcccb4 Binary files /dev/null and b/source/_static/images/register_userdata.png differ diff --git a/source/_static/images/register_userdata_with_variables.png b/source/_static/images/register_userdata_with_variables.png new file mode 100644 index 0000000000..463baac3e5 Binary files /dev/null and b/source/_static/images/register_userdata_with_variables.png differ diff --git a/source/_static/images/secondary-storage-file-browser.png b/source/_static/images/secondary-storage-file-browser.png new file mode 100644 index 0000000000..3e575c97bb Binary files /dev/null and b/source/_static/images/secondary-storage-file-browser.png differ diff --git a/source/_static/images/template-upload-from-local.png b/source/_static/images/template-upload-from-local.png index 27b477c9df..e147848b0f 100644 Binary files a/source/_static/images/template-upload-from-local.png and b/source/_static/images/template-upload-from-local.png differ diff --git a/source/_static/images/ui-multiple-server-management.png b/source/_static/images/ui-multiple-server-management.png new file mode 100644 index 0000000000..32f9645d8b Binary files /dev/null and b/source/_static/images/ui-multiple-server-management.png differ diff --git a/source/_static/images/unmanage-instance-icon.png b/source/_static/images/unmanage-instance-icon.png new file mode 100644 index 0000000000..0a6c771688 Binary files /dev/null and b/source/_static/images/unmanage-instance-icon.png differ diff --git a/source/_static/images/upload-iso-from-local.png b/source/_static/images/upload-iso-from-local.png index ea0b9e2eff..19e8c175d5 100644 Binary files a/source/_static/images/upload-iso-from-local.png and b/source/_static/images/upload-iso-from-local.png differ diff --git a/source/_static/images/user-domain-login.png b/source/_static/images/user-domain-login.png new file mode 100644 index 0000000000..b73779ff7e Binary files /dev/null and b/source/_static/images/user-domain-login.png differ diff --git a/source/_static/images/userdata_template_link.png b/source/_static/images/userdata_template_link.png new file mode 100644 index 0000000000..5138393ee8 Binary files /dev/null and b/source/_static/images/userdata_template_link.png differ diff --git a/source/_static/images/verify-2fa-staticpin.png b/source/_static/images/verify-2fa-staticpin.png new file mode 100644 index 0000000000..468140ee51 Binary files /dev/null and b/source/_static/images/verify-2fa-staticpin.png differ diff --git a/source/_static/images/verify-2fa-totp.png b/source/_static/images/verify-2fa-totp.png new file mode 100644 index 0000000000..23b3f694d0 Binary files /dev/null and b/source/_static/images/verify-2fa-totp.png differ diff --git a/source/_static/images/view-guest-os-mappings-button.png b/source/_static/images/view-guest-os-mappings-button.png new file mode 100644 index 0000000000..158c039919 Binary files /dev/null and b/source/_static/images/view-guest-os-mappings-button.png differ diff --git a/source/_static/images/vm-disk-metrics-ui.png b/source/_static/images/vm-disk-metrics-ui.png new file mode 100644 index 0000000000..a773471fdb Binary files /dev/null and b/source/_static/images/vm-disk-metrics-ui.png differ diff --git a/source/_static/images/vm-importinstance.png b/source/_static/images/vm-importinstance.png new file mode 100644 index 0000000000..34b1edbede Binary files /dev/null and b/source/_static/images/vm-importinstance.png differ diff --git a/source/_static/images/vm-metrics-ui.png b/source/_static/images/vm-metrics-ui.png new file mode 100644 index 0000000000..3ddbba5c7d Binary files /dev/null and b/source/_static/images/vm-metrics-ui.png differ diff --git a/source/_static/images/vm-schedule-form.png b/source/_static/images/vm-schedule-form.png new file mode 100644 index 0000000000..f49fd8ea6a Binary files /dev/null and b/source/_static/images/vm-schedule-form.png differ diff --git a/source/_static/images/vm-schedule-tab.png b/source/_static/images/vm-schedule-tab.png new file mode 100644 index 0000000000..9fe8ec4d31 Binary files /dev/null and b/source/_static/images/vm-schedule-tab.png differ diff --git a/source/_static/images/vm-unmanage-instance.png b/source/_static/images/vm-unmanage-instance.png new file mode 100644 index 0000000000..6855ad2301 Binary files /dev/null and b/source/_static/images/vm-unmanage-instance.png differ diff --git a/source/_static/images/vm-unmanagedmanaged.png b/source/_static/images/vm-unmanagedmanaged.png new file mode 100644 index 0000000000..fe1fc9e8d8 Binary files /dev/null and b/source/_static/images/vm-unmanagedmanaged.png differ diff --git a/source/_static/images/vnf-add-detail.png b/source/_static/images/vnf-add-detail.png new file mode 100644 index 0000000000..9554e83c84 Binary files /dev/null and b/source/_static/images/vnf-add-detail.png differ diff --git a/source/_static/images/vnf-add-nic.png b/source/_static/images/vnf-add-nic.png new file mode 100644 index 0000000000..1dd96cfe56 Binary files /dev/null and b/source/_static/images/vnf-add-nic.png differ diff --git a/source/_static/images/vnf-appliance-networks-selection.png b/source/_static/images/vnf-appliance-networks-selection.png new file mode 100644 index 0000000000..828a89a8ef Binary files /dev/null and b/source/_static/images/vnf-appliance-networks-selection.png differ diff --git a/source/_static/images/vnf-appliance-vnf-nics.png b/source/_static/images/vnf-appliance-vnf-nics.png new file mode 100644 index 0000000000..fd327c8953 Binary files /dev/null and b/source/_static/images/vnf-appliance-vnf-nics.png differ diff --git a/source/_static/images/vnf-details-list.png b/source/_static/images/vnf-details-list.png new file mode 100644 index 0000000000..1f069fd83e Binary files /dev/null and b/source/_static/images/vnf-details-list.png differ diff --git a/source/_static/images/vnf-nics-list.png b/source/_static/images/vnf-nics-list.png new file mode 100644 index 0000000000..4e0dda3172 Binary files /dev/null and b/source/_static/images/vnf-nics-list.png differ diff --git a/source/_static/images/vnf-template-vnf-settings.png b/source/_static/images/vnf-template-vnf-settings.png new file mode 100644 index 0000000000..2a03d1317d Binary files /dev/null and b/source/_static/images/vnf-template-vnf-settings.png differ diff --git a/source/_static/images/volume-metrics.png b/source/_static/images/volume-metrics.png new file mode 100644 index 0000000000..c857260276 Binary files /dev/null and b/source/_static/images/volume-metrics.png differ diff --git a/source/adminguide/accounts.rst b/source/adminguide/accounts.rst index adc870fa4a..cbd705daaa 100644 --- a/source/adminguide/accounts.rst +++ b/source/adminguide/accounts.rst @@ -20,10 +20,10 @@ Roles, Accounts, Users, and Domains Roles ~~~~~ -A role represents a set of allowed functions. All CloudStack accounts have a +A role represents a set of allowed functions. All CloudStack Accounts have a role attached to them that enforce access rules on them to be allowed or disallowed to make an API request. Typically there are four default roles: -root admin, resource admin, domain admin and user. +root admin, resource admin, domain admin and User. Newer roles have been added which include Read-Only Admin, Read-Only User, Support Admin and Support User which are in turn based on the aforementioned roles. @@ -31,48 +31,48 @@ Support Admin and Support User which are in turn based on the aforementioned rol Accounts ~~~~~~~~ -An account typically represents a customer of the service provider or a -department in a large organization. Multiple users can exist in an -account. +An Account typically represents a customer of the service provider or a +department in a large organization. Multiple Users can exist in an +Account. Domains ~~~~~~~ Accounts are grouped by domains. Domains usually contain multiple -accounts that have some logical relationship to each other and a set of +Accounts that have some logical relationship to each other and a set of delegated administrators with some authority over the domain and its subdomains. For example, a service provider with several resellers could create a domain for each reseller. -Beside the Root Administrator type of account (available in the root domain only), two different types -of accounts can be created for each domain: Domain Administrator and User. +Beside the Root Administrator type of Account (available in the root domain only), two different types +of Accounts can be created for each domain: Domain Administrator and User. Users ~~~~~ -Users are like aliases in the account. Users in the same account are not -isolated from each other, but they are isolated from users in other -accounts. Most installations need not surface the notion of users; they -just have one user per account. The same user cannot belong to multiple -accounts. +Users are like aliases in the Account. Users in the same Account are not +isolated from each other, but they are isolated from Users in other +Accounts. Most installations need not surface the notion of Users; they +just have one User per Account. The same User cannot belong to multiple +Accounts. -Username is unique in a domain across accounts in that domain. The same +Username is unique in a domain across Accounts in that domain. The same username can exist in other domains, including sub-domains. Domain name can repeat only if the full pathname from root is unique. For example, you can create root/d1, as well as root/foo/d1, and root/sales/d1. -Administrators are accounts with special privileges in the system. There +Administrators are Accounts with special privileges in the system. There may be multiple administrators in the system. Administrators can create -or delete other administrators, and change the password for any user in +or delete other administrators, and change the password for any User in the system. Domain Administrators ~~~~~~~~~~~~~~~~~~~~~ -Domain administrators can perform administrative operations for users +Domain administrators can perform administrative operations for Users who belong to that domain. Domain administrators do not have visibility into physical servers or other domains. @@ -81,49 +81,49 @@ Root Administrator ~~~~~~~~~~~~~~~~~~ Root administrators have complete access to the system, including -managing templates, service offerings, customer care administrators, and +managing Templates, service offerings, customer care administrators, and domains Read Only Administrator ~~~~~~~~~~~~~~~~~~~~~~~ -A restricted admin role in which an account is only allowed to perform any list, get +A restricted admin role in which an Account is only allowed to perform any list, get or find operations but not perform any other operation which can change the -infrastructure, configuration or user resources. +infrastructure, configuration or User resources. Read Only User ~~~~~~~~~~~~~~ -A restricted user role in which an account is only allowed to perform list, get or find -operations. It can be used by users who may only be interested in monitoring and usage +A restricted User role in which an Account is only allowed to perform list, get or find +operations. It can be used by Users who may only be interested in monitoring and usage of resources. Support Admin ~~~~~~~~~~~~~ -A restricted admin role in which an admin account is limited to perform axilary support -and maintenance tasks which do not directly affect the infrastucture, such as creating offerings, +A restricted admin role in which an admin Account is limited to perform auxiliary support +and maintenance tasks which do not directly affect the infrastructure, such as creating offerings, and put resources in maintenance, but cannot change the infrastructure such as physical networks. Support User ~~~~~~~~~~~~ -A restricted user role in which an account cannot create or destroy resources, but can view resources -and perform auxilary and support operations such as start or stop VMs, attach or detach volumes, ISOs etc. +A restricted User role in which an Account cannot create or destroy resources, but can view resources +and perform auxiliary and support operations such as start or stop Instances, attach or detach volumes, ISOs etc. Resource Ownership ~~~~~~~~~~~~~~~~~~ -Resources belong to the account, not individual users in that account. +Resources belong to the Account, not individual Users in that Account. For example, billing, resource limits, and so on are maintained by the -account, not the users. A user can operate on any resource in the -account provided the user has privileges for that operation. The +Account, not the Users. A User can operate on any resource in the +Account provided the User has privileges for that operation. The privileges are determined by the role. A root administrator can change -the ownership of any virtual machine from one account to any other -account by using the assignVirtualMachine API. A domain or sub-domain -administrator can do the same for VMs within the domain from one account -to any other account in the domain or any of its sub-domains. +the ownership of any Instance from one Account to any other +Account by using the assignVirtualMachine API. A domain or sub-domain +administrator can do the same for Instances within the domain from one Account +to any other Account in the domain or any of its sub-domains. .. _using-dynamics-roles: @@ -135,8 +135,24 @@ allows CloudStack root admins to create new roles with customized permissions. The allow/deny rules can be configured dynamically during runtime without restarting the management server(s). -For backward compatiblity, all roles resolve to one of the four role types: -admin, resource admin, domain admin and user. A new role can be created using +.. Note:: in versions before 4.16.1, any User given the custom roles + that include permission to create and/or update Accounts + will have the ability to assign new custom roles to + themselves or other Users, irrespective of the privileges + given in those roles. This could allow such a User to + escalate their own privileges to include any API they might + not have had before. Therefore, the dynamic roles should be + carefully designed and the `createAccount` and + `updateAccount` privileges should only be given to Users who + you are content to have this level of privilege. + + Since 4.16.1 a User will be prevented to create an Account + with a role that has any permissions that they do not have + themselves. This check will also be performed, since that + version, on updating an Account-role. + +For backward compatibility, all roles resolve to one of the four role types: +admin, resource admin, domain admin and User. A new role can be created using the roles tab in the UI and specifying a name, either a role type or ID of existing role, and optionally a description. When a new role is created using ID of existing role, all the rules of the existing role are copied to the new role and these rules @@ -159,16 +175,16 @@ CSV file format: … so on -When a user makes an API request, the backend checks the requested API against +When a User makes an API request, the backend checks the requested API against configured rules (in the order the rules were configured) for the caller -user-account's role. It will iterate through the rules and would allow the +User-Account's role. It will iterate through the rules and would allow the API request if the API matches an allow rule, else if it matches a deny rule it would deny the request. Next, if the request API fails to match any of the configured rules it would allow if the requested API's default authorized -annotaions allow that user role type and finally deny the user API request +annotations allow that User role type and finally deny the User API request if it fails to be explicitly allowed/denied by the role permission rules or the default API authorize annotations. Note: to avoid root admin being locked -out of the system, all root admin accounts are allowed all APIs. +out of the system, all root admin Accounts are allowed all APIs. The dynamic-roles feature is enabled by default only for all new CloudStack installations since version `4.9.x `_. @@ -228,27 +244,27 @@ Dedicating Resources to Accounts and Domains -------------------------------------------- The root administrator can dedicate resources to a specific domain or -account that needs private infrastructure for additional security or +Account that needs private infrastructure for additional security or performance guarantees. A zone, pod, cluster, or host can be reserved by -the root administrator for a specific domain or account. Only users in +the root administrator for a specific domain or Account. Only Users in that domain or its subdomain may use the infrastructure. For example, -only users in a given domain can create guests in a zone dedicated to +only Users in a given domain can create guests in a zone dedicated to that domain. There are several types of dedication available: - Explicit dedication. A zone, pod, cluster, or host is dedicated to an - account or domain by the root administrator during initial deployment + Account or domain by the root administrator during initial deployment and configuration. - Strict implicit dedication. A host will not be shared across multiple - accounts. For example, strict implicit dedication is useful for + Accounts. For example, strict implicit dedication is useful for deployment of certain types of applications, such as desktops, where - no host can be shared between different accounts without violating + no host can be shared between different Accounts without violating the desktop software's terms of license. -- Preferred implicit dedication. The VM will be deployed in dedicated - infrastructure if possible. Otherwise, the VM can be deployed in +- Preferred implicit dedication. The Instance will be deployed in dedicated + infrastructure if possible. Otherwise, the Instance can be deployed in shared infrastructure. @@ -257,7 +273,7 @@ How to Dedicate a Zone, Cluster, Pod, or Host to an Account or Domain For explicit dedication: When deploying a new zone, pod, cluster, or host, the root administrator can click the Dedicated checkbox, then -choose a domain or account to own the resource. +choose a domain or Account to own the resource. To explicitly dedicate an existing zone, pod, cluster, or host: log in as the root admin, find the resource in the UI, and click the Dedicate @@ -268,7 +284,7 @@ offering and in the Deployment Planner field, chooses ImplicitDedicationPlanner. Then in Planner Mode, the administrator specifies either Strict or Preferred, depending on whether it is permissible to allow some use of shared resources when dedicated -resources are not available. Whenever a user creates a VM based on this +resources are not available. Whenever a User creates an Instance based on this service offering, it is allocated on one of the dedicated hosts. @@ -277,39 +293,39 @@ How to Use Dedicated Hosts To use an explicitly dedicated host, use the explicit-dedicated type of affinity group (see `“Affinity Groups” `_). -For example, when creating a new VM, an -end user can choose to place it on dedicated infrastructure. This +For example, when creating a new Instance, an +end User can choose to place it on dedicated infrastructure. This operation will succeed only if some infrastructure has already been -assigned as dedicated to the user's account or domain. +assigned as dedicated to the User's Account or domain. Behavior of Dedicated Hosts, Clusters, Pods, and Zones ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The administrator can live migrate VMs away from dedicated hosts if +The administrator can live migrate Instances away from dedicated hosts if desired, whether the destination is a host reserved for a different -account/domain or a host that is shared (not dedicated to any particular -account or domain). CloudStack will generate an alert, but the operation +Account/domain or a host that is shared (not dedicated to any particular +Account or domain). CloudStack will generate an alert, but the operation is allowed. Dedicated hosts can be used in conjunction with host tags. If both a -host tag and dedication are requested, the VM will be placed only on a +host tag and dedication are requested, the Instance will be placed only on a host that meets both requirements. If there is no dedicated resource -available to that user that also has the host tag requested by the user, -then the VM will not deploy. +available to that User that also has the host tag requested by the User, +then the Instance will not deploy. -If you delete an account or domain, any hosts, clusters, pods, and zones +If you delete an Account or domain, any hosts, clusters, pods, and zones that were dedicated to it are freed up. They will now be available to be -shared by any account or domain, or the administrator may choose to -re-dedicate them to a different account or domain. +shared by any Account or domain, or the administrator may choose to +re-dedicate them to a different Account or domain. System VMs and virtual routers affect the behavior of host dedication. System VMs and virtual routers are owned by the CloudStack system -account, and they can be deployed on any host. They do not adhere to -explicit dedication. The presence of system vms and virtual routers on a +Account, and they can be deployed on any host. They do not adhere to +explicit dedication. The presence of system VMs and virtual routers on a host makes it unsuitable for strict implicit dedication. The host can not be used for strict implicit dedication, because the host already has -VMs of a specific account (the default system account). However, a host +VMs of a specific Account (the default system Account). However, a host with system VMs or virtual routers can be used for preferred implicit dedication. @@ -320,74 +336,74 @@ Using an LDAP Server for User Authentication You can use an external LDAP server such as Microsoft Active Directory or ApacheDS to authenticate CloudStack end-users. CloudStack will search the external LDAP directory tree starting at a specified base directory -and gets user info such as first name, last name, email and username. +and gets User info such as first name, last name, email and username. Starting with CloudStack 4.11, an LDAP connection per domain can be -defined. In this domain autosync per account can be configured, -keeping the users in the domain up to date with their group membership +defined. In this domain autosync per Account can be configured, +keeping the Users in the domain up to date with their group membership in LDAP. .. Note:: A caveat with this is that ApacheDS does not yet support the - virtual 'memberOf' attribute needed to check if a user moved - to another account. Microsoft AD and OpenLDAP as well as + virtual 'memberOf' attribute needed to check if a User moved + to another Account. Microsoft AD and OpenLDAP as well as OpenDJ do support this. It is a planned feature for ApacheDS that can be tracked in https://issues.apache.org/jira/browse/DIRSERVER-1844. -There are now three ways to link LDAP users to CloudStack users. These +There are now three ways to link LDAP Users to CloudStack Users. These three ways where developed as extensions on top of each other. To authenticate, in all three cases username and password entered by -the user are used. +the User are used. -#. **manual import**. A user is explicitely mapped to a domain/account - and created as a user in that account. +#. **manual import**. A User is explicitly mapped to a domain/Account + and created as a User in that Account. - #. CloudStack does a search for a user with the given username. + #. CloudStack does a search for a User with the given username. - #. If it exists, it checks if the user is enabled. + #. If it exists, it checks if the User is enabled. - #. If the user is enabled, CloudStack searches for it in LDAP + #. If the User is enabled, CloudStack searches for it in LDAP by the configured ``ldap.username.attribute``. - #. If the LDAP user is found, CloudStack does a bind request - with the returned principal for that LDAP user and the + #. If the LDAP User is found, CloudStack does a bind request + with the returned principal for that LDAP User and the entered password. #. The authentication result from LAP is honoured. -#. **autoimport**. A domain is configured to import any user if it - does not yet exist in that domain. For these users, an account in the - same name as the user is automatically created and the user is created - in that account. +#. **autoimport**. A domain is configured to import any User if it + does not yet exist in that domain. For these Users, an Account in the + same name as the User is automatically created and the User is created + in that Account. #. If the domain is configured to be used with LDAP, #. CloudStack searches for it in LDAP by the configured ``ldap.username.attribute``. - #. If an LDAP user is found is found, CloudStack does a bind - request with the returned principal for that LDAP user and + #. If an LDAP User is found, CloudStack does a bind + request with the returned principal for that LDAP User and the entered password. #. If LDAP authentication checks out, CloudStack checks if the - authenticated user exists in the domain it is trying to log + authenticated User exists in the domain it is trying to log on to. - #. If the user exists in CloudStack, it is ensured to be enabled + #. If the User exists in CloudStack, it is ensured to be enabled. - #. If it doesn't exist it is created in a new account with - the username as names for both account and user. + #. If it doesn't exist it is created in a new Account with + the username as names for both Account and User. - #. In case authentication fails the user will be disabled in + #. In case authentication fails the User will be disabled in cloudstack after the configured ``incorrect.login.attempts.allowed`` number of attempts. #. **autosync**. A domain is configured to use a LDAP server and in this - domain a number of accounts are 'mapped' against LDAP groups. Any - user that is in one of these configured accounts will be checked against the + domain a number of Accounts are 'mapped' against LDAP groups. Any + User that is in one of these configured Accounts will be checked against the current state of LDAP and if they exist they will be asserted to be - in the right account according to their LDAP group. If they do not + in the right Account according to their LDAP group. If they do not exist in LDAP they will be disabled in CloudStack. #. If the domain is configured to be used by LDAP, @@ -395,21 +411,21 @@ the user are used. #. CloudStack searches for it in LDAP by the configured ``ldap.username.attribute``. - #. If an LDAP user is found, it is checked for - memberships of mapped account, i.e. accounts for which LDAP + #. If an LDAP User is found, it is checked for + memberships of mapped Account, i.e. Accounts for which LDAP groups are configured. - #. If the LDAP user has 0, 2 or more memberships the account + #. If the LDAP User has 0, 2 or more memberships the Account is disabled and authentication fails. #. CloudStack then does a bind request with the returned - principal for that LDAP user and the entered password. + principal for that LDAP User and the entered password. - #. If no CloudStack user exists it is created in the - appropriate account. + #. If no CloudStack User exists it is created in the + appropriate Account. - #. If a CloudStack user exists but is not in the appropriate - account its credentials will be moved. + #. If a CloudStack User exists but is not in the appropriate + Account its credentials will be moved. To set up LDAP authentication in CloudStack, call the CloudStack API command ``addLdapConfiguration`` and provide Hostname or IP address @@ -424,8 +440,8 @@ replicas. If one fails, the next one is used. port=389\ domainid=12345678-90ab-cdef-fedc-ba0987654321 -This is all that is required to enable the manual importing of LDAP users, the -LisLdapUsers API can be used to query for users to import. +This is all that is required to enable the manual importing of LDAP Users, the +LisLdapUsers API can be used to query for Users to import. For the auto import method, a CloudStack Domain needs to be linked to LDAP. For instance @@ -438,7 +454,7 @@ LDAP. For instance type=OU When you want to use auto sync, no domain is linked to ldap but one or -more accounts. Within a CloudStack domain one needs to link accounts +more Accounts. Within a CloudStack domain one needs to link Accounts to LDAP groups. The linkage of the domain is implicit and nit needed to be applied through the API call described above. @@ -448,7 +464,7 @@ to be applied through the API call described above. [ -z "$LDAP1PASSWORD" -o -z "$LDAP2PASSWORD" ] && exit 1 ROOTDOMAIN=`cloudmonkey -d json list domains name=ROOT filter=id | jq .domain[0].id` - # mapping domain and account(s) from ldap server 1 + # mapping domain and Account(s) from ldap server 1 MAPPEDDOMAIN1=`cloudmonkey -d json create domain name=mappedDomain1 parentdomainid=$ROOTDOMAIN | jq .domain.id` cloudmonkey -d json add ldapconfiguration hostname=10.1.2.5 port=389 domainid=$MAPPEDDOMAIN1 cloudmonkey -d json update configuration domainid=$MAPPEDDOMAIN1 name="ldap.basedn" value="dc=cloudstack,dc=apache,dc=org" @@ -470,30 +486,30 @@ openldap) - ``ldap.basedn``: Sets the basedn for LDAP. Ex: **OU=APAC,DC=company,DC=com** -- ``ldap.bind.principal``, ``ldap.bind.password``: DN and password for a user - who can list all the users in the above basedn. Ex: +- ``ldap.bind.principal``, ``ldap.bind.password``: DN and password for a User + who can list all the Users in the above basedn. Ex: **CN=Administrator, OU=APAC, DC=company, DC=com** -- ``ldap.user.object``: object type of users within LDAP. Defaults value is +- ``ldap.user.object``: object type of Users within LDAP. Defaults value is **user** for AD and **interorgperson** for openldap. -- ``ldap.email.attribute``: email attribute within ldap for a user. Default +- ``ldap.email.attribute``: email attribute within ldap for a User. Default value for AD and openldap is **mail**. -- ``ldap.firstname.attribute``: firstname attribute within ldap for a user. +- ``ldap.firstname.attribute``: firstname attribute within ldap for a User. Default value for AD and openldap is **givenname**. -- ``ldap.lastname.attribute``: lastname attribute within ldap for a user. +- ``ldap.lastname.attribute``: lastname attribute within ldap for a User. Default value for AD and openldap is **sn**. -- ``ldap.username.attribute``: username attribute for a user within LDAP. +- ``ldap.username.attribute``: username attribute for a User within LDAP. Default value is **SAMAccountName** for AD and **uid** for openldap. -Restricting LDAP users to a group: +Restricting LDAP Users to a group: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- ``ldap.search.group.principle``: this is optional and if set only users from +- ``ldap.search.group.principle``: this is optional and if set only Users from this group are listed. @@ -518,18 +534,18 @@ LDAP groups: Default value is **member** for AD and **uniquemember** for openldap. Once configured, on Add Account page, you will see an "Add LDAP Account" button -which opens a dialog and the selected users can be imported. +which opens a dialog and the selected Users can be imported. .. figure:: /_static/images/CloudStack-ldap-screen1.png :align: center You could also use api commands: -``listLdapUsers``, to list users in LDAP that could or would be imported in CloudStack -``ldapCreateAccount``, to manually create a user in a specific account -``importLdapUsers``, to batch import users from LDAP +``listLdapUsers``, to list Users in LDAP that could or would be imported in CloudStack +``ldapCreateAccount``, to manually create a User in a specific Account +``importLdapUsers``, to batch import Users from LDAP -Once LDAP is enabled, the users will not be allowed to changed password +Once LDAP is enabled, the Users will not be allowed to changed password directly in CloudStack. .. |button to dedicate a zone, pod,cluster, or host| image:: /_static/images/dedicate-resource-button.png @@ -537,18 +553,18 @@ directly in CloudStack. Using a SAML 2.0 Identity Provider for User Authentication ---------------------------------------------------------- -You can use a SAML 2.0 Identity Provider with CloudStack for user +You can use a SAML 2.0 Identity Provider with CloudStack for User authentication. This will require enabling the SAML 2.0 service provider plugin in CloudStack. To do that first, enable the SAML plugin by setting ``saml2.enabled`` to ``true`` and restart management server. -Starting 4.5.2, the SAML plugin uses an authorization workflow where users should -be authorized by an admin using ``authorizeSamlSso`` API before those users can +Starting 4.5.2, the SAML plugin uses an authorization workflow where Users should +be authorized by an admin using ``authorizeSamlSso`` API before those Users can use Single Sign On against a specific IDP. This can be done by ticking the enable -SAML Single Sign On checkbox and selecting a IDP when adding or importing users. -For existing users, admin can go to the user's page and click on configure -SAML SSO option to enable/disable SSO for a user and select a Identity Provider. -A user can be authorized to authenticate against only one IDP. +SAML Single Sign On checkbox and selecting a IDP when adding or importing Users. +For existing Users, admin can go to the User's page and click on configure +SAML SSO option to enable/disable SSO for a User and select a Identity Provider. +A User can be authorized to authenticate against only one IDP. The CloudStack service provider metadata is accessible using the ``getSPMetadata`` API command, or from the URL @@ -556,25 +572,25 @@ http://acs-server:8080/client/api?command=getSPMetadata where acs-server is the domain name or IP address of the management server. The IDP administrator can get the SP metadata from CloudStack and add it to their IDP server. -To start a SAML 2.0 Single Sign-On authentication, on the login page users need to +To start a SAML 2.0 Single Sign-On authentication, on the login page Users need to select the Identity Provider or Institution/Department they can authenticate with and click on Login button. This action call the ``samlsso`` API command which -will redirect the user to the Identity Provider's login page. Upon successful -authentication, the IdP will redirect the user to CloudStack. In case a user has -multiple user accounts with the same username (across domains) for the same -authorized IDP, that user would need to specify domainpath after selecting their -IDP server from the dropdown list. By default, users don't need to specify any -domain path. After a user is successfully authenticated by an IDP server, the SAML -authentication plugin finds user accounts whose username match the username +will redirect the User to the Identity Provider's login page. Upon successful +authentication, the IdP will redirect the User to CloudStack. In case a User has +multiple User Accounts with the same username (across domains) for the same +authorized IDP, that User would need to specify domainpath after selecting their +IDP server from the dropdown list. By default, Users don't need to specify any +domain path. After a User is successfully authenticated by an IDP server, the SAML +authentication plugin finds User Accounts whose username match the username attribute value returned by the SAML authentication response; it fails -only when it finds that there are multiple user accounts with the same user name +only when it finds that there are multiple User Accounts with the same User name for the specific IDP otherwise the unique useraccount is allowed to proceed and -the user is logged into their account. +the User is logged into their Account. Limitations: -- The plugin uses a user attribute returned by the IDP server in the SAML response - to find and map the authorized user in CloudStack. The default attribute is `uid`. +- The plugin uses a User attribute returned by the IDP server in the SAML response + to find and map the authorized User in CloudStack. The default attribute is `uid`. - The SAML authentication plugin supports HTTP-Redirect and HTTP-Post bindings. @@ -611,3 +627,184 @@ The following global configuration should be configured: - ``saml2.timeout``: SAML2 IDP Metadata refresh interval in seconds, minimum value is set to 300. Default is 1800 +Using OAuth2 Authentication For Users +------------------------------------------ + +OAuth2, the industry-standard authorization or authentication framework, simplifies the process of +granting access to resources. CloudStack supports OAuth2 authentication wherein users can login into +CloudStack without using username and password. CloudStack currently supports Google and Github providers. +Other OAuth2 providers can be easily integrated with CloudStack using its plugin framework. + +For admins, the following are the settings available at global level to configure OAuth2. + +.. cssclass:: table-striped table-bordered table-hover + +================================================ ================ =================================================================== +Global setting Default values Description +================================================ ================ =================================================================== +oauth2.enabled false Indicates whether OAuth plugin is enabled or not +oauth2.plugins google,github List of OAuth plugins +oauth2.plugins.exclude List of OAuth plugins which are excluded +================================================ ================ =================================================================== + +The login page when the OAuth2 is enabled and corresponding providers are configured. + +.. image:: /_static/images/oauth-login.png + :width: 400px + :align: center + :alt: Login page with OAuth logins + +"OAuth configuration" sub-section is added under "Configuration" where admins can register the corresponding +OAuth providers. + +.. image:: /_static/images/oauth-sub-section.png + :width: 120px + :align: center + :alt: OAuth configuration section + +.. image:: /_static/images/oauth-configuration-details.png + :width: 400px + :align: center + :alt: OAuth configuration details + +To register the OAuth provider client ID, redirect URI, secret key have to provided. +OAuth 2.0 has to be first configured in the corresponding provider to obtain the client ID, redirect URI, secret Key. + +For Google, please follow the instructions mentioned here `"Setting up OAuth 2.0 in Google" `_. +For Github, please follow the instructions mentioned here `"Setting up OAuth 2.0 in Github" `_. + +In any OAuth 2.0 configuration admin has to use the redirect URI "http://:/#/verifyOauth" + +.. Note:: [Google OAuth 2.0 redirect URI] : + Google OAuth 2.0 configuration wont accept '#' in the URI, please use "http://:/?verifyOauth" + Google does not accept direct IP address in the redirect URI, it must be a domain. As a workaround one can add the management + server IP to host table in the local system and assign a domain, something like "management.cloud". In that redirect URI looks like + "http://management.cloud:8080/?verifyOauth" + +.. image:: /_static/images/oauth-provider-registration.png + :width: 400px + :align: center + :alt: OAuth provider registration + +Following are the details needs to be provided to register the OAuth provider, this is to call the API "registerOauthProvider" + + - **Provider**: Name of the provider from the list of OAuth providers supported in CloudStack + + - **Description**: A short description for the provider + + - **Provider Client ID**: Client ID pre-registered in the specific OAuth provider + + - **Redirect URI**: Redirect URI pre-registered in the specific OAuth provider + + - **Secret Key**: Secret Key pre-registered in the specific OAuth provider + +Cloudmonkey API call looks like + + - register oauthprovider provider=google description="Google Provider" + clientid="http://345798102268-3kp6qd6c16v6b9av2tmvqagj40na30l4.apps.googleusercontent.com" + redirecturi="http://local.cloud:8080/?verifyOauth" secretkey="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" + +Email address is the key to identify the user in CloudStack. In case if user belongs to any specific domain, domain name +has to be provided in the login form and then click on OAuth login. + +.. image:: /_static/images/user-domain-login.png + :width: 400px + :align: center + :alt: Login page for user under specific domain + +Using Two Factor Authentication For Users +------------------------------------------ + +CloudStack supports two factor authentication wherein Users need to provide a 2FA code after the +regular login using username and password. CloudStack currently supports Google Authenticator or +other TOTP authenticators and static PIN as the 2FA providers. Other 2FA providers can be easily +integrated with CloudStack using its plugin model. + +.. Note:: 2FA is applicable to authentication mechanisms in CloudStack using username/password, + LDAP, SAML. While using apikey/secretkey 2FA checks will be bypassed. + +For admins, the following are the settings available at global and domain level to configure 2FA. + +.. cssclass:: table-striped table-bordered table-hover + +================================================ ================ =================================================================== +Global setting Default values Description +================================================ ================ =================================================================== +enable.user.2fa false Determines whether 2FA is enabled or not +mandate.user.2fa false Determines whether to make the 2FA mandatory or not for the Users +user.2fa.default.provider totp The default User 2FA provider plugin. Eg. totp, staticpin +================================================ ================ =================================================================== + +If 2FA is configured for the User, the 2FA verification page looks like below after the login. + +The verification page when the User configures 2FA using Google or other TOTP Authenticators. + +.. image:: /_static/images/verify-2fa-totp.png + :width: 400px + :align: center + :alt: Verify 2FA page using TOTP + +The verification page when the User configures 2FA using Static PIN. + +.. image:: /_static/images/verify-2fa-staticpin.png + :width: 400px + :align: center + :alt: Verify 2FA page using static PIN + +Users can configure 2FA in CloudStack using the action button in User form. + +.. image:: /_static/images/configure-2fa-action-button.png + :width: 400px + :align: center + :alt: Configure 2FA action button + + +In the 2FA setup form, the User needs to select one of the providers. CloudStack currently supports +Google Authenticator or other TOTP Authenticators and static PIN as the 2FA providers. + +When the Google Authenticator or other TOTP 2FA provider is selected, the User must setup the Account in +the respective application in their device by either scanning the QR code or using the setup key provided +by CloudStack. Once this is set up in the authenticator application, the User must always use the provided +2FA codes to log in. + +.. image:: /_static/images/configure-google-2fa-form.png + :width: 400px + :align: center + :alt: Configure Google 2FA form + + +When the static PIN 2FA provider is selected, the User must use the static PIN as the code to verify 2FA +with CloudStack. The User must input this static PIN as a 2FA code every time they need to login. + +.. image:: /_static/images/configure-staticpin-2fa-form.png + :width: 400px + :align: center + :alt: Configure static PIN 2FA form + +The admin has the capability to mandate 2FA for Users via the setting ``mandate.user.2fa``. +In this case the User must configure 2FA during their first login into CloudStack. + +The User's first login page to configure 2FA looks like the below. + +.. image:: /_static/images/configure-2fa-at-login-page.png + :width: 400px + :align: center + :alt: Configure 2FA at login page + + +For the existing Users, the admin can mandate 2FA using the 'updateUser' API with the parameter 'mandate2FA'. + +The admin can also disable 2FA for a User using the action button as shown below. + +.. image:: /_static/images/disable-2fa.png + :width: 400px + :align: center + :alt: Disable 2FA action button + +.. Note:: [2FA Recovery process] : + If the User loses the authenticator application or forgets the static PIN, then the User must + contact admin to disable 2FA. + If the admin themself loses the authenticator application or forgets the static PIN, then the admin + will have to either use apikey to disable 2FA using the API setupUserTwoFactorAuthentication with + enable flag to false or to do the database changes in 'user' table by clearing the columns + 'is_user_2fa_enabled', 'key_for_2fa', 'user_2fa_provider' for the specific entry. \ No newline at end of file diff --git a/source/adminguide/administration.rst b/source/adminguide/administration.rst index 4baa17ffa6..908d07cfb3 100644 --- a/source/adminguide/administration.rst +++ b/source/adminguide/administration.rst @@ -18,14 +18,14 @@ User Services ============= In addition to the physical and logical infrastructure of your cloud and -the CloudStack software and servers, you also need a layer of user +the CloudStack software and servers, you also need a layer of User services so that people can actually make use of the cloud. This means -not just a user UI, but a set of options and resources that users can -choose from, such as templates for creating virtual machines, disk +not just a User UI, but a set of options and resources that Users can +choose from, such as Templates for creating Instances, disk storage, and more. If you are running a commercial service, you will be -keeping track of what services and resources users are consuming and +keeping track of what services and resources Users are consuming and charging them for that usage. Even if you do not charge anything for -people to use your cloud – say, if the users are strictly internal to +people to use your cloud – say, if the Users are strictly internal to your organization, or just friends who are sharing your cloud – you can still keep track of what services they use and how much of them. @@ -33,9 +33,9 @@ still keep track of what services they use and how much of them. Service Offerings, Disk Offerings, Network Offerings, and Templates ------------------------------------------------------------------- -A user creating a new instance can make a variety of choices about its +A User creating a new Instance can make a variety of choices about its characteristics and capabilities. CloudStack provides several ways to -present users with choices when creating a new instance: +present Users with choices when creating a new Instance: - Service Offerings, defined by the CloudStack administrator, provide a choice of CPU speed, number of CPUs, RAM size, tags on the root disk, @@ -46,16 +46,16 @@ present users with choices when creating a new instance: storage. See Creating a New Disk Offering. - Network Offerings, defined by the CloudStack administrator, describe - the feature set that is available to end users from the virtual + the feature set that is available to end Users from the virtual router or external networking devices on a given guest network. See Network Offerings. - Templates, defined by the CloudStack administrator or by any - CloudStack user, are the base OS images that the user can choose from - when creating a new instance. For example, CloudStack includes CentOS - as a template. See Working with Templates. + CloudStack User, are the base OS images that the User can choose from + when creating a new Instance. For example, CloudStack includes CentOS + as a Template. See Working with Templates. -In addition to these choices that are provided for users, there is +In addition to these choices that are provided for Users, there is another type of service offering which is available only to the CloudStack root administrator, and is used for configuring virtual infrastructure resources. For more information, see Upgrading a Virtual diff --git a/source/adminguide/api.rst b/source/adminguide/api.rst index 75df8a1f82..2f65f4f9eb 100644 --- a/source/adminguide/api.rst +++ b/source/adminguide/api.rst @@ -44,10 +44,17 @@ Authentication. User Data and Meta Data ------------------------ +~~~~~~~~~~~~~~~~~~~~~~~ + +The user-data service on a Shared or Isolated Network can be provided through the +Virtual Router or through an attached iso called the Config drive. + +User Data and Meta Data Via Virtual Router +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CloudStack provides API access to attach up to 32KB of user data to a -deployed VM. Deployed VMs also have access to instance metadata via the +deployed Instance. Deployed Instances also have access to metadata via the virtual router. User data can be accessed once the IP address of the virtual router is @@ -57,34 +64,119 @@ the user data: #. Run the following command to find the virtual router. .. code:: bash - # cat /var/lib/dhclient/dhclient-eth0.leases | grep dhcp-server-identifier | tail -1 - #. Access user data by running the following command using the result of the above command .. code:: bash - # curl http://10.1.1.1/latest/user-data - Meta Data can be accessed similarly, using a URL of the form http://10.1.1.1/latest/meta-data/{metadata type}. (For backwards compatibility, the previous URL http://10.1.1.1/latest/{metadata type} is also supported.) For metadata type, use one of the following: -- service-offering. A description of the VMs service offering +- service-offering. A description of the Instance service offering - availability-zone. The Zone name -- local-ipv4. The guest IP of the VM +- local-ipv4. The guest IP of the Instance -- local-hostname. The hostname of the VM +- local-hostname. The hostname of the Instance - public-ipv4. The first public IP for the router. (E.g. the first IP of eth2) - public-hostname. This is the same as public-ipv4 -- instance-id. The instance name of the VM +- instance-id. The Instance name + +User Data and Meta Data via Config Drive +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Config drive is an ISO file that is mounted as a cd-rom on a user Instance and +contains related userdata, metadata (incl. ssh-keys) and +password files. + +Enable config drive +~~~~~~~~~~~~~~~~~~~ +To use the config drive the Network offering must have the “ConfigDrive” +provider selected for the userdata service. + +If the networkoffering uses ConfigDrive for userdata and the Template is +password enabled, the password string for the Instance is placed in the +vm_password.txt file and it is included in the ISO. + +ConfigDrive availability +~~~~~~~~~~~~~~~~~~~~~~~~ +At Instance start the config drive ISO is attached on the 2nd cd/dvd drive of the +user Instance, such that any other ISO image (e.g. boot image or vmware tools) +is mounted on 1st cd/dvd drive. This means existing functionality of +supporting 1 cd rom drive is still available. + +At password reset or update of user data, the Config Drive ISO +will be rebuilt. The existing ISO is mounted on a temporary directory, +password, userdata or ssh-keys are updated and a new ISO is built from the +updated directory structure. + +In case of a password reset, the new password will be picked-up at Instance start. +To access the updated userdata, the user needs to remount the config drive ISO. + +When an Instance is stopped, the ConfigDrive network element will trigger the +Secondary Storage VM to remove the ISO from the secondary storage. +If the config drive is stored on primary storage, the network element will +trigger the host to remove the ISO. + +The config drive ISO can be stored on primary storage by setting the global +setting vm.configdrive.primarypool.enabled to true. This is currently only +supported with use of the KVM Hypervisor. + +Supporting ConfigDrive +~~~~~~~~~~~~~~~~~~~~~~ + +Extra data is added to the Instance profile to enable the creation of the config drive: + +VMdata - a list of String arrays representing [“directory”, “filename”, “content”] on the ConfigDrive device. + +- /cloudstack + + - /metadata: + + - availability-zone.txt + + - instance-id.txt + + - service-offering.txt + + - cloud-identifier.txt + + - local-hostname.txt + + - vm-id.txt + + - public-keys.txt + + - /password + + - vm_password.txt + + - vm_password_md5checksum (for windows Instances) + +- /openstack/version/: + + - user_data (=hardlink to /cloudstack/user_data/user_data.txt) + + - vendor_data.json + + - meta_data.json + + - Network_data.json + + - label, which is configurable in global settings: + + - name : vm.configdrive.label + - default: config-2 +For more detailed information about the Config Drive implementation refer to +the `Wiki Article +`_ diff --git a/source/adminguide/autoscale_with_virtual_router.rst b/source/adminguide/autoscale_with_virtual_router.rst new file mode 100644 index 0000000000..b196866885 --- /dev/null +++ b/source/adminguide/autoscale_with_virtual_router.rst @@ -0,0 +1,403 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + + +Configuring AutoScale with using CloudStack Virtual Router +============================================= + + +What is AutoScaling? +-------------------- + +AutoScaling allows you to scale your back-end services or application Instances up +or down seamlessly and automatically according to the conditions you define. +With AutoScaling enabled, you can ensure that the number of Instances you are using +seamlessly scale up when demand increases, and automatically decreases when +demand subsides. Thus it helps you save compute costs by terminating underused +Instances automatically and launching new ones when you need them, without the need +for manual intervention. + + +Hypervisor support +------------------ + +At that time, AutoScaling with virtual router supports KVM, VMware and Xenserver. + + +Prerequisites +------------- + +Before you configure an AutoScale rule, consider the following: + +- Ensure that the necessary Template is prepared before configuring AutoScale. + Firstly you must install the PV-driver or virtio driver, which helps CloudStack + collects performance parameters (CPU and memory) into Instances. Besides, when an Instance is + deployed by using a Template and when it comes up, the application should be + up and running. + +- Create an Isolated Network using a Network offering which supports Instance AutoScaling, + acquire a new IP address (it will be used as Source NAT of the Network) and create + a load balancer rule without any Instance. + For more information, see `“Configure Guest Traffic in an Advanced Zone” + `_ , + `“Acquiring a New IP Address” `_ + and `“Adding a Load Balancer Rule” `_. + + .. note:: + There is a known issue when CloudStack collects memory statistics from Instances on + KVM hosts, see https://github.com/apache/cloudstack/pull/6358 . + To get memory statistics on KVM hosts, please add the following line to + /etc/cloudstack/agent/agent.properties and restart cloudstack-agent (5/10/60 are tested ok): + + vm.memballoon.stats.period = + + .. note:: + There is a known issue when CloudStack collects average load balancer connections + from CloudStack Virtual Routers, see https://github.com/apache/cloudstack/issues/6849 + + .. note:: + The Load Balancer configurations can be found at `“Load Balancer Configurations” + `_. + + .. note:: + VmAutoScaling capability is enabled by default for Network offerings which support + load balancer. To disable it, please create a Network offering without VmAutoScaling support. + For more information, see `“Creating a New Network Offering” + `_. + + +Adding an AutoScale Instance Group +------------- + +#. Log in to the CloudStack UI as an administrator or end user. + +#. In the left navigation, choose Compute -> AutoScale Instance Groups. + +#. Click the New AutoScale Instance Group button. + +Specify the following: + +- Zone: A zone where the Instances will be deployed to. + +- Template: A Template consists of a base OS image and application. A + Template is used to provision the new Instance of an application on a + scaleup action. When an Instance is deployed from a Template, it can start + taking the traffic from the load balancer without any admin intervention. + For example, if the Instance is deployed for a Web service, it should have the + Web server running, the database connected, and so on. + +- Compute offering: A predefined set of virtual hardware attributes, + including CPU speed, number of CPUs, and RAM size, that the user can select + when creating a new Instance. Choose one of the compute offerings to be used + while provisioning an Instance as part of the scaleup action. + +- Data disk: An extra disk attached to each Instance in the Instance group. + +- Networks: The Networks of the Instances. If there are multiple networks + checked, the network of the load balancer rule will be the default Network + of the Instances. + +- Load balancing rule: When an Instance is created, it will be automatically + assigned to the load balancing rule. When an Instance is expunged, it + will be removed from the load balancing rule. + +- ScaleUp policies: The policies for ScaleUp action. When all of the conditions + in one of the ScaleUp policies are met, CloudStack will create an Instance + if the number of Instances do not exceed Max Instance. + + For more information, see `“AutoScale policies” + `_. + +- ScaleDown policies: The policies for ScaleDown action. When all of the + conditions in one of the ScaleDown policies are met, CloudStack will expunge + an Instance in the group if the number of Instances is larger than Min Instance. + + For more information, see `“AutoScale policies” + `_. + +- Name: The name of the Instance group. The name of the new Instances will use the + name of the Instance group as prefix. + +- Min Instance: The minimum number of active Instances that is assigned to + a load balancing rule. The active Instances are the application + Instances that are up and serving the traffic, and are being load balanced. + This parameter ensures that a load balancing rule has at least the + configured number of active Instances are available to serve the traffic. + +- Max Instance: Maximum number of active Instances that should be assigned + to a load balancing rule. This parameter defines the upper limit of active + Instances that can be assigned to a load balancing rule. + + Specifying a large value for the Maximum Instance parameter might result in + provisioning large number of Instances, which in turn leads to a single + load balancing rule exhausting the Instances limit specified at the + account or domain level. + +- Polling interval: Frequency in which the conditions, combination of counter, + operator and threshold, are to be evaluated before taking a scale up or + down action. The default polling interval is 30 seconds. + +- Expunge Instance Grace Period: The duration in seconds, after a scaledown action + is initiated, to wait before the Instance is expunged as part of scaledown + action. This is to ensure graceful close of any pending sessions or + transactions being served by the Instance marked for expunge. The default is 120 + seconds. + +- Create: Click Create to create the AutoScale Instance group. + + Additionally, if you want to configure the advanced settings, click Show + advanced settings, and specify the following: + +- SSH key pairs: The SSH Keys of the Instances. + + For more information, see `“Using SSH Keys for Authentication” + `_. + +- Affinity groups: The affinity groups of the Instances. + + For more information, see `“Affinity Groups” + `_. + +- Userdata: The userdata of the Instances. + + For more information, see `“User-Data and Meta-Data” + `_. + + +AutoScale Policies +------------------------------------------------- + +An AutoScale Instance Group must have one or more scale-up policies, and one or more +scale-down policies. + +Each AutoScale Policy has the following parameters: + +- Duration: The duration, in seconds, for which the conditions you specify + must be true to trigger a scale action. The conditions defined should + hold true for the entire duration you specify for an AutoScale action to be + invoked. + +- Quiet Time: This is the cool down period after an AutoScale action is + initiated. The time includes the time taken to complete provisioning an + Instance from its Template and the time taken by an application to be ready + to serve traffic. This quiet time allows the fleet to come up to a stable + state before any action can take place. The default is 300 seconds. + +- Action: The scale action. The options are ScaleUp and ScaleDown. + +- Conditions: A policy must contain at least one condition. + +Each condition in AutoScale policies has the following parameters: + +- Counter: The performance counters expose the state of the monitored + Instances. We added five new counters to work with that feature: + + - Instance CPU - average percentage + - Instance Memory - average percentage + - Public Network - mbps received per Instance + - Public Network - mbps transmit per Instance + - Load Balancer - average connections per Instance + + Remember to choose one of them. If you choose anything else, the + autoscaling will not work. + +- Operator: The following five relational operators are supported in + AutoScale feature: Greater than, Less than, Less than or equal to, Greater + than or equal to, and Equal to. + +- Threshold: Threshold value to be used for the counter. Once the counter + defined above breaches the threshold value, the AutoScale feature initiates + a scaleup or scaledown action. + + .. note:: + The counter "Instance Memory - average percentage" calculates the average memory usage + of available Instances (in Starting, Stopping, Running, Migrating states) in the + AutoScale Instance Group. On KVM/XenServer, the Instance memory usage is calculated by + + Instance memory usage percentage = (total memory - free memory) * 100 / total memory + + .. note:: + The counters "Public Network - mbps received per Instance" and + "Public Network - mbps transmit per Instance" consider all public + traffic through the VR public interface, including the traffic from/to other + Instances which are not in the AutoScale Instance group. + + .. note:: + Each network has a network rate which are configured by global configuration + network.throttling.rate and "Network rate (Mb/s)" in network offering. + + +Disabling and Enabling an AutoScale Instance Group +------------------------------------------------- + +You can view the detail of the AutoScale Instance Group. + +#. Log in to the CloudStack UI as an administrator or end user. + +#. In the left navigation, choose Compute -> AutoScale Instance Groups. + +#. Select the AutoScale Instance Group you want to work with. + +|autoscale-vmgroup-details.png| + +If you want to perform any maintenance operation on the AutoScale Instances, +disable the AutoScale Instance Group. When the AutoScale Instance Group is +disabled, no scaleup or scaledown action is performed. You can use this +downtime for the maintenance activities. To disable the AutoScale Instance Group, +click the Disable AutoScale Instance Group button. + +The button toggles between enable and disable, depending on whether AutoScale +is currently enabled or not. After the maintenance operations are done, you +can enable the AutoScale Instance Group back. To enable the AutoScale Instance Group, click +the Enable AutoScale Instance Group button. + + +Updating an AutoScale Instance Group +----------------------------------- + +You can update the various parameters of Instance profile, and add or delete the +conditions in a scaleup or scaledown policy. Before you update an AutoScale Instance +Group, ensure that you disable it first by clicking the Disable AutoScale button. + +To update the AutoScale Instance Group, click the Update AutoScale Instance Group button. + +|autoscale-vmgroup-update.png| + +Updating AutoScale Instance Profile +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To update the Instance Profile of the AutoScale Instance Group, click the AutoScale Instance Profile +tab, You will see the details of AutoScale Instance Profile. + +|autoscale-vmgroup-profile.png| + +then click Edit AutoScale Instance Profile button. + +|autoscale-vmgroup-profile-update.png| + +You are able to reset userdata of the Instance, by clicking Reset Userdata on AutoScale Instance Group button. + +|autoscale-vmgroup-profile-reset-userdata.png| + +You are also able to update the deploy parameters of the Instances. + +|autoscale-vmgroup-deploy-parameters.png| + +The following parameters are supported. + +- affinitygroupids: The UUID of the affinity groups, separated by a single + comma character (,). + +- diskofferingid: The UUID of the data disk. + +- disksize: The size of data disk. This is valid only if the disk offering + is dynamic. + +- keypairs: The name of the SSH Key pairs, separated by a single comma + character (,). + +- networkids: The UUID of the Instance networks, separated by a single comma + character (,). + +- overridediskofferingid: The UUID of override disk offering for ROOT disk. + +- rootdisksize: The size of the ROOT disk. This overrides the size of the Instance Template. + +- securitygroupids: The UUID of security groups, separated by a single comma + character (,). This is valid only if the network provider is Netscaler. + + +Adding an AutoScale policy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To add a new Scale policy to the AutoScale Instance Group, click the ScaleUp policy +or ScaleDown policy tab, then click "Add policy". + +|autoscale-vmgroup-policy-new.png| + + For more information, see `“AutoScale policies” + `_. + +Updating AutoScale policies +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To update the AutoScale policies of the AutoScale Instance Group, click the ScaleUp policy +or ScaleDown policy tab. + +|autoscale-vmgroup-policy.png| + +To update an existing AutoScale policies, select a policy, input the new value +of Duration or Quiet time, then click Edit button. + +To add a new condition to the policy, choose Counter and Operator and input the value, +click Add condition. + +To remove an existing condition from the policy, click Delete button of the condition. + +To update a condition in the policy, click Edit button, choose Operator and input the +value, click OK button. + +Removing an AutoScale policy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To remove an existing AutoScale policies, select a policy, click "Remove policy" button. + +.. note:: + To apply the new AutoScale Instance Profile and AutoScale policies, open the AutoScale Instance + Group details, then click the Enable AutoScale Instance Group button. + +Deleting an AutoScale Instance Group +------------------------------------ + +To remove an AutoScale Instance Group, click "Delete AutoScale Instance Group" button. + +|autoscale-vmgroup-delete.png| + +AutoScale Instance Group can be removed only if there are no Instances in the group. + +To force-delete the AutoScale Instance Group, check the cleanup checkbox, then click OK button. +All the Instances in the group will be expunged. + +Runtime Considerations +---------------------- + +An administrator should not assign an Instance to a load balancing rule which is +configured for AutoScale. + +Making API calls outside the context of AutoScale, such as destroyVM, on an +autoscaled Instance leaves the load balancing configuration in an inconsistent state. +Even though the Instance is destroyed from the load balancer rule, it continues to be shown as +a service assigned to a rule inside the context of AutoScale. + + +.. |autoscale-vmgroup-delete.png| image:: /_static/images/autoscale-vmgroup-delete.png + :alt: Delete AutoScale Instance Group. +.. |autoscale-vmgroup-deploy-parameters.png| image:: /_static/images/autoscale-vmgroup-deploy-parameters.png + :alt: AutoScale Instance deploy parameters. +.. |autoscale-vmgroup-details.png| image:: /_static/images/autoscale-vmgroup-details.png + :alt: AutoScale Instance Group details. +.. |autoscale-vmgroup-policy-new.png| image:: /_static/images/autoscale-vmgroup-policy-new.png + :alt: Add new AutoScale Policy. +.. |autoscale-vmgroup-policy.png| image:: /_static/images/autoscale-vmgroup-policy.png + :alt: AutoScale Policies. +.. |autoscale-vmgroup-profile.png| image:: /_static/images/autoscale-vmgroup-profile.png + :alt: AutoScale Instance Profile. +.. |autoscale-vmgroup-update.png| image:: /_static/images/autoscale-vmgroup-update.png + :alt: Update AutoScale Instance Group. +.. |autoscale-vmgroup-profile-update.png| image:: /_static/images/autoscale-vmgroup-profile-update.png + :alt: Update AutoScale Instance Profile. +.. |autoscale-vmgroup-profile-reset-userdata.png| image:: /_static/images/autoscale-vmgroup-profile-reset-userdata.png + :alt: Reset Userdata in AutoScale Instance Profile. + diff --git a/source/adminguide/autoscale_without_netscaler.rst b/source/adminguide/autoscale_without_netscaler.rst index c8f8f7f086..efeb1db366 100644 --- a/source/adminguide/autoscale_without_netscaler.rst +++ b/source/adminguide/autoscale_without_netscaler.rst @@ -26,12 +26,12 @@ Configuring AutoScale without using NetScaler What is AutoScaling? -------------------- -AutoScaling allows you to scale your back-end services or application VMs up +AutoScaling allows you to scale your back-end services or application Instances up or down seamlessly and automatically according to the conditions you define. -With AutoScaling enabled, you can ensure that the number of VMs you are using +With AutoScaling enabled, you can ensure that the number of Instances you are using seamlessly scale up when demand increases, and automatically decreases when demand subsides. Thus it helps you save compute costs by terminating underused -VMs automatically and launching new VMs when you need them, without the need +Instances automatically and launching new Instances when you need them, without the need for manual intervention. @@ -47,10 +47,10 @@ Prerequisites Before you configure an AutoScale rule, consider the following: -- Ensure that the necessary template is prepared before configuring AutoScale. +- Ensure that the necessary Template is prepared before configuring AutoScale. Firstly you must install the PV-driver, which helps Xenserver collect - performance parameters (CPU and memory) into VMs. Beside, When a VM is - deployed by using a template and when it comes up, the application should be + performance parameters (CPU and memory) into Instances. Besides, When an Instance is + deployed by using a Template and when it comes up, the application should be up and running. @@ -61,33 +61,32 @@ Specify the following: .. image:: /_static/images/autoscale-config.png -- Template: A template consists of a base OS image and application. A - template is used to provision the new instance of an application on a - scaleup action. When a VM is deployed from a template, the VM can start +- Template: A Template consists of a base OS image and application. A + Template is used to provision the new Instance of an application on a + scaleup action. When an Instance is deployed from a Template, it can start taking the traffic from the load balancer without any admin intervention. - For example, if the VM is deployed for a Web service, it should have the + For example, if the Instance is deployed for a Web service, it should have the Web server running, the database connected, and so on. - Compute offering: A predefined set of virtual hardware attributes, including CPU speed, number of CPUs, and RAM size, that the user can select - when creating a new virtual machine instance. Choose one of the compute - offerings to be used while provisioning a VM instance as part of scaleup - action. + when creating a new Instance. Choose one of the compute offerings to be used + while provisioning an Instance as part of scaleup action. -- Min Instance: The minimum number of active VM instances that is assigned to - a load balancing rule. The active VM instances are the application - instances that are up and serving the traffic, and are being load balanced. +- Min Instance: The minimum number of active Instances that is assigned to + a load balancing rule. The active Instances are the application + Instances that are up and serving the traffic, and are being load balanced. This parameter ensures that a load balancing rule has at least the - configured number of active VM instances are available to serve the traffic. + configured number of active Instances are available to serve the traffic. -- Max Instance: Maximum number of active VM instances that should be assigned +- Max Instance: Maximum number of active Instances that should be assigned to a load balancing rule. This parameter defines the upper limit of active - VM instances that can be assigned to a load balancing rule. + Instances that can be assigned to a load balancing rule. - Specifying a large value for the maximum instance parameter might result in - provisioning large number of VM instances, which in turn leads to a single - load balancing rule exhausting the VM instances limit specified at the - account or domain level. + Specifying a large value for the maximum Instance parameter might result in + provisioning large number of Instances, which in turn leads to a single + load balancing rule exhausting the Instances limit specified at the + Account or domain level. Specify the following scale-up and scale-down policies: @@ -97,7 +96,7 @@ Specify the following scale-up and scale-down policies: invoked. - Counter: The performance counters expose the state of the monitored - instances. We added two new counter to work with that feature: + Instances. We added two new counter to work with that feature: - Linux User CPU [native] - percentage - Linux User RAM [native] - percentage @@ -123,15 +122,15 @@ Specify the following scale-up and scale-down policies: down action. The default polling interval is 30 seconds. - Quiet Time: This is the cool down period after an AutoScale action is - initiated. The time includes the time taken to complete provisioning a VM - instance from its template and the time taken by an application to be ready + initiated. The time includes the time taken to complete provisioning an + Instance from its Template and the time taken by an application to be ready to serve traffic. This quiet time allows the fleet to come up to a stable state before any action can take place. The default is 300 seconds. -- Destroy VM Grace Period: The duration in seconds, after a scaledown action - is initiated, to wait before the VM is destroyed as part of scaledown +- Destroy Instance Grace Period: The duration in seconds, after a scaledown action + is initiated, to wait before the Instance is destroyed as part of scaledown action. This is to ensure graceful close of any pending sessions or - transactions being served by the VM marked for destroy. The default is 120 + transactions being served by the Instance marked for destroy. The default is 120 seconds. - Apply: Click Apply to create the AutoScale configuration. @@ -140,7 +139,7 @@ Specify the following scale-up and scale-down policies: Disabling and Enabling an AutoScale Configuration ------------------------------------------------- -If you want to perform any maintenance operation on the AutoScale VM instances, +If you want to perform any maintenance operation on the AutoScale Instances, disable the AutoScale configuration. When the AutoScale configuration is disabled, no scaleup or scaledown action is performed. You can use this downtime for the maintenance activities. To disable the AutoScale @@ -168,11 +167,11 @@ click the Enable AutoScale button. Runtime Considerations ---------------------- -An administrator should not assign a VM to a load balancing rule which is +An administrator should not assign an Instance to a load balancing rule which is configured for AutoScale. Making API calls outside the context of AutoScale, such as destroyVM, on an -autoscaled VM leaves the load balancing configuration in an inconsistent state. -Though VM is destroyed from the load balancer rule, it continues be showed as -a service assigned to a rule inside the context of AutoScale. +autoscaled Instance leaves the load balancing configuration in an inconsistent state. +Even though the Instance is destroyed from the load balancer rule, it continues to be shown +as a service assigned to a rule inside the context of AutoScale. diff --git a/source/adminguide/backup_and_recovery.rst b/source/adminguide/backup_and_recovery.rst index aaa6e565aa..90d0fd362f 100644 --- a/source/adminguide/backup_and_recovery.rst +++ b/source/adminguide/backup_and_recovery.rst @@ -17,20 +17,25 @@ About Backup And Recovery -------------------------- CloudStack version 4.14 introduces a new Backup and Recovery (B&R) framework that -provides CloudStack with users the ability to back up their guest VMs for recovery +provides CloudStack with users the ability to back up their Guest Instances for recovery purposes via 3rd party backup solutions. The framework abstracts the API commands required for common backup and recovery -operations, from the vendor specific commmands needed to perform those actions and provides +operations, from the vendor specific commands needed to perform those actions and provides a plugin model to enable any solution which provides backup and recovery 'like' features to be integrated. The following providers are currently supported: - VMware with Veeam Backup and Recovery +- KVM with DELL EMC Networker See the Veeam Backup and Recovery plugin documentation for plugin specific information. :ref:`Veeam Backup and Recovery Plugin` +See the DELL EMC Networker Backup and Recovery plugin documentation for plugin specific information. +:ref:`DELL EMC Networker Backup and Recovery Plugin` + + Backup and Recovery Concepts ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -45,14 +50,14 @@ A user signs up for a 'Gold' offering, which might give them a RPO of 12 hours a allowed to perform additional backups nor set the exact time that these backups took place. The user might be charged a fix rate for these backups regardless of the size of the backups. -To use an SLA based backup policy the user adds their VMs to the offering/policy. The job then runs at its predetermined times and 'includes' the -VM when it runs. A user can remove the VM from the offering/policy and it will no longer be included in the job when it runs. +To use an SLA based backup policy the user adds their Instances to the offering/policy. The job then runs at its predetermined times and 'includes' the +Instance when it runs. A user can remove the Instance from the offering/policy and it will no longer be included in the job when it runs. -Adhoc and user scheduled backups follow the same idea as volume snapshots, however they leverage the backup solution +Adhoc and user scheduled backups follow the same idea as Volume Snapshots, however they leverage the backup solution rather than secondary storage. These could likely be billed on backup storage consumed or protected capacity (the full virtual -size of the VM(s) being backed up. +size of the Instance(s) being backed up. -Adhoc and user scheduled backups are created and managed in the same fashion as volume snapshots are. +Adhoc and user scheduled backups are created and managed in the same fashion as Volume Snapshots are. Configuring Backup and Recovery @@ -68,7 +73,7 @@ the Global Settings area of the CloudStack UI. Configuration Description ================================= ======================== backup.framework.enabled Setting to enable or disable the feature. Default: false. -backup.framework.provider.plugin The backup provider (plugin) name. For example: 'dummy' and 'veeam'. This is a zone specific setting. Default: dummy. +backup.framework.provider.plugin The backup provider (plugin) name. For example: 'dummy', 'veeam' and 'networker'. This is a zone specific setting. Default: dummy. backup.framework.sync.interval Background sync task internal in seconds that performs metrics/usage stats collection, backup reconciliation and backup scheduling. Default: 300. ================================= ======================== @@ -107,18 +112,18 @@ To import a backup provider offering; #. (As root) navigate to Service Offerings, click on the 'select offering' dropdown box and select 'Backup Offerings' #. Click on Import Backup Offering #. Enter your user-friendly name and description and select the applicable zone. The External ID will then be populated with the - template jobs which CloudStack retrieves from the connected provider. + Template jobs which CloudStack retrieves from the connected provider. |B&R-backup_offering_policy.png| |B&R-backup_offering.png| -Creating VM Backups ---------------------- +Creating Instance Backups +------------------------- SLA/Policy Based backups ~~~~~~~~~~~~~~~~~~~~~~~~~ With the backup and recovery feature enabled for a zone, users simply add and -remove a VM from a backup offering. +remove an Instance from a backup offering. |B&R-assignOffering.png| @@ -126,16 +131,16 @@ Adhoc and Scheduled Backups ~~~~~~~~~~~~~~~~~~~~~~~~~~~ For backup offerings that allow ad-hoc user backups and user-defined backup -schedules, user will be allowed to define a backup schedule for a VM that is -assigned to a backup offering using UI and API. A VM with backup will not be -allowed to add/remove volumes similar to VM snapshots. +schedules, user will be allowed to define a backup schedule for an Instance that is +assigned to a backup offering using UI and API. An Instance with backup will not be +allowed to add/remove volumes similar to Instance Snapshots. -To trigger an adhoc backup of a VM, navigate to the instance and click on the 'Create Backup' +To trigger an adhoc backup of an Instance, navigate to the Instance and click on the 'Create Backup' icon. |B&R-createBackup.png| -To setup a recurring backup schedule, navigate to the instance and click on the 'Backup Schedule' +To setup a recurring backup schedule, navigate to the Instance and click on the 'Backup Schedule' icon. |B&R-BackupSchedule.png| @@ -144,46 +149,46 @@ Then set the time and frequency of the backups, click 'Configure' and then 'Clos |B&R-BackupScheduleEntry.png| -Restoring VM Backups ---------------------- +Restoring Instance Backups +-------------------------- -Users will need to stop a VM to restore to any existing VM backup, restoration -of an expunged VM will not restore nics and recovery any network which may/may -not exist. User may however restore a specific volume from a VM backup and attach -that volume to a specified VM. +Users will need to stop an Instance to restore to any existing Instance backup, restoration +of an expunged Instance will not restore nics and recovery any network which may/may +not exist. User may however restore a specific volume from an Instance backup and attach +that volume to a specified Instance. Supported APIs: ~~~~~~~~~~~~~~~~ -- **assignVirtualMachineToBackupOffering**: adds a VM to a backup offering. -- **removeVirtualMachineFromBackupOffering**: removes a VM from a backup offering, if forced `true` parameter is passed this may also - remove any and all the backups of a VM associated with a backup offering. -- **createBackupSchedule**: creates a backup schedule for a VM. +- **assignVirtualMachineToBackupOffering**: adds an Instance to a backup offering. +- **removeVirtualMachineFromBackupOffering**: removes an Instance from a backup offering, if forced `true` parameter is passed this may also + remove any and all the backups of an Instance associated with a backup offering. +- **createBackupSchedule**: creates a backup schedule for an Instance. - **updateBackupSchedule**: updates backup schedule. -- **listBackupSchedule**: returns backup schedule of a VM if defined. -- **deleteBackupSchedule**: deletes backup schedule of a VM. -- **createBackup**: creates an adhoc backup for a VM. -- **deleteVMBackup**: deletes a VM backup (not support for per restore point for Veeam). +- **listBackupSchedule**: returns backup schedule of an Instance if defined. +- **deleteBackupSchedule**: deletes backup schedule of an Instance. +- **createBackup**: creates an adhoc backup for an Instance. +- **deleteVMBackup**: deletes an Instance backup (not support for per restore point for Veeam). - **listBackups**: lists backups. -- **restoreBackup**: restore a previous VM backup in-place of a stopped or destroyed VM. -- **restoreVolumeFromBackup**: restore and attach a backed-up volume (of a VM backup) to a specified VM. +- **restoreBackup**: restore a previous Instance backup in-place of a stopped or destroyed Instance. +- **restoreVolumeFromBackup**: restore and attach a backed-up volume (of an Instance backup) to a specified Instance. .. |B&R-assignOffering.png| image:: /_static/images/B&R-assignOffering.png - :alt: Assigning an SLA/Policy to a VM. + :alt: Assigning an SLA/Policy to an Instance. :width: 400 px .. |B&R-backup_offering_policy.png| image:: /_static/images/B&R-backup_offering_policy.png :alt: Importing an SLA/Policy offering. :width: 300 px .. |B&R-backup_offering.png| image:: /_static/images/B&R-backup_offering.png - :alt: Importing a template backup offering. + :alt: Importing a Template backup offering. :width: 300 px .. |B&R-createBackup.png| image:: /_static/images/B&R-createBackup.png - :alt: Triggering an adhoc backup for a VM. + :alt: Triggering an adhoc backup for an Instance. :width: 400 px .. |B&R-BackupSchedule.png| image:: /_static/images/B&R-BackupSchedule.png - :alt: Creating a backup schedule for a VM. + :alt: Creating a backup schedule for an Instance. :width: 400 px .. |B&R-BackupScheduleEntry.png| image:: /_static/images/B&R-BackupScheduleEntry.png - :alt: Creating a backup schedule for a VM. + :alt: Creating a backup schedule for an Instance. :width: 400px diff --git a/source/adminguide/clusters.rst b/source/adminguide/clusters.rst new file mode 100644 index 0000000000..1c8f131693 --- /dev/null +++ b/source/adminguide/clusters.rst @@ -0,0 +1,107 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + + +Adding Clusters +--------------- + +Additional clusters can be added at any time to add a new set of hosts. +For requirements and instructions, see :ref:`adding-a-cluster`. + + +CloudStack DRS +-------------- +DRS is a process that can rebalance instances across hypervisor hosts in a cluster as defined by the algorithm selected. +There are two algorithms available: + +#. **Condensed** spread instances across hosts as densely as possible. + This is useful for reducing the number of hosts used. +#. **Balanced** spread instances across hosts as evenly as possible. + This is useful for reducing the load on each host. This is the default algorithm. + +.. note:: + Deployment planner will not consider DRS while deploying instances. + +Configuring DRS +~~~~~~~~~~~~~~~ +Following are the configuration parameters for DRS. + +.. list-table:: DRS related cluster parameters + :header-rows: 1 + + * - Parameter + - Default + - Description + * - ``drs.plan.expire.interval`` + - `30` + - The interval in days after which the DRS events will be cleaned up. + * - ``drs.automatic.enable`` + - `false` + - Enable/disable automatic DRS on a cluster. + * - ``drs.automatic.interval`` + - `60` + - The interval in minutes after which a periodic background thread will schedule DRS for a cluster. + * - ``drs.max.migrations`` + - `50` + - Maximum number of instances to be migrated in one DRS execution. + * - ``drs.algorithm`` + - `condensed` + - DRS algorithm to be executed on the cluster. Available algorithms - `condensed`, `balanced`. + * - ``drs.imbalance`` + - `0.4` + - Percentage (as a value between 0.0 and 1.0) of imbalance allowed in the cluster. 1.0 means no imbalance + is allowed and 0.0 means imbalance is allowed. + * - ``drs.metric`` + - `memory` + - The cluster imbalance metric to use when considering the imbalance in cluster. Possible values are memory, cpu. + +.. note:: + Scope of ``drs.plan.expire.interval`` is global and for rest is cluster level. + +.. note:: + Very high value for ``drs.max.migrations`` can result in management server using up all of it's workers for DRS tasks + and not being able to execute other tasks. + +Executing manual DRS on a cluster +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +DRS can also be manually executed for a cluster. + +Follow these steps to execute DRS for a cluster using the UI: + +#. Configure DRS parameters as per the requirement. + |drs-cluster-settings.png| +#. Open DRS tab for the cluster. + |drs-cluster-tab.png| +#. Select the iteration percentage to execute for the cluster. +#. Click on `Generate DRS Plan` button. A modal will appear showing migrations + for that cluster as per the configured algorithm. + |drs-plan.png| +#. Validate the migrations, and click on `Execute` button to execute the + suggested migrations. + + +.. note:: + Only one DRS process can run for a cluster at a time. If you try to run DRS while another + DRS process is running, the second process will fail. + + +.. |drs-cluster-settings.png| image:: /_static/images/drs-cluster-settings.png + :alt: DRS settings for a cluster. + +.. |drs-cluster-tab.png| image:: /_static/images/drs-cluster-tab.png + :alt: DRS tab for a cluster. + +.. |drs-plan.png| image:: /_static/images/drs-plan.png + :alt: DRS plan for a cluster. diff --git a/source/adminguide/events.rst b/source/adminguide/events.rst index 629fcc45de..7766973507 100644 --- a/source/adminguide/events.rst +++ b/source/adminguide/events.rst @@ -50,8 +50,8 @@ notification is achieved by implementing the concept of event bus abstraction in the Management Server. A new event for state change, resource state change, is introduced as -part of Event notification framework. Every resource, such as user VM, -volume, NIC, network, public IP, snapshot, and template, is associated +part of Event notification framework. Every resource, such as user Instance, +volume, NIC, network, public IP, Snapshot, and Template, is associated with a state machine and generates events as part of the state change. That implies that a change in the state of a resource results in a state change event, and the event is published in the corresponding state @@ -113,11 +113,11 @@ changes can control the behaviour. - port : The port on which RabbitMQ server is running. - - username : The username associated with the account to access the + - username : The username associated with the Account to access the RabbitMQ server. - password : The password associated with the username of the - account to access the RabbitMQ server. + Account to access the RabbitMQ server. - exchange : The exchange name on the RabbitMQ server where CloudStack events are published. @@ -251,10 +251,10 @@ The events log records three types of standard events. - WARN. This event is generated in the following circumstances. - - When a network is disconnected while monitoring a template + - When a network is disconnected while monitoring a Template download. - - When a template download is abandoned. + - When a Template download is abandoned. - When an issue on the storage server causes the volumes to fail over to the mirror storage server. @@ -273,10 +273,10 @@ The events log records three types of standard events. - WARN. This event is generated in the following circumstances. - - When a network is disconnected while monitoring a template + - When a network is disconnected while monitoring a Template download. - - When a template download is abandoned. + - When a Template download is abandoned. - When an issue on the storage server causes the volumes to fail over to the mirror storage server. @@ -291,7 +291,7 @@ Event Log Queries Database logs can be queried from the user interface. The list of events captured by the system includes: -- Virtual machine creation, deletion, and on-going management +- Instance creation, deletion, and on-going management operations - Virtual router creation, deletion, and on-going management operations diff --git a/source/adminguide/guest_os.rst b/source/adminguide/guest_os.rst new file mode 100644 index 0000000000..cb64f57c1f --- /dev/null +++ b/source/adminguide/guest_os.rst @@ -0,0 +1,89 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + +.. |guest-os-button.png| image:: /_static/images/guest-os-button.png + :alt: Guest OS section + +.. |add-guest-os-button.png| image:: /_static/images/add-guest-os-button.png + :alt: Add guest OS button + +.. |view-guest-os-mappings-button.png| image:: /_static/images/view-guest-os-mappings-button.png + :alt: View guest OS mappings button + +.. |guest-os-mapping-button.png| image:: /_static/images/guest-os-mapping-button.png + :alt: Guest OS mapping button + +.. |add-guest-os-mapping-button.png| image:: /_static/images/add-guest-os-mapping-button.png + :alt: Add guest OS mapping button + +CloudStack provides administrators a good control to manage the guest operating systems for the +Instances. CloudStack maintains the list of guest operating systems that are supported +by the hypervisors and also provides a way for operators or admins to add new guest OSs based on the need. +For an operating system to be supported to CloudStack for the Instances, it has to be added in CloudStack +and also need to have a mapping with the actual operating system name supported by hypervisor. + +Under "Configuration" section there are sub-sections for guest operating system. + +Guest OS +--------- + +A list of supported guest operating systems are shown under |guest-os-button.png| and also one can add new operating systems. + +To add a new guest OS, click on the button |add-guest-os-button.png| and following details needs to be provided: + +- **OS name** : Name of the operating system which will be displayed to the users. + +- **OS category** : Category of the operating system to which it belongs, eg. Windows, CentOS, Debian, etc. + +.. image:: /_static/images/add-guest-os-form.png + :width: 400px + :align: center + :alt: Guest OS dialog box + +Operator also need to add mapping with the actual operating system name supported by hypervisor as below. + +Guest OS hypervisor mapping +---------------------------- +Existing mappings are shown here and also one can add new mapping to an operating system. +To view the mappings of an existing guest OS click on |view-guest-os-mappings-button.png| under guest OS details. + +.. image:: /_static/images/guest-os-details-form.png + :width: 400px + :align: center + :alt: Guest OS details form + +To a new mapping, inside the sub-section |guest-os-mapping-button.png| click on |add-guest-os-mapping-button.png| +and following details needs to be provided. + +- **OS type** : Select the operating system type to which mapping needs to be created. + +- **Hypervisor** : Name of the hypervisor. + +- **Hypervisor version** : Specific version of the hypervisor. The exact version number found from hypervisor capabilities list. + +- **Hypervisor mapping name** : Name of the operating system specific to the hypervisor. Eg. For CentOS 5.0 (64-bit) in VMware + the specific name is "centos64Guest". + +- **Check OS name with hypervisor** : A toggle button to specify whether to verify the hypervisor mapping name with available + hypervisor. + +- **Force** : A toggle button to force add a user defined guest os mapping, overrides any existing user defined mapping. + +.. image:: /_static/images/guest-os-mapping-form.png + :width: 400px + :align: center + :alt: Guest OS mapping form + +Operator can also do operations like edit and delete guest OS and its hypervisor mappings. \ No newline at end of file diff --git a/source/adminguide/hosts.rst b/source/adminguide/hosts.rst index 467370f808..6feeabd14d 100644 --- a/source/adminguide/hosts.rst +++ b/source/adminguide/hosts.rst @@ -18,15 +18,15 @@ Adding Hosts ------------ Additional hosts can be added at any time to provide more capacity for -guest VMs. For requirements and instructions, see :ref:`adding-a-host`. +guest Instances. For requirements and instructions, see :ref:`adding-a-host`. Scheduled Maintenance and Maintenance Mode for Hosts ---------------------------------------------------- You can place a host into maintenance mode. When maintenance mode is -activated, the host becomes unavailable to receive new guest VMs, and -the guest VMs already running on the host are seamlessly migrated to +activated, the host becomes unavailable to receive new guest Instances, and +the guest Instances already running on the host are seamlessly migrated to another host not in maintenance mode. This migration uses live migration technology and does not interrupt the execution of the guest. @@ -39,13 +39,13 @@ must be used in concert. CloudStack and vCenter have separate maintenance modes that work closely together. #. Place the host into CloudStack's "scheduled maintenance" mode. This - does not invoke the vCenter maintenance mode, but only causes VMs to + does not invoke the vCenter maintenance mode, but only causes Instances to be migrated off the host When the CloudStack maintenance mode is requested, the host first moves into the Prepare for Maintenance state. In this state it cannot - be the target of new guest VM starts. Then all VMs will be migrated - off the server. Live migration will be used to move VMs off the host. + be the target of new guest Instance starts. Then all Instances will be migrated + off the server. Live migration will be used to move Instances off the host. This allows the guests to be migrated to other hosts with no disruption to the guests. After this migration is completed, the host will enter the Ready for Maintenance mode. @@ -53,7 +53,7 @@ maintenance modes that work closely together. #. Wait for the "Ready for Maintenance" indicator to appear in the UI. #. Now use vCenter to perform whatever actions are necessary to maintain - the host. During this time, the host cannot be the target of new VM + the host. During this time, the host cannot be the target of new Instance allocations. #. When the maintenance tasks are complete, take the host out of @@ -66,8 +66,8 @@ maintenance modes that work closely together. #. Then use CloudStack's administrator UI to cancel the CloudStack maintenance mode - When the host comes back online, the VMs that were migrated off of - it may be migrated back to it manually and new VMs can be added. + When the host comes back online, the Instances that were migrated off of + it may be migrated back to it manually and new Instances can be added. XenServer and Maintenance Mode @@ -75,10 +75,10 @@ XenServer and Maintenance Mode For XenServer, you can take a server offline temporarily by using the Maintenance Mode feature in XenCenter. When you place a server into -Maintenance Mode, all running VMs are automatically migrated from it to +Maintenance Mode, all running Instances are automatically migrated from it to another host in the same pool. If the server is the pool master, a new master will also be selected for the pool. While a server is Maintenance -Mode, you cannot create or start any VMs on it. +Mode, you cannot create or start any Instances on it. **To place a server in Maintenance Mode:** @@ -92,7 +92,7 @@ Mode, you cannot create or start any VMs on it. #. Click Enter Maintenance Mode. -The server's status in the Resources pane shows when all running VMs +The server's status in the Resources pane shows when all running Instances have been successfully migrated off the server. **To take a server out of Maintenance Mode:** @@ -152,7 +152,7 @@ Removing XenServer and KVM Hosts ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A node cannot be removed from a cluster until it has been placed in -maintenance mode. This will ensure that all of the VMs on it have been +maintenance mode. This will ensure that all of the Instances on it have been migrated to other Hosts. To remove a Host from the cloud: #. Place the node in maintenance mode. @@ -200,13 +200,30 @@ hypervisor patches. The hypervisor vendor is likely to refuse to support any system that is not up to date with patches. .. note:: - The lack of up-do-date hotfixes can lead to data corruption and lost VMs. + The lack of up-do-date hotfixes can lead to data corruption and lost Instances. (XenServer) For more information, see `Highly Recommended Hotfixes for XenServer in the CloudStack Knowledge Base `_. +Hypervisor Capabilities +----------------------- +For different hypervisors and their versions, various capabilities such as maximum number of guest Instances per host, maximum number of volumes per Instance, security group support, etc are considered by CloudStack. These capabilities are stored in the **cloud.hypervisor_capabilities** table in the database. If a specific hypervisor version is not available in the database, values against the *default* version for the hypervisor will be used. +These capabilities can be listed using API - ``listHypervisorCapabilities``. Some of the hypervisor capabilities can also be updated for a hypervisor type and version combination using API - ``updateHypervisorCapabilities``. + +Following hypervisor-specific documentations can be referred for different maximums for a particular hypervisor host: + +- VMware: `VMware Configuration Maximum tool `_. + +- Citrix Hypervisor/Xenserver/XCP-ng: `Configuration limits | Citrix Hypervisor 8.2 `_. + + +.. note:: + Guest Instance limit check is not done while deploying an Instance on a KVM hypervisor host. + + + Changing Host Password ---------------------- @@ -264,7 +281,7 @@ Over-Provisioning and Service Offering Limits (Supported for XenServer, KVM, and VMware) CPU and memory (RAM) over-provisioning factors can be set for each -cluster to change the number of VMs that can run on each host in the +cluster to change the number of Instances that can run on each host in the cluster. This helps optimize the use of resources. By increasing the over-provisioning factor, more resource capacity will be used. If the factor is set to 1, no over-provisioning is done. @@ -281,7 +298,7 @@ Capacity = 2 GB Over-provisioning factor = 2 Capacity after over-provisioning = 4 GB -With this configuration, suppose you deploy 3 VMs of 1 GB each: +With this configuration, suppose you deploy 3 Instances of 1 GB each: Used = 3 GB Free = 1 GB @@ -290,14 +307,14 @@ The administrator can specify a memory over-provisioning factor, and can specify both CPU and memory over-provisioning factors on a per-cluster basis. -In any given cloud, the optimum number of VMs for each host is affected +In any given cloud, the optimum number of Instances for each host is affected by such things as the hypervisor, storage, and hardware configuration. These may be different for each cluster in the same cloud. A single global over-provisioning setting can not provide the best utilization for all the different clusters in the cloud. It has to be set for the lowest common denominator. The per-cluster setting provides a finer granularity for better utilization of resources, no matter where the -CloudStack placement algorithm decides to place a VM. +CloudStack placement algorithm decides to place an Instance. The overprovisioning settings can be used along with dedicated resources (assigning a specific cluster to an account) to effectively offer @@ -319,9 +336,9 @@ Limitations on Over-Provisioning in XenServer and KVM - In XenServer, due to a constraint of this hypervisor, you can not use an over-provisioning factor greater than 4. -- The KVM hypervisor can not manage memory allocation to VMs +- The KVM hypervisor can not manage memory allocation to Instances dynamically. CloudStack sets the minimum and maximum amount of memory - that a VM can use. The hypervisor adjusts the memory within the set + that an Instance can use. The hypervisor adjusts the memory within the set limits based on the memory contention. @@ -337,37 +354,38 @@ responsibility to ensure that these requirements are met. Balloon Driver ^^^^^^^^^^^^^^ -All VMs should have a balloon driver installed in them. The hypervisor +All Instances should have a balloon driver installed in them. The hypervisor communicates with the balloon driver to free up and make the memory -available to a VM. +available to an Instance. XenServer ''''''''' The balloon driver can be found as a part of xen pv or PVHVM drivers. -The xen pvhvm drivers are included in upstream linux kernels 2.6.36+. +The xen PVHVM drivers are included in upstream linux kernels 2.6.36+. VMware '''''' The balloon driver can be found as a part of the VMware tools. All the -VMs that are deployed in a over-provisioned cluster should have the +Instances that are deployed in a over-provisioned cluster should have the VMware tools installed. KVM ''' -All VMs are required to support the virtio drivers. These drivers are +All KVM Instances are required to support the virtio drivers. These drivers are installed in all Linux kernel versions 2.6.25 and greater. The administrator must set CONFIG\_VIRTIO\_BALLOON=y in the virtio -configuration. +configuration. Drivers for Windows can be downloaded from +https://github.com/virtio-win/virtio-win-pkg-scripts -Hypervisor capabilities -^^^^^^^^^^^^^^^^^^^^^^^ +Hypervisor capability +^^^^^^^^^^^^^^^^^^^^^ The hypervisor must be capable of using the memory ballooning. @@ -379,12 +397,45 @@ The DMC (Dynamic Memory Control) capability of the hypervisor should be enabled. Only XenServer Advanced and above versions have this feature. -VMware, KVM -''''''''''' +VMware +'''''' Memory ballooning is supported by default. +KVM +''' + +Memory ballooning is supported and enabled by default. This can be configured on +per KVM host basis via the `vm.memballoon.disable=false` property and the +`vm.memballoon.stats.period` property in the `agent.properties` of the KVM host. + +The memory ballooning feature on KVM allows the host to reclaim memory from +guest VMs which is enabled by a virtio balloon device on the guest VM and the +related virtio drivers inside the guest VMs. This feature is mainly intended to +support over-committing memory on KVM hosts. + +A related feature, KSM (Kernel Same-page Merging), can also be enabled to assist +with over-committing memory. On some distributions such as Ubuntu, this is +enabled by default, and can be checked otherwise by checking/setting +`/sys/kernel/mm/ksm/run` to 1 and for libvirt set the `KSM_ENABLED=AUTO` in +`/etc/defaults/qemu-kvm`. + +Note: the memory ballooning feature isn't automatic on KVM and shouldn't be +confused with the dynamic scaling feature that allows manual scaling of running +Instances by changing the service offering (feature can be enabled via the setting +enable.dynamic.scale.vm) of Instances that aren't using a fixed compute offering. + +By default, when memory is over provisioned (setting mem.overprovisioning.factor +is greater than 1.0 at global or cluster level) the actual memory for the Instance is +the memory per the service offering divided by the global or cluster-specific +memory overprovisioning factor. This means guests start with a lower memory than +their service offering intended memory, which will not be changed or scaled +automatically. When overcommitting memory, this behaviour can be disabled by +turning off (set the value false) the setting +`vm.min.memory.equals.memory.divided.by.mem.overprovisioning.factor`. + + Setting Over-Provisioning Factors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -394,19 +445,19 @@ cpu.overprovisioning.factor and mem.overprovisioning.factor will be applied when a new cluster is created. Later, the factors can be modified for an existing cluster. -Only VMs deployed after the change are affected by the new setting. If -you want VMs deployed before the change to adopt the new -over-provisioning factor, you must stop and restart the VMs. When this is +Only Instances deployed after the change are affected by the new setting. If +you want Instances deployed before the change to adopt the new +over-provisioning factor, you must stop and restart the Instances. When this is done, CloudStack recalculates or scales the used and reserved capacities based on the new over-provisioning factors, to ensure that CloudStack is correctly tracking the amount of free capacity. .. note:: - It is safer not to deploy additional new VMs while the capacity + It is safer not to deploy additional new Instances while the capacity recalculation is underway, in case the new values for available - capacity are not high enough to accommodate the new VMs. Just wait + capacity are not high enough to accommodate the new Instances. Just wait for the new used/available values to become available, to be sure - there is room for all the new VMs you want. + there is room for all the new Instances you want. To change the over-provisioning factors for an existing cluster: @@ -448,7 +499,7 @@ weight is based on the clock speed in the service offering. Guests receive a CPU allocation that is proportionate to the GHz in the service offering. For example, a guest created from a 2 GHz service offering will receive twice the CPU allocation as a guest created from a 1 GHz -service offering. CloudStack does not perform memory over-provisioning. +service offering. VLAN Provisioning @@ -756,7 +807,7 @@ and space are replaced with ``~``: Starting 4.11.1, a KVM host is considered secured when it has its keystore and certificates setup for both the agent and libvirtd process. A secured host will -only allow and initiate TLS enabled live VM migration. This requires libvirtd +only allow and initiate TLS enabled live Instance migration. This requires libvirtd to listen on default port 16514, and the port to be allowed in the firewall rules. Certificate renewal (using the ``provisionCertificate`` API) will restart both the libvirtd process and agent after deploying new certificates. @@ -771,7 +822,7 @@ Feature Overview - This feature applies to KVM hosts. - KVM utilised under CloudStack uses the standard Libvirt hook script behaviour as outlined in the Libvirt documentation page `hooks`_. - During the install of the KVM CloudStack agent, the Libvirt hook script "/etc/libvirt/hooks/qemu", referred to as the qemu script hereafter is installed. -- This is a python script that carries out network management tasks every time a VM is started, stopped or migrated, as per the Libvirt hooks specification. +- This is a python script that carries out network management tasks every time an Instance is started, stopped or migrated, as per the Libvirt hooks specification. - Custom network configuration tasks can be done at the same time as the qemu script is called. - Since the tasks in question are user-specific, they cannot be included in the CloudStack-provided qemu script. @@ -797,7 +848,7 @@ Usage #. Sub-operation indication, or '-' if there is none. #. An extra argument string, or '-' if there is none. -- The operation argument is based on what actions KVM and Libvirt are carrying out on each VM: 'prepare', 'start', 'started', 'stopped', 'release', 'migrate', 'restore', 'reconnect', 'attach'. +- The operation argument is based on what actions KVM and Libvirt are carrying out on each Instance: 'prepare', 'start', 'started', 'stopped', 'release', 'migrate', 'restore', 'reconnect', 'attach'. - If an invalid operation argument is received, the qemu script will log the fact, not execute any custom scripts and exit. @@ -824,18 +875,18 @@ Timeout Configuration #. Find the "timeoutSeconds" timeout setting. #. Change the 10 * 60 value to a preferred timeout value. For example 20 * 60, for a 20-minute timeout. -Custom Script Naming for a Specific VM Action -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- For a custom script that needs to be executed at the end of a specific VM action, do the following: +Custom Script Naming for a Specific Instance Action +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +- For a custom script that needs to be executed at the end of a specific Instance action, do the following: #. Navigate to the custom script that needs to be executed for a specific action. #. Rename the file by prefixing to the filename the specific action name followed by an underscore. For example, if a custom script is named abc.sh, then prefix 'migrate' and an underscore to the name to become migrate_abc.sh. -Custom Script Naming for All VM Actions -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Custom Script Naming for All Instance Actions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- For a custom script that needs to be executed at the end of all VM actions, do the following: +- For a custom script that needs to be executed at the end of all Instance actions, do the following: #. Navigate to the custom script that needs to be executed for all actions. #. Rename the file by prefixing 'all' to the filename, followed by an underscore. For example, if a custom script is named def.py, then prefix 'all' and an underscore to the name to become all_def.py. @@ -986,3 +1037,51 @@ The management server iterates through hosts in each cluster on the selected sco - In case the post-maintenance script fails and the ‘forced’ parameter is not set, then the rolling maintenance process fails and an error is reported. If the ‘forced’ parameter is set, the host is skipped and the iteration continues with the next host in the cluster - Enable the cluster that has been disabled, after all the hosts in the cluster have been processed, or in case an error has occurred. + + +KVM Auto Enable/Disable Hosts +----------------------------- + +The cluster configuration 'enable.kvm.host.auto.enable.disable' (disabled by default) allows CloudStack to auto-disable and auto-enable KVM hosts resource state based on customisable host/hypervisor health checks. + +KVM hosts health checks +~~~~~~~~~~~~~~~~~~~~~~~ + +For each KVM agent on the cluster, the property 'agent.health.check.script.path' must be added to the agent.properties file, indicating the path of an executable file/script for host health check. + +.. note:: The health script runs every 'ping.interval' seconds on a KVM host. + +.. note:: The health script will need execution permissions on a KVM host. + +Depending on the exit code of the health script, the KVM agent will report the management server with the following results: + +- The health check result is true, if the script is executed successfully and the exit code is 0 +- The health check result is false, if the script is executed successfully and the exit code is 1 +- The health check result is null, if + + - Script file is not specified, or + - Script file does not exist, or + - Script file is not accessible by the user of the cloudstack-agent process, or + - Script file is not executable, or + - There are errors when the script is executed (exit codes other than 0 or 1) + +Management Server actions based on health checks +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The management server receives the health check results from the KVM agent, and takes the following actions: + +- If the host health check result is null, do nothing. +- If the host health check result is true, enable the host resource state if it is Disabled. +- If the host health check result is false, disable the host resource state if it is Enabled. + +On every automatic enable or disable event, the management server will send an alert to the admin and add an automatic annotation (comment) on the specific host. + +- If a host gets auto-disabled by a health check failure, then it can be auto-enabled when the health check succeeds. But if the host gets disabled by the admin, then it must not be auto-enabled when the health check succeeds (manual host disabling takes precedence over the auto-enabling of a host). +- If a host gets auto-disabled by a health check failure, the admin could enable the host but unless they also disable the health check on the host then it will just get disabled again when the health check fails + +CloudStack controls when a host can/cannot be auto-enabled or auto-disabled by a host detail record (on the host_details table) with key ‘autoenablekvmhost’, in the following way: + +- If a host is auto-enabled or auto-disabled and there is no host detail with key ‘autoenablekvmhost’ for that host, then a new host detail record is created with the key ‘autoenablekvmhost’ and is set to ‘true’ (just before the host is auto-enabled/auto-disabled) +- If the administrator manually disables a host and there is a host detail with key ‘autoenablekvmhost’ for that host, then the host detail ‘autoenablekvmhost’ is set to ‘false’ (indicating that the host cannot be auto-enabled if the health check succeeds) +- If the administrator manually enables a host and there is a host detail with key ‘autoenablekvmhost’ for that host, then the host detail ‘autoenablekvmhost’ is set to ‘true’ (indicating that the host can be auto-disabled if the health check fails) +- If the feature was never enabled before ('enable.kvm.host.auto.enable.disable' global and cluster settings having their default values) and the administrator enables/disables hosts in the cluster, then the host detail with key ‘autoenablekvmhost’ is not created for the hosts. (preserving the usual behavior). If the cluster setting is then enabled, and the administrator enables/disables the host manually then the host detail with key '‘autoenablekvmhost’ is created, and is set to true/false. diff --git a/source/adminguide/index.rst b/source/adminguide/index.rst index d91d69fc11..44633e9e0b 100644 --- a/source/adminguide/index.rst +++ b/source/adminguide/index.rst @@ -69,11 +69,11 @@ Setting up Networking for Users :maxdepth: 4 networking - autoscale_without_netscaler + autoscale_with_virtual_router -Working with Virtual Machines ------------------------------ +Working with Instances +---------------------- .. toctree:: :maxdepth: 4 @@ -89,6 +89,13 @@ Working with Templates & ISOs templates +Working with Clusters +------------------ + +.. toctree:: + :maxdepth: 4 + + clusters Working with Hosts ------------------ @@ -108,8 +115,8 @@ Working with Storage storage -Working with System Virtual Machines ------------------------------------- +Working with System VMs +----------------------- .. toctree:: :maxdepth: 4 @@ -134,6 +141,7 @@ Managing Networks and Traffic networking_and_traffic networking/using_remote_access + networking/vnf_templates_appliances Managing the Cloud diff --git a/source/adminguide/locale/pot/networking/external_firewalls_and_load_balancers.pot b/source/adminguide/locale/pot/networking/external_firewalls_and_load_balancers.pot index fa7cea98ca..946305e61e 100644 --- a/source/adminguide/locale/pot/networking/external_firewalls_and_load_balancers.pot +++ b/source/adminguide/locale/pot/networking/external_firewalls_and_load_balancers.pot @@ -503,12 +503,12 @@ msgstr "" #: ../../networking/external_firewalls_and_load_balancers.rst:456 # 0ac0707e74464bd0840f60e335716a25 -msgid "Ensure that the endpointe.url parameter present in the Global Settings is set to the Management Server API URL. For example, ``http://10.102.102.22:8080/client/api``. In a multi-node Management Server deployment, use the virtual IP address configured in the load balancer for the management server's cluster. Additionally, ensure that the NetScaler device has access to this IP address to provide AutoScale support." +msgid "Ensure that the endpoint.url parameter present in the Global Settings is set to the Management Server API URL. For example, ``http://10.102.102.22:8080/client/api``. In a multi-node Management Server deployment, use the virtual IP address configured in the load balancer for the management server's cluster. Additionally, ensure that the NetScaler device has access to this IP address to provide AutoScale support." msgstr "" #: ../../networking/external_firewalls_and_load_balancers.rst:464 # f8d93cd584a54fd8b2a72143d4107323 -msgid "If you update the endpointe.url, disable the AutoScale functionality of the load balancer rules in the system, then enable them back to reflect the changes. For more information see :ref:`update-autoscale`." +msgid "If you update the endpoint.url, disable the AutoScale functionality of the load balancer rules in the system, then enable them back to reflect the changes. For more information see :ref:`update-autoscale`." msgstr "" #: ../../networking/external_firewalls_and_load_balancers.rst:468 diff --git a/source/adminguide/locale/pot/networking/persistent_networks.pot b/source/adminguide/locale/pot/networking/persistent_networks.pot index 5db6bc1957..ae8f3c4387 100644 --- a/source/adminguide/locale/pot/networking/persistent_networks.pot +++ b/source/adminguide/locale/pot/networking/persistent_networks.pot @@ -33,7 +33,7 @@ msgstr "" #: ../../networking/persistent_networks.rst:33 # 87f88f46858c41ba96f785b7c3122342 -msgid "One of the advantages of having a persistent network is that you can create a VPC with a tier consisting of only physical devices. For example, you might create a VPC for a three-tier application, deploy VMs for Web and Application tier, and use physical machines for the Database tier. Another use case is that if you are providing services by using physical hardware, you can define the network as persistent and therefore even if all its VMs are destroyed the services will not be discontinued." +msgid "One of the advantages of having a persistent network is that you can create a VPC with a temtier consisting of only physical devices. For example, you might create a VPC for a three-tier application, deploy VMs for Web and Application tier, and use physical machines for the Database tier. Another use case is that if you are providing services by using physical hardware, you can define the network as persistent and therefore even if all its VMs are destroyed the services will not be discontinued." msgstr "" #: ../../networking/persistent_networks.rst:44 diff --git a/source/adminguide/locale/pot/networking2.pot b/source/adminguide/locale/pot/networking2.pot index 33ea3379ef..14666aa3e7 100644 --- a/source/adminguide/locale/pot/networking2.pot +++ b/source/adminguide/locale/pot/networking2.pot @@ -2771,12 +2771,12 @@ msgstr "" #: ../../networking2.rst:2451 # c4bb8c60d3214089b1726fe9bea68db1 -msgid "Ensure that the endpointe.url parameter present in the Global Settings is set to the Management Server API URL. For example, ``http://10.102.102.22:8080/client/api``. In a multi-node Management Server deployment, use the virtual IP address configured in the load balancer for the management server's cluster. Additionally, ensure that the NetScaler device has access to this IP address to provide AutoScale support." +msgid "Ensure that the endpoint.url parameter present in the Global Settings is set to the Management Server API URL. For example, ``http://10.102.102.22:8080/client/api``. In a multi-node Management Server deployment, use the virtual IP address configured in the load balancer for the management server's cluster. Additionally, ensure that the NetScaler device has access to this IP address to provide AutoScale support." msgstr "" #: ../../networking2.rst:2459 # f6027494d923450aa21e243d185af107 -msgid "If you update the endpointe.url, disable the AutoScale functionality of the load balancer rules in the system, then enable them back to reflect the changes. For more information see :ref:`update-autoscale`." +msgid "If you update the endpoint.url, disable the AutoScale functionality of the load balancer rules in the system, then enable them back to reflect the changes. For more information see :ref:`update-autoscale`." msgstr "" #: ../../networking2.rst:2465 diff --git a/source/adminguide/locale/pot/networking_and_traffic.pot b/source/adminguide/locale/pot/networking_and_traffic.pot index b42cc5d962..bad4a1a647 100644 --- a/source/adminguide/locale/pot/networking_and_traffic.pot +++ b/source/adminguide/locale/pot/networking_and_traffic.pot @@ -2758,12 +2758,12 @@ msgstr "" #: ../../networking/external_firewalls_and_load_balancers.rst:456 # d8cef4ea8860477489a80f3a715fbd90 -msgid "Ensure that the endpointe.url parameter present in the Global Settings is set to the Management Server API URL. For example, ``http://10.102.102.22:8080/client/api``. In a multi-node Management Server deployment, use the virtual IP address configured in the load balancer for the management server's cluster. Additionally, ensure that the NetScaler device has access to this IP address to provide AutoScale support." +msgid "Ensure that the endpoint.url parameter present in the Global Settings is set to the Management Server API URL. For example, ``http://10.102.102.22:8080/client/api``. In a multi-node Management Server deployment, use the virtual IP address configured in the load balancer for the management server's cluster. Additionally, ensure that the NetScaler device has access to this IP address to provide AutoScale support." msgstr "" #: ../../networking/external_firewalls_and_load_balancers.rst:464 # 1cd70adcb30d47abbcc3dc69e3707036 -msgid "If you update the endpointe.url, disable the AutoScale functionality of the load balancer rules in the system, then enable them back to reflect the changes. For more information see :ref:`update-autoscale`." +msgid "If you update the endpoint.url, disable the AutoScale functionality of the load balancer rules in the system, then enable them back to reflect the changes. For more information see :ref:`update-autoscale`." msgstr "" #: ../../networking/external_firewalls_and_load_balancers.rst:468 diff --git a/source/adminguide/locale/zh_CN/LC_MESSAGES/networking/external_firewalls_and_load_balancers.po b/source/adminguide/locale/zh_CN/LC_MESSAGES/networking/external_firewalls_and_load_balancers.po index f1e674dbb1..0eacca4b84 100644 --- a/source/adminguide/locale/zh_CN/LC_MESSAGES/networking/external_firewalls_and_load_balancers.po +++ b/source/adminguide/locale/zh_CN/LC_MESSAGES/networking/external_firewalls_and_load_balancers.po @@ -729,7 +729,7 @@ msgstr "" # 0ac0707e74464bd0840f60e335716a25 #: ../../networking/external_firewalls_and_load_balancers.rst:456 msgid "" -"Ensure that the endpointe.url parameter present in the Global Settings is " +"Ensure that the endpoint.url parameter present in the Global Settings is " "set to the Management Server API URL. For example, " "``http://10.102.102.22:8080/client/api``. In a multi-node Management Server " "deployment, use the virtual IP address configured in the load balancer for " @@ -740,10 +740,10 @@ msgstr "确保在全局配置中的结束点地址参数已设置为管理服务 # f8d93cd584a54fd8b2a72143d4107323 #: ../../networking/external_firewalls_and_load_balancers.rst:464 msgid "" -"If you update the endpointe.url, disable the AutoScale functionality of the " +"If you update the endpoint.url, disable the AutoScale functionality of the " "load balancer rules in the system, then enable them back to reflect the " "changes. For more information see :ref:`update-autoscale`." -msgstr "如果更新了endpointe.url,在系统自动负载均衡器规则里,先关闭自缩放功能随后再开启,以应用此更新。。更多信息,参见 :ref:`update-autoscale`。" +msgstr "如果更新了endpoint.url,在系统自动负载均衡器规则里,先关闭自缩放功能随后再开启,以应用此更新。。更多信息,参见 :ref:`update-autoscale`。" # f4e671d2a1814ee7936944319291f882 #: ../../networking/external_firewalls_and_load_balancers.rst:468 diff --git a/source/adminguide/management.rst b/source/adminguide/management.rst index c7b948d14c..b13086f7a4 100644 --- a/source/adminguide/management.rst +++ b/source/adminguide/management.rst @@ -19,14 +19,14 @@ Using Tags to Organize Resources in the Cloud A tag is a key-value pair that stores metadata about a resource in the cloud. Tags are useful for categorizing resources. For example, you can -tag a user VM with a value that indicates the user's city of residence. +tag a User Instance with a value that indicates the User's city of residence. In this case, the key would be "city" and the value might be "Toronto" or "Tokyo." You can then request CloudStack to find all resources that -have a given tag; for example, VMs for users in a given city. +have a given tag; for example, Instances for Users in a given city. -You can tag a user virtual machine, volume, snapshot, guest network, -template, ISO, firewall rule, port forwarding rule, public IP address, -security group, load balancer rule, project, VPC, network ACL, or static +You can tag a User Instance, Volume, Snapshot, Guest Network, +Template, ISO, firewall rule, port forwarding rule, public IP address, +security group, load balancer rule, project, VPC, Network ACL, or static route. You can not tag a remote access VPN. You can work with tags through the UI or through the API commands @@ -81,6 +81,35 @@ The following API commands have the "tags" input parameter: - listStaticRoutes +Using Comments on the Resources in the Cloud +-------------------------------------------- + +CloudStack allows Users and administrators to create comments against cloud objects with a UUID. The listing page of any cloud object includes a blue icon next to the object name indicating that the object contains comments. + +To create a new comment on an object: + +1. Click on the object to display the detail view + +2. Navigate to the Comments tab + +3. Add a comment on the text area and click the Submit button + +.. note:: + Administrators only: Select the 'Only visible to Administrators' checkbox to create private comments across administrators + +To display al the comments created by the logged in User (or administrator): + +1. In the left navigation bar, click Tools + +2. Click Comments (the default filter is 'Created by me') + +To display all the comments on the objects that the logged in User (or administrator) has access: + +1. In the left navigation bar, click Tools + +2. Click Comments + +3. Select the 'All Comments' filter Reporting CPU Sockets --------------------- @@ -186,8 +215,8 @@ cloud. Alerts are notices to an administrator, generally delivered by e-mail, notifying the administrator that an error has occurred in the cloud. Alert behavior is configurable. -Events track all of the user and administrator actions in the cloud. For -example, every guest VM start creates an associated event. Events are +Events track all of the User and administrator actions in the cloud. For +example, every Guest Instance start creates an associated event. Events are stored in the Management Server’s database. Emails will be sent to administrators under the following circumstances: @@ -233,7 +262,7 @@ be found by calling listAlerts. :: - PUBLIC_IP = 4 // Number of unallocated virtual network public IPs is below configured threshold + PUBLIC_IP = 4 // Number of unallocated virtual Network public IPs is below configured threshold :: @@ -249,7 +278,7 @@ be found by calling listAlerts. :: - USERVM = 8 // User VM stopped unexpectedly + USERVM = 8 // User Instance stopped unexpectedly :: @@ -273,7 +302,7 @@ be found by calling listAlerts. :: - MANAGMENT_NODE = 14 // Management network CIDR is not configured originally + MANAGMENT_NODE = 14 // Management Network CIDR is not configured originally :: @@ -285,7 +314,7 @@ be found by calling listAlerts. :: - USERVM_MIGRATE = 17 // User VM Migration was unsuccessful + USERVM_MIGRATE = 17 // User Instance Migration was unsuccessful :: @@ -313,7 +342,7 @@ be found by calling listAlerts. :: - DIRECT_ATTACHED_PUBLIC_IP = 24 // Number of unallocated shared network IPs is low in availability zone + DIRECT_ATTACHED_PUBLIC_IP = 24 // Number of unallocated shared Network IPs is low in availability zone :: @@ -321,7 +350,7 @@ be found by calling listAlerts. :: - RESOURCE_LIMIT_EXCEEDED = 26 //Generated when the resource limit exceeds the limit. Currently used for recurring snapshots only + RESOURCE_LIMIT_EXCEEDED = 26 //Generated when the resource limit exceeds the limit. Currently used for recurring Snapshots only You can also display the most up to date list by calling the API command ``listAlerts``. @@ -416,7 +445,7 @@ alerts from CloudStack: #. If your cloud has multiple Management Server nodes, repeat these - steps to edit log4j-cloud.xml on every instance. + steps to edit log4j-cloud.xml on every Instance. #. If you have made these changes while the Management Server is running, wait a few minutes for the change to take effect. @@ -440,20 +469,20 @@ Customizing the Network Domain Name ----------------------------------- The root administrator can optionally assign a custom DNS suffix at the -level of a network, account, domain, zone, or entire CloudStack +level of a Network, Account, domain, zone, or entire CloudStack installation, and a domain administrator can do so within their own domain. To specify a custom domain name and put it into effect, follow these steps. #. Set the DNS suffix at the desired scope - - At the network level, the DNS suffix can be assigned through the - UI when creating a new network, as described in + - At the Network level, the DNS suffix can be assigned through the + UI when creating a new Network, as described in `“Adding an Additional Guest Network” `_ or with the updateNetwork command in the CloudStack API. - - At the account, domain, or zone level, the DNS suffix can be + - At the Account, domain, or zone level, the DNS suffix can be assigned with the appropriate CloudStack API commands: createAccount, editAccount, createDomain, editDomain, createZone, or editZone. @@ -463,25 +492,25 @@ these steps. updateConfiguration. After modifying this global configuration, restart the Management Server to put the new setting into effect. -#. To make the new DNS suffix take effect for an existing network, call +#. To make the new DNS suffix take effect for an existing Network, call the CloudStack API command updateNetwork. This step is not necessary - when the DNS suffix was specified while creating a new network. + when the DNS suffix was specified while creating a new Network. -The source of the network domain that is used depends on the following +The source of the Network domain that is used depends on the following rules. -- For all networks, if a network domain is specified as part of a - network's own configuration, that value is used. +- For all Networks, if a Network domain is specified as part of a + Network's own configuration, that value is used. -- For an account-specific network, the network domain specified for the - account is used. If none is specified, the system looks for a value +- For an Account-specific Network, the Network domain specified for the + Account is used. If none is specified, the system looks for a value in the domain, zone, and global configuration, in that order. -- For a domain-specific network, the network domain specified for the +- For a domain-specific Network, the Network domain specified for the domain is used. If none is specified, the system looks for a value in the zone and global configuration, in that order. -- For a zone-specific network, the network domain specified for the +- For a zone-specific Network, the Network domain specified for the zone is used. If none is specified, the system looks for a value in the global configuration. diff --git a/source/adminguide/networker_plugin.rst b/source/adminguide/networker_plugin.rst new file mode 100644 index 0000000000..c3b2ba7319 --- /dev/null +++ b/source/adminguide/networker_plugin.rst @@ -0,0 +1,214 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + +.. _DELL EMC Networker Backup and Recovery Plugin: + +DELL EMC Networker Backup and Recovery Plugin +============================================= + +About the DELL EMC Networker Backup and Recovery Plugin +--------------------------------------------------------- + +Administrators must make sure that the following requirements and prerequisites are met in order for the plugin +to work as expected. + +EMC Networker Server + +#. A fairly recent .rpm or .deb Linux distribution that is supported by DELL EMC Networker for the installed version. +#. Network connectivity between the Cloudstack Management Servers in your zone and DELL EMC Networker Server +#. Administration access to the DELL EMC Networker management consoles +#. Unrestricted access to API port (running default at: 9090/tcp) +#. A proper timezone set. Identical to the Hypervisors and Management server +#. Proper DNS resolution of the Clients + +KVM Hypervisor(s) + +#. A BASH shell at minimum version 4.4.19 +#. DELL EMC Networker client must be installed and in running state +#. Hypervisor must be associated with the DELL EMC Networker server as CLIENT +#. DELL EMC Networker can connect and verify certificates to the Hyper-v Client +#. A Hypervisor must be in UP and ENABLED state and resource state respectively in order to be able to get backups + for the Instances running. +#. A proper timezone set. Identical to the EMC Networker Server and Management server +#. Proper DNS resolution of the EMC Networker server + +Instances + +#. It is HIGHLY recommended to run qemu-guest-agent on the Machines you are planning to backup. +#. There has been no testing regarding KVM Primary Storage Snapshots and possible problems with EMC DELL Networker plugin +#. In case you are using KVM Primary Storage Snapshots, you have EMC Networker and you want to proceed with the + installation of this plugin proceed with extreme caution. + +General Concepts + +#. DELL EMC Networker POLICIES are presented as Backup Provider Offerings to Cloudstack. + At that level we can set the Protection Period (aka Expiration) to specify when backups + will expire. Restricted data zones can also be defined in POLICIES to create fine grain permissions. +#. As per EMC Networker Glossary and design those POLICIES are not actually used. They act as a placeholder + for the backup offerings and the retention policies. +#. DELL EMC Networker has no ability to initiate backup tasks for KVM Instances at the moment. + The implementation is based on manual save sets initiated by the Cloudstack Networker plugin. +#. The tag -CSBKP- in the comment of the POLICY indicates that this policy is available to Cloudstack + Other POLICIES used in your infrastructure will not be visible inside Cloudstack. It is recommended to create + brand new POLICIES dedicated to Cloudstack and settings the Protection Periods to match the backup plan retention + you wish to enable for each of the offerings. +#. For each KVM Cluster you have, a relevant dummy client must be created in the DELL EMC Networker. This is used as a + placeholder for being able to backup and restore your Instances from all hosts within the cluster. +#. Cross cluster restores are indirectly supported by restoring to the original cluster and then migrating the Virtual + Machine to the destination cluster. +#. Any manual KVM backup you initiate (from the hyper-v command line) will be registered in Cloudstack automatically. + You need to use the client scripts and pass the proper parameters to do so. +#. Any backup you expire/remove from the DELL EMC Networker side will be unregistered in Cloudstack automatically. + +Installing DELL EMC Networker Backup and Recovery Plugin +-------------------------------------------------------- + +The B&R Networker plugin has been designed and implemented taking in mind the particularities of the DELL EMC Networker +backup suite. It has been developed and tested against 19.4.0.6 and the minimum supported version is 9.2. + +The installation and configuration of the DELL EMC Networker is out of scope and it is assumed that it has been properly +performed in advance. Kindly make sure that DNS resolution, Timezones and system clocks are set/synced for KVM Hypervisors, +Cloudstack Management Servers and DELL EMC Networker Server. Do not forget to perform your staging actions (if any) +before the savesets expire. + +Depending on your topology, network bandwidth, backend storage speeds, number of customer Instances you should carefully plan, +design and implement the Storage volumes, media pools. If you have multiple Instances that your customers want to be processed +at the same time (e.g Friday night, end of business day in your timezone) this can easily overwhelm your resources since +the backups are initiated outside DELL EMC Networker. + +A brief Outline of the prerequisite steps is provided. + +#. Install / Configure DELL EMC Networker Server (if you don't already have one running) +#. Set timezone and enable ntp/chrony +#. Set proper DNS Servers or alternatively add all KVM Hypervisors to /etc/hosts +#. Install DELL EMC Networker client and extended client packages to all Hypervisors +#. Add all KVM Hypervisors as Clients in the EMC Networker (Traditional Backup) +#. Create a USER in EMC DELL Networker with privileges to create/delete backups + + +Creating POLICIES on the Networker Side +---------------------------------------- + +#. In the DELL EMC Networker Management Console create the desired POLICIES including the -CSBKP- tag in the + comment section. + + |BnR-Networker-Policy.jpg| + +#. After finishing with the POLICIES you will end up with something like this + + |BnR-Networker-Policies.jpg| + +#. Create a dedicated Media Pool (recommended but not required). + + |BnR-Networker-MediaPool-General.jpg| + +#. Set the configuration values according to your environment, equipment, needs and constraints. + + |BnR-Networker-MediaPool-Configuration.jpg| + +#. In Selection Criteria tab you can select the device(s) associated with that Media Pool. A use of a deduplication + capable storage device (such as DataDomain) is recommended. + +#. Check your cluster name (e.g from cloud monkey). + Please note that cluster name case sensitivity matters. + + |BnR-Networker-clustername.jpg| + +#. Create relevant DNS entries for all your KVM clusters in your nameservers or add it in the /etc/hosts of your + DELL EMC NETWORKER server. The IP addresses can be anything you want but must be present. + +#. Create a client representing the cluster on the EMC Networker Side + + |BnR-Networker-Cluster-Client-General.jpg| + |BnR-Networker-Cluster-Client-Globals1.jpg| + +#. Include all the users and hypervisor hosts on the Global (2 of 2) page + + |BnR-Networker-Cluster-Client-Globals2.jpg| + +#. Your final client configuration should have all KVM hosts and Clusters defined. + + |BnR-Networker-Cluster-Clients-overview.jpg| + + +Connecting CloudStack to DELL EMC Networker +---------------------------------------------- + +Before enabling DELL EMC Networker make sure that the user account Cloudstack uses to connect to your KVM Hypervisors +can execute via SUDO and with no required password the following binary from EMC Networker: + +#. /usr/sbin/recover + +Also make sure that the user account Cloudstack uses to connect to your KVM Hypervisors is member of the libvirt group. + +Updating the global settings listed below will allow you to start the importing of the backup offerings to Cloudstack. + +Plug-in specific settings: +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +(all settings can be global or per-zone) + +.. cssclass:: table-striped table-bordered table-hover + +======================================== ============================================================================= +Configuration Description +======================================== ============================================================================= +backup.plugin.networker.url DELL EMC Networker server URL. Default: https://localhost:9090/nwrestapi/v3 +backup.plugin.networker.username DELL EMC Networker server username. Default: administrator +backup.plugin.networker.password DELL EMC Networker server password. Default: password +backup.plugin.networker.pool DELL EMC Networker Media Pool. Default: Default +backup.plugin.networker.validate.ssl Whether to validate API server (SSL/TLS) connection. Default: false +backup.plugin.networker.request.timeout DELL EMC Networker API request timeout in seconds. Default: 300 +backup.plugin.networker.client.verbosity DELL EMC Networker Client verbosity: Default: false +======================================== ============================================================================= + + +Client Logs and Verbosity +------------------------- + +The default location for the logs is under /nsr/logs/cloudstack for each KVM Hypervisor. You should be familiar with that +location from your usual Networker debugging. By setting the verbosity to true you will have comprehensive step by step +list of all the actions and failures. For production use and when not debugging it is recommended to not use verbose logging. + +It is also recommended to add that location to your regular log rotating policy. + + +.. |BnR-Networker-Policy.jpg| image:: /_static/images/BnR-Networker-Policy.jpg + :alt: Create Networker Policy. + :width: 350 px +.. |BnR-Networker-Policies.jpg| image:: /_static/images/BnR-Networker-Policies.jpg + :alt: Networker Policies. + :width: 400 px +.. |BnR-Networker-MediaPool-General.jpg| image:: /_static/images/BnR-Networker-MediaPool-General.jpg + :alt: Media Pool General Properties. + :width: 350 px +.. |BnR-Networker-MediaPool-Configuration.jpg| image:: /_static/images/BnR-Networker-MediaPool-Configuration.jpg + :alt: Media Pool Configuration Properties. + :width: 350 px +.. |BnR-Networker-clustername.jpg| image:: /_static/images/BnR-Networker-clustername.jpg + :alt: Cluster Client CMK. + :width: 400 px +.. |BnR-Networker-Cluster-Client-General.jpg| image:: /_static/images/BnR-Networker-Cluster-Client-General.jpg + :alt: Cluster Client Creation. + :width: 350 px +.. |BnR-Networker-Cluster-Client-Globals1.jpg| image:: /_static/images/BnR-Networker-Cluster-Client-Globals1.jpg + :alt: Cluster client Globals (1 of 2). + :width: 350 px +.. |BnR-Networker-Cluster-Client-Globals2.jpg| image:: /_static/images/BnR-Networker-Cluster-Client-Globals2.jpg + :alt: Cluster client Globals (2 of 2). + :width: 350 px +.. |BnR-Networker-Cluster-Clients-overview.jpg| image:: /_static/images/BnR-Networker-Cluster-Clients-overview.jpg + :alt: Cluster Clients Overview. + :width: 300 px diff --git a/source/adminguide/networking.rst b/source/adminguide/networking.rst index ba3de9a7d5..d68e60eeec 100644 --- a/source/adminguide/networking.rst +++ b/source/adminguide/networking.rst @@ -48,7 +48,7 @@ or isolated. Isolated Networks ~~~~~~~~~~~~~~~~~ -An isolated network can be accessed only by virtual machines of a single +An isolated network can be accessed only by Instances of a single account. Isolated networks have the following properties. - Resources such as VLAN are allocated and garbage collected @@ -66,12 +66,14 @@ For more information, see `“Configure Guest Traffic in an Advanced Zone” Shared Networks ~~~~~~~~~~~~~~~ -A shared network can be accessed by virtual machines that belong to many +A shared network can be accessed by Instances that belong to many different accounts. Network Isolation on shared networks is accomplished by using techniques such as security groups, which is supported only in Basic zones or Advanced Zones with Security Groups. -- Shared Networks are created by the administrator +- Shared Networks are created by the end users or the administrator. Network offerings + which allow the network creator to specify a VLAN can only be created + by the root admins. - Shared Networks can be designated to a certain domain @@ -84,12 +86,14 @@ Basic zones or Advanced Zones with Security Groups. - Source NAT per zone is not supported in Shared Network when the service provider is virtual router. However, Source NAT per account - is supported. For information, see `“Configuring a Shared Guest - Network” `_. + is supported. + +For more information, see `“Configuring a Shared Guest Network” +`_. -L2 Networks -~~~~~~~~~~~ +L2 (Layer 2) Networks +~~~~~~~~~~~~~~~~~~~~~ L2 networks provide network isolation without any other services. This means that there will be no virtual router. It is assumed that the end @@ -100,9 +104,9 @@ IP addresses. which allow the network creator to specify a VLAN can only be created by the root admins. -- CloudStack does not assign IP addresses to VMs. +- CloudStack does not assign IP addresses to instances. -- Userdata and metadata can be passed to the VM using a config drive +- Userdata and metadata can be passed to the instance using a config drive (which must be enabled in the network service offering) Example GUI dialog box (for a regular user account) is shown below: @@ -115,8 +119,8 @@ Runtime Allocation of Virtual Network Resources When you define a new virtual network, all your settings for that network are stored in CloudStack. The actual network resources are -activated only when the first virtual machine starts in the network. -When all virtual machines have left the virtual network, the network +activated only when the first Instance starts in the network. +When all Instances have left the virtual network, the network resources are garbage collected so they can be allocated again. This helps to conserve network resources. @@ -152,28 +156,28 @@ offering. .. cssclass:: table-striped table-bordered table-hover -+----------------------+-----------+------------+----------+-------------+-------------+ -| | Virtual | Citrix | Juniper | F5 BigIP | Host based | -| | Router | NetScaler | SRX | | (KVM/Xen) | -+======================+===========+============+==========+=============+=============+ -| Remote Access VPN | Yes | No | No | No | No | -+----------------------+-----------+------------+----------+-------------+-------------+ -| DNS/DHCP/User Data | Yes | No | No | No | No | -+----------------------+-----------+------------+----------+-------------+-------------+ -| Firewall | Yes | No | Yes | No | No | -+----------------------+-----------+------------+----------+-------------+-------------+ -| Load Balancing | Yes | Yes | No | Yes | No | -+----------------------+-----------+------------+----------+-------------+-------------+ -| Elastic IP | No | Yes | No | No | No | -+----------------------+-----------+------------+----------+-------------+-------------+ -| Elastic LB | No | Yes | No | No | No | -+----------------------+-----------+------------+----------+-------------+-------------+ -| Source NAT | Yes | No | Yes | No | No | -+----------------------+-----------+------------+----------+-------------+-------------+ -| Static NAT | Yes | Yes | Yes | No | No | -+----------------------+-----------+------------+----------+-------------+-------------+ -| Port Forwarding | Yes | No | Yes | No | No | -+----------------------+-----------+------------+----------+-------------+-------------+ ++----------------------+-----------+------------+-------------+ +| | Virtual | Citrix | Host based | +| | Router | NetScaler | (KVM/Xen) | ++======================+===========+============+=============+ +| Remote Access VPN | Yes | No | No | ++----------------------+-----------+------------+-------------+ +| DNS/DHCP/User Data | Yes | No | No | ++----------------------+-----------+------------+-------------+ +| Firewall | Yes | No | No | ++----------------------+-----------+------------+-------------+ +| Load Balancing | Yes | Yes | No | ++----------------------+-----------+------------+-------------+ +| Elastic IP | No | Yes | No | ++----------------------+-----------+------------+-------------+ +| Elastic LB | No | Yes | No | ++----------------------+-----------+------------+-------------+ +| Source NAT | Yes | No | No | ++----------------------+-----------+------------+-------------+ +| Static NAT | Yes | Yes | No | ++----------------------+-----------+------------+-------------+ +| Port Forwarding | Yes | No | No | ++----------------------+-----------+------------+-------------+ Network Offerings @@ -202,12 +206,12 @@ A network offering is a named set of network services, such as: - VPN - (Optional) Name one of several available providers to use for a given - service, such as Juniper for the firewall + service - (Optional) Network tag to specify which physical network to use -When creating a new VM, the user chooses one of the available network -offerings, and that determines which network services the VM can use. +When creating a new instance, the user chooses one of the available network +offerings, and that determines which network services the instance can use. The CloudStack administrator can create any number of custom network offerings, in addition to the default network offerings provided by @@ -267,14 +271,14 @@ To create a network offering: - **Persistent**. Indicate whether the guest network is persistent or not. The network that you can provision without having to - deploy a VM on it is termed persistent network. For more + deploy an instance on it is termed persistent network. For more information, see `“Persistent Networks” `_. - - **Specify VLAN**. (Isolated guest networks only) Indicate whether + - **Specify VLAN**. Indicate whether a VLAN could be specified when this offering is used. If you select this option and later use this network offering while - creating a VPC tier or an isolated network, you will be able to + creating a VPC Network Tier or an isolated network, you will be able to specify a VLAN ID for the network you create. - **VPC**. This option indicate whether the guest network is Virtual @@ -284,6 +288,40 @@ To create a network offering: For more information on VPCs, see `“About Virtual Private Clouds” `_. + - **Promiscuous Mode**. Applicable for guest networks on VMware hypervisor only. It accepts the following values for desired behaviour of the network elements: + + *Reject* - The switch drops any outbound frame from an Instance adapter with a source MAC address that is different from the one in the .vmx configuration file. + + *Accept* - The switch does not perform filtering, and permits all outbound frames. + + *None* - Default to value from global setting - ``network.promiscuous.mode``. + + - **Forged Transmits**. Applicable for guest networks on VMware hypervisor only. It accepts the following values for desired behaviour of the network elements: + + *Reject* - The switch drops any outbound frame from an Instance adapter with a source MAC address that is different from the one in the .vmx configuration file. + + *Accept* - The switch does not perform filtering, and permits all outbound frames. + + *None* - Default to value from global setting - ``network.forged.transmits``. + + - **MAC Address Changes**. Applicable for guest networks on VMware hypervisor only. It accepts the following values for desired behaviour of the network elements: + + *Reject* - If the guest OS changes the effective MAC address of the Instance to a value that is different from the MAC address of the instance network adapter (set in the .vmx configuration file), the switch drops all inbound frames to the adapter. + + If the guest OS changes the effective MAC address of the Instance back to the MAC address of the instance network adapter, the Instance receives frames again. + + *Accept* - If the guest OS changes the effective MAC address of the Instance to a value that is different from the MAC address of the instance network adapter, the switch allows frames to the new address to pass. + + *None* - Default to value from global setting - ``network.mac.address.changes``. + + - **MAC Learning**. Applicable for guest networks on VMware hypervisor only with VMware Distributed Virtual Switches version 6.6.0 & above and vSphere version 6.7 & above. It accepts the following values for desired behaviour of the network elements: + + *Reject* - Network connectivity for multiple MAC address behind a single vNIC will not work. + + *Accept* - Enables network connectivity for multiple MAC addresses behind a single vNIC. + + *None* - Default to value from global setting - ``network.mac.learning``. + - **Supported Services**. Select one or more of the possible network services. For some services, you must also choose the service provider; for example, if you select Load Balancer, you can choose @@ -360,6 +398,8 @@ To create a network offering: its maximum capacity, the device will not be allocated to a new account. +.. not sure how this works after deprecation of Juniper devices + - **Mode**: You can select either Inline mode or Side by Side mode: - **Inline mode**: Supported only for Juniper SRX firewall and BigF5 @@ -376,7 +416,7 @@ To create a network offering: and therefore, is exposed to the public network. - **Associate Public IP**: Select this option if you want to assign - a public IP address to the VMs deployed in the guest network. This + a public IP address to the instances deployed in the guest network. This option is available only if - Guest network is shared. @@ -392,12 +432,18 @@ To create a network offering: if you want to use two virtual routers in the network for uninterrupted connection: one operating as the primary virtual router and the other as the backup. The primary virtual router - receives requests from and sends responses to the user’s VM. The + receives requests from and sends responses to the user’s instance. The backup virtual router is activated only when the primary is down. After the failover, the backup becomes the primary virtual router. CloudStack deploys the routers on different hosts to ensure reliability if one host is down. + - **Supports instance auto scaling**: Indicate whether instance autoscaling feature + is supported. It is available only when Virtual Router or Netscaler + is selected as the Load Balancer provider. For more information on + instance autoscaling using Virtual Router, see `“Configuring AutoScale + with using CloudStack Virtual Router” `_. + - **Conserve mode**: Indicate whether to use conserve mode. In this mode, network resources are allocated only when the first virtual machine starts in the network. When conservative mode is off, the diff --git a/source/adminguide/networking/advanced_zone_config.rst b/source/adminguide/networking/advanced_zone_config.rst index 6ada489501..3d8299c819 100644 --- a/source/adminguide/networking/advanced_zone_config.rst +++ b/source/adminguide/networking/advanced_zone_config.rst @@ -19,7 +19,7 @@ Advanced Zone Physical Network Configuration -------------------------------------------- Within a zone that uses advanced networking, you need to tell the -Management Server how the physical network is set up to carry different +Management Server how the physical Network is set up to carry different kinds of traffic in isolation. @@ -27,38 +27,59 @@ Configure Guest Traffic in an Advanced Zone ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ These steps assume you have already logged in to the CloudStack UI. To -configure the base guest network: +configure the base guest Network: -#. In the left navigation, choose Infrastructure. On Zones, click View - More, then click the zone to which you want to add a network. +#. In the left navigation, choose Network. -#. Click the Network tab. +#. Click Add Network. -#. Click Add guest network. - - The Add guest network window is displayed: + The Add guest Network window is displayed: |addguestnetwork.png| -#. Provide the following information: - - - **Name**: The name of the network. This will be user-visible +#. Provide the following information for creating an isolated Network: - - **Display Text**: The description of the network. This will be - user-visible + - **Name**: The name of the Network. This will be User-visible + + - **Description**: The description of the Network. This will be + User-visible - - **Zone**: The zone in which you are configuring the guest network. + - **Zone**: The zone in which you are configuring the guest Network. - **Network offering**: If the administrator has configured multiple - network offerings, select the one you want to use for this network + Network offerings, select the one you want to use for this Network + + - **Public MTU**: The MTU that will be configured on the public interfaces + of the Network's VR. + **NOTE:** This will not be considered for VPC Network Tiers, as the + public MTU defined at the VPC Network creation level will be considered + + - **Private MTU**: The MTU that will configured on the private interface(s) + of the Network's VR + + - **External Id**: ID of the Network in an external system. + + - **Gateway**: The gateway that the guests Instances will use. + + - **Netmask**: The netmask in use on the subnet the Guest Instances + will use. - - **Guest Gateway**: The gateway that the guests should use + - **DNS**: A set of custom DNS that will be used by the guest Network. If not provided then DNS specified for the zone will be used. Available only when the selected Network offering supports DNS service. + + - **IPv6 DNS**: A set of custom IPv6 DNS that will be used by the guest Network. If not provided then IPv6 DNS specified for the zone will be used. Available only when the selected Network offering is IPv6 enabled and supports DNS service. + + - **IPv4 address for the VR in this Network**: The source NAT address or primary public Network address to use by the guest Network. If not provided then a random address from the available pool of addresses wil be used. + + - **Network Domain**: A custom DNS suffix at the level of a Network. If you + want to assign a special domain name to the Guest Instance Network, specify a + DNS suffix. - - **Guest Netmask**: The netmask in use on the subnet the guests - will use #. Click OK. +.. note:: + * In security groups-enabled Advanced zones and Basic zones, creation of VPC and isolated Networks are not supported. + * MTU options will be shown in the UI and considered only when zone configuration - `allow.end.users.to.specify.vr.mtu` is set to true. Maximum allowed values for public and private MTU can be controlled by zone-level configurations, `vr.public.interface.max.mtu` and `vr.private.interface.max.mtu` respectively. Configure Public Traffic in an Advanced Zone ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -70,83 +91,113 @@ one range of IP addresses for Internet traffic. Configuring a Shared Guest Network ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#. Log in to the CloudStack UI as administrator. +#. Log in to the CloudStack UI as administrator or an end User. -#. In the left navigation, choose Infrastructure. +#. In the left navigation, choose Network. -#. On Zones, click View More. +#. Click the Guest Networks tab -#. Click the zone to which you want to add a guest network. +#. Click the Add Network icon. -#. Click the Physical Network tab. +#. Click the Shared tab. -#. Click the physical network you want to work with. + The Add guest Network window is displayed. -#. On the Guest node of the diagram, click Configure. + |addsharednetwork.png| -#. Click the Network tab. +#. Specify the following: -#. Click Add guest network. + - **Name**: The name of the Network. This will be visible to the User. - The Add guest network window is displayed. + - **Description**: The short description of the Network that can be + displayed to Users. -#. Specify the following: + - **Zone**: The zone for the Network. + + - **Physical Network**: The physical Network ID the Network belongs to. - - **Name**: The name of the network. This will be visible to the user. + - **VLAN ID**: (Administrators only) The unique ID of the VLAN. - - **Description**: The short description of the network that can be - displayed to users. + - **Secondary VLAN Type**: (Administrators only) The isolation private + VLAN type for this Network - - **VLAN ID**: The unique ID of the VLAN. + - **Secondary VLAN ID**: (Administrators only) The unique ID of the + Secondary Isolated VLAN. - - **Isolated VLAN ID**: The unique ID of the Secondary Isolated - VLAN. + - **Bypass VLAN id/range overlap**: (Administrators only) When true + bypasses VLAN id/range overlap check during Network creation for + shared and L2 Networks - **Scope**: The available scopes are Domain, Account, Project, and All. - **Domain**: Selecting Domain limits the scope of this guest - network to the domain you specify. The network will not be + Network to the domain you specify. The Network will not be available for other domains. If you select Subdomain Access, - the guest network is available to all the sub domains within + the guest Network is available to all the sub domains within the selected domain. - - **Account**: The account for which the guest network is being - created for. You must specify the domain the account belongs + - **Account**: The Account for which the guest Network is being + created for. You must specify the domain the Account belongs to. - - **Project**: The project for which the guest network is being + - **Project**: The project for which the guest Network is being created for. You must specify the domain the project belongs to. - - **All**: The guest network is available for all the domains, - account, projects within the selected zone. + - **All**: (Administrators only) The guest Network is available + for all the domains, Account, projects within the selected zone. - **Network Offering**: If the administrator has configured multiple - network offerings, select the one you want to use for this - network. + Network offerings, select the one you want to use for this + Network. + + - **Public MTU**: The MTU that will be configured on the public interfaces + of the Network's VR. This MTU will considered for redundant VRs + + - **Private MTU**: The MTU that will configured on the private interface(s) + of the Network's VR + + - **Associated Network**: The L2 or Isolated Network this Network is + associated to. This Network will use same VLAN as associated Network. + This will be visible if Network offering has specifyvlan is false. - **Gateway**: The gateway that the guests should use. - **Netmask**: The netmask in use on the subnet the guests will use. - **IP Range**: A range of IP addresses that are accessible from the - Internet and are assigned to the guest VMs. + Internet and are assigned to the Guest Instances. + + - **DNS**: A set of custom DNS that will be used by the Network. If not provided then DNS specified for the zone will be used. Available only when the selected Network offering supports DNS service. If one NIC is used, these IPs should be in the same CIDR in the case of IPv6. - - **IPv6 CIDR**: The network prefix that defines the guest network + - **IPv6 CIDR**: The Network prefix that defines the guest Network subnet. This is the CIDR that describes the IPv6 addresses in use - in the guest networks in this zone. To allot IP addresses from + in the guest Networks in this zone. To allot IP addresses from within a particular address block, enter a CIDR. - - **Network Domain**: A custom DNS suffix at the level of a network. - If you want to assign a special domain name to the guest VM - network, specify a DNS suffix. + - **IPv6 DNS**: A set of custom IPv6 DNS that will be used by the Network. If not provided then IPv6 DNS specified for the zone will be used. Available only when the selected Network offering supports DNS service. + + - **Network Domain**: A custom DNS suffix at the level of a Network. + If you want to assign a special domain name to the Guest Instance + Network, specify a DNS suffix. #. Click OK to confirm. + .. note:: + * End users (not administrator) can only use the Network + offerings with specifyvlan is false. Please create a Network offering + with specifyvlan is false to enable this for end users. See + `“Creating a New Network Offering” + `_. + * MTU options will be shown in the UI and considered only when zone configuration - `allow.end.users.to.specify.vr.mtu` is set to true. Maximum allowed values for public and private MTU can be controlled by zone-level configurations, `vr.public.interface.max.mtu` and `vr.private.interface.max.mtu` respectively. + .. |addguestnetwork.png| image:: /_static/images/add-guest-network.png - :alt: Add Guest network setup in a single zone. \ No newline at end of file + :alt: Add Guest network setup in a single zone. + +.. |addsharednetwork.png| image:: /_static/images/add-shared-network.png + :alt: Add Shared Guest Network. diff --git a/source/adminguide/networking/basic_zone_config.rst b/source/adminguide/networking/basic_zone_config.rst index a1ba26c5df..692d0111e8 100644 --- a/source/adminguide/networking/basic_zone_config.rst +++ b/source/adminguide/networking/basic_zone_config.rst @@ -20,5 +20,5 @@ Basic Zone Physical Network Configuration In a basic network, configuring the physical network is fairly straightforward. You only need to configure one guest network to carry -traffic that is generated by guest VMs. When you first add a zone to +traffic that is generated by Guest Instances. When you first add a zone to CloudStack, you set up the guest network through the Add Zone screens. \ No newline at end of file diff --git a/source/adminguide/networking/elastic_ips.rst b/source/adminguide/networking/elastic_ips.rst index fe83a3bf7c..2eb02a0a73 100644 --- a/source/adminguide/networking/elastic_ips.rst +++ b/source/adminguide/networking/elastic_ips.rst @@ -20,11 +20,11 @@ About Elastic IPs Elastic IP (EIP) addresses are the IP addresses that are associated with an account, and act as static IP addresses. The account owner has the complete control over the Elastic IP addresses that belong to the -account. As an account owner, you can allocate an Elastic IP to a VM of +account. As an account owner, you can allocate an Elastic IP to an instance of your choice from the EIP pool of your account. Later if required you can -reassign the IP address to a different VM. This feature is extremely -helpful during VM failure. Instead of replacing the VM which is down, -the IP address can be reassigned to a new VM in your account. +reassign the IP address to a different instance. This feature is extremely +helpful during instance failure. Instead of replacing the instance which is down, +the IP address can be reassigned to a new instance in your account. Similar to the public IP address, Elastic IP addresses are mapped to their associated private IP addresses by using StaticNAT. The EIP @@ -47,11 +47,11 @@ through the firewall. The EIP work flow is as follows: -- When a user VM is deployed, a public IP is automatically acquired +- When a user instance is deployed, a public IP is automatically acquired from the pool of public IPs configured in the zone. This IP is owned - by the VM's account. + by the instance's account. -- Each VM will have its own private IP. When the user VM starts, Static +- Each instance will have its own private IP. When the user instance starts, Static NAT is provisioned on the NetScaler device by using the Inbound Network Address Translation (INAT) and Reverse NAT (RNAT) rules between the public IP and the private IP. @@ -59,21 +59,21 @@ The EIP work flow is as follows: .. note:: Inbound NAT (INAT) is a type of NAT supported by NetScaler, in which the destination IP address is replaced in the packets from the public - network, such as the Internet, with the private IP address of a VM in + network, such as the Internet, with the private IP address of an instance in the private network. Reverse NAT (RNAT) is a type of NAT supported by NetScaler, in which the source IP address is replaced in the packets - generated by a VM in the private network with the public IP address. + generated by an instance in the private network with the public IP address. - This default public IP will be released in two cases: - - When the VM is stopped. When the VM starts, it again receives a + - When the instance is stopped. When the instance starts, it again receives a new public IP, not necessarily the same one allocated initially, from the pool of Public IPs. - The user acquires a public IP (Elastic IP). This public IP is associated with the account, but will not be mapped to any private IP. However, the user can enable Static NAT to associate this IP - to the private IP of a VM in the account. The Static NAT rule for + to the private IP of an instance in the account. The Static NAT rule for the public IP can be disabled at any time. When Static NAT is disabled, a new public IP is allocated from the pool, which is not necessarily be the same one allocated initially. @@ -83,21 +83,21 @@ flexibility to choose not to allocate a public IP by default. You can use the Associate Public IP option to turn on or off the automatic public IP assignment in the EIP-enabled Basic zones. If you turn off the automatic public IP assignment while creating a network offering, only a -private IP is assigned to a VM when the VM is deployed with that network -offering. Later, the user can acquire an IP for the VM and enable static +private IP is assigned to an instance when the instance is deployed with that network +offering. Later, the user can acquire an IP for the instance and enable static NAT. For more information on the Associate Public IP option, see `"Creating a New Network Offering" `_. .. note:: - The Associate Public IP feature is designed only for use with user VMs. + The Associate Public IP feature is designed only for use with user instances. The System VMs continue to get both public IP and private by default, irrespective of the network offering configuration. New deployments which use the default shared network offering with EIP and ELB services to create a shared network in the Basic zone will -continue allocating public IPs to each user VM. +continue allocating public IPs to each user instance. .. |eip-ns-basiczone.png| image:: /_static/images/eip-ns-basiczone.png diff --git a/source/adminguide/networking/external_firewalls_and_load_balancers.rst b/source/adminguide/networking/external_firewalls_and_load_balancers.rst index 91f5898d74..eae69281b8 100644 --- a/source/adminguide/networking/external_firewalls_and_load_balancers.rst +++ b/source/adminguide/networking/external_firewalls_and_load_balancers.rst @@ -17,16 +17,15 @@ External Firewalls and Load Balancers ------------------------------------- -CloudStack is capable of replacing its Virtual Router with an external -Juniper SRX device and an optional external NetScaler or F5 load -balancer for gateway and load balancing services. In this case, the VMs -use the SRX as their gateway. +CloudStack is capable of moving some of its Virtual Router networking functionality +to some of the external network service providers such as e.g. NetScaler. + About Using a NetScaler Load Balancer ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Citrix NetScaler is supported as an external network element for load +Citrix NetScaler is supported as an external Network element for load balancing in zones that use isolated networking in advanced zones. Set up an external load balancer when you want to provide load balancing through means other than CloudStack's provided virtual router. @@ -36,21 +35,21 @@ through means other than CloudStack's provided virtual router. Elastic IP or Elastic LB services are enabled. When NetScaler load balancer is used to provide EIP or ELB services in a -Basic zone, ensure that all guest VM traffic must enter and exit through +Basic zone, ensure that all Guest Instance traffic must enter and exit through the NetScaler device. When inbound traffic goes through the NetScaler device, traffic is routed by using the NAT protocol depending on the EIP/ELB configured on the public IP to the private IP. The traffic that -is originated from the guest VMs usually goes through the layer 3 +is originated from the Guest Instances usually goes through the layer 3 router. To ensure that outbound traffic goes through NetScaler device providing EIP/ELB, layer 3 router must have a policy-based routing. A policy-based route must be set up so that all traffic originated from -the guest VM's are directed to NetScaler device. This is required to -ensure that the outbound traffic from the guest VM's is routed to a +the Guest Instance's are directed to NetScaler device. This is required to +ensure that the outbound traffic from the Guest Instance's is routed to a public IP by using NAT.For more information on Elastic IP, see `"About Elastic IP" <#about-elastic-ip>`_. The NetScaler can be set up in direct (outside the firewall) mode. It -must be added before any load balancing rules are deployed on guest VMs +must be added before any load balancing rules are deployed on Guest Instances in the zone. The functional behavior of the NetScaler with CloudStack is the same as @@ -76,7 +75,7 @@ summarizes how these variants are treated in CloudStack. **VPX** -- Virtual appliance. Can run as VM on XenServer, ESXi, and Hyper-V +- Virtual appliance. Can run as instance on XenServer, ESXi, and Hyper-V hypervisors. Same functionality as MPX - Supported on ESXi and XenServer. Same functional support as for MPX. @@ -98,12 +97,12 @@ Configuring SNMP Community String on a RHEL Server ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The SNMP Community string is similar to a user id or password that -provides access to a network device, such as router. This string is sent +provides access to a Network device, such as router. This string is sent along with all SNMP requests. If the community string is correct, the device responds with the requested information. If the community string is incorrect, the device discards the request and does not respond. -The NetScaler device uses SNMP to communicate with the VMs. You must +The NetScaler device uses SNMP to communicate with the instances. You must install SNMP and configure SNMP Community string for a secure communication between the NetScaler device and the RHEL machine. @@ -180,8 +179,8 @@ communication between the NetScaler device and the RHEL machine. Initial Setup of External Firewalls and Load Balancers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -When the first VM is created for a new account, CloudStack programs the -external firewall and load balancer to work with the VM. The following +When the first instance is created for a new account, CloudStack programs the +external firewall and load balancer to work with the instance. The following objects are created on the firewall: - A new logical interface to connect to the account's private VLAN. The @@ -209,14 +208,14 @@ Ongoing Configuration of External Firewalls and Load Balancers Additional user actions (e.g. setting a port forward) will cause further programming of the firewall and load balancer. A user may request additional public IP addresses and forward traffic received at these IPs -to specific VMs. This is accomplished by enabling static NAT for a -public IP address, assigning the IP to a VM, and specifying a set of +to specific instances. This is accomplished by enabling static NAT for a +public IP address, assigning the IP to an instance, and specifying a set of protocols and port ranges to open. When a static NAT rule is created, CloudStack programs the zone's external firewall with the following objects: - A static NAT rule that maps the public IP address to the private IP - address of a VM. + address of an instance. - A security policy that allows traffic within the set of protocols and port ranges that are specified. @@ -234,14 +233,14 @@ Load Balancer Rules ~~~~~~~~~~~~~~~~~~~ A CloudStack user or administrator may create load balancing rules that -balance traffic received at a public IP to one or more VMs. A user +balance traffic received at a public IP to one or more instances. A user creates a rule, specifies an algorithm, and assigns the rule to a set of -VMs. +instances. .. note:: - If you create load balancing rules while using a network service + If you create load balancing rules while using a Network service offering that includes an external load balancer device such as - NetScaler, and later change the network service offering to one that + NetScaler, and later change the Network service offering to one that uses the CloudStack virtual router, you must create a firewall rule on the virtual router for each of your existing load balancing rules so that they continue to function. @@ -256,7 +255,7 @@ Adding a Load Balancer Rule #. In the left navigation, choose Network. -#. Click the name of the network where you want to load balance the +#. Click the name of the Network where you want to load balance the traffic. #. Click Public IP Addresses. @@ -270,7 +269,7 @@ Adding a Load Balancer Rule IP when you create the load balancing rule, which is listed in the IP Addresses page when the rule is created. - To do that, select the name of the network, then click Add Load + To do that, select the name of the Network, then click Add Load Balancer tab. Continue with #7. #. Fill in the following: @@ -280,7 +279,7 @@ Adding a Load Balancer Rule - **Public Port**: The port receiving incoming traffic to be balanced. - - **Private Port**: The port that the VMs will use to receive the + - **Private Port**: The port that the instances will use to receive the traffic. - **Algorithm**: Choose the load balancing algorithm you want @@ -318,7 +317,7 @@ Adding a Load Balancer Rule health check failures that are required before declaring an instance unhealthy. Default: 10. -#. Click Add VMs, then select two or more VMs that will divide the load +#. Click Add instances, then select two or more instances that will divide the load of incoming traffic, and click Apply. The new load balancer rule appears in the list. You can repeat these @@ -348,9 +347,87 @@ automatically generated. A variety of options are provided to control the exact behavior of cookies, such as how they are generated and whether they are cached. -For the most up to date list of available stickiness methods, see the -CloudStack UI or call listNetworks and check the -SupportedStickinessMethods capability. +There are three stickiness methods that are supported explained with the possible options to configure as below, + +1. Lbcookie: In this method, cookie is created by the load balancer and sent to the client. +The client sends this cookie back with every subsequent request, and the load balancer uses the +cookie information to determine which backend server to route the request to. + +Following are the options available to configure, + +- Cookie name: This is the name of the cookie that the load balancer will create and send to the client. + +- Mode: This option determines how the load balancer should handle the cookie (default value is insert). + The available options are: + + a. Insert: The load balancer will insert the cookie into the client's request. + b. Rewrite: The load balancer will rewrite the cookie in the client's request if it already exists. + c. Prefix: The load balancer will prefix the cookie name with a specified prefix. + d. Indirect: The load balancer will insert an indirect cookie, which contains a reference to the actual cookie value. + +- No cache: This option specifies whether the cookie should be cached by the client's browser. + If this option is enabled, the client's browser will not cache the cookie. + +- Indirect: If this is provided, then the cookie value will contain a reference to the actual value, which will be stored on the load balancer. + +- Post only: This option specifies whether the cookie should be sent only with POST requests. + +- Domain: This option specifies the domain for which the cookie is valid. You can specify a domain name or IP address. + +2. Appcookie: In this method, the application running on the backend servers creates a cookie and +sends it to the client. The client sends this cookie back with every subsequent request, and the +load balancer uses the cookie information to determine which backend server to route the request to. + +Following are the options available to configure, + +- Cookie name and mode are same as above + +- Length: This option specifies the length of the cookie value (default value is 52). + +- Hold time: This option specifies the length of time that the cookie should be held (default value is 3hours). + The cookie will be held for this amount of time, after which it will expire. + +- Request learn: This option specifies whether the load balancer should learn the cookie value from the first request that it receives. + +- Prefix: This option specifies a prefix to be added to the cookie value. + +3. Source-based: In this method, the load balancer uses the source IP address of the client +to determine which backend server to route the request to. The load balancer maintains a mapping of +client IP addresses to backend servers and uses this mapping to ensure that subsequent requests from +the same client are always routed to the same backend server. + +- Table size: This option specifies the maximum number of entries (default 200k) that can be stored in the source-based stickiness table. + The table stores mappings between client IP addresses and backend servers. + +- Expires: This option specifies the length of time (default 30m) that a mapping between a client IP address and a backend server + should be kept in the stickiness table. After this time has elapsed, the mapping will expire and be removed from the table. + +4. None: If None is selected after a sticky policy is already configured then it will be removed. + +Load Balancer Configurations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +(CloudStack Virtual Router and Vpc Virtual Router only) + +CloudStack Virtual Routers use haproxy to provide load balancer.The following is the configurations of haproxy. + +.. cssclass:: table-striped table-bordered table-hover + +================= ================ ==================================================================================================== +Configuration Scope Description +================= ================ ==================================================================================================== +maxconn global the maximum per-process number of concurrent connections. The default value is 4096. +maxpipes global the maximum per-process number of pipes. The default value is maxconn/4. +timeout connect defaults the maximum time to wait for a connection attempt to a server to succeed. The default value is 5 seconds. +timeout client defaults the maximum inactivity time on the server side. The default value is 50 seconds. +timeout server defaults the maximum inactivity time on the client side. The default value is 50 seconds. +option defaults the following options are enabled: redispatch, forwardfor, httpclose +stats enable stats Enable statistics reporting with default settings. It listens on :8081. The port can be changed by global setting "network.loadbalancer.haproxy.stats.port". +stats uri stats Enable statistics and define the URI prefix to access them. The default value is "/admin?stats". The URI can be changed by global setting "network.loadbalancer.haproxy.stats.uri". +stats realm stats Enable statistics and set authentication realm. The default value is "Haproxy\\ Statistics". +stats auth stats Enable statistics with authentication and grant access to an account. The default value is "admin1:AdMiN123". The username/password can be changed by global setting "network.loadbalancer.haproxy.stats.auth". +================= ================ ==================================================================================================== + .. _health-check: @@ -378,7 +455,7 @@ the resource later becomes available again, the periodic health check will discover it, and the resource will once again be added to the pool of resources that can receive requests from the load balancer. At any given time, the most recent result of the health check is displayed in -the UI. For any VM that is attached to a load balancer rule with a +the UI. For any instance that is attached to a load balancer rule with a health check configured, the state will be shown as UP or DOWN in the UI depending on the result of the most recent health check. @@ -399,20 +476,20 @@ Configuring AutoScale ~~~~~~~~~~~~~~~~~~~~~ AutoScaling allows you to scale your back-end services or application -VMs up or down seamlessly and automatically according to the conditions +instances up or down seamlessly and automatically according to the conditions you define. With AutoScaling enabled, you can ensure that the number of -VMs you are using seamlessly scale up when demand increases, and +instances you are using seamlessly scale up when demand increases, and automatically decreases when demand subsides. Thus it helps you save -compute costs by terminating underused VMs automatically and launching -new VMs when you need them, without the need for manual intervention. +compute costs by terminating underused instances automatically and launching +new instances when you need them, without the need for manual intervention. -NetScaler AutoScaling is designed to seamlessly launch or terminate VMs +NetScaler AutoScaling is designed to seamlessly launch or terminate instances based on user-defined conditions. Conditions for triggering a scaleup or scaledown action can vary from a simple use case like monitoring the CPU usage of a server to a complex use case of monitoring a combination of server's responsiveness and its CPU usage. For example, you can -configure AutoScaling to launch an additional VM whenever CPU usage -exceeds 80 percent for 15 minutes, or to remove a VM whenever CPU usage +configure AutoScaling to launch an additional instance whenever CPU usage +exceeds 80 percent for 15 minutes, or to remove an instance whenever CPU usage is less than 20 percent for 30 minutes. CloudStack uses the NetScaler load balancer to monitor all aspects of a @@ -429,12 +506,12 @@ Prerequisites Before you configure an AutoScale rule, consider the following: - Ensure that the necessary template is prepared before configuring - AutoScale. When a VM is deployed by using a template and when it + AutoScale. When an instance is deployed by using a template and when it comes up, the application should be up and running. .. note:: If the application is not running, the NetScaler device considers the - VM as ineffective and continues provisioning the VMs unconditionally + instance as ineffective and continues provisioning the instances unconditionally until the resource limit is exhausted. - Deploy the templates you prepared. Ensure that the applications come @@ -445,14 +522,14 @@ Before you configure an AutoScale rule, consider the following: - The AutoScale feature supports the SNMP counters that can be used to define conditions for taking scale up or scale down actions. To monitor the SNMP-based counter, ensure that the SNMP agent is - installed in the template used for creating the AutoScale VMs, and + installed in the template used for creating the AutoScale instances, and the SNMP operations work with the configured SNMP community and port by using standard SNMP managers. For example, see `"Configuring SNMP Community String on a RHELServer" <#configuring-snmp-community-string-on-a-rhel-server>`_ to configure SNMP on a RHEL machine. -- Ensure that the endpointe.url parameter present in the Global +- Ensure that the endpoint.url parameter present in the Global Settings is set to the Management Server API URL. For example, ``http://10.102.102.22:8080/client/api``. In a multi-node Management Server deployment, use the virtual IP address configured in the load @@ -460,7 +537,7 @@ Before you configure an AutoScale rule, consider the following: that the NetScaler device has access to this IP address to provide AutoScale support. - If you update the endpointe.url, disable the AutoScale functionality + If you update the endpoint.url, disable the AutoScale functionality of the load balancer rules in the system, then enable them back to reflect the changes. For more information see :ref:`update-autoscale`. @@ -469,9 +546,9 @@ Before you configure an AutoScale rule, consider the following: the user participates in are disabled and then enabled to reflect the configuration changes in the NetScaler. -- In an advanced Zone, ensure that at least one VM should be present - before configuring a load balancer rule with AutoScale. Having one VM - in the network ensures that the network is in implemented state for +- In an advanced Zone, ensure that at least one instance should be present + before configuring a load balancer rule with AutoScale. Having one instance + in the Network ensures that the Network is in implemented state for configuring AutoScale. @@ -484,52 +561,52 @@ Specify the following: - **Template**: A template consists of a base OS image and application. A template is used to provision the new instance of an application on - a scaleup action. When a VM is deployed from a template, the VM can + a scaleup action. When an instance is deployed from a template, the instance can start taking the traffic from the load balancer without any admin - intervention. For example, if the VM is deployed for a Web service, + intervention. For example, if the instance is deployed for a Web service, it should have the Web server running, the database connected, and so on. - **Compute offering**: A predefined set of virtual hardware attributes, including CPU speed, number of CPUs, and RAM size, that - the user can select when creating a new virtual machine instance. - Choose one of the compute offerings to be used while provisioning a - VM instance as part of scaleup action. + the user can select when creating a new Instance. + Choose one of the compute offerings to be used while provisioning an + Instance as part of scaleup action. -- **Min Instance**: The minimum number of active VM instances that is - assigned to a load balancing rule. The active VM instances are the +- **Min Instance**: The minimum number of active instances that is + assigned to a load balancing rule. The active instances are the application instances that are up and serving the traffic, and are being load balanced. This parameter ensures that a load balancing - rule has at least the configured number of active VM instances are + rule has at least the configured number of active instances are available to serve the traffic. .. note:: - If an application, such as SAP, running on a VM instance is down for - some reason, the VM is then not counted as part of Min Instance + If an application, such as SAP, running on an instance is down for + some reason, the instance is then not counted as part of Min Instance parameter, and the AutoScale feature initiates a scaleup action if - the number of active VM instances is below the configured value. + the number of active instances is below the configured value. Similarly, when an application instance comes up from its earlier down state, this application instance is counted as part of the active instance count and the AutoScale process initiates a scaledown action when the active instance count breaches the Max instance value. -- **Max Instance**: Maximum number of active VM instances that **should +- **Max Instance**: Maximum number of active instances that **should be assigned to**\ a load balancing rule. This parameter defines the - upper limit of active VM instances that can be assigned to a load + upper limit of active instances that can be assigned to a load balancing rule. Specifying a large value for the maximum instance parameter might - result in provisioning large number of VM instances, which in turn - leads to a single load balancing rule exhausting the VM instances + result in provisioning large number of instances, which in turn + leads to a single load balancing rule exhausting the instances limit specified at the account or domain level. .. note:: - If an application, such as SAP, running on a VM instance is down for - some reason, the VM is not counted as part of Max Instance parameter. - So there may be scenarios where the number of VMs provisioned for a + If an application, such as SAP, running on an instance is down for + some reason, the instance is not counted as part of Max Instance parameter. + So there may be scenarios where the number of instances provisioned for a scaleup action might be more than the configured Max Instance value. - Once the application instances in the VMs are up from an earlier down + Once the application instances in the instances are up from an earlier down state, the AutoScale feature starts aligning to the configured Max Instance value. @@ -567,33 +644,33 @@ advanced settings, and specify the following: - **Quiet Time**: This is the cool down period after an AutoScale action is initiated. The time includes the time taken to complete - provisioning a VM instance from its template and the time taken by an + provisioning an instance from its template and the time taken by an application to be ready to serve traffic. This quiet time allows the fleet to come up to a stable state before any action can take place. The default is 300 seconds. -- **Destroy VM Grace Period**: The duration in seconds, after a - scaledown action is initiated, to wait before the VM is destroyed as +- **Destroy Instance Grace Period**: The duration in seconds, after a + scaledown action is initiated, to wait before the instance is destroyed as part of scaledown action. This is to ensure graceful close of any - pending sessions or transactions being served by the VM marked for + pending sessions or transactions being served by the instance marked for destroy. The default is 120 seconds. - **Security Groups**: Security groups provide a way to isolate traffic - to the VM instances. A security group is a group of VMs that filter + to the instances. A security group is a group of instances that filter their incoming and outgoing traffic according to a set of rules, - called ingress and egress rules. These rules filter network traffic + called ingress and egress rules. These rules filter Network traffic according to the IP address that is attempting to communicate with - the VM. + the instance. - **Disk Offerings**: A predefined set of disk size for primary data storage. - **SNMP Community**: The SNMP community string to be used by the NetScaler device to query the configured counter value from the - provisioned VM instances. Default is public. + provisioned instances. Default is public. - **SNMP Port**: The port number on which the SNMP agent that run on - the provisioned VMs is listening. Default port is 161. + the provisioned instances is listening. Default port is 161. - **User**: This is the user that the NetScaler device use to invoke scaleup and scaledown API calls to the cloud. If no option is @@ -606,7 +683,7 @@ advanced settings, and specify the following: Disabling and Enabling an AutoScale Configuration ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -If you want to perform any maintenance operation on the AutoScale VM +If you want to perform any maintenance operation on the AutoScale instances, disable the AutoScale configuration. When the AutoScale configuration is disabled, no scaleup or scaledown action is performed. You can use this downtime for the maintenance activities. To disable the @@ -637,20 +714,20 @@ again, then click the Enable AutoScale button. Runtime Considerations ^^^^^^^^^^^^^^^^^^^^^^ -- An administrator should not assign a VM to a load balancing rule +- An administrator should not assign an instance to a load balancing rule which is configured for AutoScale. -- Before a VM provisioning is completed if NetScaler is shutdown or - restarted, the provisioned VM cannot be a part of the load balancing +- Before an instance provisioning is completed if NetScaler is shutdown or + restarted, the provisioned instance cannot be a part of the load balancing rule though the intent was to assign it to a load balancing rule. To - workaround, rename the AutoScale provisioned VMs based on the rule - name or ID so at any point of time the VMs can be reconciled to its + workaround, rename the AutoScale provisioned instances based on the rule + name or ID so at any point of time the instances can be reconciled to its load balancing rule. - Making API calls outside the context of AutoScale, such as destroyVM, - on an autoscaled VM leaves the load balancing configuration in an - inconsistent state. Though VM is destroyed from the load balancer - rule, NetScaler continues to show the VM as a service assigned to a + on an autoscaled instance leaves the load balancing configuration in an + inconsistent state. Though instance is destroyed from the load balancer + rule, NetScaler continues to show the instance as a service assigned to a rule. diff --git a/source/adminguide/networking/global_server_load_balancing.rst b/source/adminguide/networking/global_server_load_balancing.rst index fef3eb71df..a357564d34 100644 --- a/source/adminguide/networking/global_server_load_balancing.rst +++ b/source/adminguide/networking/global_server_load_balancing.rst @@ -75,7 +75,7 @@ A typical GSLB environment is comprised of the following components: services. - **GSLB Virtual Servers**: A GSLB virtual server refers to one or more - GSLB services and balances traffic between traffic across the VMs in + GSLB services and balances traffic between traffic across the instances in multiple zones by using the CloudStack functionality. It evaluates the configured GSLB methods or algorithms to select a GSLB service to which to send the client requests. One or more virtual servers from @@ -273,11 +273,11 @@ Prerequisites and Guidelines A zone shall be considered as GSLB capable only if a GSLB service provider is provisioned in the zone. -- When users have VMs deployed in multiple availability zones which are +- When users have instances deployed in multiple availability zones which are GSLB enabled, they can use the GSLB functionality to load balance - traffic across the VMs in multiple zones. + traffic across the instances in multiple zones. -- The users can use GSLB to load balance across the VMs across zones in +- The users can use GSLB to load balance across the instances across zones in a region only if the admin has enabled GSLB in that region. - The users can load balance traffic across the availability zones in diff --git a/source/adminguide/networking/guest_traffic.rst b/source/adminguide/networking/guest_traffic.rst index 51374d129b..1d5443b5fc 100644 --- a/source/adminguide/networking/guest_traffic.rst +++ b/source/adminguide/networking/guest_traffic.rst @@ -17,8 +17,8 @@ Guest Traffic ------------- -A network can carry guest traffic only between VMs within one zone. -Virtual machines in different zones cannot communicate with each other +A network can carry guest traffic only between Instances within one zone. +Instances in different zones cannot communicate with each other using their IP addresses; they must communicate with each other by routing through a public IP address. @@ -27,7 +27,7 @@ See a typical guest traffic setup given below: |guest-traffic-setup.png| Typically, the Management Server automatically creates a virtual router -for each network. A virtual router is a special virtual machine that +for each network. A virtual router is a special Instance that runs on the hosts. Each virtual router in an isolated network has three network interfaces. If multiple public VLAN is used, the router will have multiple public interfaces. Its eth0 interface serves as the @@ -38,12 +38,12 @@ If multiple public VLAN is used, the router will have multiple public interfaces. The virtual router provides DHCP and will automatically assign an IP -address for each guest VM within the IP range assigned for the network. -The user can manually reconfigure guest VMs to assume different IP +address for each Guest Instance within the IP range assigned for the network. +The user can manually reconfigure Guest Instances to assume different IP addresses. Source NAT is automatically configured in the virtual router to forward -outbound traffic for all guest VMs +outbound traffic for all Guest Instances .. |guest-traffic-setup.png| image:: /_static/images/guest-traffic-setup.png diff --git a/source/adminguide/networking/inter_vlan_routing.rst b/source/adminguide/networking/inter_vlan_routing.rst index fd651a8875..93f24e56df 100644 --- a/source/adminguide/networking/inter_vlan_routing.rst +++ b/source/adminguide/networking/inter_vlan_routing.rst @@ -22,12 +22,12 @@ traffic between VLANs. This feature enables you to build Virtual Private Clouds (VPC), an isolated segment of your cloud, that can hold multi-tier applications. These tiers are deployed on different VLANs that can communicate with each other. You provision VLANs to the tiers -your create, and VMs can be deployed on different tiers. The VLANs are +your create, and instances can be deployed on different tiers. The VLANs are connected to a virtual router, which facilitates communication between -the VMs. In effect, you can segment VMs by means of VLANs into different +the instances. In effect, you can segment instances by means of VLANs into different networks that can host multi-tier applications, such as Web, Application, or Database. Such segmentation by means of VLANs logically -separate application VMs for higher security and lower broadcasts, while +separate application instances for higher security and lower broadcasts, while remaining physically connected to the same device. This feature is supported on XenServer, KVM, and VMware hypervisors. @@ -35,23 +35,23 @@ This feature is supported on XenServer, KVM, and VMware hypervisors. The major advantages are: - The administrator can deploy a set of VLANs and allow users to deploy - VMs on these VLANs. A guest VLAN is randomly alloted to an account - from a pre-specified set of guest VLANs. All the VMs of a certain + instances on these VLANs. A guest VLAN is randomly allotted to an account + from a pre-specified set of guest VLANs. All the instances of a certain tier of an account reside on the guest VLAN allotted to that account. .. note:: A VLAN allocated for an account cannot be shared between multiple accounts. - The administrator can allow users create their own VPC and deploy the - application. In this scenario, the VMs that belong to the account are + application. In this scenario, the instances that belong to the account are deployed on the VLANs allotted to that account. - Both administrators and users can create multiple VPCs. The guest - network NIC is plugged to the VPC virtual router when the first VM is + network NIC is plugged to the VPC virtual router when the first instance is deployed in a tier. - The administrator can create the following gateways to send to or - receive traffic from the VMs: + receive traffic from the instances: - **VPN Gateway**: For more information, see `"Creating a VPN gateway for the VPC" <#creating-a-vpn-gateway-for-the-vpc>`_. @@ -70,12 +70,12 @@ The major advantages are: For example: - **VLANs and Public Gateway**: For example, an application is - deployed in the cloud, and the Web application VMs communicate + deployed in the cloud, and the Web application instances communicate with the Internet. - **VLANs, VPN Gateway, and Public Gateway**: For example, an - application is deployed in the cloud; the Web application VMs - communicate with the Internet; and the database VMs communicate + application is deployed in the cloud; the Web application instances + communicate with the Internet; and the database instances communicate with the on-premise devices. - The administrator can define Network Access Control List (ACL) on the diff --git a/source/adminguide/networking/ip_forwarding_and_firewalling.rst b/source/adminguide/networking/ip_forwarding_and_firewalling.rst index e13fe63278..a0a43adfb6 100644 --- a/source/adminguide/networking/ip_forwarding_and_firewalling.rst +++ b/source/adminguide/networking/ip_forwarding_and_firewalling.rst @@ -26,9 +26,9 @@ To allow incoming traffic, users may set up firewall rules and/or port forwarding rules. For example, you can use a firewall rule to open a range of ports on the public IP address, such as 33 through 44. Then use port forwarding rules to direct traffic from individual ports within -that range to specific ports on user VMs. For example, one port +that range to specific ports on user instances. For example, one port forwarding rule could route incoming traffic on the public IP's port 33 -to port 100 on one user VM's private IP. +to port 100 on one user instance's private IP. Firewall Rules @@ -108,9 +108,6 @@ Prerequisites and Guidelines Consider the following scenarios to apply egress firewall rules: -- Egress firewall rules are supported on Juniper SRX and virtual - router. - - The egress firewall rules are not supported on shared networks. - Allow the egress traffic from specified source CIDR. The Source CIDR @@ -138,7 +135,7 @@ Configuring an Egress Firewall Rule #. To add an egress rule, click the Egress rules tab and fill out the following fields to specify what type of traffic is allowed to be - sent out of VM instances in this guest network: + sent out of instances in this guest network: |egress-firewall-rule.png| @@ -148,7 +145,7 @@ Configuring an Egress Firewall Rule the destination. For example, 192.168.0.0/22. To allow all CIDRs, set to 0.0.0.0/0. - - **Protocol**: The networking protocol that VMs uses to send + - **Protocol**: The networking protocol that instances uses to send outgoing traffic. The TCP and UDP protocols are typically used for data exchange and end-user communications. The ICMP protocol is typically used to send error messages or network monitoring data. @@ -195,7 +192,7 @@ traffic. While implementing a guest network, CloudStack adds the firewall egress rule specific to the default egress policy for the guest network. -This feature is supported only on virtual router and Juniper SRX. +This feature is supported only on the virtual router. #. Create a network offering with your desirable default egress policy: @@ -224,15 +221,15 @@ Port Forwarding ~~~~~~~~~~~~~~~ A port forward service is a set of port forwarding rules that define a -policy. A port forward service is then applied to one or more guest VMs. -The guest VM then has its inbound network access managed according to +policy. A port forward service is then applied to one or more Guest Instances. +The Guest Instance then has its inbound network access managed according to the policy defined by the port forwarding service. You can optionally specify one or more CIDRs to filter the source IPs. This is useful when you want to allow only incoming requests from certain IP addresses to be forwarded. -A guest VM can be in any number of port forward services. Port forward -services can be defined but have no members. If a guest VM is part of +A Guest Instance can be in any number of port forward services. Port forward +services can be defined but have no members. If a Guest Instance is part of more than one network, port forwarding rules will function only if they are defined on the default network @@ -248,11 +245,11 @@ To set up port forwarding: zone in CloudStack. See Adding a Zone and Pod in the Installation Guide. -#. Add one or more VM instances to CloudStack. +#. Add one or more instances to CloudStack. #. In the left navigation bar, click Network. -#. Click the name of the guest network where the VMs are running. +#. Click the name of the guest network where the instances are running. #. Choose an existing IP address or acquire a new IP address. See `"Acquiring a New IP Address" <#acquiring-a-new-ip-address>`_. diff --git a/source/adminguide/networking/ip_reservation_in_guest_networks.rst b/source/adminguide/networking/ip_reservation_in_guest_networks.rst index 028f504b17..32d4aff035 100644 --- a/source/adminguide/networking/ip_reservation_in_guest_networks.rst +++ b/source/adminguide/networking/ip_reservation_in_guest_networks.rst @@ -18,24 +18,24 @@ IP Reservation in Isolated Guest Networks ----------------------------------------- In isolated guest networks, a part of the guest IP address space can be -reserved for non-CloudStack VMs or physical servers. To do so, you +reserved for non-CloudStack instances or physical servers. To do so, you configure a range of Reserved IP addresses by specifying the CIDR when a guest network is in Implemented state. If your customers wish to have -non-CloudStack controlled VMs or physical servers on the same network, +non-CloudStack controlled instances or physical servers on the same network, they can share a part of the IP address space that is primarily provided to the guest network. In an Advanced zone, an IP address range or a CIDR is assigned to a network when the network is defined. The CloudStack virtual router acts as the DHCP server and uses CIDR for assigning IP addresses to the guest -VMs. If you decide to reserve CIDR for non-CloudStack purposes, you can +instances. If you decide to reserve CIDR for non-CloudStack purposes, you can specify a part of the IP address range or the CIDR that should only be -allocated by the DHCP service of the virtual router to the guest VMs +allocated by the DHCP service of the virtual router to the Guest Instances created in CloudStack. The remaining IPs in that network are called Reserved IP Range. When IP reservation is configured, the administrator -can add additional VMs or physical servers that are not part of +can add additional instances or physical servers that are not part of CloudStack to the same network and assign them the Reserved IP -addresses. CloudStack guest VMs cannot acquire IPs from the Reserved IP +addresses. CloudStack Guest Instances cannot acquire IPs from the Reserved IP Range. @@ -52,13 +52,13 @@ machines: - No IP Reservation is done by default. -- Guest VM CIDR you specify must be a subset of the network CIDR. +- Guest instance CIDR you specify must be a subset of the network CIDR. -- Specify a valid Guest VM CIDR. IP Reservation is applied only if no - active IPs exist outside the Guest VM CIDR. +- Specify a valid Guest instance CIDR. IP Reservation is applied only if no + active IPs exist outside the Guest instance CIDR. - You cannot apply IP Reservation if any VM is alloted with an IP - address that is outside the Guest VM CIDR. + You cannot apply IP Reservation if any instance is alloted with an IP + address that is outside the Guest instance CIDR. - To reset an existing IP Reservation, apply IP reservation by specifying the value of network CIDR in the CIDR field. @@ -68,24 +68,24 @@ machines: .. cssclass:: table-striped table-bordered table-hover - ===== ============= ============== ======================================== ======================================================== - Case CIDR Network CIDR Reserved IP Range for Non-CloudStack VMs Description - ===== ============= ============== ======================================== ======================================================== - 1 10.1.1.0/24 None None No IP Reservation. - 2 10.1.1.0/26 10.1.1.0/24 10.1.1.64 to 10.1.1.254 IP Reservation configured by the UpdateNetwork API with - guestvmcidr=10.1.1.0/26 or enter 10.1.1.0/26 in the CIDR - field in the UI. - 3 10.1.1.0/24 None None Removing IP Reservation by the UpdateNetwork API with - guestvmcidr=10.1.1.0/24 or enter 10.1.1.0/24 in the CIDR - field in the UI. - ===== ============= ============== ======================================== ======================================================== + ===== ============= ============== ============================================== ======================================================== + Case CIDR Network CIDR Reserved IP Range for Non-CloudStack instances Description + ===== ============= ============== ============================================== ======================================================== + 1 10.1.1.0/24 None None No IP Reservation. + 2 10.1.1.0/26 10.1.1.0/24 10.1.1.64 to 10.1.1.254 IP Reservation configured by the UpdateNetwork API with + guestvmcidr=10.1.1.0/26 or enter 10.1.1.0/26 in the CIDR + field in the UI. + 3 10.1.1.0/24 None None Removing IP Reservation by the UpdateNetwork API with + guestvmcidr=10.1.1.0/24 or enter 10.1.1.0/24 in the CIDR + field in the UI. + ===== ============= ============== ============================================== ======================================================== Limitations ~~~~~~~~~~~ - The IP Reservation is not supported if active IPs that are found - outside the Guest VM CIDR. + outside the Guest instance CIDR. - Upgrading network offering which causes a change in CIDR (such as upgrading an offering with no external devices to one with external @@ -98,7 +98,7 @@ Best Practices Apply IP Reservation to the guest network as soon as the network state changes to Implemented. If you apply reservation soon after the first -guest VM is deployed, lesser conflicts occurs while applying +Guest Instance is deployed, lesser conflicts occurs while applying reservation. @@ -113,7 +113,7 @@ Reserving an IP Range #. Click Edit. |ip-edit-icon.png| -#. In CIDR, specify the Guest VM CIDR. +#. In CIDR, specify the Guest instance CIDR. #. Click Apply. diff --git a/source/adminguide/networking/isolation_in_advanced_zone_with_vlan.rst b/source/adminguide/networking/isolation_in_advanced_zone_with_vlan.rst index aaa1158fe3..46e438fd09 100644 --- a/source/adminguide/networking/isolation_in_advanced_zone_with_vlan.rst +++ b/source/adminguide/networking/isolation_in_advanced_zone_with_vlan.rst @@ -80,6 +80,11 @@ Prerequisites Creating a PVLAN-Enabled Network ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .. note:: + If you are facing issues with connectivity in PVLANS, especially community and promiscuous PVLANS + in a multi hypervisor environment, this could be caused by the way PVLANs were implemented + in 4.14.0, which was later fixed in 4.15.0. To resolve this, delete the PVLAN network and recreate it. + PVLAN-enabled networks can be either shared or layer 2 networks. For a general description of how to create a shared network see `"configuring a shared guest network" <#configuring-a-shared-guest-network>`_. diff --git a/source/adminguide/networking/manage_guest_networks.rst b/source/adminguide/networking/manage_guest_networks.rst new file mode 100644 index 0000000000..e0eefb936c --- /dev/null +++ b/source/adminguide/networking/manage_guest_networks.rst @@ -0,0 +1,44 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + + +Editing, Restarting, and Removing a Guest Network +-------------------------------------------------- + +.. note:: Ensure that all the Instances are removed before you remove a guest Network. + +#. Log in to the CloudStack UI as an administrator or end user. + +#. In the left navigation, choose Network. + +#. In the Select view, select Guest Networks. + + All the guest Networks that you have created for the account are listed in the + page. + +#. Select the guest Network you want to work with. + +#. In the Details tab, click the "Delete Network" button + + You can also remove the guest Network by using the remove button in the Quick + View. + + You can edit the name, description, Network offering, CIDR, Network domain of a + guest Network. To do that, click the "Edit" button. + + To restart a guest Network, click the "Restart Network" button. Please note + all services provided by this Network will be interrupted. When you enable "Clean up", + the virtual routers of guest Network will be destroyed and new virtual routers will + be provisioned. diff --git a/source/adminguide/networking/multiple_guest_networks.rst b/source/adminguide/networking/multiple_guest_networks.rst index f7900cd689..6b8b3b8d70 100644 --- a/source/adminguide/networking/multiple_guest_networks.rst +++ b/source/adminguide/networking/multiple_guest_networks.rst @@ -22,12 +22,12 @@ traffic may be added at any time after the initial installation. You can also customize the domain name associated with the network by specifying a DNS suffix for each network. -A VM's networks are defined at VM creation time. A VM cannot add or +A instance's networks are defined at instance creation time. An instance cannot add or remove networks after it has been created, although the user can go into the guest and remove the IP address from the NIC on a particular network. -Each VM has just one default network. The virtual router's DHCP reply +Each instance has just one default network. The virtual router's DHCP reply will set the guest's default gateway as that for the default network. Multiple non-default networks may be added to a guest in addition to the single, required default network. The administrator can control which @@ -35,7 +35,7 @@ networks are available as the default network. Additional networks can either be available to all accounts or be assigned to a specific account. Networks that are available to all -accounts are zone-wide. Any user with access to the zone can create a VM +accounts are zone-wide. Any user with access to the zone can create an instance with access to that network. These zone-wide networks provide little or no isolation between guests.Networks that are assigned to a specific account provide strong isolation. @@ -72,11 +72,11 @@ Adding an Additional Guest Network #. Click Create. -Reconfiguring Networks in VMs +Reconfiguring Networks in instances ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -CloudStack provides you the ability to move VMs between networks and -reconfigure a VM's network. You can remove a VM from a network and add +CloudStack provides you the ability to move instances between networks and +reconfigure an instance's network. You can remove an instance from a network and add to a new network. You can also change the default network of a virtual machine. With this functionality, hybrid or traditional server loads can be accommodated with ease. @@ -87,7 +87,7 @@ This feature is supported on XenServer, VMware, and KVM hypervisors. Prerequisites ^^^^^^^^^^^^^ -Ensure that vm-tools are running on guest VMs for adding or removing +Ensure that vm-tools are running on Guest Instances for adding or removing networks to work on VMware hypervisor. @@ -98,16 +98,16 @@ Adding a Network #. In the left navigation, click Instances. -#. Choose the VM that you want to work with. +#. Choose the instance that you want to work with. #. Click the NICs tab. -#. Click Add network to VM. +#. Click Add network to instance. - The Add network to VM dialog is displayed. + The Add network to instance dialog is displayed. #. In the drop-down list, select the network that you would like to add - this VM to. + this instance to. A new NIC is added for this network. You can view the following details in the NICs page: @@ -136,7 +136,7 @@ Removing a Network #. In the left navigation, click Instances. -#. Choose the VM that you want to work with. +#. Choose the instance that you want to work with. #. Click the NICs tab. @@ -154,7 +154,7 @@ Selecting the Default Network #. In the left navigation, click Instances. -#. Choose the VM that you want to work with. +#. Choose the instance that you want to work with. #. Click the NICs tab. @@ -174,7 +174,7 @@ associated with an existing guest network. #. If you are changing from a network offering that uses the CloudStack virtual router to one that uses external devices as network service - providers, you must first stop all the VMs on the network. + providers, you must first stop all the instances on the network. #. In the left navigation, choose Network. @@ -193,10 +193,10 @@ associated with an existing guest network. network device as provider, acknowledge the change of CIDR to continue, so choose Yes. -#. Wait for the update to complete. Don't try to restart VMs until the +#. Wait for the update to complete. Don't try to restart instances until the network change is complete. -#. If you stopped any VMs, restart them. +#. If you stopped any instances, restart them. .. |remove-nic.png| image:: /_static/images/remove-nic.png diff --git a/source/adminguide/networking/multiple_ips_on_single_nic.rst b/source/adminguide/networking/multiple_ips_on_single_nic.rst index 8cd7fb7c11..3082c9bd4e 100644 --- a/source/adminguide/networking/multiple_ips_on_single_nic.rst +++ b/source/adminguide/networking/multiple_ips_on_single_nic.rst @@ -18,15 +18,15 @@ Configuring Multiple IP Addresses on a Single NIC ------------------------------------------------- CloudStack provides you the ability to associate multiple private IP -addresses per guest VM NIC. In addition to the primary IP, you can -assign additional IPs to the guest VM NIC. This feature is supported on +addresses per Guest Instance NIC. In addition to the primary IP, you can +assign additional IPs to the Guest Instance NIC. This feature is supported on all the network configurations: Basic, Advanced, and VPC. Security Groups, Static NAT and Port forwarding services are supported on these additional IPs. As always, you can specify an IP from the guest subnet; if not -specified, an IP is automatically picked up from the guest VM subnet. -You can view the IPs associated with for each guest VM NICs on the UI. +specified, an IP is automatically picked up from the Guest Instance subnet. +You can view the IPs associated with for each Guest Instance NICs on the UI. You can apply NAT on these additional guest IPs by using network configuration option in the CloudStack UI. You must specify the NIC to which the IP should be associated. @@ -57,10 +57,10 @@ Guidelines ~~~~~~~~~~ To prevent IP conflict, configure different subnets when multiple -networks are connected to the same VM. +networks are connected to the same instance. -Assigning Additional IPs to a VM +Assigning Additional IPs to an instance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #. Log in to the CloudStack UI. @@ -76,9 +76,9 @@ Assigning Additional IPs to a VM #. Click Acquire New Secondary IP, and click Yes in the confirmation dialog. - You need to configure the IP on the guest VM NIC manually. CloudStack - will not automatically configure the acquired IP address on the VM. - Ensure that the IP address configuration persist on VM reboot. + You need to configure the IP on the Guest Instance NIC manually. CloudStack + will not automatically configure the acquired IP address on the instance. + Ensure that the IP address configuration persist on instance reboot. Within a few moments, the new IP address should appear with the state Allocated. You can now use the IP address in Port Forwarding or @@ -94,5 +94,5 @@ default is the primary IP. To enable this functionality, an extra optional parameter 'vmguestip' is added to the Port forwarding and StaticNAT APIs (enableStaticNat, createIpForwardingRule) to indicate on what IP address NAT need to be configured. If vmguestip is passed, NAT -is configured on the specified private IP of the VM. if not passed, NAT -is configured on the primary IP of the VM. +is configured on the specified private IP of the instance. if not passed, NAT +is configured on the primary IP of the instance. diff --git a/source/adminguide/networking/multiple_subnets_in_shared_network.rst b/source/adminguide/networking/multiple_subnets_in_shared_network.rst index d172757681..bd7087f723 100644 --- a/source/adminguide/networking/multiple_subnets_in_shared_network.rst +++ b/source/adminguide/networking/multiple_subnets_in_shared_network.rst @@ -75,21 +75,21 @@ Adding Multiple Subnets to a Shared Network All the fields are mandatory. - - **Gateway**: The gateway for the tier you create. Ensure that the + - **Gateway**: The gateway for the Network Tier you create. Ensure that the gateway is within the Super CIDR range that you specified while creating the VPC, and is not overlapped with the CIDR of any - existing tier within the VPC. + existing Network Tier within the VPC. - - **Netmask**: The netmask for the tier you create. + - **Netmask**: The netmask for the Network Tier you create. - For example, if the VPC CIDR is 10.0.0.0/16 and the network tier - CIDR is 10.0.1.0/24, the gateway of the tier is 10.0.1.1, and the - netmask of the tier is 255.255.255.0. + For example, if the VPC CIDR is 10.0.0.0/16 and the Network Tier + CIDR is 10.0.1.0/24, the gateway of the Network Tier is 10.0.1.1, and the + netmask of the Network Tier is 255.255.255.0. - **Start IP/ End IP**: A range of IP addresses that are accessible - from the Internet and will be allocated to guest VMs. Enter the + from the Internet and will be allocated to Guest Instances. Enter the first and last IP addresses that define a range that CloudStack - can assign to guest VMs. + can assign to Guest Instances. - **VLAN/VNI**: the ID or VID of the VLAN. If not specified, will be defaulted to the vlan of the network or if vlan of the network is diff --git a/source/adminguide/networking/network_permissions.rst b/source/adminguide/networking/network_permissions.rst new file mode 100644 index 0000000000..1a230fc2cf --- /dev/null +++ b/source/adminguide/networking/network_permissions.rst @@ -0,0 +1,80 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + + +Guest Network Permissions +----------------------------- + +From Apache CloudStack 4.17.0.0, guest Networks can be shared to other +accounts in the same domain by managing Network permissions. + +The following Networks can be shared: + +#. L2 Networks not in Project + +#. Isolated Networks not in Project + +#. Shared Networks with scope is Account + +Adding a Network permission +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +#. Log in to the CloudStack UI as an administrator or end user. + +#. In the left navigation, choose Network. + +#. In the Select view, select Guest Networks. + +#. Select the guest Network you want to work with. + +#. Click the Network Permissions tab. + + All the Network permissions that you have created for the Network are + listed in the page. |network-permissions.png| + +#. Click Add Network Permission icon. Provide the following information: + + - **Account**: The name of the accounts this Network will be shared to. + + - **Project**. The name of the projects this Network will be shared to. + +#. Click OK. + + .. note:: + The accounts/projects are permitted to create Instances on the Network. + However, they are not permitted to restart and update Network, and + modify Network rules (e.g. firewall, static nat, load balancer, port + forwarding). + + +Removing a Network permission +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To remove a Network permission, click the Delete Network Permission icon of +the Network permission. |delete-button.png| + + +Resetting Network permissions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +CloudStack provides the ability to reset the Network permissions of a Network. +All Network permissions will be removed. To reset the Network permission, click +the Reset Network Permissions button on the page. + + +.. |network-permissions.png| image:: /_static/images/network-permissions.png + :alt: network permissions. +.. |delete-button.png| image:: /_static/images/delete-button.png + :alt: button to delete. diff --git a/source/adminguide/networking/persistent_networks.rst b/source/adminguide/networking/persistent_networks.rst index 99eab71cde..f981f1dedb 100644 --- a/source/adminguide/networking/persistent_networks.rst +++ b/source/adminguide/networking/persistent_networks.rst @@ -17,26 +17,26 @@ Persistent Networks ------------------- -The network that you can provision without having to deploy any VMs on +The network that you can provision without having to deploy any instances on it is called a persistent network. A persistent network can be part of a VPC or a non-VPC environment. When you create other types of network, a network is only a database -entry until the first VM is created on that network. When the first VM +entry until the first instance is created on that network. When the first instance is created, a VLAN ID is assigned and the network is provisioned. Also, -when the last VM is destroyed, the VLAN ID is released and the network +when the last instance is destroyed, the VLAN ID is released and the network is no longer available. With the addition of persistent network, you will have the ability to create a network in CloudStack in which -physical devices can be deployed without having to run any VMs. +physical devices can be deployed without having to run any instances. Additionally, you can deploy physical devices on that network. One of the advantages of having a persistent network is that you can -create a VPC with a tier consisting of only physical devices. For -example, you might create a VPC for a three-tier application, deploy VMs +create a VPC with a Network Tier consisting of only physical devices. For +example, you might create a VPC for a three-tier application, deploy instances for Web and Application tier, and use physical machines for the Database tier. Another use case is that if you are providing services by using physical hardware, you can define the network as persistent and -therefore even if all its VMs are destroyed the services will not be +therefore even if all its instances are destroyed the services will not be discontinued. @@ -63,15 +63,15 @@ Persistent Network Considerations - An existing network can be made persistent by changing its network offering to an offering that has the Persistent option enabled. While - setting this property, even if the network has no running VMs, the + setting this property, even if the network has no running instances, the network is provisioned. - An existing network can be made non-persistent by changing its network offering to an offering that has the Persistent option - disabled. If the network has no running VMs, during the next network + disabled. If the network has no running instances, during the next network garbage collection run the network is shut down. -- When the last VM on a network is destroyed, the network garbage +- When the last instance on a network is destroyed, the network garbage collector checks if the network offering associated with the network is persistent, and shuts down the network only if it is non-persistent. diff --git a/source/adminguide/networking/portable_ips.rst b/source/adminguide/networking/portable_ips.rst index a65ca05d9c..0bf0435849 100644 --- a/source/adminguide/networking/portable_ips.rst +++ b/source/adminguide/networking/portable_ips.rst @@ -76,9 +76,9 @@ Configuring Portable IPs #. Specify the following: - **Start IP/ End IP**: A range of IP addresses that are accessible - from the Internet and will be allocated to guest VMs. Enter the + from the Internet and will be allocated to Guest Instances. Enter the first and last IP addresses that define a range that CloudStack - can assign to guest VMs. + can assign to Guest Instances. - **Gateway**: The gateway in use for the Portable IP addresses you are configuring. @@ -129,7 +129,7 @@ API: http://localhost:8096/client/api?command=enableStaticNat&response=json&ipaddressid=a4bc37b2-4b4e-461d-9a62-b66414618e36&virtualmachineid=a242c476-ef37-441e-9c7b-b303e2a9cb4f&networkid=6e7cd8d1-d1ba-4c35-bdaf-333354cbd49810 Replace the UUID with appropriate UUID. For example, if you want to -transfer a portable IP to network X and VM Y in a network, execute the +transfer a portable IP to network X and instance Y in a network, execute the following: .. code:: bash diff --git a/source/adminguide/networking/remote_access_vpn.rst b/source/adminguide/networking/remote_access_vpn.rst index 5b4f15ed2d..ffa45823e9 100644 --- a/source/adminguide/networking/remote_access_vpn.rst +++ b/source/adminguide/networking/remote_access_vpn.rst @@ -19,8 +19,8 @@ Remote Access VPN ----------------- -CloudStack account owners can create virtual private networks (VPN) to -access their virtual machines. If the guest network is instantiated from +CloudStack Account owners can create virtual private networks (VPN) to +access their Instances. If the guest network is instantiated from a network offering that offers the Remote Access VPN service, the virtual router (based on the System VM) is used to provide the service. CloudStack provides a L2TP-over-IPsec-based remote access VPN service to @@ -96,7 +96,7 @@ Configuring Remote Access VPN in VPC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ On enabling Remote Access VPN on a VPC, any VPN client present outside -the VPC can access VMs present in the VPC by using the Remote VPN +the VPC can access instances present in the VPC by using the Remote VPN connection. The VPN client can be present anywhere except inside the VPC on which the user enabled the Remote Access VPN service. @@ -113,7 +113,7 @@ To enable VPN for a VPC: #. Click the Configure button of the VPC. - For each tier, the following options are displayed: + For each Network Tier, the following options are displayed: - Internal LB @@ -121,7 +121,7 @@ To enable VPN for a VPC: - Static NAT - - Virtual Machines + - Instances - CIDR diff --git a/source/adminguide/networking/reserving_an_ip_address.rst b/source/adminguide/networking/reserving_an_ip_address.rst new file mode 100644 index 0000000000..26542f805b --- /dev/null +++ b/source/adminguide/networking/reserving_an_ip_address.rst @@ -0,0 +1,69 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + + +Reserving a Public IP Address +----------------------- + +When a public IP address is Free, you can reserve the public IP address. +The public IP address can be reserved to the caller or other accounts. + +#. Log in to the CloudStack UI as an administrator or end user. + +#. In the left navigation, choose Network. + +#. Click Public IP Addresses. By default, it displays the Public IP Addresses + in Allocate state. + +#. Filter the Public IP Addresses by state 'Free' + +#. Click the Public IP address you want to reserve. + +#. Click the Reserve IP button. + + The Reserve Public IP dialog is displayed. + +#. In the drop-down list, select the Account Type (Account or Project), Domain, + and Account or Project that you would like to reserve this Public IP to. + +#. Click Submit button. + + Reserved Public IP Addresses can be acquired and used in isolated Networks + or VPCs of the accounts which the Public IP Addresses are reserved to. + + Reserved Public IP Addresses will be considered as an used Public IP of + the account and domain. + +Releasing a Reserved Public IP Address +----------------------- + +When a public IP address is Reserved, you can release the public IP address so +that the public IP address is ready for use by other accounts. + +#. Log in to the CloudStack UI as an administrator or end user. + +#. In the left navigation, choose Network. + +#. Click Public IP Addresses. By default, it displays the Public IP Addresses + in Allocate state. + +#. Filter the Public IP Addresses by state 'Reserved' + +#. Click the Public IP address you want to release. + +#. Click the Release IP button. + +#. Click OK button. + diff --git a/source/adminguide/networking/security_groups.rst b/source/adminguide/networking/security_groups.rst index a82ced9627..5211c24ead 100644 --- a/source/adminguide/networking/security_groups.rst +++ b/source/adminguide/networking/security_groups.rst @@ -20,33 +20,33 @@ Security Groups About Security Groups ~~~~~~~~~~~~~~~~~~~~~ -Security groups provide a way to isolate traffic to VMs. A security -group is a group of VMs that filter their incoming and outgoing traffic +Security groups provide a way to isolate traffic to instances. A security +group is a group of instances that filter their incoming and outgoing traffic according to a set of rules, called ingress and egress rules. These rules filter network traffic according to the IP address that is -attempting to communicate with the VM. Security groups are particularly +attempting to communicate with the instance. Security groups are particularly useful in zones that use basic networking, because there is a single -guest network for all guest VMs. In advanced zones, security groups are +guest network for all Guest Instances. In advanced zones, security groups are supported only on the KVM hypervisor. .. note:: In a zone that uses advanced networking, you can instead define - multiple guest networks to isolate traffic to VMs. + multiple guest networks to isolate traffic to instances. Each CloudStack account comes with a default security group that denies all inbound traffic and allows all outbound traffic. The default -security group can be modified so that all new VMs inherit some other +security group can be modified so that all new instances inherit some other desired set of rules. Any CloudStack user can set up any number of additional security groups. -When a new VM is launched, it is assigned to the default security group -unless another user-defined security group is specified. A VM can be a -member of any number of security groups. Once a VM is assigned to a +When a new instance is launched, it is assigned to the default security group +unless another user-defined security group is specified. An instance can be a +member of any number of security groups. Once an instance is assigned to a security group, it remains in that group for its entire lifetime; you -can not move a running VM from one security group to another. +can not move a running instance from one security group to another. You can modify a security group by deleting or adding any number of -ingress and egress rules. When you do, the new rules apply to all VMs in +ingress and egress rules. When you do, the new rules apply to all instances in the group, whether running or stopped. If no ingress rules are specified, then no traffic will be allowed in, @@ -131,7 +131,7 @@ Adding Ingress and Egress Rules to a Security Group you want. #. To add an ingress rule, click the Ingress Rules tab and fill out the - following fields to specify what network traffic is allowed into VM + following fields to specify what network traffic is allowed into instance instances in this security group. If no ingress rules are specified, then no traffic will be allowed in, except for responses to any traffic that has been allowed out through an egress rule. @@ -139,7 +139,7 @@ Adding Ingress and Egress Rules to a Security Group - **Add by CIDR/Account**. Indicate whether the source of the traffic will be defined by IP address (CIDR) or an existing security group in a CloudStack account (Account). Choose Account - if you want to allow incoming traffic from all VMs in another + if you want to allow incoming traffic from all instances in another security group - **Protocol**. The networking protocol that sources will use to @@ -164,7 +164,7 @@ Adding Ingress and Egress Rules to a Security Group - **Account, Security Group**. (Add by Account only) To accept only traffic from another security group, enter the CloudStack account and name of a security group that has already been defined in that - account. To allow traffic between VMs within the security group + account. To allow traffic between instances within the security group you are editing now, enter the same name you used in step 7. The following example allows inbound HTTP access from anywhere: @@ -173,7 +173,7 @@ Adding Ingress and Egress Rules to a Security Group #. To add an egress rule, click the Egress Rules tab and fill out the following fields to specify what type of traffic is allowed to be - sent out of VM instances in this security group. If no egress rules + sent out of instances in this security group. If no egress rules are specified, then all traffic will be allowed out. Once egress rules are specified, the following types of traffic are allowed out: traffic specified in egress rules; queries to DNS and DHCP servers; @@ -183,10 +183,10 @@ Adding Ingress and Egress Rules to a Security Group - **Add by CIDR/Account**. Indicate whether the destination of the traffic will be defined by IP address (CIDR) or an existing security group in a CloudStack account (Account). Choose Account - if you want to allow outgoing traffic to all VMs in another + if you want to allow outgoing traffic to all instances in another security group. - - **Protocol**. The networking protocol that VMs will use to send + - **Protocol**. The networking protocol that instances will use to send outgoing traffic. TCP and UDP are typically used for data exchange and end-user communications. ICMP is typically used to send error messages or network monitoring data. @@ -207,7 +207,7 @@ Adding Ingress and Egress Rules to a Security Group - **Account, Security Group**. (Add by Account only) To allow traffic to be sent to another security group, enter the CloudStack account and name of a security group that has already been defined - in that account. To allow traffic between VMs within the security + in that account. To allow traffic between instances within the security group you are editing now, enter its name. #. Click Add. diff --git a/source/adminguide/networking/site_to_site_vpn.rst b/source/adminguide/networking/site_to_site_vpn.rst index 15224f1f66..33d3ccb545 100644 --- a/source/adminguide/networking/site_to_site_vpn.rst +++ b/source/adminguide/networking/site_to_site_vpn.rst @@ -20,12 +20,12 @@ Setting Up a Site-to-Site VPN Connection A Site-to-Site VPN connection helps you establish a secure connection from an enterprise datacenter to the cloud infrastructure. This allows -users to access the guest VMs by establishing a VPN connection to the +users to access the Guest Instances by establishing a VPN connection to the virtual router of the account from a device in the datacenter of the enterprise. You can also establish a secure connection between two VPC setups or high availability zones in your environment. Having this facility eliminates the need to establish VPN connections to individual -VMs. +instances. The difference from Remote VPN is that Site-to-site VPNs connects entire networks to each other, for example, connecting a branch office network @@ -211,12 +211,12 @@ Creating a VPN gateway for the VPC page. #. Click the Configure button of the VPC to which you want to deploy the - VMs. + instances. - The VPC page is displayed where all the tiers you created are listed + The VPC page is displayed where all the Network Tiers you created are listed in a diagram. - For each tier, the following options are displayed: + For each Network Tier, the following options are displayed: - Internal LB @@ -224,7 +224,7 @@ Creating a VPN gateway for the VPC - Static NAT - - Virtual Machines + - Instances - CIDR @@ -272,14 +272,14 @@ Creating a VPN Connection All the VPCs that you create for the account are listed in the page. #. Click the Configure button of the VPC to which you want to deploy the - VMs. + instances. - The VPC page is displayed where all the tiers you created are listed + The VPC page is displayed where all the Network Tiers you created are listed in a diagram. #. Click the Settings icon. - For each tier, the following options are displayed: + For each Network Tier, the following options are displayed: - Internal LB @@ -287,7 +287,7 @@ Creating a VPN Connection - Static NAT - - Virtual Machines + - Instances - CIDR @@ -404,14 +404,14 @@ Restarting and Removing a VPN Connection page. #. Click the Configure button of the VPC to which you want to deploy the - VMs. + instances. - The VPC page is displayed where all the tiers you created are listed + The VPC page is displayed where all the Network Tiers you created are listed in a diagram. #. Click the Settings icon. - For each tier, the following options are displayed: + For each Network Tier, the following options are displayed: - Internal LB @@ -419,7 +419,7 @@ Restarting and Removing a VPN Connection - Static NAT - - Virtual Machines + - Instances - CIDR diff --git a/source/adminguide/networking/static_nat.rst b/source/adminguide/networking/static_nat.rst index 6e57b36e3c..83dc2933d1 100644 --- a/source/adminguide/networking/static_nat.rst +++ b/source/adminguide/networking/static_nat.rst @@ -18,7 +18,7 @@ Static NAT ---------- A static NAT rule maps a public IP address to the private IP address of -a VM in order to allow Internet traffic into the VM. The public IP +an instance in order to allow Internet traffic into the instance. The public IP address always remains the same, which is why it is called static NAT. This section tells how to enable or disable static NAT for a particular IP address. @@ -30,7 +30,7 @@ Enabling or Disabling Static NAT If port forwarding rules are already in effect for an IP address, you cannot enable static NAT to that IP. -If a guest VM is part of more than one network, static NAT rules will +If a Guest Instance is part of more than one network, static NAT rules will function only if they are defined on the default network. #. Log in to the CloudStack UI as an administrator or end user. @@ -49,7 +49,7 @@ function only if they are defined on the default network. static NAT is currently enabled for the IP address. #. If you are enabling static NAT, a dialog appears where you can choose - the destination VM and click Apply. + the destination instance and click Apply. .. |enabledisablenat.png| image:: /_static/images/enable-disable.png diff --git a/source/adminguide/networking/using_remote_access.rst b/source/adminguide/networking/using_remote_access.rst index 2161abe74a..3af1db746a 100644 --- a/source/adminguide/networking/using_remote_access.rst +++ b/source/adminguide/networking/using_remote_access.rst @@ -24,9 +24,9 @@ Using Remote Access VPN :local: :depth: 1 -Remote Access VPN connection to VPC or Guest Network to access Instances and applications. This section consider you have enable Remonte acccess VPN, refer to: :ref:`remote-access-vpn`. +Remote Access VPN connection to VPC or Guest Network to access Instances and applications. This section considers you have enabled Remote acccess VPN, refer to: :ref:`remote-access-vpn`. -When connected to a VPC via VPN, the client have access to all Tiers. +When connected to a VPC via VPN, the client have access to all Network Tiers. Following information is required to confiture VPN client: diff --git a/source/adminguide/networking/virtual_private_cloud_config.rst b/source/adminguide/networking/virtual_private_cloud_config.rst index 5f381d6923..79599d0686 100644 --- a/source/adminguide/networking/virtual_private_cloud_config.rst +++ b/source/adminguide/networking/virtual_private_cloud_config.rst @@ -25,35 +25,35 @@ About Virtual Private Clouds ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CloudStack Virtual Private Cloud is a private, isolated part of -CloudStack. A VPC can have its own virtual network topology that -resembles a traditional physical network. You can launch VMs in the -virtual network that can have private addresses in the range of your -choice, for example: 10.0.0.0/16. You can define network tiers within -your VPC network range, which in turn enables you to group similar kinds -of instances based on IP address range. +CloudStack. A VPC can have its own virtual Network topology that +resembles a traditional physical Network. You can launch Instances in the +virtual Network that can have private addresses in the range of your +choice, for example: 10.0.0.0/16. You can define Network Tiers within +your VPC Network range, which in turn enables you to group similar kinds +of Instances based on IP address range. For example, if a VPC has the private range 10.0.0.0/16, its guest -networks can have the network ranges 10.0.1.0/24, 10.0.2.0/24, +Networks can have the Network ranges 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24, and so on. Major Components of a VPC ^^^^^^^^^^^^^^^^^^^^^^^^^ -A VPC is comprised of the following network components: +A VPC is comprised of the following Network components: -- **VPC**: A VPC acts as a container for multiple isolated networks +- **VPC**: A VPC acts as a container for multiple isolated Networks that can communicate with each other via its virtual router. -- **Network Tiers**: Each tier acts as an isolated network with its own +- **Network Tiers**: Each Network Tier acts as an isolated Network with its own VLANs and CIDR list, where you can place groups of resources, such as - VMs. The tiers are segmented by means of VLANs. The NIC of each tier - acts as its gateway. + Instances. The Network Tiers are segmented by means of VLANs. The NIC of each + Network Tier acts as its gateway. - **Virtual Router**: A virtual router is automatically created and - started when you create a VPC. The virtual router connect the tiers + started when you create a VPC. The virtual router connect the Network Tiers and direct traffic among the public gateway, the VPN gateways, and - the NAT instances. For each tier, a corresponding NIC and IP exist in + the NAT Instances. For each Network Tier, a corresponding NIC and IP exist in the virtual router. The virtual router provides DNS and DHCP services through its IP. @@ -62,35 +62,35 @@ A VPC is comprised of the following network components: not exposed to the end user; therefore, static routes are not support for the public gateway. -- **Private Gateway**: All the traffic to and from a private network +- **Private Gateway**: All the traffic to and from a private Network routed to the VPC through the private gateway. For more information, see ":ref:`adding-priv-gw-vpc`". - **VPN Gateway**: The VPC side of a VPN connection. - **Site-to-Site VPN Connection**: A hardware-based VPN connection - between your VPC and your datacenter, home network, or co-location + between your VPC and your datacenter, home Network, or co-location facility. For more information, see ":ref:`setting-s2s-vpn-conn`". - **Customer Gateway**: The customer side of a VPN Connection. For more information, see `"Creating and Updating a VPN Customer Gateway" <#creating-and-updating-a-vpn-customer-gateway>`_. -- **NAT Instance**: An instance that provides Port Address Translation - for instances to access the Internet via the public gateway. For more +- **NAT Instance**: An Instance that provides Port Address Translation + for Instances to access the Internet via the public gateway. For more information, see ":ref:`enabling-disabling-static-nat-on-vpc`". - **Network ACL**: Network ACL is a group of Network ACL items. Network ACL items are nothing but numbered rules that are evaluated in order, starting with the lowest numbered rule. These rules determine whether - traffic is allowed in or out of any tier associated with the network + traffic is allowed in or out of any Network Tier associated with the Network ACL. For more information, see ":ref:`conf-net-acl`". Network Architecture in a VPC ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -In a VPC, the following four basic options of network architectures are +In a VPC, the following four basic options of Network architectures are present: - VPC with a public gateway only @@ -126,20 +126,20 @@ Consider the following before you create a VPC: - A VPC can be created in Advance zone only, and can't belong to more than one zone at a time. -- The default number of VPCs an account can create is 20. However, you +- The default number of VPCs an Account can create is 20. However, you can change it by using the max.account.vpcs global parameter, which - controls the maximum number of VPCs an account is allowed to create. + controls the maximum number of VPCs an Account is allowed to create. -- The default number of tiers an account can create within a VPC is 3. +- The default number of Network Tiers an Account can create within a VPC is 3. You can configure this number by using the vpc.max.networks parameter. -- Each tier should have an unique CIDR in the VPC. Ensure that the - tier's CIDR should be within the VPC CIDR range. +- Each Network Tier should have an unique CIDR in the VPC. Ensure that the + Network Tier's CIDR should be within the VPC CIDR range. -- A tier belongs to only one VPC. +- A Network Tier belongs to only one VPC. -- All network tiers inside the VPC should belong to the same account. +- All Network Tiers inside the VPC should belong to the same Account. - When a VPC is created, by default, a SourceNAT IP is allocated to it. The Source NAT IP is released only when the VPC is removed. @@ -147,38 +147,38 @@ Consider the following before you create a VPC: - A public IP can be used for only one purpose at a time. If the IP is a sourceNAT, it cannot be used for StaticNAT or port forwarding. -- The instances can only have a private IP address that you provision. - To communicate with the Internet, enable NAT to an instance that you +- The Instances can only have a private IP address that you provision. + To communicate with the Internet, enable NAT to an Instance that you launch in your VPC. -- Only new networks can be added to a VPC. The maximum number of - networks per VPC is limited by the value you specify in the +- Only new Networks can be added to a VPC. The maximum number of + Networks per VPC is limited by the value you specify in the vpc.max.networks parameter. The default value is three. -- The load balancing service can be supported by only one tier inside - the VPC. +- The load balancing service can be supported by only one Network Tier + inside the VPC. -- If an IP address is assigned to a tier: +- If an IP address is assigned to a Network Tier: - - That IP can't be used by more than one tier at a time in the VPC. - For example, if you have tiers A and B, and a public IP1, you can + - That IP can't be used by more than one Network Tier at a time in the VPC. + For example, if you have Network Tiers A and B, and a public IP1, you can create a port forwarding rule by using the IP either for A or B, but not for both. - That IP can't be used for StaticNAT, load balancing, or port - forwarding rules for another guest network inside the VPC. + forwarding rules for another guest Network inside the VPC. -- Remote access VPN is not supported in VPC networks. +- Remote access VPN is not supported in VPC Networks. Adding a Virtual Private Cloud ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When creating the VPC, you simply provide the zone and a set of IP -addresses for the VPC network address space. You specify this set of +addresses for the VPC Network address space. You specify this set of addresses in the form of a Classless Inter-Domain Routing (CIDR) block. -#. Log in to the CloudStack UI as an administrator or end user. +#. Log in to the CloudStack UI as an administrator or end User. #. In the left navigation, choose Network. @@ -197,92 +197,105 @@ addresses in the form of a Classless Inter-Domain Routing (CIDR) block. - **Zone**: Choose the zone where you want the VPC to be available. - **CIDR**: Defines the CIDR range for all - the tiers (guest networks) within a VPC. When you create a tier, - ensure that its CIDR is within the Super CIDR value you enter. The - CIDR must be RFC1918 compliant. + the Network Tiers (guest Networks) within a VPC. When you create a + Network Tier, ensure that its CIDR is within the Super CIDR value + you enter. The CIDR must be RFC1918 compliant. - **Network Domain**: If you want to assign a special domain name, specify the DNS suffix. This parameter is applied to - all the tiers within the VPC. That implies, all the tiers you - create in the VPC belong to the same DNS domain. If the parameter - is not specified, a DNS domain name is generated automatically. + all the Network Tiers within the VPC. That implies, all the Network + Tiers you create in the VPC belong to the same DNS domain. If the + parameter is not specified, a DNS domain name is generated automatically. - **VPC Offering**: If the administrator has configured multiple - VPC offerings, select the one you want to use for this VPC + VPC offerings, select the one you want to use for this VPC. + + - **DNS**: A set of custom DNS that will be used by this VPC. If not provided then DNS specified for the zone will be used. Available only when the selected VPC offering supports DNS service. + + - **IPv6 DNS**: A set of custom IPv6 DNS that will be used by this VPC. If not provided then IPv6 DNS specified for the zone will be used. Available only when the selected VPC offering is IPv6 enabled and supports DNS service. + + - **IPv4 address for the VR in this VPC**: The source NAT address or primary public Network address to use by the guest Networks. If not provided then a random address from the available pool of addresses wil be used. + + - **Public MTU**: The MTU to be configured on the public interfaces of the + VPC Network's VR #. Click OK. +.. note:: + * In security groups-enabled Advanced zones and Basic zones, creation of + VPC and isolated Networks are not supported. + * Public MTU option will be shown in the UI and considered only when zone configuration - `allow.end.users.to.specify.vr.mtu` is set to true. Maximum allowed value for public MTU can be controlled by zone-level configuration - `vr.public.interface.max.mtu`. -Adding Tiers -~~~~~~~~~~~~ +Adding Network Tiers +~~~~~~~~~~~~~~~~~~~~ -Tiers are distinct locations within a VPC that act as isolated networks, -which do not have access to other tiers by default. Tiers are set up on -different VLANs that can communicate with each other by using a virtual -router. Tiers provide inexpensive, low latency network connectivity to -other tiers within the VPC. +Network Tiers are distinct locations within a VPC that act as isolated Networks, +which do not have access to other Network Tiers by default. Network Tiers are +set up on different VLANs that can communicate with each other by using a virtual +router. Network Tiers provide inexpensive, low latency Network connectivity to +other Network Tiers within the VPC. -#. Log in to the CloudStack UI as an administrator or end user. +#. Log in to the CloudStack UI as an administrator or end User. #. In the left navigation, choose Network. #. In the Select view, select VPC. - All the VPC that you have created for the account is listed in the + All the VPC that you have created for the Account is listed in the page. .. note:: - The end users can see their own VPCs, while root and domain admin can + The end Users can see their own VPCs, while root and domain admin can see any VPC they are authorized to see. #. Click the Configure button of the VPC for which you want to set up - tiers. + Network Tiers. -#. Click Create network. +#. Click Create Network. - The Add new tier dialog is displayed, as follows: + The Add new Network Tier dialog is displayed, as follows: |add-tier.png| - If you have already created tiers, the VPC diagram is displayed. - Click Create Tier to add a new tier. + If you have already created Network Tiers, the VPC diagram is displayed. + Click Create Network Tier to add a new Network Tier. #. Specify the following: All the fields are mandatory. - - **Name**: A unique name for the tier you create. + - **Name**: A unique name for the Network Tier you create. - - **Network Offering**: The following default network offerings are + - **Network Offering**: The following default Network offerings are listed: Internal LB, DefaultIsolatedNetworkOfferingForVpcNetworksNoLB, DefaultIsolatedNetworkOfferingForVpcNetworks - In a VPC, only one tier can be created by using LB-enabled network + In a VPC, only one Network Tier can be created by using LB-enabled Network offering. - - **Gateway**: The gateway for the tier you create. Ensure that the + - **Gateway**: The gateway for the Network Tier you create. Ensure that the gateway is within the Super CIDR range that you specified while creating the VPC, and is not overlapped with the CIDR of any - existing tier within the VPC. + existing Network Tier within the VPC. - - **VLAN**: The VLAN ID for the tier that the root admin creates. + - **VLAN**: The VLAN ID for the Network Tier that the root admin creates. - This option is only visible if the network offering you selected + This option is only visible if the Network offering you selected is VLAN-enabled. For more information, see `"Assigning VLANs to Isolated Networks" `_. - - **Netmask**: The netmask for the tier you create. + - **Netmask**: The netmask for the Network Tier you create. - For example, if the VPC CIDR is 10.0.0.0/16 and the network tier - CIDR is 10.0.1.0/24, the gateway of the tier is 10.0.1.1, and the - netmask of the tier is 255.255.255.0. + For example, if the VPC CIDR is 10.0.0.0/16 and the Network Tier + CIDR is 10.0.1.0/24, the gateway of the Network Tier is 10.0.1.1, + and the netmask of the Network Tier is 255.255.255.0. #. Click OK. -#. Continue with configuring access control list for the tier. +#. Continue with configuring access control list for the Network Tier. .. _conf-net-acl: @@ -290,34 +303,22 @@ other tiers within the VPC. Configuring Network Access Control List ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Define Network Access Control List (ACL) on the VPC virtual router to -control incoming (ingress) and outgoing (egress) traffic between the VPC -tiers, and the tiers and Internet. By default, all incoming traffic to -the guest networks is blocked and all outgoing traffic from guest -networks is allowed, once you add an ACL rule for outgoing traffic, then -only outgoing traffic specified in this ACL rule is allowed, the rest is -blocked. To open the ports, you must create a new network ACL. The -network ACLs can be created for the tiers only if the NetworkACL service -is supported. +.. note:: +Network Access Control Lists can only be created if the service +"NetworkACL" is supported by the created VPC. +Define a Network Access Control List (ACL) to control incoming +(ingress) and outgoing (egress) traffic between the associated Network Tier +and external Networks (other Network Tiers of the VPC as well as public Networks). About Network ACL Lists ^^^^^^^^^^^^^^^^^^^^^^^ -In CloudStack terminology, Network ACL is a group of Network ACL items. -Network ACL items are nothing but numbered rules that are evaluated in -order, starting with the lowest numbered rule. These rules determine -whether traffic is allowed in or out of any tier associated with the -network ACL. You need to add the Network ACL items to the Network ACL, -then associate the Network ACL with a tier. Network ACL is associated -with a VPC and can be assigned to multiple VPC tiers within a VPC. A -Tier is associated with a Network ACL at all the times. Each tier can be -associated with only one ACL. - -The default Network ACL is used when no ACL is associated. Default -behavior is all the incoming traffic is blocked and outgoing traffic is -allowed from the tiers. Default network ACL cannot be removed or -modified. Contents of the default Network ACL is: +In CloudStack terminology, a Network ACL is a group of Network ACL rules. +Network ACL rules are processed by their order, starting with the lowest +numbered rule. Each rule defines at least an affected protocol, traffic type, +action and affected destination / source Network. The following table shows a +exemplary content of a "default_deny" ACL. .. cssclass:: table-striped table-bordered table-hover @@ -328,17 +329,40 @@ Rule Protocol Traffic type Action CIDR 2 All Egress Deny 0.0.0.0/0 ===== ======== ============ ====== ========= +Each Network ACL is associated with a VPC and can be assigned +to multiple VPC Network Tiers. Every Network Tier needs to be associated with a +Network ACL. Only one ACL can be associated with a Network Tier at a time. If no +custom Network ACL is available at the time of Network Tier creation, a default +Network ACL has to be used instead. Currently two default ACL are +available. The "default_allow" ACL allows in- and egress traffic while +the "default_deny" blocks all in- and egress traffic. Default Network +ACL cannot be removed or modified. Newly created ACLs, while showing +empty, deny all incoming traffic to the associated tier and allow all +outgoing traffic. To change the defaults add a "deny all egress +destination" and / or "allow all ingress source" rule to the ACL. +Afterwards traffic can be white- or blacklisted. + +.. note:: +- ACL Rules in Cloudstack are stateful +- Source / Destination CIDRs are always external Networks +- ACL rules can also been seen on the virtual router of the VPC. Ingress + rules are listed in the table iptables table "filter" while egress rules + are placed in the "mangle" table +- ACL rules for ingress and egress are not correlating. For example a + egress "deny all" won't affect traffic in response to an allowed ingress + connection + Creating ACL Lists ^^^^^^^^^^^^^^^^^^ -#. Log in to the CloudStack UI as an administrator or end user. +#. Log in to the CloudStack UI as an administrator or end User. #. In the left navigation, choose Network. #. In the Select view, select VPC. - All the VPCs that you have created for the account is listed in the + All the VPCs that you have created for the Account is listed in the page. #. Click the Configure button of the VPC. @@ -351,7 +375,7 @@ Creating ACL Lists - Static NAT - - Virtual Machines + - Instances - CIDR @@ -387,7 +411,7 @@ Creating an ACL Rule #. In the Select view, select VPC. - All the VPCs that you have created for the account is listed in the + All the VPCs that you have created for the Account is listed in the page. #. Click the Configure button of the VPC. @@ -488,18 +512,18 @@ Assigning a Custom ACL List to a Tier Adding a Private Gateway to a VPC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -A private gateway can be added by the root admin only. The VPC private +A private gateway can be added by the root admin and Users. The VPC private network has 1:1 relationship with the NIC of the physical network. You can configure multiple private gateways to a single VPC. No gateways with duplicated VLAN and IP are allowed in the same data center. -#. Log in to the CloudStack UI as an administrator or end user. +#. Log in to the CloudStack UI as an administrator or end User. #. In the left navigation, choose Network. #. In the Select view, select VPC. - All the VPCs that you have created for the account is listed in the + All the VPCs that you have created for the Account is listed in the page. #. Click the Configure button of the VPC to which you want to configure @@ -518,7 +542,7 @@ with duplicated VLAN and IP are allowed in the same data center. - Static NAT - - Virtual Machines + - Instances - CIDR @@ -538,14 +562,14 @@ with duplicated VLAN and IP are allowed in the same data center. #. Click Add new gateway: - |add-new-gateway-vpc.png| + |add-new-gateway-vpc2.png| #. Specify the following: - - **Physical Network**: The physical network you have created in the - zone. + - **Physical Network**: (Administrators only) The physical network + you have created in the zone. - - **VLAN**: The VLAN associated with the VPC gateway. + - **VLAN**: (Administrators only) The VLAN associated with the VPC gateway. - **IP Address**: The IP address associated with the VPC gateway. @@ -559,8 +583,13 @@ with duplicated VLAN and IP are allowed in the same data center. See ":ref:`source-nat-priv-gw`". - - **Bypass VLAN id/range overlap**: Bypasses the check for a VLAN - overlap. This way multiple networks with the same VLAN can be created + - **Bypass VLAN id/range overlap**: (Administrators only) Bypasses + the check for a VLAN overlap. This way multiple networks with the + same VLAN can be created + + - **Associated Network**: The L2 or Isolated network this private + gateway is associated to. This private network will use the same + VLAN as the associated network. - **ACL**: Controls both ingress and egress traffic on a VPC private gateway. By default, all the traffic is blocked. @@ -577,11 +606,11 @@ Source NAT on Private Gateway ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You might want to deploy multiple VPCs with the same super CIDR and -guest tier CIDR. Therefore, multiple guest VMs from different VPCs can +guest tier CIDR. Therefore, multiple Guest Instances from different VPCs can have the same IPs to reach a enterprise data center through the private gateway. In such cases, a NAT service need to be configured on the private gateway to avoid IP conflicts. If Source NAT is enabled, the -guest VMs in VPC reaches the enterprise network via private gateway IP +Guest Instances in VPC reaches the enterprise network via private gateway IP address by using the NAT service. The Source NAT service on a private gateway can be enabled while adding @@ -663,39 +692,39 @@ continue functioning. You cannot add a static route if the route is denied for the zone. -Deploying VMs to the Tier -~~~~~~~~~~~~~~~~~~~~~~~~~ +Deploying Instances to the Tier +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#. Log in to the CloudStack UI as an administrator or end user. +#. Log in to the CloudStack UI as an administrator or end User. #. In the left navigation, choose Network. #. In the Select view, select VPC. - All the VPCs that you have created for the account is listed in the + All the VPCs that you have created for the Account is listed in the page. #. Click the Configure button of the VPC to which you want to deploy the - VMs. + Instances. The VPC page is displayed where all the tiers you have created are listed. -#. Click Virtual Machines tab of the tier to which you want to add a VM. +#. Click Instances tab of the tier to which you want to add an Instance. |add-vm-vpc.png| The Add Instance page is displayed. - Follow the on-screen instruction to add an instance. For information - on adding an instance, see the Installation Guide. + Follow the on-screen instruction to add an Instance. For information + on adding an Instance, see the Installation Guide. -Deploying VMs to VPC Tier and Shared Networks -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Deploying Instances to VPC Tier and Shared Networks +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -CloudStack allows you deploy VMs on a VPC tier and one or more shared -networks. With this feature, VMs deployed in a multi-tier application +CloudStack allows you deploy Instances on a VPC tier and one or more shared +networks. With this feature, Instances deployed in a multi-tier application can receive monitoring services via a shared network provided by a service provider. @@ -707,21 +736,21 @@ service provider. #. Select a zone. -#. Select a template or ISO, then follow the steps in the wizard. +#. Select a Template or ISO, then follow the steps in the wizard. #. Ensure that the hardware you have allows starting the selected service offering. -#. Under Networks, select the desired networks for the VM you are +#. Under Networks, select the desired networks for the Instance you are launching. - You can deploy a VM to a VPC tier and multiple shared networks. + You can deploy an Instance to a VPC tier and multiple shared networks. |addvm-tier-sharednw.png| #. Click Next, review the configuration and click Launch. - Your VM will be deployed to the selected VPC tier and shared network. + Your Instance will be deployed to the selected VPC tier and shared network. Acquiring a New IP Address for a VPC @@ -733,17 +762,17 @@ guest network only when the first port-forwarding, load balancing, or Static NAT rule is created for the IP or the network. IP can't be associated to more than one network at a time. -#. Log in to the CloudStack UI as an administrator or end user. +#. Log in to the CloudStack UI as an administrator or end User. #. In the left navigation, choose Network. #. In the Select view, select VPC. - All the VPCs that you have created for the account is listed in the + All the VPCs that you have created for the Account is listed in the page. #. Click the Configure button of the VPC to which you want to deploy the - VMs. + Instances. The VPC page is displayed where all the tiers you created are listed in a diagram. @@ -756,7 +785,7 @@ associated to more than one network at a time. - Static NAT - - Virtual Machines + - Instances - CIDR @@ -782,8 +811,8 @@ associated to more than one network at a time. address in port forwarding, load balancing, and static NAT rules. -Releasing an IP Address Alloted to a VPC -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Releasing an IP Address Allotted to a VPC +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The IP address is a limited resource. If you no longer need a particular IP, you can disassociate it from its VPC and return it to the pool of @@ -792,13 +821,13 @@ when all the networking ( port forwarding, load balancing, or StaticNAT ) rules are removed for this IP address. The released IP address will still belongs to the same VPC. -#. Log in to the CloudStack UI as an administrator or end user. +#. Log in to the CloudStack UI as an administrator or end User. #. In the left navigation, choose Network. #. In the Select view, select VPC. - All the VPCs that you have created for the account is listed in the + All the VPCs that you have created for the Account is listed in the page. #. Click the Configure button of the VPC whose IP you want to release. @@ -814,7 +843,7 @@ still belongs to the same VPC. - Static NAT - - Virtual Machines + - Instances - CIDR @@ -843,26 +872,26 @@ Enabling or Disabling Static NAT on a VPC ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A static NAT rule maps a public IP address to the private IP address of -a VM in a VPC to allow Internet traffic to it. This section tells how to +an Instance in a VPC to allow Internet traffic to it. This section tells how to enable or disable static NAT for a particular IP address in a VPC. If port forwarding rules are already in effect for an IP address, you cannot enable static NAT to that IP. -If a guest VM is part of more than one network, static NAT rules will +If a Guest Instance is part of more than one network, static NAT rules will function only if they are defined on the default network. -#. Log in to the CloudStack UI as an administrator or end user. +#. Log in to the CloudStack UI as an administrator or end User. #. In the left navigation, choose Network. #. In the Select view, select VPC. - All the VPCs that you have created for the account is listed in the + All the VPCs that you have created for the Account is listed in the page. #. Click the Configure button of the VPC to which you want to deploy the - VMs. + Instances. The VPC page is displayed where all the tiers you created are listed in a diagram. @@ -875,7 +904,7 @@ function only if they are defined on the default network. - Static NAT - - Virtual Machines + - Instances - CIDR @@ -904,7 +933,7 @@ function only if they are defined on the default network. |select-vmstatic-nat.png| -#. Select the tier and the destination VM, then click Apply. +#. Select the tier and the destination Instance, then click Apply. Adding Load Balancing Rules on a VPC @@ -916,20 +945,20 @@ the traffic received at a public IP of the VPC virtual router. The traffic is load balanced within a tier based on your configuration. Citrix NetScaler and VPC virtual router are supported for external LB. When you use internal LB service, traffic received at a tier is load -balanced across different VMs within that tier. For example, traffic -reached at Web tier is redirected to another VM in that tier. External +balanced across different Instances within that tier. For example, traffic +reached at Web tier is redirected to another Instance in that tier. External load balancing devices are not supported for internal LB. The service is -provided by a internal LB VM configured on the target tier. +provided by a internal LB Instance configured on the target tier. Load Balancing Within a Tier (External LB) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A CloudStack user or administrator may create load balancing rules that -balance traffic received at a public IP to one or more VMs that belong -to a network tier that provides load balancing service in a VPC. A user +balance traffic received at a public IP to one or more Instances that belong +to a Network Tier that provides load balancing service in a VPC. A user creates a rule, specifies an algorithm, and assigns the rule to a set of -VMs within a tier. +Instances within a tier. Enabling NetScaler as the LB Provider on a VPC Tier @@ -963,7 +992,7 @@ follows: #. Log in to the CloudStack UI as a user or admin. -#. Naviagte to Service Offerings and choose Network Offering. +#. Navigate to Service Offerings and choose Network Offering. #. Click Add Network Offering. @@ -984,7 +1013,7 @@ follows: - **Persistent**: Indicate whether the guest network is persistent or not. The network that you can provision without having to - deploy a VM on it is termed persistent network. + deploy an Instance on it is termed persistent network. - **VPC**: This option indicate whether the guest network is Virtual Private Cloud-enabled. A Virtual Private Cloud (VPC) is a private, @@ -1024,7 +1053,7 @@ Creating an External LB Rule #. In the Select view, select VPC. - All the VPCs that you have created for the account is listed in the + All the VPCs that you have created for the Account is listed in the page. #. Click the Configure button of the VPC, for which you want to @@ -1041,7 +1070,7 @@ Creating an External LB Rule - Static NAT - - Virtual Machines + - Instances - CIDR @@ -1073,7 +1102,7 @@ Creating an External LB Rule - **Public Port**: The port that receives the incoming traffic to be balanced. - - **Private Port**: The port that the VMs will use to receive the + - **Private Port**: The port that the Instances will use to receive the traffic. - **Algorithm**. Choose the load balancing algorithm you want @@ -1090,7 +1119,7 @@ Creating an External LB Rule algorithm for the stickiness policy. See Sticky Session Policies for Load Balancer Rules. - - **Add VMs**: Click Add VMs, then select two or more VMs that will + - **Add Instances**: Click Add Instances, then select two or more Instances that will divide the load of incoming traffic, and click Apply. The new load balancing rule appears in the list. You can repeat these @@ -1116,14 +1145,14 @@ How Does Internal LB Work in VPC? In this figure, a public LB rule is created for the public IP 72.52.125.10 with public port 80 and private port 81. The LB rule, created on the VPC virtual router, is applied on the traffic coming from -the Internet to the VMs on the Web tier. On the Application tier two +the Internet to the Instances on the Web tier. On the Application tier two internal load balancing rules are created. An internal LB rule for the -guest IP 10.10.10.4 with load balancer port 23 and instance port 25 is -configured on the VM, InternalLBVM1. Another internal LB rule for the -guest IP 10.10.10.4 with load balancer port 45 and instance port 46 is -configured on the VM, InternalLBVM1. Another internal LB rule for the -guest IP 10.10.10.6, with load balancer port 23 and instance port 25 is -configured on the VM, InternalLBVM2. +guest IP 10.10.10.4 with load balancer port 23 and Instance port 25 is +configured on the Instance, InternalLBVM1. Another internal LB rule for the +guest IP 10.10.10.4 with load balancer port 45 and Instance port 46 is +configured on the Instance, InternalLBVM1. Another internal LB rule for the +guest IP 10.10.10.6, with load balancer port 23 and Instance port 25 is +configured on the Instance, InternalLBVM2. |vpc-lb.png| @@ -1137,7 +1166,7 @@ Guidelines - Internal LB is supported just on VPC networks in CloudStack 4.2 release. -- Only Internal LB VM can act as the Internal LB provider in CloudStack +- Only Internal LB Instance can act as the Internal LB provider in CloudStack 4.2 release. - Network upgrade is not supported from the network offering with @@ -1169,7 +1198,7 @@ network offering as follows: #. Log in to the CloudStack UI as a user or admin. -#. Naviagte to Service Offerings and choose Network OfferingPublic IP Addresses. +#. Navigate to Service Offerings and choose Network OfferingPublic IP Addresses. #. Click Add Network Offering. @@ -1190,7 +1219,7 @@ network offering as follows: - **Persistent**: Indicate whether the guest network is persistent or not. The network that you can provision without having to - deploy a VM on it is termed persistent network. + deploy an Instance on it is termed persistent network. - **VPC**: This option indicate whether the guest network is Virtual Private Cloud-enabled. A Virtual Private Cloud (VPC) is a private, @@ -1222,13 +1251,13 @@ network offering as follows: Creating an Internal LB Rule '''''''''''''''''''''''''''' -When you create the Internal LB rule and applies to a VM, an Internal LB -VM, which is responsible for load balancing, is created. +When you create the Internal LB rule and applies to an Instance, an Internal LB +Instance, which is responsible for load balancing, is created. -You can view the created Internal LB VM in the Instances page if you +You can view the created Internal LB Instance in the Instances page if you navigate to **Infrastructure** > **Zones** > > > **Network Service Providers** > **Internal -LB VM**. You can manage the Internal LB VMs as and when required from +LB Instance**. You can manage the Internal LB Instances as and when required from the location. #. Log in to the CloudStack UI as an administrator or end user. @@ -1237,7 +1266,7 @@ the location. #. In the Select view, select VPC. - All the VPCs that you have created for the account is listed in the + All the VPCs that you have created for the Account is listed in the page. #. Locate the VPC for which you want to configure internal LB, then @@ -1264,13 +1293,13 @@ the location. specified, the IP address is automatically allocated from the network CIDR. - For every Source IP, a new Internal LB VM is created for load + For every Source IP, a new Internal LB Instance is created for load balancing. - **Source Port**: The port associated with the source IP. Traffic on this port is load balanced. - - **Instance Port**: The port of the internal LB VM. + - **Instance Port**: The port of the internal LB Instance. - **Algorithm**. Choose the load balancing algorithm you want CloudStack to use. CloudStack supports the following well-known @@ -1292,11 +1321,11 @@ Adding a Port Forwarding Rule on a VPC #. In the Select view, select VPC. - All the VPCs that you have created for the account is listed in the + All the VPCs that you have created for the Account is listed in the page. #. Click the Configure button of the VPC to which you want to deploy the - VMs. + Instances. The VPC page is displayed where all the tiers you created are listed in a diagram. @@ -1309,7 +1338,7 @@ Adding a Port Forwarding Rule on a VPC - Static NAT - - Virtual Machines + - Instances - CIDR @@ -1339,7 +1368,7 @@ Adding a Port Forwarding Rule on a VPC - **Public Port**: The port to which public traffic will be addressed on the IP address you acquired in the previous step. - - **Private Port**: The port on which the instance is listening for + - **Private Port**: The port on which the Instance is listening for forwarded public traffic. - **Protocol**: The communication protocol in use between the two @@ -1349,10 +1378,10 @@ Adding a Port Forwarding Rule on a VPC - UDP - - **Add VM**: Click Add VM. Select the name of the instance to which + - **Add Instance**: Click Add Instance. Select the name of the Instance to which this rule applies, and click Apply. - You can test the rule by opening an SSH session to the instance. + You can test the rule by opening an SSH session to the Instance. Removing Tiers @@ -1370,7 +1399,7 @@ belonging to the same VPC. #. In the Select view, select VPC. - All the VPC that you have created for the account is listed in the + All the VPC that you have created for the Account is listed in the page. #. Click the Configure button of the VPC for which you want to set up @@ -1398,7 +1427,7 @@ Editing, Restarting, and Removing a Virtual Private Cloud #. In the Select view, select VPC. - All the VPCs that you have created for the account is listed in the + All the VPCs that you have created for the Account is listed in the page. #. Select the VPC you want to work with. @@ -1421,12 +1450,12 @@ Editing, Restarting, and Removing a Virtual Private Cloud :alt: adding a tier to a vpc. .. |replace-acl-icon.png| image:: /_static/images/replace-acl-icon.png :alt: button to replace an ACL list -.. |add-new-gateway-vpc.png| image:: /_static/images/add-new-gateway-vpc.png +.. |add-new-gateway-vpc2.png| image:: /_static/images/add-new-gateway-vpc2.png :alt: adding a private gateway for the VPC. .. |add-vm-vpc.png| image:: /_static/images/add-vm-vpc.png - :alt: adding a VM to a vpc. + :alt: adding an Instance to a VPC. .. |addvm-tier-sharednw.png| image:: /_static/images/addvm-tier-sharednw.png - :alt: adding a VM to a VPC tier and shared network. + :alt: adding an Instance to a VPC tier and shared network. .. |release-ip-icon.png| image:: /_static/images/release-ip-icon.png :alt: button to release an IP. .. |enable-disable.png| image:: /_static/images/enable-disable.png diff --git a/source/adminguide/networking/vnf_templates_appliances.rst b/source/adminguide/networking/vnf_templates_appliances.rst new file mode 100644 index 0000000000..fcc57bbac9 --- /dev/null +++ b/source/adminguide/networking/vnf_templates_appliances.rst @@ -0,0 +1,181 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + + +VNF Templates and Appliances +======================= + +Virtualized Network Functions (VNFs) refers to virtualized software applications +which offers network services, for example routers, firewalls, load balancers. + + +Adding a VNF template from an URL +------- + +To create a VNF appliance, user needs to register a VNF template and add VNF settings. + +#. Log in to the CloudStack UI as an administrator or end user. + +#. In the left navigation, choose Images -> Templates + +#. Click on the "Register template from URL" button. + +#. Specify the "Template type" to "VNF" + +#. Click on the OK button. + +When the VNF template is registered successfully, you will see the template on +the same page or under Network -> VNF templates. + + For more information, see `“Uploading Templates from a remote HTTP server” + <../templates.html#uploading-templates-from-a-remote-http-server>`_. + + +Updating a VM template to VNF template +------- + +Users are able to update an existing VM template, which is uploaded from +HTTP server or local, or created from volume, to be a VNF template. + +#. Log in to the CloudStack UI as an administrator or end user. + +#. In the left navigation, choose Images -> Templates + +#. Select the VM template you want to work with. + +#. Go into System Preferences -> Network + +#. Change the "Template type" to "VNF" + +#. Click on the OK button. + + +Updating the VNF settings of a VNF template +------------------- + +Users need to add the VNF nics and VNF details of the VNF templates. + +#. Log in to the CloudStack UI as an administrator or end user. + +#. In the left navigation, choose Images -> Templates + +#. Select the VNF template you want to work with. + +#. Click on the "VNF settings" tab of the VNF template + + |vnf-template-vnf-settings.png| + +#. To add VNF nics, click on the "Add VNF nic" button + + |vnf-add-nic.png| + + The following parameters are supported. + + - deviceid: The device ID of the VNF nic. The device id must be consecutive and start from 0. + + - name: The name of the VNF nic. + + - required: True if the VNF nic is required. Otherwise it is optional. It cannot be true if a preceding nic is optional. + + - management: True if the VNF nic is a management interface. False otherwise + + - description: The description of the VNF nic. + + When VNF nics are added, users will see the list of VNF nics. + + |vnf-nics-list.png| + +#. To add VNF details, click on the "Add VNF detail" button + + |vnf-add-detail.png| + + The following parameters are supported. + + - name: The name of the VNF detail. The valid values are: ACCESS_METHODS, + USERNAME, PASSWORD, SSH_USER, SSH_PASSWORD, SSH_PORT, WEB_USER, WEB_PASSWORD, + HTTP_PATH, HTTP_PORT, HTTPS_PATH, HTTPS_PORT, ICON, VERSION, VENDOR and MAINTAINER + + - value: The value of the VNF detail. If the name is access_methods, the valid values are: console, http, https, ssh-key, ssh-password + +#. To edit or remove VNF details, click on the corresponding icon of each VNF detail. + + |vnf-details-list.png| + + +Deploying VNF appliances +------------------- + +#. Log in to the CloudStack UI as an administrator or end user. + +#. In the left navigation, choose Network -> VNF appliances + +#. Click on the "Add VNF Appliance" button. + + For more information, see `“Creating VMs” + <../virtual_machines.html#creating-vms>`_. + +#. Choose the networks you want to add to the VNF appliance + + |vnf-appliance-networks-selection.png| + +#. In the "VNF nics" step, choose the network each VNF nic will use + + |vnf-appliance-vnf-nics.png| + + The following parameters are supported, if the management network is an Isolated + network or Shared network with security groups. + + - Configure rules for VNF management interfaces. False by default. + + - Source cidr list of rules. It is The CIDR list to forward traffic from to the + VNF management interface. Multiple entries must be separated by a single comma + character (,). The default value is 0.0.0.0/0. + + .. note:: + The following network rules will be applied. + + - If management network is an isolated network, CloudStack will acquire a public + IP, enable static nat on the VNF appliance, and create firewall rules to allow + traffic to ssh/http/https ports based on access_methods in VNF template details. + + - If management network is a shared network with security groups, CloudStack will + create a new security group with rules to allow traffic to ssh/http/https ports + based on access_methods in VNF template details, and assign to the VNF appliance. + + - If management network is a L2 network, VPC tier or Shared network without security + groups, no network rules will be configured. + + +#. Click on the "Launch VNF appliance" button + +When the VNF appliance is deployed successfully, you will see the VNF appliance on +the "VNF appliances" page. + + +.. |vnf-template-vnf-settings.png| image:: /_static/images/vnf-template-vnf-settings.png + :alt: VNF settings of VM template +.. |vnf-add-nic.png| image:: /_static/images/vnf-add-nic.png + :alt: Add VNF nic +.. |vnf-nics-list.png| image:: /_static/images/vnf-nics-list.png + :alt: List of VNF nics +.. |vnf-add-detail.png| image:: /_static/images/vnf-add-detail.png + :alt: Add VNF detail +.. |vnf-details-list.png| image:: /_static/images/vnf-details-list.png + :alt: List of VNF details +.. |vnf-appliance-networks-selection.png| image:: /_static/images/vnf-appliance-networks-selection.png + :alt: Select networks for VNF appliance +.. |vnf-appliance-vnf-nics.png| image:: /_static/images/vnf-appliance-vnf-nics.png + :alt: Specify VNF nics of VNF appliance + diff --git a/source/adminguide/networking_and_traffic.rst b/source/adminguide/networking_and_traffic.rst index c0fbe69f03..e2d794921f 100644 --- a/source/adminguide/networking_and_traffic.rst +++ b/source/adminguide/networking_and_traffic.rst @@ -14,7 +14,7 @@ under the License. -In a CloudStack, guest VMs can communicate with each other using shared +In a CloudStack, Guest Instances can communicate with each other using shared infrastructure with the security and user perception that the guests have a private LAN. The CloudStack virtual router is the main component providing networking features for guest traffic. @@ -29,8 +29,12 @@ providing networking features for guest traffic. .. include:: networking/advanced_zone_config.rst +.. include:: networking/manage_guest_networks.rst + .. include:: networking/multiple_guest_networks.rst +.. include:: networking/network_permissions.rst + .. include:: networking/ip_reservation_in_guest_networks.rst .. include:: networking/public_ips_and_vlans_for_accounts.rst @@ -59,6 +63,8 @@ providing networking features for guest traffic. .. include:: networking/releasing_an_ip_address.rst +.. include:: networking/reserving_an_ip_address.rst + .. include:: networking/static_nat.rst .. include:: networking/ip_forwarding_and_firewalling.rst diff --git a/source/adminguide/projects.rst b/source/adminguide/projects.rst index 68ceec0026..791ad89dd4 100644 --- a/source/adminguide/projects.rst +++ b/source/adminguide/projects.rst @@ -17,71 +17,71 @@ Overview of Projects -------------------- -Projects are used to organize people and resources. CloudStack users +Projects are used to organize people and resources. CloudStack Users within a single domain can group themselves into project teams so they -can collaborate and share virtual resources such as VMs, snapshots, -templates, data disks, and IP addresses. CloudStack tracks resource -usage per project as well as per user, so the usage can be billed to -either a user account or a project. For example, a private cloud within +can collaborate and share virtual resources such as Instances, Snapshots, +Templates, data disks, and IP addresses. CloudStack tracks resource +usage per project as well as per User, so the usage can be billed to +either a User Account or a project. For example, a private cloud within a software company might have all members of the QA department assigned to one project, so the company can track the resources used in testing while the project members can more easily isolate their efforts from -other users of the same cloud +other Users of the same cloud -You can configure CloudStack to allow any user to create a new project, +You can configure CloudStack to allow any User to create a new project, or you can restrict that ability to just CloudStack administrators. Once you have created a project, you become that project’s administrator, and you can add others within your domain to the project. CloudStack can be set up to either add people directly to a project, or to send an invitation which the recipient must accept. Project members can view and manage all virtual resources created by anyone in the project -(for example, share VMs). A user can be a member of any number of projects +(for example, share Instances). A User can be a member of any number of projects and can switch views in the CloudStack UI to show only project-related information, -such as project VMs, fellow project members, project-related alerts, and so on. +such as project Instances, fellow project members, project-related alerts, and so on. From CloudStack 4.15 onwards, it is possible for a project to have -multiple project administrators and to add/invite specific users of -an account to a project in addition to adding accounts. By means of -Project Roles associated with a user or an account of the project, -it is possible to restrict access of users in a project, i.e., in -addition to account-level roles, one can further restrict access to +multiple project administrators and to add/invite specific Users of +an Account to a project in addition to adding Accounts. By means of +Project Roles associated with a User or an Account of the project, +it is possible to restrict access of Users in a project, i.e., in +addition to Account-level roles, one can further restrict access to operations (or APIs) by associating a project-level role to the -user or account. However, if an account has already been added, one will not -be able to associate a role to a specific user of that account. +User or Account. However, if an Account has already been added, one will not +be able to associate a role to a specific User of that Account. -**NOTE:** Project Roles work over Account level Roles. If a user/account is +**NOTE:** Project Roles work over Account level Roles. If a User/Account is added to a project without a project role, it would imply that the -user / account added will have access to all APIs that are made available +User / Account added will have access to all APIs that are made available by the Account level role. If there are no specific deny rules in the -project role, it would again fallback onto the account-level role to decide -whether the user has permissions to perform a specific action. It is also to be +project role, it would again fallback onto the Account-level role to decide +whether the User has permissions to perform a specific action. It is also to be noted that Project roles are restrictive in nature, i.e., to say that, one may -not allow a user to perform an operation that is NOT allowed at the Account level. +not allow a User to perform an operation that is NOT allowed at the Account level. Even if a rule is added at the project level, allowing such an action, it will not have any effect as the action will be prohibited by the Account Role. -The project administrator can promote or demote a user in the project. +The project administrator can promote or demote a User in the project. The project administrator can also add more members, remove members from the project, set new resource limits (as long as they are below the global defaults set by the CloudStack administrator), and delete the project. When the administrator removes a member from the -project, resources created by that user, such as VM instances, remain +project, resources created by that User, such as Instances, remain with the project. This brings us to the subject of resource ownership and which resources can be used by a project. Resources created within a project are owned by the project, not by any -particular CloudStack account, and they can be used only within the -project. A user who belongs to one or more projects can still create +particular CloudStack Account, and they can be used only within the +project. A User who belongs to one or more projects can still create resources outside of those projects, and those resources belong to the -user’s account; they will not be counted against the project’s usage or +User’s Account; they will not be counted against the project’s usage or resource limits. You can create project-level networks to isolate traffic within the project and provide network services such as port forwarding, load balancing, VPN, and static NAT. A project can also make use of certain types of resources from outside the project, if those -resources are shared. For example, a shared network or public template +resources are shared. For example, a shared network or public Template is available to any project in the domain. A project can get access to a -private template if the template’s owner will grant permission. A +private Template if the Template’s owner will grant permission. A project can use any service offering or disk offering available in its domain; however, you can not create private service and disk offerings at the project level. @@ -90,7 +90,7 @@ at the project level. Configuring Projects -------------------- -Before CloudStack users start using projects, the CloudStack +Before CloudStack Users start using projects, the CloudStack administrator must set up various systems to support them, including membership invitations, limits on project resources, and controls on who can create projects. @@ -102,7 +102,7 @@ Setting Up Invitations CloudStack can be set up either so that project administrators can add people directly to a project, or so that it is necessary to send an invitation which the recipient must accept. The invitation can be sent -by email or through the user’s CloudStack account. If you want +by email or through the User’s CloudStack Account. If you want administrators to use invitations to add members to projects, turn on and set up the invitations feature in CloudStack. @@ -152,12 +152,11 @@ Setting Resource Limits for Projects The CloudStack administrator can set global default limits to control the amount of resources that can be owned by each project in the cloud. This serves to prevent uncontrolled usage of resources such as -snapshots, IP addresses, and virtual machine instances. Domain -administrators can override these resource limits for individual -projects with their domains, as long as the new limits are below the -global defaults set by the CloudStack root administrator. The root -administrator can also set lower resource limits for any project in the -cloud +Snapshots, IP addresses, and Instances. Domain administrators can override +these resource limits for individual projects with their domains, +as long as the new limits are below the global defaults set by the CloudStack +root administrator. The root administrator can also set lower resource limits +for any project in the cloud. Setting Per-Project Resource Limits ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -209,11 +208,11 @@ Setting the Global Project Resource Limits +--------------------------+------------------------------------------------------------------------------------------------------------------------------+ | max.project.public.ips | Maximum number of public IP addresses that can be owned by any project in the cloud. See About Public IP Addresses. | +--------------------------+------------------------------------------------------------------------------------------------------------------------------+ - | max.project.snapshots | Maximum number of snapshots that can be owned by any project in the cloud. See Working with Snapshots. | + | max.project.snapshots | Maximum number of Snapshots that can be owned by any project in the cloud. See Working with Snapshots. | +--------------------------+------------------------------------------------------------------------------------------------------------------------------+ - | max.project.templates | Maximum number of templates that can be owned by any project in the cloud. See Working with Templates. | + | max.project.templates | Maximum number of Templates that can be owned by any project in the cloud. See Working with Templates. | +--------------------------+------------------------------------------------------------------------------------------------------------------------------+ - | max.project.uservms | Maximum number of guest virtual machines that can be owned by any project in the cloud. See Working With Virtual Machines. | + | max.project.uservms | Maximum number of guest Instances that can be owned by any project in the cloud. See Working With Instances. | +--------------------------+------------------------------------------------------------------------------------------------------------------------------+ | max.project.volumes | Maximum number of data volumes that can be owned by any project in the cloud. See Working with Volumes. | +--------------------------+------------------------------------------------------------------------------------------------------------------------------+ @@ -228,7 +227,7 @@ Setting the Global Project Resource Limits Setting Project Creator Permissions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -You can configure CloudStack to allow any user to create a new project, +You can configure CloudStack to allow any User to create a new project, or you can restrict that ability to just CloudStack administrators. #. Log in as administrator to the CloudStack UI. @@ -241,7 +240,7 @@ or you can restrict that ability to just CloudStack administrators. ``allow.user.create.projects`` - Set to true to allow end users to create projects. Set to false if + Set to true to allow end Users to create projects. Set to false if you want only the CloudStack root administrator and domain administrators to create projects. @@ -257,7 +256,7 @@ Creating a New Project CloudStack administrators and domain administrators can create projects. If the global configuration parameter allow.user.create.projects is set -to true, end users can also create projects. +to true, end Users can also create projects. #. Log in as administrator to the CloudStack UI. @@ -265,7 +264,7 @@ to true, end users can also create projects. #. Click New Project. -#. Give the project a name and description for display to users, then +#. Give the project a name and description for display to Users, then click Create Project. #. A screen appears where you can immediately add more members to the @@ -303,13 +302,13 @@ not turned on, use the procedure in Adding Project Members From the UI. #. Click the name of the project you want to work with. -#. Click on the `Add Account to Project` button. This will have 2 tabs, one to add account to the project and the other to add a user to the project. Here, we can specify the: +#. Click on the `Add Account to Project` button. This will have 2 tabs, one to add Account to the project and the other to add a User to the project. Here, we can specify the: - - account or user and/or email id of the user to be invited, - - (Optional) the Role i.e, Admin or Regular that the user is to be added as, defualts to Regular role, - - (Optional) the Project role specifying the list of APIs the user is allowed/ denied access to + - Account or User and/or email id of the User to be invited, + - (Optional) the Role i.e, Admin or Regular that the User is to be added as, defaults to Regular role, + - (Optional) the Project role specifying the list of APIs the User is allowed/ denied access to - You can invite only people who have an account in this cloud within the same domain as the project. However, you can send the invitation to any email address. + You can invite only people who have an Account in this cloud within the same domain as the project. However, you can send the invitation to any email address. #. To view and manage the invitations you have sent, return to this tab. When an invitation is accepted, the new member will appear in the @@ -332,13 +331,13 @@ Invitations” <#sending-project-membership-invitations>`_. #. Click the name of the project you want to work with. -#. Click on the `Add Account to Project` button. This will have 2 tabs, one to add account to the project and the other to add a user to the project. Here, we can specify the: +#. Click on the `Add Account to Project` button. This will have 2 tabs, one to add Account to the project and the other to add a User to the project. Here, we can specify the: - - account or user and/or email id of the user to be invited, - - (Optional) the Role i.e, Admin or Regular that the user is to be added as, defualts to Regular role, - - (Optional) the Project role specifying the list of APIs the user is allowed/ denied access to + - Account or User and/or email id of the User to be invited, + - (Optional) the Role i.e, Admin or Regular that the User is to be added as, defaults to Regular role, + - (Optional) the Project role specifying the list of APIs the User is allowed/ denied access to -#. You can add only people who have an account in this cloud and within the same domain as the project. +#. You can add only people who have an Account in this cloud and within the same domain as the project. Accepting a Membership Invitation @@ -356,7 +355,7 @@ want to accept the invitation, follow these steps: #. If you see the invitation listed onscreen, click the Accept button. Invitations listed on screen were sent to you using your CloudStack - account name. + Account name. #. If you received an email invitation, click the Enter Token button, and provide the project ID and unique ID code (token) from the email. @@ -370,7 +369,7 @@ can no longer be used. No new resources or members can be added to a suspended project. When a project is deleted, its resources are destroyed, and member -accounts are removed from the project. The project’s status is shown as +Accounts are removed from the project. The project’s status is shown as Disabled pending final deletion. A project can be suspended or deleted by the project administrator, the @@ -403,13 +402,13 @@ and resources. #. Click Project View. -#. The project dashboard appears, showing the project’s VMs, volumes, - users, events, network settings, and more. From the dashboard, you +#. The project dashboard appears, showing the project’s Instances, volumes, + Users, events, network settings, and more. From the dashboard, you can: - Click the Accounts tab to view and manage project members. If you are the project administrator, you can add new members, remove - members, or change the role of a member from user to admin or vice versa. + members, or change the role of a member from User to admin or vice versa. - (If invitations are enabled) Click the Invitations button to view and manage invitations that have been sent to new project members but diff --git a/source/adminguide/reliability.rst b/source/adminguide/reliability.rst index e886097bed..62bdcf5427 100644 --- a/source/adminguide/reliability.rst +++ b/source/adminguide/reliability.rst @@ -23,10 +23,10 @@ failures. The Management Server itself (as distinct from the MySQL database) is stateless and may be placed behind a load balancer. Normal operation of Hosts is not impacted by an outage of all Management -Serves. All guest VMs will continue to work. +Serves. All Guest Instances will continue to work. -When the Management Server is down, no new VMs can be created, and the -end user and admin UI, API, dynamic load distribution, and HA will cease +When the Management Server is down, no new Instances can be created, and the +end User and admin UI, API, dynamic load distribution, and HA will cease to work. .. _management-server-load-balancing: @@ -61,83 +61,253 @@ still available but the system VMs will not be able to contact the management server. -HA-Enabled Virtual Machines ---------------------------- +Multiple Management Servers Support on agents +--------------------------------------------- -The user can specify a virtual machine as HA-enabled. By default, all -virtual router VMs and Elastic Load Balancing VMs are automatically -configured as HA-enabled. When an HA-enabled VM crashes, CloudStack -detects the crash and restarts the VM automatically within the same -Availability Zone. HA is never performed across different Availability -Zones. CloudStack has a conservative policy towards restarting VMs and -ensures that there will never be two instances of the same VM running at -the same time. The Management Server attempts to start the VM on another -Host in the same cluster. +In a Cloudstack environment with multiple management servers, an agent can be +configured, based on an algorithm, to which management server to connect to. +This can be useful as an internal load balancer or for high availability. +An administrator is responsible for setting the list of management servers and +choosing a sorting algorithm using global settings. +The management server is responsible for propagating the settings to the +connected agents (running inside of the Secondary Storage +Virtual Machine, Console Proxy Virtual Machine or the KVM hosts). -HA features work with iSCSI or NFS primary storage. HA with local -storage is not supported. +The three global settings that need to be configured are the following: + +- hosts: a comma separated list of management server IP addresses +- indirect.agent.lb.algorithm: The algorithm for the indirect agent LB +- indirect.agent.lb.check.interval: The preferred host check interval + for the agent's background task that checks and switches to an agent's + preferred host. +These settings can be configured from the global settings page in the UI or +using the updateConfiguration API call. -HA for Hosts ------------- +The indirect.agent.lb.algorithm setting supports following algorithm options: -The user can specify a virtual machine as HA-enabled. By default, all -virtual router VMs and Elastic Load Balancing VMs are automatically -configured as HA-enabled. When an HA-enabled VM crashes, CloudStack -detects the crash and restarts the VM automatically within the same +- static: Use the list of management server IP addresses as provided. +- roundrobin: Evenly spread hosts across management servers, based on the + host's id. +- shuffle: Pseudo Randomly sort the list (this is not recommended for + production). + +.. note:: + The 'static' and 'roundrobin' algorithms, strictly checks for the order as + expected by them, however, the 'shuffle' algorithm just checks for content + and not the order of the comma separate management server host addresses. + +Any changes to the global settings - `indirect.agent.lb.algorithm` and +`host` does not require restarting of the management server(s) and the +agents. A change in these global settings will be propagated to all connected +agents. + +The comma-separated management server list is propagated to agents in +following cases: +- An addition of an agent (including ssvm, cpvm system VMs). +- Connection or reconnection of an agent to a management server. +- After an administrator changes the 'host' and/or the +'indirect.agent.lb.algorithm' global settings. + +On the agent side, the 'host' setting is saved in its properties file as: +`host=@`. + +From the agent's perspective, the first address in the propagated list +will be considered the preferred host. A new background task can be +activated by configuring the `indirect.agent.lb.check.interval` which is +a cluster level global setting from CloudStack and administrators can also +override this by configuring the 'host.lb.check.interval' in the +`agent.properties` file. + +When an agent gets a host and algorithm combination, the host specific +background check interval is also sent and is dynamically reconfigured +in the background task without need to restart agents. + +To make things more clear, consider this example: +Suppose an environment which has 3 management servers: A, B and C and +3 KVM agents. + +Setting 'host' = 'A,B,C', agents will receive lists depending on +'direct.agent.lb' value: + +'static': Each agent will receive the list: 'A,B,C' +'roundrobin': First agent receives: 'A,B,C', second agent +receives: 'B,C,A', third agent receives: 'C,B,A' +'shuffle': Each agent will receive a list in random order. + +HA-Enabled Instances +-------------------- + +The User can specify an Instance as HA-enabled. By default, all +virtual router Instances and Elastic Load Balancing Instances are automatically +configured as HA-enabled. When an HA-enabled Instance crashes, CloudStack +detects the crash and restarts the Instance automatically within the same Availability Zone. HA is never performed across different Availability -Zones. CloudStack has a conservative policy towards restarting VMs and -ensures that there will never be two instances of the same VM running at -the same time. The Management Server attempts to start the VM on another +Zones. CloudStack has a conservative policy towards restarting Instances and +ensures that there will never be two equal Instances running at +the same time. The Management Server attempts to start the Instance on another Host in the same cluster. HA features work with iSCSI or NFS primary storage. HA with local storage is not supported. +.. note:: + HA-Enabled Instances will be restarted when it is detected that the Instance is + crashed beyond a shadow of a doubt. When the host it is running on is + unreachable, either because of Network issue or because it is crashed, + CloudStack can not be sure the disk image of the Instance is not still being + accessed and will not restart the Instance. + Dedicated HA Hosts -~~~~~~~~~~~~~~~~~~ +------------------ -One or more hosts can be designated for use only by HA-enabled VMs that +One or more hosts can be designated for use only by HA-enabled Instances that are restarting due to a host failure. Setting up a pool of such -dedicated HA hosts as the recovery destination for all HA-enabled VMs is +dedicated HA hosts as the recovery destination for all HA-enabled Instances is useful to: -- Make it easier to determine which VMs have been restarted as part of - the CloudStack high-availability function. If a VM is running on a - dedicated HA host, then it must be an HA-enabled VM whose original +- Make it easier to determine which Instances have been restarted as part of + the CloudStack high-availability function. If an Instance is running on a + dedicated HA host, then it must be an HA-enabled Instance whose original host failed. (With one exception: It is possible for an administrator - to manually migrate any VM to a dedicated HA host.). + to manually migrate any Instance to a dedicated HA host.). -- Keep HA-enabled VMs from restarting on hosts which may be reserved +- Keep HA-enabled Instances from restarting on hosts which may be reserved for other purposes. The dedicated HA option is set through a special host tag when the host is created. To allow the administrator to dedicate hosts to only -HA-enabled VMs, set the global configuration variable ha.tag to the +HA-enabled Instances, set the global configuration variable ha.tag to the desired tag (for example, "ha\_host"), and restart the Management Server. Enter the value in the Host Tags field when adding the host(s) -that you want to dedicate to HA-enabled VMs. +that you want to dedicate to HA-enabled Instances. .. note:: If you set ha.tag, be sure to actually use that tag on at least one host in your cloud. If the tag specified in ha.tag is not set for - any host in the cloud, the HA-enabled VMs will fail to restart after + any host in the cloud, the HA-enabled Instances will fail to restart after a crash. +HA-Enabled Hosts +---------------- + +.. note:: + This feature is only applicable to KVM clusters. It is not supported + on for instance VMware or Xen. For those hypervisor types, the Host HA + is left to the VMware-cluster or Xen-pool respectively. + +The User can specify a host as HA-enabled, In the event of a host +failure, attempts will be made to recover the failed host by first +issuing some OOBM commands. If the host recovery fails the host will be +fenced and placed into maintenance mode. To restore the host to normal +operation, manual intervention would then be required. + +Out of band management is a requirement of HA-Enabled hosts and has to be +configured on all intended participating hosts. +(see `“Out of band management” `_). + +Host-HA has granular configuration on a host/cluster/zone level. In a large +environment, some hosts from a cluster can be HA-enabled and some not, + +Host-HA uses a state machine design to manage the operations of recovering +and fencing hosts. The current status of a host is reported when querying a +specific host. + +Timely health investigations are done on HA-Enabled hosts to monitor for +any failures. Specific thresholds can be set for failed investigations, +only when it’s exceeded, will the host transition to a different state. + +Host-HA uses both health checks and activity checks to make decisions on +recovering and fencing actions. Once determined that the host is in faulty +state (health checks failed) it runs activity checks to figure out if there is +any disk activity on the Instances running on the specific host. + +The HA Resource Management Service manages the check/recovery cycle including +periodic execution, concurrency management, persistence, back pressure and +clustering operations. Administrators associate a provider with a partition +type (e.g. KVM HA Host provider to clusters) and may override the provider on a +per-partition (i.e. zone, cluster, or pod) basis. The service operates on all +resources of the type supported by the provider contained in a partition. +Administrators can also enable or disable HA operations globally or on a +per-partition basis. + +Only one (1) HA provider per resource type may be specified for a partition. +Nested HA providers by resource type is not supported (e.g. a pod +specifying an HA resource provider for hosts and a containing cluster +specifying a HA resource provider for hosts). The service is designed to be +opt-in where by only resources with a defined provider and HA enabled will be +managed. + +For each resource in an HA partition, the HA Resource Management Service +maintains and persists an "Finite State Machine" composed of the following +states: + +- AVAILABLE - The feature is enabled and Host-HA is available. +- SUSPECT - There are health checks failing with the host. +- CHECKING - Activity checks are being performed. +- DEGRADED - The host is passing the activity check ratio and still providing + service to the end User, but it cannot be managed from the CloudStack + management server. +- RECOVERING - The Host-HA framework is trying to recover the host by issuing + OOBM jobs. +- RECOVERED - The Host-HA framework has recovered the host successfully. +- FENCING - The Host-HA framework is trying to fence the host by issuing OOBM + jobs. +- FENCED - The Host-HA framework has fenced the host successfully. +- DISABLED - The feature is disabled for the host. +- INELIGIBLE - The feature is enabled, but it cannot be managed successfully by + the Host-HA framework. (OOBM is possibly not configured properly) + +When HA is enabled for a partition, the HA state of all contained resources +will be transitioned from DISABLED to AVAILABLE. Based on the state models, the +following failure scenarios and their responses will be handled by the HA +resource management service: + +- Activity check operation fails on the resource: Provide a semantic in the + activity check protocol to express that an error while performing the + activity check and a reason for the failure (e.g. unable to access the NFS + mount). If the maximum number of activity check attempts has not been + exceeded, the activity check will be retried. + +- Slow activity check operation: After a configurable timeout, the HA resource + management service abandons the check. The response to this condition would + be the same as a failure to recover the resource. + +- Traffic flood due to a large number of resource recoveries: The HA resource + management service must limit the number of concurrent recovery operations + permitted to avoid overwhelming the management server with resource status + updates as recovery operations complete. + +- Processor/memory starvation due to large number of activity check + operations: The HA resource management service must limit the number of + concurrent activity check operations permitted per management server to + prevent checks from starving other management server activities of scarce + processor and/or memory resources. + +- A SUSPECT, CHECKING, or RECOVERING resource passes a health check before the + state action completes: The HA resource management service refreshes the HA + state of the resource before transition. If it does not match the expected + current state, the result of state action is ignored. + +For further information around the inner workings of Host HA, refer +to the design document at +`https://cwiki.apache.org/confluence/display/CLOUDSTACK/Host+HA +`_ + Primary Storage Outage and Data Loss ------------------------------------ When a primary storage outage occurs the hypervisor immediately stops -all VMs stored on that storage device. Guests that are marked for HA +all Instances stored on that storage device. Guests that are marked for HA will be restarted as soon as practical when the primary storage comes -back on line. With NFS, the hypervisor may allow the virtual machines to +back on line. With NFS, the hypervisor may allow the Instances to continue running depending on the nature of the issue. For example, an -NFS hang will cause the guest VMs to be suspended until storage +NFS hang will cause the Guest Instances to be suspended until storage connectivity is restored.Primary storage is not designed to be backed up. Individual volumes in primary storage can be backed up using -snapshots. +Templates. Secondary Storage Outage and Data Loss @@ -145,13 +315,13 @@ Secondary Storage Outage and Data Loss For a Zone that has only one secondary storage server, a secondary storage outage will have feature level impact to the system but will not -impact running guest VMs. It may become impossible to create a VM with -the selected template for a user. A user may also not be able to save -snapshots or examine/restore saved snapshots. These features will +impact running Guest Instances. It may become impossible to create an Instance +with the selected Template for a User. A User may also not be able to save +Templates or examine/restore saved Templates. These features will automatically be available when the secondary storage comes back online. -Secondary storage data loss will impact recently added user data -including templates, snapshots, and ISO images. Secondary storage should +Secondary storage data loss will impact recently added User data +including Templates, Snapshots, and ISO Images. Secondary storage should be backed up periodically. Multiple secondary storage servers can be provisioned within each zone to increase the scalability of the system. diff --git a/source/adminguide/service_offerings.rst b/source/adminguide/service_offerings.rst index 444200cfc1..9a3e690768 100644 --- a/source/adminguide/service_offerings.rst +++ b/source/adminguide/service_offerings.rst @@ -23,7 +23,7 @@ In addition to the physical and logical infrastructure of your cloud and the CloudStack software and servers, you also need a layer of user services so that people can actually make use of the cloud. This means not just a user UI, but a set of options and resources that users can choose from, -such as templates for creating virtual machines, disk storage, and more. +such as Templates for creating Instances, disk storage, and more. If you are running a commercial service, you will be keeping track of what services and resources users are consuming and charging them for that usage. Even if you do not charge anything for people to use your @@ -35,9 +35,9 @@ what services they use and how much of them. Service Offerings, Disk Offerings, Network Offerings, and Templates ------------------------------------------------------------------- -A user creating a new instance can make a variety of choices about its +A user creating a new Instance can make a variety of choices about its characteristics and capabilities. CloudStack provides several ways to -present users with choices when creating a new instance: +present users with choices when creating a new Instance: - Service Offerings, defined by the CloudStack administrator, provide a choice of CPU speed, number of CPUs, RAM size, tags on the root disk, @@ -54,8 +54,8 @@ present users with choices when creating a new instance: - Templates, defined by the CloudStack administrator or by any CloudStack user, are the base OS images that the user can choose from when - creating a new instance. For example, CloudStack includes CentOS as a - template. See Working with Templates. + creating a new Instance. For example, CloudStack includes CentOS as a + Template. See Working with Templates. In addition to these choices that are provided for users, there is another type of service offering which is available only to the CloudStack @@ -91,16 +91,16 @@ Compute and Disk Service Offerings A service offering is a set of virtual hardware features such as CPU core count and speed, memory, and disk size. The CloudStack administrator can set up various offerings, and then end users choose from the -available offerings when they create a new VM. Based on the user’s +available offerings when they create a new Instance. Based on the user’s selected offering, CloudStack emits usage records that can be integrated with billing systems. Compute offerings may be "fixed", "custom constrained" or "custom unconstrained". -In fixed offering the Number of CPUs, Memory and CPU frequecy in each service +In fixed offering the Number of CPUs, Memory and CPU frequency in each service offerings are predefined by the CloudStack administrator, in custom unconstrained offerings they are left undefined so that the end-user can enter their own desired -values when creating a guest instance. Since 4.13 custom constrained offerings have +values when creating a Guest Instance. Since 4.13 custom constrained offerings have been introduced to allow the end-user to enter the number of CPUs and memory required within constraints set by the administrator. The constraints can be different for different custom constrained offerings. This is useful to reduce @@ -108,7 +108,7 @@ the number of offerings the CloudStack administrator has to define; Instead of defining a compute offering for every imaginable combination of values that a user might want, the administrator can define offerings that provide some flexibility to the users and can serve as the basis for several -different VM configurations. +different Instance configurations. A service offering includes the following elements: @@ -121,7 +121,7 @@ A service offering includes the following elements: - How often the charges are generated For example, one service offering might allow users to create a virtual -machine instance that is equivalent to a 1 GHz Intel® Core™ 2 CPU, with +machine Instance that is equivalent to a 1 GHz Intel® Core™ 2 CPU, with 1 GB memory at $0.20/hour, with network traffic metered at $0.10/GB. CloudStack separates service offerings into compute offerings and disk @@ -149,16 +149,36 @@ The disk offering specifies: To support the custom offerings, usage events register events for dynamically -assigned resources. Usage events are registered when a VM is created +assigned resources. Usage events are registered when an Instance is created from a custom compute offering, and upon changing -the compute offering of a stopped or running VM. The values of the +the compute offering of a stopped or running Instance. The values of the parameters, such as CPU, speed, RAM are recorded. Creating a New Compute Offering ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.. image:: /_static/images/compute_offering_dialog.png +Along with the compute details of the Instance, root volume definition is also +included in the compute offering. The root volume specifications can be included +in the computer offering in two ways. One is disk specifications like disk size, +storage type, tags can be included directly in the compute offering. The other way +is linking a disk offering in the compute offering. The linked disk offering will +be used for the root disk while creating the Instance. Users can also choose a different +disk offering for the root volume while creating the Instance. + +Following are the two ways of creating the compute offering. + +1. Create compute only offering + +.. image:: /_static/images/compute_offering_dailog_with_compute_only_disk_offering.png + :width: 400px + :align: center + :alt: Compute offering dialog box + + +2. Create compute offering associated to a disk offering + +.. image:: /_static/images/compute_offering_dailog_with_diskoffering.png :width: 400px :align: center :alt: Compute offering dialog box @@ -182,23 +202,8 @@ To create a new compute offering: - **Description**: A short description of the offering that can be displayed to users - - **Storage type**: The type of disk that should be allocated. Local - allocates from storage attached directly to the host where the - system VM is running. Shared allocates from storage accessible via - NFS. - - - **Provisioning type**: The type of disk that should be allocated. - Valid values are thin, sparse, fat. When using the VMWare hypervisor, - these values are mapped to the following vSphere disk provisioning types: - - - **thin**: **Thin Provision** - - **sparse**: **Thick Provision Lazy Zeroed** - - **fat**: **Thick Provision Eager Zeroed** - - The disk provisioning type strictness on VMWare is controlled with the zone level setting - **disk.provisioning.type.strictness**. If set to true, the disk is created only when there is a suitable storage pool that supports the disk provisioning type specified by the service/disk offering. If set to false, the disk is created with a disk provisioning type supported by the pool. Default value is false and this is currently supported for VMware only. - - **Compute Offering Type**: The amount of freedom that the end user - has to customise the compute power that their instance has when using this + has to customise the compute power that their Instance has when using this compute offering. The options are; Fixed offering - user has no ability to customise, Custom constrained - user has some latitude to customise the compute within parameters set by the offering, @@ -209,101 +214,56 @@ To create a new compute offering: - **# of CPU cores**: The number of cores which should be allocated to a system VM with this offering. If 'Custom constrained' is checked, the admin will be asked to enter the minimum and maximum number of CPUs that a user - can request. If 'Custom unconstrained' is checked, this - field does not appear as the user will be prompted to enter a value when creating their guest instance. + can request. If 'Custom unconstrained' is checked, this field does not appear + as the user will be prompted to enter a value when creating their guest Instance. - - **CPU (in MHz)**: The CPU speed of the cores that the guest instance is + - **CPU (in MHz)**: The CPU speed of the cores that the guest Instance is allocated. For example, “2000” would provide a 2GHz CPU clock speed. **This setting only used if CPU cap is selected.** - This value is also passed to the hypervisor as a share value to give VMs + This value is also passed to the hypervisor as a share value to give Instances relative priority when a hypervisor host is over-provisioned. If 'Custom unconstrained' is checked this field does not appear as the user - will be prompted to enter a value when creating their guest instance. + will be prompted to enter a value when creating their guest Instance. - **Memory (in MB)**: The amount of memory in megabytes that the system VM should be allocated. For example, “2048” would provide a 2 GB RAM allocation. If 'Custom constrained' is selected, the admin will be asked to enter the minimum and maximum amount of RAM that a user can request. If 'Custom unconstrained' is selected, this field does - not appear as the user will be prompted to enter a value when creating their guest instance. - - - **Network Rate**: Allowed data transfer rate in MB per second. + not appear as the user will be prompted to enter a value when creating their guest Instance. - - **Disk Read Rate** [1]_: Allowed disk read rate in bits per second. - - - **Disk Write Rate** [1]_: Allowed disk write rate in bits per second. - - - **Disk Read Rate** [1]_: Allowed disk read rate in IOPS (input/output - operations per second). + - **Host Tags**: (Optional) Any tags that you use to organize your + hosts - - **Disk Write Rate** [1]_: Allowed disk write rate in IOPS (input/output - operations per second). + - **Network Rate**: Allowed data transfer rate in MB per second. - **Offer HA**: If yes, the administrator can choose to have the system VM be monitored and as highly available as possible. - - **QoS Type** [1]_: Three options: Empty (no Quality of Service), hypervisor - (rate limiting enforced on the hypervisor side), and storage - (guaranteed minimum and maximum IOPS enforced on the storage - side). If leveraging QoS, make sure that the hypervisor or storage - system supports this feature. - - - **Custom IOPS** [1]_: If checked, the user can set their own IOPS. If not - checked, the root administrator can define values. If the root - admin does not set values when using storage QoS, default values - are used (the defauls can be overridden if the proper parameters - are passed into CloudStack when creating the primary storage in - question). - - - **Min IOPS** [1]_: Appears only if storage QoS is to be used. Set a - guaranteed minimum number of IOPS to be enforced on the storage - side. - - - **Max IOPS** [1]_: Appears only if storage QoS is to be used. Set a maximum - number of IOPS to be enforced on the storage side (the system may - go above this limit in certain circumstances for short intervals). - - - **Hypervisor Snapshot Reserve** [1]_: For managed storage only. This is - a value that is a percentage of the size of the root disk. For example: - if the root disk is 20 GB and Hypervisor Snapshot Reserve is 200%, the - storage volume that backs the storage repository (XenServer) or - datastore (VMware) in question is sized at 60 GB (20 GB + (20 GB * 2)). - This enables space for hypervisor snapshots in addition to the virtual - disk that represents the root disk. This does not apply for KVM. - - - **Storage Tags**: The tags that should be associated with the - primary storage used by the system VM. - - - **Host Tags**: (Optional) Any tags that you use to organize your - hosts + - **Dynamic Scaling Enabled**: If yes, Instance can be dynamically scalable of cpu or memory - **CPU cap**: Whether to limit the level of CPU usage even if spare capacity is available. - - **Public**: Indicate whether the compute offering should be - available to all domains or only some domains. Choose Yes to make it - available to all domains. Choose No to limit the scope to one or more - specific domains. - - - **Volatile**: If checked, VMs created from this service offering + - **Volatile**: If checked, Instances created from this service offering will have their root disks reset upon reboot. This is useful for secure environments that need a fresh start on every boot and for desktops that should not retain state. - **Deployment Planner**: Choose the technique that you would like - CloudStack to use when deploying VMs based on this service + CloudStack to use when deploying Instances based on this service offering. - - **First Fit**: places new VMs on the first host that is found having - sufficient capacity to support the VM's requirements. + - **First Fit**: places new Instances on the first host that is found having + sufficient capacity to support the Instance's requirements. - - **User Dispersing**: makes the best effort to evenly distribute VMs + - **User Dispersing**: makes the best effort to evenly distribute Instances belonging to the same account on different clusters or pods. - - **User Concentrated**: prefers to deploy VMs belonging to the same + - **User Concentrated**: prefers to deploy Instances belonging to the same account within a single pod. - - **Implicit Dedication**: will deploy VMs on private infrastructure that + - **Implicit Dedication**: will deploy instances on private infrastructure that is dedicated to a specific domain or account. If you choose this planner, then you must also pick a value for Planner Mode. See `Dedicating Resources to Accounts and Domains `_. @@ -312,7 +272,7 @@ To create a new compute offering: Installation in the Installation Guide. - **Planner Mode**: Used when ImplicitDedicationPlanner is selected - in the previous field. The planner mode determines how VMs will be + in the previous field. The planner mode determines how instances will be deployed on private infrastructure that is dedicated to a single domain or account. @@ -322,25 +282,30 @@ To create a new compute offering: be shared between different accounts without violating the desktop software's terms of license. - - Preferred: The VM will be deployed in dedicated infrastructure if - possible. Otherwise, the VM can be deployed in shared infrastructure. + - Preferred: The instance will be deployed in dedicated infrastructure if + possible. Otherwise, the instance can be deployed in shared infrastructure. - **GPU**: Assign a physical GPU(GPU-passthrough) or a portion of a physical - GPU card (vGPU) to the guest VM. It allows graphical applications to run on the VM. + GPU card (vGPU) to the guest instance. It allows graphical applications to run on the instance. Select the card from the supported list of cards. The options given are NVIDIA GRID K1 and NVIDIA GRID K2. These are vGPU capable cards that allow multiple vGPUs on a single physical GPU. If you want to use a card other than these, follow the instructions in the - **"GPU and vGPU support for CloudStack Guest VMs"** page in the + **"GPU and vGPU support for CloudStack Guest instances"** page in the Cloudstack Version 4.4 Design Docs found in the Cloudstack Wiki. - **vGPU Type**: Represents the type of virtual GPU to be assigned to a - guest VM. In this case, only a portion of a physical GPU card (vGPU) is - assigned to the guest VM. + guest instance. In this case, only a portion of a physical GPU card (vGPU) is + assigned to the guest instance. Additionally, the **passthrough vGPU** type is defined to represent a physical GPU - device. A **passthrough vGPU** can directly be assigned to a single guest VM. + device. A **passthrough vGPU** can directly be assigned to a single guest instance. In this case, a physical GPU device is exclusively allotted to a single - guest VM. + guest instance. + + - **Public**: Indicate whether the compute offering should be + available to all domains or only some domains. Choose Yes to make it + available to all domains. Choose No to limit the scope to one or more + specific domains. - **Domain**: This is only visible When 'Public' is unchecked. When visible, this controls the domains which will be able to use this compute offering. A multi-selection @@ -354,11 +319,88 @@ To create a new compute offering: - **Storage Policy**: Name of the storage policy defined at vCenter, this is applicable only for VMware. When a specific Zone is selected, one of the storage policies can be selected from the list box. + - **Compute only Disk Offering**: When this flag is enabled, a compute only disk offering + is created with the disk related information provided and then linked to the compute offering. + Compute only disk offering is specific to the newly created compute offering to record the + disk related information. when this flag is disabled, existing disk offering can be selected to + associate with the compute offering or a new disk offering can be created at the same time and + associate with the compute offering + + When the flag is enabled + + - **Storage type**: The type of disk that should be allocated. Local + allocates from storage attached directly to the host where the + system VM is running. Shared allocates from storage accessible via + NFS. + + - **Provisioning type**: The type of disk that should be allocated. + Valid values are thin, sparse, fat. When using the VMWare hypervisor, + these values are mapped to the following vSphere disk provisioning types: + + - **thin**: **Thin Provision** + - **sparse**: **Thick Provision Lazy Zeroed** + - **fat**: **Thick Provision Eager Zeroed** + + The disk provisioning type strictness on VMWare is controlled with the zone level setting - **disk.provisioning.type.strictness**. If set to true, the disk is created only when there is a suitable storage pool that supports the disk provisioning type specified by the service/disk offering. If set to false, the disk is created with a disk provisioning type supported by the pool. Default value is false and this is currently supported for VMware only. + + - **QoS Type** [1]_: Three options: Empty (no Quality of Service), hypervisor + (rate limiting enforced on the hypervisor side), and storage + (guaranteed minimum and maximum IOPS enforced on the storage + side). If leveraging QoS, make sure that the hypervisor or storage + system supports this feature. + + - **Disk Read Rate** [1]_: Allowed disk read rate in bits per second. + + - **Disk Write Rate** [1]_: Allowed disk write rate in bits per second. + + - **Disk Read Rate** [1]_: Allowed disk read rate in IOPS (input/output + operations per second). + + - **Disk Write Rate** [1]_: Allowed disk write rate in IOPS (input/output + operations per second). + + - **Custom IOPS** [1]_: If checked, the user can set their own IOPS. If not + checked, the root administrator can define values. If the root + admin does not set values when using storage QoS, default values + are used (the defauls can be overridden if the proper parameters + are passed into CloudStack when creating the primary storage in + question). + + - **Min IOPS** [1]_: Appears only if storage QoS is to be used. Set a + guaranteed minimum number of IOPS to be enforced on the storage + side. + + - **Max IOPS** [1]_: Appears only if storage QoS is to be used. Set a maximum + number of IOPS to be enforced on the storage side (the system may + go above this limit in certain circumstances for short intervals). + + - **Hypervisor Snapshot Reserve** [1]_: For managed storage only. This is + a value that is a percentage of the size of the root disk. For example: + if the root disk is 20 GB and Hypervisor Snapshot Reserve is 200%, the + storage volume that backs the storage repository (XenServer) or + datastore (VMware) in question is sized at 60 GB (20 GB + (20 GB * 2)). + This enables space for hypervisor Snapshots in addition to the virtual + disk that represents the root disk. This does not apply for KVM. + + - **Storage Tags**: The tags that should be associated with the + primary storage used by the system VM. + + When the flag is disabled + + - **Add Disk Offering**: Create a new disk offering while creating the compute offering itself. + Once disk offering is created, the new disk offering is auto selected from the below Disk Offerings list. + + - **Disk Offerings**: Select one disk offering from the list with which compute offering will be associated + + - **Disk Offering Strictness**: This flag defines the strictness of the disk offering association + with the compute offering. When set to true, overriding of disk offering is not allowed on deploy instance + and change disk offering is not allowed for the ROOT disk + #. Click Add. -.. [1] These options are dependant on the capabilities of the hypervisor or the shared storage system which the VMs are on. +.. [1] These options are dependant on the capabilities of the hypervisor or the shared storage system which the instances are on. If the hypervisor or underlying storage don't support a particular capability in the offering, the setting will have no effect. @@ -376,6 +418,12 @@ To create a new disk offering: #. Click Add Disk Offering. + .. image:: /_static/images/disk_offering_dailog.png + :width: 400px + :align: center + :alt: Disk offering dialog box + + #. In the dialog, make the following choices: - **Name**: Any desired name for the disk offering. @@ -400,6 +448,9 @@ To create a new disk offering: The disk provisioning type strictness on VMWare is controlled with the zone level setting - **disk.provisioning.type.strictness**. If set to true, the disk is created only when there is a suitable storage pool that supports the disk provisioning type specified by the service/disk offering. If set to false, the disk is created with a disk provisioning type supported by the pool. Default value is false and this is currently supported for VMware only. + - **Disk Size Strictness**: The flag defines the size strictness of the volume created from this disk offering. + When flag is true, volume's size cannot be changed. + - **QoS Type** [2]_: Three options: Empty (no Quality of Service), hypervisor (rate limiting enforced on the hypervisor side), and storage (guaranteed minimum and maximum IOPS enforced on the storage @@ -426,7 +477,7 @@ To create a new disk offering: if the data disk is 20 GB and Hypervisor Snapshot Reserve is 200%, the storage volume that backs the storage repository (XenServer) or datastore (VMware) in question is sized at 60 GB (20 GB + (20 GB * 2)). - This enables space for hypervisor snapshots in addition to the virtual + This enables space for hypervisor Snapshots in addition to the virtual disk that represents the data disk. This does not apply for KVM. - **(Optional)Storage Tags**: The tags that should be associated with @@ -457,7 +508,7 @@ To create a new disk offering: #. Click Add. -.. [2] These options are dependant on the capabilities of the hypervisor or the shared storage system which the VMs are on. +.. [2] These options are dependant on the capabilities of the hypervisor or the shared storage system which the instances are on. If the hypervisor or underlying storage don't support a particular capability in the offering, the setting will have no effect. @@ -473,7 +524,7 @@ click on the update offering access button |update-service-offering-button.png|. A service offering can be deleted. If it is no longer in use, it is deleted immediately and permanently. If the service offering is still in -use, it will remain in the database until all the virtual machines +use, it will remain in the database until all the Instances referencing it have been deleted. After deletion by the administrator, a service offering will not be available to end users that are creating new instances. @@ -484,7 +535,7 @@ System Service Offerings System service offerings provide a choice of CPU speed, number of CPUs, tags, and RAM size, just as other service offerings do. But rather than -being used for virtual machine instances and exposed to users, system +being used for Instance and exposed to users, system service offerings are used to change the default properties of virtual routers, console proxies, and other system VMs. System service offerings are visible only to the CloudStack root administrator. CloudStack @@ -607,13 +658,13 @@ Storage network of Console Proxy VM System Network Offering Management network of Console Proxy VM System Network Offering Storage network of Virtual Router System Network Offering Management network of Virtual Router System Network Offering -Public network of Secondary Storage VM System Network Offering -Public network of Console Proxy VM System Network Offering -Default network of a guest VM Compute Offering -Additional networks of a guest VM Corresponding Network Offerings +Public network of Secondary Storage instance System Network Offering +Public network of Console Proxy instance System Network Offering +Default network of a guest instance Compute Offering +Additional networks of a guest instance Corresponding Network Offerings =========================================== =============================== -A guest VM must have a default network, and can also have many +A guest instance must have a default network, and can also have many additional networks. Depending on various parameters, such as the host and virtual switch used, you can observe a difference in the network rate in your cloud. For example, on a VMware host the actual network @@ -721,3 +772,53 @@ default system offering used for System VMs. #. Destroy the existing CPVM or SSVM offerings and wait for them to be recreated. The new CPVM or SSVM are configured with the new offering. + + +Changing the Default System Offering for Virtual Routers +--------------------------------------------------- + +As a CloudStack administrator, you can change the default system +offering used for Virtual Routers. + +#. Create a new system service offering + + For more information, see `“Creating a New System Offering” + `_. + +#. (Optional) Create a new network offering with SystemOffering + + For more information, see `“Creating a New Network Offering” + `_. + +#. (Optional) Change account setting + + You can change the default system offering for Virtual Routers of a particular + account by changing the account's setting "router.service.offering" to the uuid + of the system offering. + + For more information, see `“Setting Local Configuration Parameters” + <../installguide/configuration.html#setting-local-configuration-parameters>`_. + +#. (Optional) Change global configuration + + You can change the default system offering for Virtual Routers of all accounts + by changing the global configuration "router.service.offering" to the uuid of the system offering. + + For more information, see `“Setting Global Configuration Parameters” + <../installguide/configuration.html#setting-global-configuration-parameters>`_. + +When you create a network, the virtual routers will use the system offering in their Network Offering. +If it is not set, the virtual routers will use the system offering in the account setting. +If the account setting is not set, the virtual routers will use the system offering set in the global configuration. +If the global configuration is not set, the virtual routers will use the default system offering for virtual +routers ("System Offering For Software Router" or "System Offering For Software Router - Local Storage"). + +You can update an existing network to a new network offering. The new virtual routers will use the +new system offering set in the Network Offering, account setting or global configuration. +For more information, see `“Changing the Network Offering on a Guest Network” +`_. + +You can restart the network with cleanup. The new virtual routers, created after the restart, will use +the new system offering, set in the Network Offering, account setting or global configuration. +For more information, see `“Editing, Restarting, and Removing a Guest Network” +`_. diff --git a/source/adminguide/storage.rst b/source/adminguide/storage.rst index 361f6eb64a..be12bd9fce 100644 --- a/source/adminguide/storage.rst +++ b/source/adminguide/storage.rst @@ -63,24 +63,23 @@ Best Practices for Primary Storage Runtime Behavior of Primary Storage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Root volumes are created automatically when a virtual machine is -created. Root volumes are deleted when the VM is destroyed. Data volumes -can be created and dynamically attached to VMs. Data volumes are not -deleted when VMs are destroyed. +Root volumes are created automatically when an Instance is +created. Root volumes are deleted when the Instance is destroyed. Data volumes +can be created and dynamically attached to Instances. Data volumes are not +deleted when Instances are destroyed. Administrators should monitor the capacity of primary storage devices -and add additional primary storage as needed. See the Advanced -Installation Guide. +and add additional primary storage as needed. See :ref:`add-primary-storage`. Administrators add primary storage to the system by creating a CloudStack storage pool. Each storage pool is associated with a cluster or a zone. -With regards to data disks, when a user executes a Disk Offering to +With regards to data disks, when a User executes a Disk Offering to create a data disk, the information is initially written to the CloudStack database only. Upon the first request that the data disk be -attached to a VM, CloudStack determines what storage to place the volume -on and space is taken from that storage (either from preallocated +attached to an Instance, CloudStack determines what storage to place the volume +on and space is taken from that storage (either from pre-allocated storage or from a storage system (ex. a SAN), depending on how the primary storage was added to CloudStack). @@ -108,7 +107,7 @@ Storage media \\ hypervisor VMware vSphere Citrix XenServer **PowerFlex/ScaleIO** No No Yes No ============================================== ================ ==================== =========================== ============================ -XenServer uses a clustered LVM system to store VM images on iSCSI and +XenServer uses a clustered LVM system to store Instance images on iSCSI and Fiber Channel volumes and does not support over-provisioning in the hypervisor. The storage server itself, however, can support thin-provisioning. As a result the CloudStack can still support storage @@ -147,6 +146,30 @@ could provision 1 iSCSI LUN initially and then add a second iSCSI LUN when the first approaches capacity. +Using Multiple Local Storages (KVM only) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Since CloudStack 4.17.0.0, multiple local storages are supported on KVM hosts. + +In order to use multiple local storages, you need to + +#. Enable Local Storage For User VMs in the zone setting + +#. Create local directories on kvm hosts + +#. Edit /etc/cloudstack/agent/agent.properties + + - Add extra directories to "local.storage.path" + - Add UUID of directories to "local.storage.uuid" (UUID can be generated by `uuidgen`) + + .. parsed-literal:: + + local.storage.uuid=a43943c1-1759-4073-9db1-bc0ea19203aa,f5b1220b-4446-42dc-a872-cffd281f9f8c + local.storage.path=/var/lib/libvirt/images,/var/lib/libvirt/images2 + +#. Restart cloudstack-agent service + + Storage Tags ~~~~~~~~~~~~ @@ -183,17 +206,50 @@ The CloudStack will bring the device back online and attempt to start all guests that were running at the time of the entry into maintenance mode. +Browsing files on a primary storage +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Files can be listed at a path on a primary storage using `listStoragePoolObjects` +command or via UI under "Browser" tab for a primary storage. Depending +on the hypervisor, files and directories on a primary storage will get +associated with the cloudstack resources like snapshots, volumes, +templates, and ISOs. + +.. image:: /_static/images/primary-storage-file-browser.png + :align: center + :alt: File browser for primary storage + +.. note:: + If files or folders are not associated with a cloudstack resource, it doesn't mean that they are not used by cloudstack. Secondary Storage ----------------- This section gives concepts and technical details about CloudStack secondary storage. For information about how to install and configure -secondary storage through the CloudStack UI, see the Advanced -Installation Guide. about-secondary-storage>`_ +secondary storage through the CloudStack UI, see :ref:`add-secondary-storage`. + +Browsing files on a secondary storage +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Files can be listed at a path on a secondary storage using `listImageStoreObjects` +command or via UI under "Browser" tab for a secondary storage. Depending +on the hypervisor, files and directories on a primary storage will get +associated with the cloudstack resources like snapshots, volumes, +templates, and ISOs. -Migration of data between secondary storages is now supported. One may choose -to completely migrate the data or migrate data such that the stores +.. image:: /_static/images/secondary-storage-file-browser.png + :align: center + :alt: File browser for secondary storage + +.. note:: + If files or folders are not associated with a cloudstack resource, it doesn't mean that they are not used by cloudstack. + + +Migration of data between secondary storages +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +One may choose to completely migrate the data or migrate data such that the stores are balanced by choosing the appropriate Migration Policy. In order to facilitate distributing the migration load, SSVMs are spawned up if a file transfer takes more than a defined threshold. Following are the Global setting values to one may @@ -212,15 +268,26 @@ want to look at before proceeding with the migration task: | max.data.migration.wait.time | Maximum wait time for a data migration task before spawning a new SSVM | +----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +Selective migration of templates and snapshots across secondary storages is also +possible using the `migrateResourceToAnotherSecondaryStorage` command. Or via UI +under "Browser" tab for a secondary storage. + +Read only +~~~~~~~~~ Secondary storages can also be set to read-only in order to cordon it off -from being used for storing any further templates, volumes and snapshots. +from being used for storing any further Templates, Volumes and Snapshots. + +.. code:: bash + + cmk updateImageStore id=4440f406-b9b6-46f1-93a4-378a75cf15de readonly=true + Working With Volumes -------------------- -A volume provides storage to a guest VM. The volume can provide for a +A volume provides storage to a Guest Instance. The volume can provide for a root disk or an additional data disk. CloudStack supports additional -volumes for guest VMs. +volumes for Guest Instances. Volumes are created for a specific hypervisor type. A volume that has been attached to guest using one hypervisor type (e.g, XenServer) may @@ -228,15 +295,15 @@ not be attached to a guest that is using another hypervisor type, for example:vSphere, KVM. This is because the different hypervisors use different disk image formats. -CloudStack defines a volume as a unit of storage available to a guest -VM. Volumes are either root disks or data disks. The root disk has "/" +CloudStack defines a volume as a unit of storage available to a Guest +Instance. Volumes are either root disks or data disks. The root disk has "/" in the file system and is usually the boot device. Data disks provide -for additional storage, for example: "/opt" or "D:". Every guest VM has -a root disk, and VMs can also optionally have a data disk. End users can -mount multiple data disks to guest VMs. Users choose data disks from the -disk offerings created by administrators. The user can create a template +for additional storage, for example: "/opt" or "D:". Every Guest Instance has +a root disk, and Instances can also optionally have a data disk. End Users can +mount multiple data disks to Guest Instances. Users choose data disks from the +disk offerings created by administrators. The User can create a Template from a volume as well; this is the standard procedure for private -template creation. Volumes are hypervisor-specific: a volume from one +Template creation. Volumes are hypervisor-specific: a volume from one hypervisor type may not be used on a guest of another hypervisor type. .. note:: @@ -253,31 +320,31 @@ hypervisor type may not be used on a guest of another hypervisor type. Creating a New Volume ~~~~~~~~~~~~~~~~~~~~~ -You can add more data disk volumes to a guest VM at any time, up to the +You can add more data disk volumes to a Guest Instance at any time, up to the limits of your storage capacity. Both CloudStack administrators and -users can add volumes to VM instances. When you create a new volume, it +Users can add volumes to Instances. When you create a new volume, it is stored as an entity in CloudStack, but the actual storage resources are not allocated on the physical storage device until you attach the volume. This optimization allows the CloudStack to provision the volume nearest to the guest that will use it when the first attachment is made. -When creating a new volume from an existing ROOT volume snapshot, +When creating a new volume from an existing ROOT Volume Snapshot, it is required to explicitly define a Disk offering (UI will offer only Disk -offerings whose disk size is equal or bigger than the size of the snapshot). +offerings whose disk size is equal or bigger than the size of the Snapshot). |volume-from-snap.png| -When creating a new volume from an existing DATA volume snapshot, the disk offering -associated with the snapshots (inherited from the original volume) is assigned +When creating a new volume from an existing DATA Volume Snapshot, the disk offering +associated with the Snapshots (inherited from the original volume) is assigned to the new volume. Using Local Storage for Data Volumes ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You can create data volumes on local storage (supported with XenServer, -KVM, and VMware). The data volume is placed on the same host as the VM -instance that is attached to the data volume. These local data volumes -can be attached to virtual machines, detached, re-attached, and deleted +KVM, and VMware). The data volume is placed on the same host as the Instance, +that is attached to the data volume. These local data volumes +can be attached to Instances, detached, re-attached, and deleted just as with the other types of data volume. Local storage is ideal for scenarios where persistence of data volumes @@ -287,20 +354,20 @@ latency and cost reduction from using inexpensive local disks. In order for local volumes to be used, the feature must be enabled for the zone. -You can create a data disk offering for local storage. When a user -creates a new VM, they can select this disk offering in order to cause +You can create a data disk offering for local storage. When a User +creates a new Instance, they can select this disk offering in order to cause the data disk volume to be placed in local storage. -You can not migrate a VM that has a volume in local storage to a +You can not migrate an Instance that has a volume in local storage to a different host, nor migrate the volume itself away to a different host. If you want to put a host into maintenance mode, you must first stop any -VMs with local data volumes on that host. +Instances with local data volumes on that host. To Create a New Volume ^^^^^^^^^^^^^^^^^^^^^^ -#. Log in to the CloudStack UI as a user or admin. +#. Log in to the CloudStack UI as a User or admin. #. In the left navigation bar, click Storage. @@ -312,7 +379,7 @@ To Create a New Volume - Name. Give the volume a unique name so you can find it later. - Availability Zone. Where do you want the storage to reside? This - should be close to the VM that will use the volume. + should be close to the Instance that will use the volume. - Disk Offering. Choose the characteristics of the storage. @@ -323,14 +390,14 @@ To Create a New Volume #. To start using the volume, continue to Attaching a Volume -Uploading an Existing Volume to a Virtual Machine -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Uploading an Existing Volume to an Instance +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Existing data can be made accessible to a virtual machine. This is -called uploading a volume to the VM. For example, this is useful to -upload data from a local file system and attach it to a VM. Root -administrators, domain administrators, and end users can all upload -existing volumes to VMs. +Existing data can be made accessible to an Instance. This is +called uploading a volume to the Instance. For example, this is useful to +upload data from a local file system and attach it to an Instance. Root +administrators, domain administrators, and end Users can all upload +existing volumes to Instances. The upload is performed using HTTP. The uploaded volume is placed in the zone's secondary storage @@ -347,7 +414,7 @@ To upload a volume: you are going to upload. After uploading the data disk, CloudStack will use this value to verify that no data corruption has occurred. -#. Log in to the CloudStack UI as an administrator or user +#. Log in to the CloudStack UI as an administrator or User #. In the left navigation bar, click Storage. @@ -359,7 +426,7 @@ To upload a volume: that can be shown in the UI. - Availability Zone. Choose the zone where you want to store the - volume. VMs running on hosts in this zone can attach the volume. + volume. Instances running on hosts in this zone can attach the volume. - Format. Choose one of the following to indicate the disk image format of the volume. @@ -391,9 +458,9 @@ To upload a volume: Attaching a Volume ~~~~~~~~~~~~~~~~~~ -You can attach a volume to a guest VM to provide extra disk storage. +You can attach a volume to a Guest Instance to provide extra disk storage. Attach a volume when you first create a new volume, when you are moving -an existing volume from one VM to another, or after you have migrated a +an existing volume from one Instance to another, or after you have migrated a volume from one storage pool to another. #. Log in to the CloudStack UI as a user or admin. @@ -405,13 +472,13 @@ volume from one storage pool to another. #. Click the volume name in the Volumes list, then click the Attach Disk button |AttachDiskButton.png| -#. In the Instance popup, choose the VM to which you want to attach the - volume. You will only see instances to which you are allowed to - attach volumes; for example, a user will see only instances created +#. In the Instance popup, choose the Instance to which you want to attach the + volume. You will only see Instances to which you are allowed to + attach volumes; for example, a user will see only Instances created by that user, but the administrator will have more choices. #. When the volume has been attached, you should be able to see it by - clicking Instances, the instance name, and View Volumes. + clicking Instances, the Instance name, and View Volumes. Detaching and Moving Volumes @@ -419,62 +486,62 @@ Detaching and Moving Volumes .. note:: This procedure is different from moving volumes from one storage pool - to another as described in `“VM Storage Migration” + to another as described in `“Instance Storage Migration” <#vm-storage-migration>`_. -A volume can be detached from a guest VM and attached to another guest. -Both CloudStack administrators and users can detach volumes from VMs and -move them to other VMs. +A volume can be detached from a Guest Instance and attached to another guest. +Both CloudStack administrators and users can detach volumes from Instances and +move them to other Instances. -If the two VMs are in different clusters, and the volume is large, it -may take several minutes for the volume to be moved to the new VM. +If the two Instances are in different clusters, and the volume is large, it +may take several minutes for the volume to be moved to the new Instance. #. Log in to the CloudStack UI as a user or admin. #. In the left navigation bar, click Storage, and choose Volumes in - Select View. Alternatively, if you know which VM the volume is - attached to, you can click Instances, click the VM name, and click + Select View. Alternatively, if you know which Instance the volume is + attached to, you can click Instances, click the Instance name, and click View Volumes. #. Click the name of the volume you want to detach, then click the Detach Disk button. |DetachDiskButton.png| -#. To move the volume to another VM, follow the steps in +#. To move the volume to another Instance, follow the steps in `“Attaching a Volume” <#attaching-a-volume>`_. -VM Storage Migration +Instance Storage Migration ~~~~~~~~~~~~~~~~~~~~ Supported in XenServer, KVM, and VMware. .. note:: - This procedure is different from moving disk volumes from one VM to + This procedure is different from moving disk volumes from one Instance to another as described in `“Detaching and Moving Volumes” <#detaching-and-moving-volumes>`_. -You can migrate a virtual machine’s root disk volume or any additional +You can migrate an Instance’s root disk volume or any additional data disk volume from one storage pool to another in the same zone. You can use the storage migration feature to achieve some commonly desired administration goals, such as balancing the load on storage -pools and increasing the reliability of virtual machines by moving them +pools and increasing the reliability of Instances by moving them away from any storage pool that is experiencing issues. -On XenServer and VMware, live migration of VM storage is enabled through +On XenServer and VMware, live migration of Instance storage is enabled through CloudStack support for XenMotion and vMotion. Live storage migration -allows VMs to be moved from one host to another, where the VMs are not +allows Instances to be moved from one host to another, where the Instances are not located on storage shared between the two hosts. It provides the option -to live migrate a VM’s disks along with the VM itself. It is possible to -migrate a VM from one XenServer resource pool / VMware cluster to -another, or to migrate a VM whose disks are on local storage, or even to -migrate a VM’s disks from one storage repository to another, all while -the VM is running. +to live migrate an Instance’s disks along with the Instance itself. It is possible to +migrate an Instance from one XenServer resource pool / VMware cluster to +another, or to migrate an Instance whose disks are on local storage, or even to +migrate an Instance’s disks from one storage repository to another, all while +the Instance is running. .. note:: - Because of a limitation in VMware, live migration of storage for a - VM is allowed only if the source and target storage pool are - accessible to the source host; that is, the host where the VM is + Because of a limitation in VMware, live migration of storage for an + Instance is allowed only if the source and target storage pool are + accessible to the source host; that is, the host where the Instance is running when the live migration operation is requested. @@ -484,25 +551,25 @@ Migrating a Data Volume to a New Storage Pool There are two situations when you might want to migrate a disk: - Move the disk to new storage, but leave it attached to the same - running VM. + running Instance. -- Detach the disk from its current VM, move it to new storage, and - attach it to a new VM. +- Detach the disk from its current Instance, move it to new storage, and + attach it to a new Instance. -Migrating Storage For a Running VM -'''''''''''''''''''''''''''''''''' +Migrating Storage For a Running Instance +'''''''''''''''''''''''''''''''''''''''' (Supported on XenServer and VMware) #. Log in to the CloudStack UI as a user or admin. -#. In the left navigation bar, click Instances, click the VM name, and +#. In the left navigation bar, click Instances, click the Instance name, and click View Volumes. #. Click the volume you want to migrate. -#. Detach the disk from the VM. See `“Detaching and +#. Detach the disk from the Instance. See `“Detaching and Moving Volumes” <#detaching-and-moving-volumes>`_ but skip the “reattach” step at the end. You will do that after migrating to new storage. @@ -513,12 +580,12 @@ Migrating Storage For a Running VM Ready. -Migrating Storage and Attaching to a Different VM -''''''''''''''''''''''''''''''''''''''''''''''''' +Migrating Storage and Attaching to a Different Instance +''''''''''''''''''''''''''''''''''''''''''''''''''''''' #. Log in to the CloudStack UI as a user or admin. -#. Detach the disk from the VM. See `“Detaching and +#. Detach the disk from the Instance. See `“Detaching and Moving Volumes” <#detaching-and-moving-volumes>`_ but skip the “reattach” step at the end. You will do that after migrating to new storage. @@ -530,39 +597,44 @@ Migrating Storage and Attaching to a Different VM navigation bar. Make sure that Volumes is displayed at the top of the window, in the Select View dropdown. -#. Attach the volume to any desired VM running in the same cluster as +#. Attach the volume to any desired Instance running in the same cluster as the new storage server. See `“Attaching a Volume” <#attaching-a-volume>`_ -Migrating a VM Root Volume to a New Storage Pool -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Migrating an Instance Root Volume to a New Storage Pool +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -(XenServer, VMware) You can live migrate a VM's root disk from one -storage pool to another, without stopping the VM first. +(XenServer, VMware) You can live migrate an Instance's root disk from one +storage pool to another, without stopping the Instance first. -(KVM) When migrating the root disk volume, the VM must first be stopped, -and users can not access the VM. After migration is complete, the VM can +(KVM) When migrating the root disk volume, the Instance must first be stopped, +and users can not access the Instance. After migration is complete, the Instance can be restarted. #. Log in to the CloudStack UI as a user or admin. -#. In the left navigation bar, click Instances, and click the VM name. +#. In the left navigation bar, click Instances, and click the Instance name. -#. (KVM only) Stop the VM. +#. (KVM only) Stop the Instance. #. Click the Migrate button |Migrateinstance.png| and choose the destination from the dropdown list. .. note:: - If the VM's storage has to be migrated along with the VM, this will + If the Instance's storage has to be migrated along with the Instance, this will be noted in the host list. CloudStack will take care of the storage migration for you. #. Watch for the volume status to change to Migrating, then back to Running (or Stopped, in the case of KVM). This can take some time. -#. (KVM only) Restart the VM. +#. (KVM only) Restart the Instance. + + .. note:: + In case of KVM and PowerFlex/ScaleIO storage, live migration of + Instance's root disk is allowed from one PowerFlex/ScaleIO storage pool + to another, without stopping the Instance. Resizing Volumes @@ -590,7 +662,7 @@ shrinking volumes is not supported on VMware hosts. Before you try to resize a volume, consider the following: -- The VMs associated with the volume are stopped. +- The Instances associated with the volume are stopped. - The data disks associated with the volume are removed. @@ -627,19 +699,19 @@ To resize a volume: #. Click OK. Root Volume size defined via Service Offering -~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If a Service Offering is created with a root disk size, then resizing the Root volume is possible only by resizing the VMs service offering. +If a Service Offering is created with a root disk size, then resizing the Root volume is possible only by resizing the Instances service offering. Service offering Root resizing constrains: -#. Users cannot deploy VMs with custom root disk size when using such offerings +#. Users cannot deploy Instances with custom root disk size when using such offerings -#. Users cannot resize the VM root disk size when using such offerings +#. Users cannot resize the Instance root disk size when using such offerings -#. The Root Volume of such VMs can only be resized when changing to another Service Offering with a Root disk size equals or larger than the current one. +#. The Root Volume of such Instances can only be resized when changing to another Service Offering with a Root disk size equals or larger than the current one. -#. Users can change the VM offering to a service offering with a Root size of 0GB (default) and then customize the volume size. +#. Users can change the Instance offering to a service offering with a Root size of 0GB (default) and then customize the volume size. The following table shows possible combinations of Service offering supported resizing based on the offering Root disk size: @@ -661,19 +733,50 @@ The following table shows possible combinations of Service offering supported re Shrinking the Root disk is not supported via the service offering resizing workflow. All the combinations above assume a transition to Root disks with size equals or bigger than the original. Service Offerings with Root size of 0GB do not change the disk size to Zero and indicates that the offering do not enforces a Root disk size. -Reset VM to New Root Disk on Reboot +Change disk offering for volume ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +There are volume operations like migrate volume and resize volume and both accepts new disk offering to replace the existing disk offering of volume. +Instead of using these APIs directly, the operation can be performed in the UI using change offering in the details view for the volume. +Upon changing the disk offering the volume will be resized and/or migrated to the suitable storage pool if required according to the new disk offering. + +The zone level setting "match.storage.pool.tags.with.disk.offering" gives flexibility or control to choose the new disk offering. +If this setting is true, then the new disk offering should have the same storage tags as the exiting disk offering of the volume. + +To change the disk offering of a volume: + +#. Log in to the CloudStack UI as a user or admin. + +#. In the left navigation bar, click Storage. + +#. In Select View, choose Volumes. + +#. Select the volume name in the Volumes list, then click the Change Offering for Volume button + +#. In the Change Offering For Volume pop-up, choose desired disk offering for the + volume. + + |change-offering-for-volume.png| + + #. If you select Custom Disk, specify a custom size. + + #. Enable or Disable "Auto migrate to another storage pool if required" as needed + +#. Click OK. + +Reset Instance to New Root Disk on Reboot +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + You can specify that you want to discard the root disk and create a new -one whenever a given VM is rebooted. This is useful for secure +one whenever a given Instance is rebooted. This is useful for secure environments that need a fresh start on every boot and for desktops that -should not retain state. The IP address of the VM will not change due to +should not retain state. The IP address of the Instance will not change due to this operation. -**To enable root disk reset on VM reboot:** +**To enable root disk reset on Instance reboot:** When creating a new service offering, set the parameter isVolatile to -True. VMs created from this service offering will have their disks reset +True. Instances created from this service offering will have their disks reset upon reboot. See `“Creating a New Compute Offering” `_. @@ -681,11 +784,19 @@ Offering” `_. Volume Deletion and Garbage Collection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The deletion of a volume does not delete the snapshots that have been -created from the volume +The deletion of a volume does not delete the Snapshots that have been +created from the volume. -When a VM is destroyed, data disk volumes that are attached to the VM -are not deleted. +When an Instance is destroyed, data disk volumes that are attached to the Instance +are not deleted unless specified. + +In managed storage systems such as Solidfire and others, the volume Snapshots +are linked entities in the volumes wherein deletion of the volume would delete +those Snapshots. In such managed storage systems, the volume Snapshots exist on +the primary storage and may not be backed up to the secondary storages. For a +volume deleted in CloudStack, it will not be deleted on the managed storage +(such as Solidfire and others) until all the volume Snapshots are deleted in +CloudStack. Volumes are permanently destroyed using a garbage collection process. The global configuration variables expunge.delay and expunge.interval @@ -700,6 +811,36 @@ determine when the physical deletion of volumes will occur. Administrators should adjust these values depending on site policies around data retention. +Volume Metrics +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Volume statistics are collected on a regular interval (defined by global +setting volume.stats.interval with a default of 600 seconds). +This feature is currently only available for VMware and KVM. +Volume stats include include bytes/s and IO/s statistics as shown in the +API output bellow. + +.. code:: bash + + [root@mgmt]# cmk list volumesmetrics id=272c3d8b-ef2c-499e-abfb-736b54d3d6b1 + { + "count": 1, + "volume": [ + { + ... + "diskiopstotal": 30245, + "diskioread": 22443, + "diskiowrite": 7802, + "diskkbsread": 343124, + "diskkbswrite": 217619, + ... +Bytes read/write, as well as the total IO/s, are exposed via UI, as shown in the image below. + +|volume-metrics.png| + +These statistics are obtained from the hypervisor directly and they represent +"current" bytes/s and IO/s values at the time of collection. + Working with Volume Snapshots ----------------------------- @@ -707,29 +848,34 @@ Working with Volume Snapshots (Supported for the following hypervisors: **XenServer**, **VMware vSphere**, and **KVM**) -CloudStack supports snapshots of disk volumes. Snapshots are a -point-in-time capture of virtual machine disks. Memory and CPU states +CloudStack supports Snapshots of disk volumes. Snapshots are a +point-in-time capture of Instance disks. Memory and CPU states are not captured. If you are using the Oracle VM hypervisor, you can not -take snapshots, since OVM does not support them. +take Snapshots, since OVM does not support them. Snapshots may be taken for volumes, including both root and data disks (except when the Oracle VM hypervisor is used, which does not support -snapshots). The administrator places a limit on the number of stored -snapshots per user. Users can create new volumes from the snapshot for -recovery of particular files and they can create templates from -snapshots to boot from a restored disk. - -Users can create snapshots manually or by setting up automatic recurring -snapshot policies. Users can also create disk volumes from snapshots, -which may be attached to a VM like any other disk volume. Snapshots of +Snapshots). The administrator places a limit on the number of stored +Snapshots per user. Users can create new volumes from the Snapshot for +recovery of particular files and they can create Templates from +Snapshots to boot from a restored disk. + +Users can create Snapshots manually or by setting up automatic recurring +Snapshot policies. Users can also create disk volumes from Snapshots, +which may be attached to an Instance like any other disk volume. Snapshots of both root disks and data disks are supported. However, CloudStack does -not currently support booting a VM from a recovered root disk. A disk -recovered from snapshot of a root disk is treated as a regular data +not currently support booting a Instance from a recovered root disk. A disk +recovered from Snapshot of a root disk is treated as a regular data disk; the data on recovered disk can be accessed by attaching the disk -to a VM. +to an Instance. + +A completed Snapshot is copied from primary storage to secondary +storage, where it is stored until deleted or purged by newer Snapshot. -A completed snapshot is copied from primary storage to secondary -storage, where it is stored until deleted or purged by newer snapshot. +Users can also select the desired zones at the time of taking manual snapshots +or while creating a snapshot policy. When additional zone(s) are selected and +snapshot backup is allowed, the snapshot will be first copied to the secondary +storage of the native zone and then copied to the additional zone(s) from there. How to Snapshot a Volume ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -740,24 +886,24 @@ How to Snapshot a Volume #. In Select View, be sure Volumes is selected. -#. Click the name of the volume you want to snapshot. +#. Click the name of the volume you want to Snapshot. #. Click the Snapshot button. |SnapshotButton.png| KVM volume Snapshot specifics ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In recent CloudStack versions, by default, creating a volume snapshot for a running VM is disabled -due to a possible volume corruption in certain cases. To enable creating a volume snapshots while the VM +In recent CloudStack versions, by default, creating a Volume Snapshot for a running Instance is disabled +due to a possible volume corruption in certain cases. To enable creating a Volume Snapshots while the Instance is running, the global setting 'kvm.snapshot.enabled' must be set to 'True'. -The volume snapshot creation has changed in recent versions: +The Volume Snapshot creation has changed in recent versions: -Under the hood, first, a full VM snapshot is taken - this means that during the taking of -the VM snapshot the VM will be in the "Paused" state (while RAM memory is being written to the -QCOW2 file), which means that VM will be unavailable from the network point of view. -When the VM snapshot is created, VM is unpaused/resumed, the single volume snapshot is exported -to the Secondary Storage, and then the VM snapshots is removed from the VM. +Under the hood, first, a full Instance Snapshot is taken - this means that during the taking of +the Instance Snapshot the Instance will be in the "Paused" state (while RAM memory is being written to the +QCOW2 file), which means that Instance will be unavailable from the Network point of view. +When the Instance Snapshot is created, Instance is unpaused/resumed, the single Volume Snapshot is exported +to the Secondary Storage, and then the Instance Snapshots is removed from the Instance. Automatic Snapshot Creation and Retention @@ -766,20 +912,20 @@ Automatic Snapshot Creation and Retention (Supported for the following hypervisors: **XenServer**, **VMware vSphere**, and **KVM**) -Users can set up a recurring snapshot policy to automatically create -multiple snapshots of a disk at regular intervals. Snapshots can be -created on an hourly, daily, weekly, or monthly interval. One snapshot +Users can set up a recurring Snapshot policy to automatically create +multiple Snapshots of a disk at regular intervals. Snapshots can be +created on an hourly, daily, weekly, or monthly interval. One Snapshot policy can be set up per disk volume. For example, a user can set up a -daily snapshot at 02:30. +daily Snapshot at 02:30. -With each snapshot schedule, users can also specify the number of -scheduled snapshots to be retained. Older snapshots that exceed the +With each Snapshot schedule, users can also specify the number of +scheduled Snapshots to be retained. Older Snapshots that exceed the retention limit are automatically deleted. This user-defined limit must be equal to or lower than the global limit set by the CloudStack administrator. See `“Globally Configured Limits” `_. The limit applies only -to those snapshots that are taken as part of an automatic recurring -snapshot policy. Additional manual snapshots can be created and +to those Snapshots that are taken as part of an automatic recurring +Snapshot policy. Additional manual Snapshots can be created and retained. @@ -787,7 +933,7 @@ Incremental Snapshots and Backup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Snapshots are created on primary storage where a disk resides. After a -snapshot is created, it is immediately backed up to secondary storage +Snapshot is created, it is immediately backed up to secondary storage and removed from primary storage for optimal utilization of space on primary storage. @@ -806,89 +952,172 @@ incremental backups are supported, every N backup is a full backup. Volume Status ~~~~~~~~~~~~~ -When a snapshot operation is triggered by means of a recurring snapshot -policy, a snapshot is skipped if a volume has remained inactive since -its last snapshot was taken. A volume is considered to be inactive if it -is either detached or attached to a VM that is not running. CloudStack -ensures that at least one snapshot is taken since the volume last became +When a Snapshot operation is triggered by means of a recurring Snapshot +policy, a Snapshot is skipped if a volume has remained inactive since +its last Snapshot was taken. A volume is considered to be inactive if it +is either detached or attached to an Instance that is not running. CloudStack +ensures that at least one Snapshot is taken since the volume last became inactive. -When a snapshot is taken manually, a snapshot is always created +When a Snapshot is taken manually, a Snapshot is always created regardless of whether a volume has been active or not. Snapshot Restore ~~~~~~~~~~~~~~~~ -There are two paths to restoring snapshots. Users can create a volume -from the snapshot. The volume can then be mounted to a VM and files -recovered as needed. Alternatively, a template may be created from the -snapshot of a root disk. The user can then boot a VM from this template +There are two paths to restoring Snapshots. Users can create a volume +from the Snapshot. The volume can then be mounted to an Instance and files +recovered as needed. Alternatively, a Template may be created from the +Snapshot of a root disk. The user can then boot an Instance from this Template to effect recovery of the root disk. +Some hypervisor and storage combinations also allow for Instances and volumes +to be reverted from snapshots. In such cases the **Revert to snapshot** action for +a snapshot in the UI or the `revertSnapshot` API can be used to restore the volume +to a particular snapshot. It should be noted that, when supported by the combination +of hypervisor and storage, the snapshot must be available in the zone in which volume +to be restored is present. + +.. note:: + When creating a volume from a snapshot of a DATA disk, it should be noted that + the volume's disk offering must be accessible in the target zone. In case the disk + offering is using storage tags then such tagged storage resources must be available + in the target zone. + + Snapshot Job Throttling ~~~~~~~~~~~~~~~~~~~~~~~ -When a snapshot of a virtual machine is requested, the snapshot job runs -on the same host where the VM is running or, in the case of a stopped -VM, the host where it ran last. If many snapshots are requested for VMs -on a single host, this can lead to problems with too many snapshot jobs +When a Snapshot of an Instance is requested, the Snapshot job runs +on the same host where the Instance is running or, in the case of a stopped +Instance, the host where it ran last. If many Snapshots are requested for Instances +on a single host, this can lead to problems with too many Snapshot jobs overwhelming the resources of the host. To address this situation, the cloud's root administrator can throttle -how many snapshot jobs are executed simultaneously on the hosts in the +how many Snapshot jobs are executed simultaneously on the hosts in the cloud by using the global configuration setting concurrent.snapshots.threshold.perhost. By using this setting, the -administrator can better ensure that snapshot jobs do not time out and +administrator can better ensure that Snapshot jobs do not time out and hypervisor hosts do not experience performance issues due to hosts being -overloaded with too many snapshot requests. +overloaded with too many Snapshot requests. Set concurrent.snapshots.threshold.perhost to a value that represents a -best guess about how many snapshot jobs the hypervisor hosts can execute +best guess about how many Snapshot jobs the hypervisor hosts can execute at one time, given the current resources of the hosts and the number of -VMs running on the hosts. If a given host has more snapshot requests, -the additional requests are placed in a waiting queue. No new snapshot -jobs will start until the number of currently executing snapshot jobs +Instances running on the hosts. If a given host has more Snapshot requests, +the additional requests are placed in a waiting queue. No new Snapshot +jobs will start until the number of currently executing Snapshot jobs falls below the configured limit. The admin can also set job.expire.minutes to place a maximum on how long -a snapshot request will wait in the queue. If this limit is reached, the -snapshot request fails and returns an error message. +a Snapshot request will wait in the queue. If this limit is reached, the +Snapshot request fails and returns an error message. + + +Snapshot Copy +~~~~~~~~~~~~~ + +CloudStack allows copying an exisiting backed-up snapshot to multiple zones. +Users can either use the UI in the snapshot details view or the `copySnapshot` +API to copy a snapshot from one zone to other zone(s). Snapshot copies can +be used for disastser recovery and creating volumes and templates in the +specific zone. Later if not needed, these copies or replicas can be individually +deleted without affecting other replicas. VMware Volume Snapshot Performance ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -When you take a snapshot of a data or root volume on VMware, CloudStack +When you take a Snapshot of a data or root volume on VMware, CloudStack uses an efficient storage technique to improve performance. -A snapshot is not immediately exported from vCenter to a mounted NFS +A Snapshot is not immediately exported from vCenter to a mounted NFS share and packaged into an OVA file format. This operation would consume time and resources. Instead, the original file formats (e.g., VMDK) provided by vCenter are retained. An OVA file will only be created as needed, on demand. To generate the OVA, CloudStack uses information in a properties file (\*.ova.meta) which it stored along with the original -snapshot data. +Snapshot data. .. note:: For upgrading customers: This process applies only to newly created - snapshots after upgrade to CloudStack 4.2. Snapshots that have already + Snapshots after upgrade to CloudStack 4.2. Snapshots that have already been taken and stored in OVA format will continue to exist in that format, and will continue to work as expected. +Linstor Primary Storage +~~~~~~~~~~~~~~~~~~~~~~~ + +LINSTOR is a configuration management system for storage on Linux systems. +It manages LVM logical volumes and/or ZFS ZVOLs on a cluster of nodes. +It leverages DRBD for replication between different nodes and to provide block storage devices +to users and applications. It manages Snapshots, encryption and caching of HDD backed data in SSDs via bcache. + +LINSTOR can be used as volume storage provider for Cloudstack, it currently only supports KVM hypervisors. +To get started first setup your LINSTOR cluster according to the `LINSTOR User Guide `_ + +.. note:: + Make sure a LINSTOR-Satellite is running on all nodes where you want to have a storage provided for you Instances + and that the nodes have the exact same node names as the nodes in Cloudstack. + Also add a resource group to LINSTOR which you intend to use in Cloudstack. + +After you are finished with the LINSTOR cluster setup, you can add a Cloudstack primary storage as any other +primary storage see :ref:`add-primary-storage`. +For protocol choose ``Linstor`` and as server specify the controller REST-API URL e.g.: ``http://127.0.0.1:3370`` +and use the resource group name you added in the LINSTOR cluster. + +Object Storage +--------------- + +This section gives technical details about CloudStack +object storage. For more information about the concepts behind object storage +see :ref:`about-object-storage` . For information about how to install and configure +object storage through the CloudStack UI, see the in the Installation Guide. + + +Creating a New Bucket +~~~~~~~~~~~~~~~~~~~~~ + +Buckets are logical containers for storing objects. To create a New Bucket: + +#. Log in to the CloudStack UI as a user or administrator. + +#. In the left navigation bar, click Storage. + +#. In Select View, choose Buckets. + +To create a new bucket, click create Bucket, provide the following details, and click OK. + +#. Name: Give the bucket a unique name. + +#. Object Store: Select the object store where you want the Bucket to reside + +Based on the selected Object Store, you can specify additional details like quota, encryption, policy. + +|Createbucket.png| + + .. |AttachDiskButton.png| image:: /_static/images/attach-disk-icon.png :alt: Attach Disk Button. .. |resize-volume-icon.png| image:: /_static/images/resize-volume-icon.png :alt: button to display the resize volume option. .. |resize-volume.png| image:: /_static/images/resize-volume.png :alt: option to resize a volume. +.. |change-offering-for-volume.png| image:: /_static/images/change-offering-for-volume.png + :alt: option to change offering for a volume. .. |SnapshotButton.png| image:: /_static/images/SnapshotButton.png :alt: Snapshot Button. .. |DetachDiskButton.png| image:: /_static/images/detach-disk-icon.png :alt: Detach Disk Button. .. |Migrateinstance.png| image:: /_static/images/migrate-instance.png :alt: button to migrate a volume. +.. |volume-metrics.png| image:: /_static/images/volume-metrics.png + :alt: Volume metrics .. |volume-from-snap.png| image:: /_static/images/volume-from-snap.png - :alt: Offering is needed when creating a volume from the ROOT volume snapshot. + :alt: Offering is needed when creating a volume from the ROOT Volume Snapshot. +.. |Createbucket.png| image:: /_static/images/add-bucket.png + :alt: Create Bucket diff --git a/source/adminguide/systemvm.rst b/source/adminguide/systemvm.rst index 6b5a5338cc..cdda0cab9d 100644 --- a/source/adminguide/systemvm.rst +++ b/source/adminguide/systemvm.rst @@ -14,7 +14,7 @@ under the License. -CloudStack uses several types of system virtual machines to perform +CloudStack uses several types of system Instances to perform tasks in the cloud. In general CloudStack manages these system VMs and creates, starts, and stops them as needed based on scale and immediate needs. However, the administrator should be aware of them and their @@ -24,7 +24,7 @@ roles to assist in debugging issues. The System VM Template ---------------------- -The System VMs come from a single template. The System VM has the +The System VMs come from a single Template. The System VM has the following characteristics: - Debian 10.8(buster), 4.19.0 kernel with the latest security @@ -50,10 +50,10 @@ following characteristics: Changing the Default System VM Template --------------------------------------- -Using the 64-bit template should be use with a System Offering of at least 512MB +The 64-bit template should be used with a System Offering of at least 512MB of memory. -#. Based on the hypervisor you use, download the 64-bit template from +#. Based on the hypervisor you use, download the 64-bit Template - e.g. from the following location: .. cssclass:: table-striped table-bordered table-hover @@ -69,22 +69,25 @@ of memory. #. As an administrator, log in to the CloudStack UI -#. Register the 64 bit template. +#. Register the 64 bit Template. For example: KVM64bitTemplate -#. While registering the template, select Routing. +#. While registering the Template, select Routing. -#. Navigate to Infrastructure > Zone > Settings. +#. Navigate to Configuration, Global Settings: -#. Set the name of the 64-bit template, KVM64bitTemplate, in the +#. Set the name of the 64-bit Template, KVM64bitTemplate, in the *``router.template.kvm``* global parameter. - If you are using a XenServer 64-bit template, set the name in the - *``router.template.xen``* global parameter. + If you are using a XenServer 64-bit Template, set the name in the + *``router.template.xenserver``* global parameter. + + If you are using a VMware 64-bit Template, set the name in the + *``router.template.vmware``* global parameter. Any new virtual router created in this Zone automatically picks up - this template. + this Template. #. Restart the Management Server. @@ -137,11 +140,11 @@ System VMs running on ESXi, the key is stored on the management server at Multiple System VM Support for VMware ------------------------------------- -Every CloudStack zone has single System VM for template processing tasks -such as downloading templates, uploading templates, and uploading ISOs. +Every CloudStack zone has single System VM for Template processing tasks +such as downloading Templates, uploading Templates, and uploading ISOs. In a zone where VMware is being used, additional System VMs can be -launched to process VMware-specific tasks such as taking snapshots and -creating private templates. The CloudStack management server launches +launched to process VMware-specific tasks such as taking Snapshots and +creating private Templates. The CloudStack management server launches additional System VMs for VMware-specific tasks as the load increases. The management server monitors and weights all commands sent to these System VMs and performs dynamic load balancing and scaling-up of more @@ -161,12 +164,12 @@ Clicking a console icon brings up a new window. The console viewer into that window refers to the public IP address of a console proxy VM. There is exactly one public IP address allocated per console proxy VM. The viewer application connects to this IP. The console proxy then proxies -the connection to the VNC port for the requested VM on the Host hosting +the connection to the VNC port for the requested instance on the Host hosting the guest. Since 4.15, noVNC has been integrated into the console proxy and is the default viewer. It inherently supports multiple keyboard layouts configured -in the guest virtual machine. Additionally, it can scale the display as +in the Guest Instance. Additionally, it can scale the display as well as paste into the console. noVNC is set as the default console viewer which be changed via the @@ -184,16 +187,67 @@ to the Management Server. The default reporting interval is five seconds. This can be changed through standard Management Server configuration with the parameter consoleproxy.loadscan.interval. -Assignment of guest VM to console proxy is determined by first -determining if the guest VM has a previous session associated with a +Assignment of Guest Instance to console proxy is determined by first +determining if the Guest Instance has a previous session associated with a console proxy. If it does, the Management Server will assign the guest -VM to the target Console Proxy VM regardless of the load on the proxy +instance to the target Console Proxy VM regardless of the load on the proxy VM. Failing that, the first available running Console Proxy VM that has the capacity to handle new sessions is used. Console proxies can be restarted by administrators but this will interrupt existing console sessions for users. +Creating an Instance Console Endpoint +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The access to an instance console is created by the API 'createConsoleEndpoint', +for the instance specified in the parameter 'virtualmachineid'. By default, +the CloudStack UI connects to the URL that this API generates. + +The response of the 'createConsoleEndpoint' API also contain the information +to create a websocket session to the VNC server on the console proxy, this +information includes: the host, port, path and token parameters required to +establish a websocket session, bypassing the VNC client on the console proxy. + +It is possible to add extra validation for the console proxy authentication, +with the following configurations: + +- ‘consoleproxy.extra.security.validation.enabled’: Enable/disable extra security + validation for console proxy using a token + +When ‘consoleproxy.extra.security.validation.enabled’ is true: then CloudStack +requests the ‘token’ parameter to the ‘createConsoleEndpoint’ API. The console URL +retrieved on the API response includes an ‘extra’ parameter for users validation on +the console proxy. + +When the console proxy receives a request including the ‘extra’ parameter it +will decode the ‘token’ parameter and uses the original token to compare it with +the ‘extra’ token. Only in case both matches, then the console access is allowed. + +When ‘consoleproxy.extra.security.validation.enabled’ is false: then CloudStack +does not require a token for validation. + +The websocket port is passed as a boot argument to the console proxy and the +management server decides between the secure or unsecure port (8443 or 8080) when +setting the boot arguments for the CPVM. + +- The secure port 8443 is sent as a boot argument when: + + - The setting ‘consoleproxy.sslEnabled’ is true + + - The setting ‘consoleproxy.url.domain’ is not empty + + - There is a record on the ‘keystore’ database with name ‘CPVMCertificate’ + +- In any other case, then the port 8080 is selected + + +Administrators must ensure a new console proxy VM is recreated after changing +the value of any of the settings. Once the console proxy VM is recreated, +the new VNC server port will be used as the websocket traffic port. The console proxy +VM startup will also ensure a new iptable rule is added for the new VNC port, +allowing the traffic on it. + Using a SSL Certificate for the Console Proxy ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -207,10 +261,10 @@ communication with SSL: - Set up a SSL wild-card certificate and domain name resolution -- Set up SSL certificate for specific FQDN and configure load-balancer +- Set up SSL certificate for specific FQDN and configure a load-balancer with optional ssl offloading. -Changing the Console Proxy SSL Certificate and Domain +Changing the Console Proxy SSL Certificate and Domains ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The administrator can configure SSL encryption by selecting a domain @@ -307,7 +361,7 @@ http://123.123.123.123:8080/client/api?command=uploadCustomCertificate&...&name= Here names are "root1" and "intermed1". If you used other names previously, please check the cloud.keystore table to obtain used names. -If you still have problems and folowing errors in management.log while destroying CPVM: +If you still have problems and following errors in management.log while destroying CPVM: - Unable to build keystore for CPVMCertificate due to CertificateException - Cold not find and construct a valid SSL certificate @@ -321,17 +375,46 @@ are still in default PEM format (no URL encoding needed here). After editing the database, please restart management server, and destroy SSVM and CPVM after that, so the new SSVM and CPVM with new certificates are created. -Load-balancing Console Proxies -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Load-balancing Console Proxies / Secondary Storage VMs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ An alternative to using dynamic DNS or creating a range of DNS entries as described in the last section would be to create a SSL certificate for a specific domain name, configure CloudStack to use that particular FQDN, and then configure a load balancer to load balance the console -proxy's IP address behind the FQDN. As the functionality for this is -still new, please see +proxy's IP address behind the FQDN. When using a load balancer it is +also possible to perform SSL-Offloading, so no certificate needs to be +configured on CloudStack itself. For further information please see https://cwiki.apache.org/confluence/display/CLOUDSTACK/Realhost+IP+changes for more details. +These ports needed to be configured for load-balancing: + +- 443 to 443 (to CPVM) +- 8080 to 8080 (to CPVM) +- 443 to 443 (to SSVM) + +SSL-Offloading with Load-balancing for Console Proxies / Secondary Storage VMs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +To implement SSL-Offloading you need 2 public IP addresses (one for Console Proxy and one for Secondary Storage VM) which +each of them resolve to a different FQDN and terminate at the load balancer. Also 3 global settings need to be edited. + +- The setting ‘consoleproxy.url.domain’ to the FQDN used by the certificate (For example: cpvm.company.com) +- The setting ‘secstorage.ssl.cert.domain’ to the FQDN used by the certificate (For example: ssvm.company.com) +- The setting ‘secstorage.encrypt.copy’ to true + +.. warning:: + For sake of security you should block direct public access to the IP of Console Proxy and Secondary Storage VM. It is also + possible to add a fake public IP range to CloudStack which uses internal IP addresses for SystemVM use only. Please + be aware that the load balancer needs access to the used IP addresses to forward traffic. + +After edited global settings mentioned above you need to recreate both System VMs by destroying them. CloudStack will recreate +them with the new settings automatically. + +When using SSL-Offloading you need to configure following ports on the load balancer after adding the correct certificate to the public IP of each FQDN: + +- lb-publicip1:443 to CPVM:80 +- lb-publicip1:8080 to CPVM:8080 +- lb-publicip2:443 to SSVM:80 Virtual Router -------------- @@ -347,7 +430,7 @@ There is no mechanism for the administrator to log in to the virtual router. Virtual routers can be restarted by administrators, but this will interrupt public network access and other services for end users. A basic test in debugging networking issues is to attempt to ping the -virtual router from a guest VM. Some of the characteristics of the +virtual router from a Guest Instance. Some of the characteristics of the virtual router are determined by its associated system service offering. @@ -506,7 +589,7 @@ to the virtual router This happens in the following steps: 1. Management server periodically pushes data to each running virtual router -including schedule intervals, tests to skip, some configuration for LB, VMs, +including schedule intervals, tests to skip, some configuration for LB, instances, Gateways, etc. 2. Basic and advanced tests as scheduled as per the intervals in the data sent @@ -527,7 +610,7 @@ fresh checks is expensive and will cause management server doing the following: c. Fetch the result of the health check from router to be sent back in response. -4. The patch also supports custom health checks with custom systemVM templates. +4. The patch also supports custom health checks with custom systemVM Templates. This is achieved as follows: a. Each executable script placed in '/root/health_scripts/' is considered an @@ -559,7 +642,7 @@ This is achieved as follows: wanted commands and print some output to STDOUT; otherwise if it receives 'advanced' as the first parameter, it should not execute any commands/logic nor print anything to STDOUT -5. There are 9 health check scripts written in default systemvm template in '/root/health_checks/' +5. There are 9 health check scripts written in default systemvm Template in '/root/health_checks/' folder. These indicate the health checks described in executive summary. 6. The management server will connect periodically to each virtual router to confirm that the @@ -610,7 +693,7 @@ Following global configs have been added for configuring health checks: - ``router.health.checks.to.exclude`` - Health checks that should be excluded when executing scheduled checks on the router. This can be a comma separated list of script names placed in the '/root/health_checks/' folder. Currently the following - scripts are placed in default systemvm template - cpu_usage_check.py, + scripts are placed in default systemvm Template - cpu_usage_check.py, disk_space_check.py, gateways_check.py, iptables_check.py, router_version_check.py, dhcp_check.py, dns_check.py, haproxy_check.py, memory_usage_check.py. @@ -644,7 +727,7 @@ Details of individual checks: d. Memory usage check against a threshold – we use 'free' utility to get the used memory and compare that with the configured max memory usage threshold. - e. Router template and scripts version check – is done by comparing the contents + e. Router Template and scripts version check – is done by comparing the contents of the '/etc/cloudstack-release' and '/var/cache/cloud/cloud-scripts-signature' with the data given by management server. @@ -654,10 +737,10 @@ Details of individual checks: 2. Advanced checks: a. DNS config match against MS – this is checked by comparing entries of '/etc/hosts' - on the VR and VM records passed by management server. + on the VR and instance records passed by management server. b. DHCP config match against MS – this is checked by comparing entries of - '/etc/dhcphosts.txt' on the VR with the VM entries passed by management server. + '/etc/dhcphosts.txt' on the VR with the instance entries passed by management server. c. HA Proxy config match against MS (internal LB and public LB) - this is checked by verifying the max connections, and entries for each load balancing rule in the @@ -740,7 +823,7 @@ Supported Virtual Routers Upgrading Virtual Routers ^^^^^^^^^^^^^^^^^^^^^^^^^ -#. Download the latest System VM template. +#. Download the latest System VM Template. #. Download the latest System VM to all the primary storage pools. @@ -754,7 +837,7 @@ Upgrading Virtual Routers # cloudstack-sysvmadm -d -u cloud -p -s Even when the VRs are still on older versions, existing services will - continue to be available to the VMs. The Management Server cannot + continue to be available to the instances. The Management Server cannot perform any operations on the VRs until they are upgraded. #. Selectively upgrade the VRs: @@ -797,12 +880,12 @@ In addition to the hosts, CloudStack’s Secondary Storage VM mounts and writes to secondary storage. Submissions to secondary storage go through the Secondary Storage VM. -The Secondary Storage VM can retrieve templates and ISO images from URLs +The Secondary Storage VM can retrieve Templates and ISO images from URLs using a variety of protocols. The secondary storage VM provides a background task that takes care of a -variety of secondary storage activities: downloading a new template to a -Zone, copying templates between Zones, and snapshot backups. +variety of secondary storage activities: downloading a new Template to a +Zone, copying Templates between Zones, and Snapshot backups. The administrator can log in to the secondary storage VM if needed. @@ -810,7 +893,7 @@ The administrator can log in to the secondary storage VM if needed. .. |update-ssl.png| image:: /_static/images/update-ssl.png :alt: Updating Console Proxy SSL Certificate .. |vr-upgrade.png| image:: /_static/images/vr-upgrade.png - :alt: Button to upgrade VR to use the new template. + :alt: Button to upgrade VR to use the new Template. Migrating System VMs -------------------- @@ -822,7 +905,9 @@ Since CloudStack 4.16, for VMware, migration of System VMs can also be done to a Troubleshoot networks from System VMs ------------------------------------- .. |run-diagnostics-icon.png| image:: /_static/images/run-diagnostics-icon.png +.. |get-diagnostics-icon.png| image:: /_static/images/get-diagnostics-icon.png .. |diagnostics-form.png| image:: /_static/images/diagnostics-form.png +.. |diagnostics-data-form.png| image:: /_static/images/diagnostics-data-form.png For troubleshooting of network issues in CloudStack hosted networks, CloudStack allows the administrator to execute network-utility commands (ping, traceroute or arping) @@ -843,8 +928,8 @@ To run either a ping, traceroute or arping through the CloudStack UI: The Extra Args parameter is for specifying command line optional parameters as one would when executing any of the tools from the terminal or command line. -The supported versions are Debian 9 based since system VMs are built using the -same Debian 9 based templates. +The supported versions are Debian 10 based since system VMs are built using the +same Debian 10 based Templates. | See: | Traceroute(1): https://manpages.debian.org/stretch/traceroute/traceroute.1.en.html @@ -855,3 +940,97 @@ same Debian 9 based templates. Non-Alphanumeric characters (metacharacters) are not allowed for this parameter except for the “-“ and the “.”. Any metacharacter supplied will immediately result in an immediate termination of the command and report back to the operator that an illegal character was passed + +Get Diagnostics Data +~~~~~~~~~~~~~~~~~~~~ + +For further troubleshooting, a set of files can be retrieved from any system VM +by using the Get Diagnostics feature, either via the UI or an API call. The +files are compressed and a URL is returned where the diagnostics data can be +retrieved. + +#. As an administrator, log in to the CloudStack UI. + +#. Navigate to Infrastructure > System VMs or Virtual Routers. + +#. Click on the Get Diagnostics button. |get-diagnostics-icon.png| + +#. A form will pop up similar to this; + + |diagnostics-data-form.png| + +#. Click OK. + +#. Wait for the URL to generate and click it to download the zipped up + diagnostics files. + +The following files are retrieved by default for the Virtual Router and +is configurable using a global setting: ‘diagnostics.data.router.defaults’ + +iptables, ipaddr, iproute, /etc/cloudstack-release, /etc/dnsmasq.conf, +/etc/dhcphosts.txt, /etc/dhcpopts.txt, /etc/dnsmasq.d/cloud.conf, +/etc/dnsmasq-resolv.conf, /var/lib/misc/dnsmasq.leases, /var/log/dnsmasq.log, +/etc/hosts, /etc/resolv.conf, /etc/haproxy/haproxy.cfg, /var/log/haproxy.log, +/etc/ipsec.d/l2tp.conf, /var/log/cloud.log, /var/log/routerServiceMonitor.log, +/var/log/daemon.log" + +The following files are retrieved by default for the Secondary Storage VM +and Console Proxy VM and is configurable using a global setting: +‘diagnostics.data.systemvm.defaults’ + +"iptables, ipaddr, iproute, /etc/cloudstack-release, +/usr/local/cloud/systemvm/conf/agent.properties, +/usr/local/cloud/systemvm/conf/consoleproxy.properties, /var/log/cloud.log, +/var/log/patchsystemvm.log /var/log/daemon.log" + +These global settings are all dynamic and do not require a restart of the +management server in order for changes to be effective. The names wrapped in +square brackets are for data types that need to first execute a script in the +system vm and grab output for retrieval, e.g. the output from iptables-save is +written to a file which will then be retrieved. This also allows an admin to +pack their own custom scripts in the system VMs that can be executed and their +output will be redirected to a text file that will be retrieved. + +The API also has an optional parameter ‘files’ which can be used for retrieving +specific files. This parameter has to be the absolute path to where the file +exists on the file system. + +The output from any command/script can be retrieved by wrapping the name with +square brackets which will be executed and its output redirected to a file with +a name similar to the name in square brackets in lower case. For example, a +user can package their own custom script in the system VM called +myscript.py/sh, the user will then retrieve output of this script by specifying +it as ‘[MYSCRIPT]’ as either input parameter to files or setting it as a global +setting. the API will then execute this script and redirect its output to a +file called ‘myscript.log’. This could also be any command that can be executed +from the shell and its output will be gathered and retrieved. + +Additional global settings can be configured related to garbage collection of +generated diagnostics data files and are as follows: + +* diagnostics.data.gc.enable + + Enables the garbage collector background task to delete old files. Changing + this setting requires a management server restart. The default value is True + +* diagnostics.data.gc.interval + + The interval at which the garbage collector background tasks in seconds. This + setting requires a management server restart. The default value is 86400 + (Once a day). + +* diagnostics.data.retrieval.timeout + + The overall system VM script execution time out in seconds. This setting does + not require a management server restart. The default value is 1800. + +* diagnostics.data.max.file.age + + Sets the maximum time in seconds a file can stay in storage before it is + deleted. The default value is 86400 (1 day). + +* diagnostics.data.disable.threshold + + Sets the secondary storage disk utilisation percentage for file retrieval. + An exception is thrown when no secondary store is found with a lower capacity + than the specified value. The default value is 0.95 (95 %). diff --git a/source/adminguide/templates.rst b/source/adminguide/templates.rst index e15272ab5a..7429c6ed48 100644 --- a/source/adminguide/templates.rst +++ b/source/adminguide/templates.rst @@ -16,79 +16,79 @@ Working With Templates ======================= -A template is a reusable configuration for virtual machines. When users -launch VMs, they can choose from a list of templates in CloudStack. +A Template is a reusable configuration for Instances. When Users +launch Instances, they can choose from a list of Templates in CloudStack. -Specifically, a template is a virtual disk image that includes one of a +Specifically, a Template is a virtual disk image that includes one of a variety of operating systems, optional additional software such as office applications, and settings such as access control to determine -who can use the template. Each template is associated with a particular -type of hypervisor, which is specified when the template is added to +who can use the Template. Each Template is associated with a particular +type of hypervisor, which is specified when the Template is added to CloudStack. -CloudStack ships with a default template. In order to present more -choices to users, CloudStack administrators and users can create -templates and add them to CloudStack. +CloudStack ships with a default Template. In order to present more +choices to Users, CloudStack administrators and Users can create +Templates and add them to CloudStack. Creating Templates: Overview ---------------------------- -CloudStack ships with a default template for the CentOS operating -system. There are a variety of ways to add more templates. -Administrators and end users can add templates. The typical sequence of +CloudStack ships with a default Template for the CentOS operating +system. There are a variety of ways to add more Templates. +Administrators and end Users can add Templates. The typical sequence of events is: -#. Launch a VM instance that has the operating system you want. Make any - other desired configuration changes to the VM. +#. Launch an Instance that has the operating system you want. Make any + other desired configuration changes to the Instance. -#. Stop the VM. +#. Stop the Instance. -#. Convert the volume into a template. +#. Convert the volume into a Template. -There are other ways to add templates to CloudStack. For example, you -can take a snapshot of the VM's volume and create a template from the -snapshot, or import a VHD from another system into CloudStack. +There are other ways to add Templates to CloudStack. For example, you +can take a Snapshot of the Instance's volume and create a Template from the +Snapshot, or import a VHD from another system into CloudStack. -The various techniques for creating templates are described in the next +The various techniques for creating Templates are described in the next few sections. Requirements for Templates -------------------------- -- For XenServer, install PV drivers / Xen tools on each template that +- For XenServer, install PV drivers / Xen tools on each Template that you create. This will enable live migration and clean guest shutdown. -- For vSphere, install VMware Tools on each template that you create. +- For vSphere, install VMware Tools on each Template that you create. This will enable console view to work properly. Best Practices for Templates ---------------------------- -If you plan to use large templates (100 GB or larger), be sure you have -a 10-gigabit network to support the large templates. A slower network -can lead to timeouts and other errors when large templates are used. +If you plan to use large Templates (100 GB or larger), be sure you have +a 10-gigabit Network to support the large Templates. A slower Network +can lead to timeouts and other errors when large Templates are used. The Default Template -------------------- -CloudStack includes a CentOS template. This template is downloaded by +CloudStack includes a CentOS Template. This Template is downloaded by the Secondary Storage VM after the primary and secondary storage are -configured. You can use this template in your production deployment or -you can delete it and use custom templates. +configured. You can use this Template in your production deployment or +you can delete it and use custom Templates. -The root password for the default template is "password". +The root password for the default Template is "password". -A default template is provided for each of XenServer, KVM, and vSphere. -The templates that are downloaded depend on the hypervisor type that is -available in your cloud. Each template is approximately 2.5 GB physical +A default Template is provided for each of XenServer, KVM, and vSphere. +The Templates that are downloaded depend on the hypervisor type that is +available in your cloud. Each Template is approximately 2.5 GB physical size. -The default template includes the standard iptables rules, which will -block most access to the template excluding ssh. +The default Template includes the standard iptables rules, which will +block most access to the Template excluding ssh. .. code:: bash @@ -121,35 +121,35 @@ block most access to the template excluding ssh. Private and Public Templates ---------------------------- -When a user creates a template, it can be designated private or public. +When a User creates a Template, it can be designated private or public. -Private templates are only available to the user who created them. By -default, an uploaded template is private. +Private Templates are only available to the User who created them. By +default, an uploaded Template is private. -When a user marks a template as “public,” the template becomes available -to all users in all accounts in the user's domain, as well as users in -any other domains that have access to the Zone where the template is +When a User marks a Template as “public,” the Template becomes available +to all Users in all Accounts in the User's domain, as well as Users in +any other domains that have access to the Zone where the Template is stored. This depends on whether the Zone, in turn, was defined as private or public. A private Zone is assigned to a single domain, and a -public Zone is accessible to any domain. If a public template is created -in a private Zone, it is available only to users in the domain assigned -to that Zone. If a public template is created in a public Zone, it is -available to all users in all domains. +public Zone is accessible to any domain. If a public Template is created +in a private Zone, it is available only to Users in the domain assigned +to that Zone. If a public Template is created in a public Zone, it is +available to all Users in all domains. -Creating a Template from an Existing Virtual Machine ----------------------------------------------------- +Creating a Template from an Existing Instance +--------------------------------------------- -Once you have at least one VM set up in the way you want, you can use it -as the prototype for other VMs. +Once you have at least one Instance set up in the way you want, you can use it +as the prototype for other Instances. -#. Create and start a virtual machine using any of the techniques given - in `“Creating VMs” `_. +#. Create and start an Instance using any of the techniques given + in `“Creating Instances” `_. -#. Make any desired configuration changes on the running VM, then click +#. Make any desired configuration changes on the running Instance, then click Stop. -#. Wait for the VM to stop. When the status shows Stopped, go to the +#. Wait for the Instance to stop. When the status shows Stopped, go to the next step. #. Go into "View Volumes" and select the Volume having the type "ROOT". @@ -163,13 +163,13 @@ as the prototype for other VMs. certain operations and make assumptions that improve the performance of the guest. Select one of the following. - - If the operating system of the stopped VM is listed, choose it. + - If the operating system of the stopped Instance is listed, choose it. - - If the OS type of the stopped VM is not listed, choose Other. + - If the OS type of the stopped Instance is not listed, choose Other. - - If you want to boot from this template in PV mode, choose Other + - If you want to boot from this Template in PV mode, choose Other PV (32-bit) or Other PV (64-bit). This choice is available only - for XenServere: + for XenServer: .. note:: Generally you should not choose an older version of the OS @@ -178,35 +178,35 @@ as the prototype for other VMs. In those cases you should choose Other. - - **Public**. Choose Yes to make this template accessible to all - users of this CloudStack installation. The template will appear in + - **Public**. Choose Yes to make this Template accessible to all + Users of this CloudStack installation. The Template will appear in the Community Templates list. See `“Private and Public Templates” <#private-and-public-templates>`_. - - **Password Enabled**. Choose Yes if your template has the + - **Password Enabled**. Choose Yes if your Template has the CloudStack password change script installed. See :ref:`adding-password-management-to-templates`. #. Click Add. -The new template will be visible in the Templates section when the -template creation process has been completed. The template is then -available when creating a new VM. +The new Template will be visible in the Templates section when the +Template creation process has been completed. The Template is then +available when creating a new Instance. .. note:: - Since version 4.15, CloudStack obtains information from the VMware templates - automatically at registration time. If a template contains different deployment + Since version 4.15, CloudStack obtains information from the VMware Templates + automatically at registration time. If a Template contains different deployment options (or configurations) as in the case of virtual appliances, then CloudStack - display the information required by the template, allowing users or administrators - to configure their instances. + display the information required by the Template, allowing Users or administrators + to configure their Instances. Creating a Template from a Snapshot ----------------------------------- -If you do not want to stop the VM in order to use the Create Template +If you do not want to stop the Instance in order to use the Create Template menu item (as described in `“Creating a Template from an Existing -Virtual Machine” <#creating-a-template-from-an-existing-virtual-machine>`_), -you can create a template directly from any snapshot through the +Instance” <#creating-a-template-from-an-existing-virtual-machine>`_), +you can create a Template directly from any Snapshot through the CloudStack UI. @@ -218,15 +218,15 @@ Uploading Templates from a remote HTTP server vSphere Templates and ISOs ^^^^^^^^^^^^^^^^^^^^^^^^^^ .. warning:: - If you are uploading a template that was created using vSphere Client, + If you are uploading a Template that was created using vSphere Client, be sure the OVA file does not contain an ISO. If it does, the deployment - of VMs from the template will fail + of Instances from the Template will fail Templates are uploaded based on a URL. HTTP is the supported access protocol. Templates are frequently large files. You can optionally gzip them to decrease upload times. -To upload a template: +To upload a Template: #. In the left navigation bar, click Templates. @@ -240,11 +240,11 @@ To upload a template: - **URL**. The Management Server will download the file from the specified URL, such as ``http://my.web.server/filename.vhd.gz``. - - **Zone**. Choose the zone where you want the template to be + - **Zone**. Choose the zone where you want the Template to be available, or All Zones to make it available throughout CloudStack. - - **Read VM settings from OVA**. (VMware only) If selected, the registered template will allow users to deploy VMs as clones of the template, including all their properties, configurations, end-user license agreements, disks, os type, etc. This option allows users to register virtual appliances. See `Support for Virtual Appliances `_. + - **Read Instance settings from OVA**. (VMware only) If selected, the registered Template will allow Users to deploy Instances as clones of the Template, including all their properties, configurations, end-user license agreements, disks, os type, etc. This option allows Users to register virtual appliances. See `Support for Virtual Appliances `_. .. note:: When this option is selected the following fields are hidden: Root disk controller, Keyboard type and OS Type. @@ -253,9 +253,9 @@ To upload a template: certain operations and make assumptions that improve the performance of the guest. Select one of the following: - - If the operating system of the stopped VM is listed, choose it. + - If the operating system of the stopped Instance is listed, choose it. - - If the OS type of the stopped VM is not listed, choose Other. + - If the OS type of the stopped Instance is not listed, choose Other. .. note:: You should not choose an older version of the OS than the @@ -264,35 +264,42 @@ To upload a template: those cases you should choose Other. .. note:: - Since version 4.15.1, VMware templates do not allow users or administrators - selecting an OS Type when registering a template if the option 'Read VM settings from OVA' is selected. In this case, the OS Type is - obtained from the template after it is registered. + Since version 4.15.1, VMware Templates do not allow Users or administrators + selecting an OS Type when registering a Template if the option 'Read Instance settings from OVA' is selected. In this case, the OS Type is + obtained from the Template after it is registered. + + - **Userdata**: The registered Userdata are listed. Select the + desired one. + + - **Userdata link policy**: Select the userdata override policy as required. + For more information on userdata and override link policy, please check `Userdata section `_. + - **Hypervisor**: The supported hypervisors are listed. Select the desired one. - - **Format**. The format of the template upload file, such as VHD or + - **Format**. The format of the Template upload file, such as VHD or OVA. - - **Extractable**. Choose Yes if the template is available for - extraction. If this option is selected, end users can download a - full image of a template. + - **Extractable**. Choose Yes if the Template is available for + extraction. If this option is selected, end Users can download a + full image of a Template. - - **Public**. Choose Yes to make this template accessible to all - users of this CloudStack installation. The template will appear in + - **Public**. Choose Yes to make this Template accessible to all + Users of this CloudStack installation. The Template will appear in the Community Templates list. See `“Private and Public Templates” <#private-and-public-templates>`_. - - **Featured**. Choose Yes if you would like this template to be - more prominent for users to select. The template will appear in + - **Featured**. Choose Yes if you would like this Template to be + more prominent for Users to select. The Template will appear in the Featured Templates list. Only an administrator can make a - template Featured. + Template Featured. -Note that uploading multi-disk templates is also supported. +Note that uploading multi-disk Templates is also supported. .. note:: - VMware only: If the template is registered with the option 'Read VM settings - from OVA' then the VM deployment wizard will display all the available OVF + VMware only: If the Template is registered with the option 'Read Instance settings + from OVA' then the Instance deployment wizard will display all the available OVF properties, different deployment options or configurations, multiple NICs or end-user license agreements. @@ -307,8 +314,8 @@ Note that uploading multi-disk templates is also supported. Uploading Templates and ISOs from a local computer ------------------------------------------- -It's also possible to upload an already prepared template or an ISO from your local computer. -The steps are similar as when Uploading a template/ISO from a remote HTTP server, except that you need to choose a local template/ISO file from your PC. +It's also possible to upload an already prepared Template or an ISO from your local computer. +The steps are similar as when Uploading a Template/ISO from a remote HTTP server, except that you need to choose a local Template/ISO file from your PC. For this feature to work, your SSVMs must be supporting HTTPS (for more info please visit `“Using a SSL Certificate for the Console Proxy” `_). @@ -318,68 +325,68 @@ Example GUI dialog of uploading Template/ISO from local (browser) is given below |upload-iso-from-local.png| -Note that uploading multi-disk templates is also supported. +Note that uploading multi-disk Templates is also supported. -Sharing templates and ISOs with other accounts/projects ----------------------------------------------- +Sharing Templates and ISOs with other Accounts/projects +------------------------------------------------------- -When adding a template/ISO, the owner can choose to make template/ISO public or to keep it private. Once the template/ISO is created, the owner can choose to share this template/ISO so that other accounts/projects can also use the template/ISO. +When adding a Template/ISO, the owner can choose to make Template/ISO public or to keep it private. Once the Template/ISO is created, the owner can choose to share this Template/ISO so that other Accounts/Projects can also use the Template/ISO. -Currently, the owners can share their template/ISO with: - - other accounts inside their own domain (i.e. can't share the template/ISO with other accounts in the subdomain of their domain or any other domains) +Currently, the owners can share their Template/ISO with: + - other Accounts inside their own domain (i.e. can't share the Template/ISO with other Accounts in the subdomain of their domain or any other domains) - projects where they belongs to (i.e. projects where they are the owners/creators or other projects where they have been joined) -Template/ISO permissions can be changed via updateTemplatePermissions/updateIsoPermissions API call or via GUI. It is supported to add, remove or reset (remove all) template/ISO permissions. +Template/ISO permissions can be changed via updateTemplatePermissions/updateIsoPermissions API call or via GUI. It is supported to add, remove or reset (remove all) Template/ISO permissions. -When adding or removing permissions to/from a template/ISO, it is required to specify account/project name which is being added/removed from the template/ISO permissions. +When adding or removing permissions to/from a Template/ISO, it is required to specify Account/Project name which is being added/removed from the Template/ISO permissions. -Global setting "allow.user.view.all.domain.accounts" has a default value of "false". This makes sure that when the regular users (of a "User" role) wants to share a template/ISO via GUI, they will not be shown the list of all accounts in their domain and they will need to know the name of the destination account with which they are sharing the template/ISO. This makes sense in public clouds where each account of a single domain is a different tenant/customer and privacy is imperative. In this case, the user will be presented with an input field to enter the account name, as on the images below: +Global setting "allow.user.view.all.domain.accounts" has a default value of "false". This makes sure that when the regular Users (of a "User" role) wants to share a Template/ISO via GUI, they will not be shown the list of all Accounts in their domain and they will need to know the name of the destination Account with which they are sharing the Template/ISO. This makes sense in public clouds where each Account of a single domain is a different tenant/customer and privacy is imperative. In this case, the User will be presented with an input field to enter the Account name, as on the images below: .. warning:: - The images displayed below refer to template permissions, but the same applies for ISO permissions. + The images displayed below refer to Template permissions, but the same applies for ISO permissions. |template-permissions-update-manually-1.png| -Sharing the template with account "user2" +Sharing the Template with Account "user2" |template-permissions-update-manually-2.png| -Revoking permissions from account "user2" +Revoking permissions from Account "user2" -But in environments where privacy within a domain is not an issue, setting "allow.user.view.all.domain.accounts" setting to "true" will make sure that the user, who is sharing the template, will be presented a more user-friendly multi-select list, listing all the accounts in their domain. This is shown in the images below; +But in environments where privacy within a domain is not an issue, setting "allow.user.view.all.domain.accounts" setting to "true" will make sure that the User, who is sharing the Template, will be presented a more User-friendly multi-select list, listing all the Accounts in their domain. This is shown in the images below; |template-permissions-update-1.png| -Sharing the template with just account "user8" +Sharing the Template with just Account "user8" |template-permissions-update-2.png| -Sharing template with 2 specific projects +Sharing Template with 2 specific projects |template-permissions-update-3.png| -Revoking permissions from account "user8" +Revoking permissions from Account "user8" |template-permissions-update-4.png| Revoking permissions from both projects previously added -Finally, template permissions can be reset: +Finally, Template permissions can be reset: |template-permissions-update-5.png| Resetting (removing all) permissions .. warning:: - Project-owned templates are not supported to be shared outside of + Project-owned Templates are not supported to be shared outside of the Project, and if attempted to do so, a proper error message is shown. Exporting Templates ------------------- -End users and Administrators may export templates from the CloudStack. -Navigate to the template in the UI and choose the Download function from +End Users and Administrators may export Templates from the CloudStack. +Navigate to the Template in the UI and choose the Download function from the Actions menu. .. include:: templates/_create_linux.rst @@ -396,36 +403,42 @@ the Actions menu. Deleting Templates ------------------ -Templates may be deleted. In general, when a template spans multiple +Templates may be deleted. However when the Templates are used the default +behaviour is to refuse deletion. In general, when a Template spans multiple Zones, only the copy that is selected for deletion will be deleted; the -same template in other Zones will not be deleted. The provided CentOS -template is an exception to this. If the provided CentOS template is +same Template in other Zones will not be deleted. The provided CentOS +Template is an exception to this. If the provided CentOS Template is deleted, it will be deleted from all Zones. -When templates are deleted, the VMs instantiated from them will continue -to run. However, new VMs cannot be created based on the deleted -template. +When Templates are deleted, the Instances instantiated from them will continue +to run. However, new Instances cannot be created based on the deleted +Template. + +As said, Cloudstack refuses to delete a template when VMs based on the +template exist. If this is the case, the parameter "forced" can be set +to "true" to delete the template anyways. These VMs can no longer be +reinstalled from that template, but will be unaffected otherwise. Working with ISOs =================== -CloudStack supports ISOs and their attachment to guest VMs. An ISO is a +CloudStack supports ISOs and their attachment to Guest Instances. An ISO is a read-only file that has an ISO/CD-ROM style file system. Users can -upload their own ISOs and mount them on their guest VMs. +upload their own ISOs and mount them on their Guest Instances. ISOs are uploaded based on a URL. HTTP is the supported protocol. Once the ISO is available via HTTP specify an upload URL such as http://my.web.server/filename.iso. -ISOs may be public or private, like templates.ISOs are not +ISOs may be public or private, like Templates.ISOs are not hypervisor-specific. That is, a guest on vSphere can mount the exact same image that a guest on KVM can mount. ISO images may be stored in the system and made available with a privacy -level similar to templates. ISO images are classified as either bootable +level similar to Templates. ISO images are classified as either bootable or not bootable. A bootable ISO image is one that contains an OS image. -CloudStack allows a user to boot a guest VM off of an ISO image. Users -can also attach ISO images to guest VMs. For example, this enables +CloudStack allows a User to boot a Guest Instance off of an ISO image. Users +can also attach ISO images to Guest Instances. For example, this enables installing PV drivers into Windows. ISO images are not hypervisor-specific. @@ -434,12 +447,12 @@ Adding an ISO --------------- To make additional operating system or other software available for use -with guest VMs, you can add an ISO. The ISO is typically thought of as +with Guest Instances, you can add an ISO. The ISO is typically thought of as an operating system image, but you can also add ISOs for other types of software, such as desktop applications that you want to be installed as -part of a template. +part of a Template. -#. Log in to the CloudStack UI as an administrator or end user. +#. Log in to the CloudStack UI as an administrator or end User. #. In the left navigation bar, click Templates. @@ -479,9 +492,9 @@ part of a template. - (XenServer only) If you want to boot from this ISO in PV mode, choose Other PV (32-bit) or Other PV (64-bit) - - (KVM only) If you choose an OS that is PV-enabled, the VMs + - (KVM only) If you choose an OS that is PV-enabled, the Instances created from this ISO will have a SCSI (virtio) root disk. If - the OS is not PV-enabled, the VMs will have an IDE root disk. + the OS is not PV-enabled, the Instances will have an IDE root disk. The PV-enabled types are: - Fedora 13 @@ -523,10 +536,10 @@ part of a template. extraction. - **Public**: Choose Yes if this ISO should be available to other - users. + Users. - **Featured**: Choose Yes if you would like this ISO to be more - prominent for users to select. The ISO will appear in the Featured + prominent for Users to select. The ISO will appear in the Featured ISOs list. Only an administrator can make an ISO Featured. #. Click OK. @@ -542,12 +555,12 @@ part of a template. with it. -Attaching an ISO to a VM -------------------------- +Attaching an ISO to a Instance +------------------------------ #. In the left navigation, click Instances. -#. Choose the virtual machine you want to work with. +#. Choose the Instance you want to work with. #. Click the Attach ISO button. |iso.png| @@ -569,15 +582,15 @@ Attaching an ISO to a VM .. |template-upload-from-local.png| image:: /_static/images/template-upload-from-local.png :alt: Upload Template from local .. |template-permissions-update-manually-1.png| image:: /_static/images/template-permissions-update-manually-1.png - :alt: USharing template with account "user2" + :alt: USharing template with Account "user2" .. |template-permissions-update-manually-2.png| image:: /_static/images/template-permissions-update-manually-2.png - :alt: Revoking permissions from account "user2" + :alt: Revoking permissions from Account "user2" .. |template-permissions-update-1.png| image:: /_static/images/template-permissions-update-1.png - :alt: Sharing template with just account "user8" + :alt: Sharing template with just Account "user8" .. |template-permissions-update-2.png| image:: /_static/images/template-permissions-update-2.png :alt: Sharing template with 2 specific projects .. |template-permissions-update-3.png| image:: /_static/images/template-permissions-update-3.png - :alt: Revoking permissins from account "user8" + :alt: Revoking permissins from Account "user8" .. |template-permissions-update-4.png| image:: /_static/images/template-permissions-update-4.png :alt: Revoking permsissons from both projects previously added .. |template-permissions-update-5.png| image:: /_static/images/template-permissions-update-5.png diff --git a/source/adminguide/templates/_bypass-secondary-storage-kvm.rst b/source/adminguide/templates/_bypass-secondary-storage-kvm.rst index d45f0489df..0aa5376a32 100644 --- a/source/adminguide/templates/_bypass-secondary-storage-kvm.rst +++ b/source/adminguide/templates/_bypass-secondary-storage-kvm.rst @@ -16,16 +16,16 @@ .. _bypass-secondary-storage-kvm: -Bypassing Secondary Storage For KVM templates +Bypassing Secondary Storage For KVM Templates --------------------------------------------- -CloudStack provides an additional way to register and use templates on KVM. +CloudStack provides an additional way to register and use Templates on KVM. -Instead of registering a template and storing it on secondary storage, the user can opt to skip downloading the template to secondary storage for KVM at template registration. At deployment time, the template is downloaded directly to primary storage from the registered source, instead of being copied from secondary storage. +Instead of registering a Template and storing it on secondary storage, the user can opt to skip downloading the Template to secondary storage for KVM at Template registration. At deployment time, the Template is downloaded directly to primary storage from the registered source, instead of being copied from secondary storage. -Supported protocols: HTTP/HTTPS, NFS and metalinks. The protocol is obtained from the template URL. +Supported protocols: HTTP/HTTPS, NFS and metalinks. The protocol is obtained from the Template URL. -To enable this option for a template: +To enable this option for a Template: #. In the left navigation bar, click Templates. @@ -37,11 +37,11 @@ To enable this option for a template: - **Direct Download**. This option will be shown in the UI when KVM is selected as the hypervisor. Choose Yes to enable the bypassing secondary storage option. - - **Checksum**. Optional field. If this field is populated, the checksum is compared to the downloaded template checksum when the template is downloaded to primary storage at deployment time. + - **Checksum**. Optional field. If this field is populated, the checksum is compared to the downloaded Template checksum when the Template is downloaded to primary storage at deployment time. -After the template is registered, it is automatically available for VM deployments. +After the Template is registered, it is automatically available for instance deployments. -From CloudStack 4.14.0, system VM templates also support direct download. An administrator can register a new system VM template as ROUTING or USER type with the direct download flag, and it can be changed to SYSTEM type during the upgrade or by out-of-band database changes. Type of newly registered template can be changed to SYSTEM in the database using a SQL query similar to: +From CloudStack 4.14.0, system VM Templates also support direct download. An administrator can register a new system VM Template as ROUTING or USER type with the direct download flag, and it can be changed to SYSTEM type during the upgrade or by out-of-band database changes. Type of newly registered Template can be changed to SYSTEM in the database using a SQL query similar to: .. code:: bash @@ -50,7 +50,7 @@ From CloudStack 4.14.0, system VM templates also support direct download. An adm Uploading Certificates for Direct Downloads ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -For direct downloads over HTTPS, the KVM hosts must have valid certificates. These certificates can be either self-signed or signed and will allow the KVM hosts to access the templates/ISOs and download them. +For direct downloads over HTTPS, the KVM hosts must have valid certificates. These certificates can be either self-signed or signed and will allow the KVM hosts to access the Templates/ISOs and download them. CloudStack provides some APIs to handle certificates for direct downloads: @@ -84,8 +84,8 @@ CloudStack provides some APIs to handle certificates for direct downloads: upload templatedirectdownloadcertificate hypervisor=KVM name=CERTIFICATE_ALIAS zoneid=ZONE_ID certificate=CERTIFICATE_FORMATTED hostid=HOST_ID -Syncronising Certificates for Direct Downloads -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Synchronising Certificates for Direct Downloads +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ As new hosts may be added to a zone which do not include a certificate which was previously uploaded to pre-existing hosts. @@ -99,7 +99,7 @@ CloudStack provides a way to synchronize certificates across all the connected h Direct Download Timeouts ~~~~~~~~~~~~~~~~~~~~~~~~ -With 4.14.0, ability to configure different timeout values for the direct downloading of templates has been added. Three new global settings have been added for this: +With 4.14.0, ability to configure different timeout values for the direct downloading of Templates has been added. Three new global settings have been added for this: - **direct.download.connect.timeout** - Connection establishment timeout in milliseconds for direct download. Default value: 5000 milliseconds. diff --git a/source/adminguide/templates/_cloud_init.rst b/source/adminguide/templates/_cloud_init.rst new file mode 100644 index 0000000000..c6caa45bb7 --- /dev/null +++ b/source/adminguide/templates/_cloud_init.rst @@ -0,0 +1,233 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + + +Cloud-init integration +------------------------- + +Cloudstack and cloud-init integration provide Instances with advanced management features such as: + +* Password management +* SSH keys management +* Partition management +* User-data input +* `Other modules `_ + + + +Examples for relevant features are listed for different distributions. + +~~~~~~~~~~~~~~~~~~~~~~ + +Linux with Cloud-init +---------------------- + +These features can be implemented in `“Linux Template creation process” <_create_linux.html#creating-a-linux-template>`_. where they are executed just before the **Template cleanup** step. + +#. **Install and configure cloud-init** + + Install cloud-init and mentioned auxiliary packages. + + ~ CentOS + + .. code:: bash + + yum install -y cloud-init wget + + ~ Ubuntu + + .. code:: bash + + apt-get install -y cloud-init wget + + Configure cloud-init to detect Cloudstack data source during runtime. + + Cloud-init data sources can be specified in /etc/cloud/cloud.cfg.d/ directory. Add the following config in /etc/cloud/cloud.cfg.d/99_cloudstack.cfg. + + .. code:: bash + + datasource_list: [ ConfigDrive, CloudStack, None ] + datasource: + CloudStack: {} + None: {} + +#. **Password management** + + Cloudstack integration with cloud-init `set-passwords module `_ will enable the platform to set a password for each Instance created from the Main Template. Additionally it will allow to reset the user password through the GUI. + + - **Enable set_passwords module on every boot** + + By default the set-passwords module runs only on first boot of the Instance, change that to run on every boot. + + .. code:: bash + + sudo sed -i s/" - set[_|-]passwords"/" - [set_passwords, always]"/g /etc/cloud/cloud.cfg + + - **Specify the managed user** + + Cloudstack will create the user, set a password and reset it when requested. To do that set the following configuration in /etc/cloud/cloud.cfg.d/80_user.cfg + + .. code:: bash + + system_info: + default_user: + name: cloud-user + lock_passwd: false # disable user password login - true/false + sudo: [\"ALL=(ALL) ALL\"] # User permissions + disable_root: 0 # root remote login is 0 - enabled, 1 - disabled + ssh_pwauth: 1 # password login is 0 - disabled, 1- enabled + +#. **SSH keys management** + + Cloud-init `ssh module `_ can automatically install new SSH keys when set or reset from Cloudstack GUI. + By default the module runs once during Instance creation and will fetch Cloudstack keys without any additional configuration. + To enable Cloudstack reset SSH keys feature configure cloud-init ssh module to run on every boot. + + .. code:: bash + + sudo sed -i s/" - ssh$"/" - [ssh, always]"/g /etc/cloud/cloud.cfg + +======= + + .. warning:: + + If the cloud-init ssh module is set to run every boot, it will regenerate the certificate fingerprint of the host. This will cause a warning to anyone that logs in the system and also bring trouble to anyone trying to automate ssh access. + + Disable cloud-init regenerating host certificates on boot. If Template certificates are deleted they will be regenerated by the OS on instnace first boot. + + .. code:: bash + + echo "ssh_deletekeys: false" > /etc/cloud/cloud.cfg.d/49_hostkeys.cfg + + Note that if this instance is moved or snapshotted, it will be vulnerable to man-in-the-middle attacks if the behavior is not re-enabled first. + +#. **Partition management** + + Cloud-init can detect and resize one or more existing partitions automatically after reboot. This guide will cover root partition and volume. + First install the `Growpart module `_ as it is not shipped with cloud-init. + + ~ Centos + + .. code:: bash + + yum install cloud-utils-growpart -y + + ~ Ubuntu + + .. code:: bash + + apt-get install cloud-initramfs-growroot -y + + - **Detect and extend MBR partitions** + + Locate the root partition. + + .. note:: + + Root partition can differ per OS type, version and partition setup. + + .. code:: bash + + [root@localhost ~]# lvs + LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert + root centos -wi-ao---- <17.00g + swap centos -wi-ao---- 2.00g + [root@localhost ~]# vgs + VG #PV #LV #SN Attr VSize VFree + centos 1 2 0 wz--n- <19.00g 0 + [root@localhost ~]# pvs + PV VG Fmt Attr PSize PFree + /dev/xvda2 centos lvm2 a-- <19.00g 0 + + On the current setup root is on /dev/xvda2 partition. Define the configuration below in /etc/cloud/cloud.cfg.d/50_growpartion.cfg + + .. code:: bash + + growpart: + mode: auto + devices: + - \"/dev/xvda2\" + ignore_growroot_disabled: false + + Now on every boot growpart will check and extend /dev/xvda2 if there is change in size. + + - **Extend Physical volume, Volume group and root lvm** + + After partition is extended the upper layers should also be resized. This can be automated with cloud-init `runcmd module `_ . Set the configuration below in /etc/cloud/cloud.cfg.d/51_extend_volume.cfg. + + ~ CentOS + + Centos 7 root volume is /dev/centos/root if no changes are done during installation. Change the value accordingly if setup is different. + + .. code:: bash + + runcmd: + - [ cloud-init-per, always, grow_VG, pvresize, /dev/xvda2 ] + - [ cloud-init-per, always, grow_LV, lvresize, -l, '+100%FREE', /dev/centos/root ] + - [ cloud-init-per, always, grow_FS, xfs_growfs, /dev/centos/root ] + + ~ Ubuntu + + Ubuntu 20 root volume is /dev/ubuntu-vg/ubuntu-lv if no changes are done during installation. Change the value accordingly if setup is different. + + .. code:: bash + + runcmd: + - [ cloud-init-per, always, grow_VG, pvresize, /dev/xvda3 ] + - [ cloud-init-per, always, grow_LV, lvresize, -l, '+100%FREE', /dev/ubuntu-vg/ubuntu-lv ] + - [ cloud-init-per, always, grow_FS, xfs_growfs, /dev/ubuntu-vg/ubuntu-lv ] + + .. warning:: + + The example code above is based on XFS parition type. If ext4 partitioning is utilized replace **xfs_growfs** with **resize2fs** in the last code line. + It is possible to also use cloud-init `resize2fs module `_ . + + - **Enable autoresize on every boot** + + By default cloud-init **runcmd** module executes defined commands on first boot only. + Commands will run on every boot only if both **runcmd** and **user-scripts** modules are configured to run on every boot. + + .. code:: bash + + sudo sed -i s/" - runcmd"/" - [runcmd, always]"/g /etc/cloud/cloud.cfg + sudo sed -i s/" - scripts-user"/" - [scripts-user, always]"/g /etc/cloud/cloud.cfg + +#. **User-data** + + Cloud-init can parse and execute user-data form Cloud-stack during Instance creation. This feature works as is without additional configuration. + +#. **Cleanup** + + Once desired cloud-init features are implemented, clean cloud-init tracker files. + + .. code:: bash + + cloud-init clean + + Or do it manually. + + .. code:: bash + + rm -rf /var/lib/cloud/* + + If **Password management** feature is used clean /etc/sudoers from any cloud-init user setups. + + .. code:: bash + + rm -rf /etc/sudoers.d/* + +#. **Finalize Template** + + Proceed with `“Linux Template creation process” <_create_linux.html>`_ continuing with **Template cleanup** step. diff --git a/source/adminguide/templates/_convert_hyperv.rst b/source/adminguide/templates/_convert_hyperv.rst index 9e15490ddd..620d1ea200 100644 --- a/source/adminguide/templates/_convert_hyperv.rst +++ b/source/adminguide/templates/_convert_hyperv.rst @@ -1,15 +1,15 @@ -Converting a Hyper-V VM to a Template -------------------------------------- +Converting a Hyper-V Instance to a Template +------------------------------------------- -To convert a Hyper-V VM to a XenServer-compatible CloudStack template, +To convert a Hyper-V Instance to a XenServer-compatible CloudStack Template, you will need a standalone XenServer host with an attached NFS VHD SR. Use whatever XenServer version you are using with CloudStack, but use XenCenter 5.6 FP1 or SP2 (it is backwards compatible to 5.6). Additionally, it may help to have an attached NFS ISO SR. -For Linux VMs, you may need to do some preparation in Hyper-V before -trying to get the VM to work in XenServer. Clone the VM and work on the -clone if you still want to use the VM in Hyper-V. Uninstall Hyper-V +For Linux Instances, you may need to do some preparation in Hyper-V before +trying to get the Instance to work in XenServer. Clone the Instance and work on the +clone if you still want to use the Instance in Hyper-V. Uninstall Hyper-V Integration Components and check for any references to device names in /etc/fstab: @@ -26,7 +26,7 @@ Integration Components and check for any references to device names in those entries (if any) to mount by LABEL or UUID. You can get that information with the blkid command. -The next step is make sure the VM is not running in Hyper-V, then get +The next step is make sure the Instance is not running in Hyper-V, then get the VHD into XenServer. There are two options for doing this. Option one: @@ -36,10 +36,10 @@ Option one: #. Choose the VHD, then click Next. -#. Name the VM, choose the NFS VHD SR under Storage, enable "Run +#. Name the Instance, choose the NFS VHD SR under Storage, enable "Run Operating System Fixups" and choose the NFS ISO SR. -#. Click Next, then Finish. A VM should be created. +#. Click Next, then Finish. An Instance should be created. Option two: @@ -50,30 +50,30 @@ Option two: #. Input the XenServer host info, then click Next. -#. Name the VM, then click Next, then Convert. A VM should be created. +#. Name the Instance, then click Next, then Convert. An Instance should be created. -Once you have a VM created from the Hyper-V VHD, prepare it using the +Once you have an Instance created from the Hyper-V VHD, prepare it using the following steps: -#. Boot the VM, uninstall Hyper-V Integration Services, and reboot. +#. Boot the Instance, uninstall Hyper-V Integration Services, and reboot. #. Install XenServer Tools, then reboot. -#. Prepare the VM as desired. For example, run sysprep on Windows VMs. +#. Prepare the Instance as desired. For example, run sysprep on Windows Instances. See `“Creating a Windows Template” <#creating-a-windows-template>`_. -Either option above will create a VM in HVM mode. This is fine for -Windows VMs, but Linux VMs may not perform optimally. Converting a Linux -VM to PV mode will require additional steps and will vary by +Either option above will create an Instance in HVM mode. This is fine for +Windows Instances, but Linux Instances may not perform optimally. Converting a Linux +instance to PV mode will require additional steps and will vary by distribution. -#. Shut down the VM and copy the VHD from the NFS storage to a web +#. Shut down the instance and copy the VHD from the NFS storage to a web server; for example, mount the NFS share on the web server and copy it, or from the XenServer host use sftp or scp to upload it to the web server. -#. In CloudStack, create a new template using the following values: +#. In CloudStack, create a new Template using the following values: - URL. Give the URL for the VHD @@ -85,4 +85,4 @@ distribution. - Format. VHD -The template will be created, and you can create instances from it. +The Template will be created, and you can create instances from it. diff --git a/source/adminguide/templates/_create_linux.rst b/source/adminguide/templates/_create_linux.rst index 217556f398..727b944e94 100644 --- a/source/adminguide/templates/_create_linux.rst +++ b/source/adminguide/templates/_create_linux.rst @@ -17,12 +17,13 @@ Creating a Linux Template ------------------------- -Linux templates should be prepared using this documentation in order to -prepare your linux VMs for template deployment. For ease of -documentation, the VM which you are configuring the template on will be -referred to as "Template Primary". This guide currently covers legacy -setups which do not take advantage of UserData and cloud-init and -assumes openssh-server is installed during installation. +Linux Templates should be prepared using this documentation in order to +prepare your linux Instances for Template deployment. For ease of +documentation, the Instance which you are configuring the Template on will be +referred to as "Main Template". The final product, as created and usable +for deployment in Cloudstack, will be referred as "Final Template". +This guide will cover cloud-init setup and scripted setups where available. It is assumed that openssh-server +is installed during installation. An overview of the procedure is as follow: @@ -31,231 +32,186 @@ An overview of the procedure is as follow: For more information, see `“Adding an ISO” `_. -#. Create a VM Instance with this ISO. +#. Create an Instance with this ISO. For more information, see `“Creating VMs” `_. -#. Prepare the Linux VM +#. Prepare the Linux Instance -#. Create a template from the VM. +#. Create a Template from the Instance. For more information, see `“Creating a Template from an Existing - Virtual Machine” <#creating-a-template-from-an-existing-virtual-machine>`_. + Instance” <#creating-a-template-from-an-existing-virtual-machine>`_. System preparation for Linux -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +---------------------------- + +The following steps will provide basic Linux installation for +templating of Centos and Ubuntu. + +#. **Update OS** + + The next step update the packages on the Main Template. + + ~ CentOS + + .. code:: bash + + yum update -y + reboot + + ~ Ubuntu + + .. code:: bash + + sudo -i + apt-get update + apt-get upgrade -y + apt-get install -y acpid ntp + reboot + +#. **Networking** + + Set Template Network interface configuration to DHCP so Cloudstack infrastructure can assign one on boot. + + .. warning:: + + For CentOS, it is mandatory to take unique identification out of the + interface configuration file /etc/sysconfig/network-scripts/ifcfg-eth0. Any entries starting with should be removed. + + ~ Centos + + .. code:: bash + + echo "DEVICE=eth0 + TYPE=Ethernet + BOOTPROTO=dhcp + ONBOOT=yes" > /etc/sysconfig/network-scripts/ifcfg-eth0 -The following steps will prepare a basic Linux installation for -templating. - -#. **Installation** +#. **Hostname Management** - It is good practice to name your VM something generic during - installation, this will ensure components such as LVM do not appear - unique to a machine. It is recommended that the name of "localhost" - is used for installation. - - .. warning:: - For CentOS, it is necessary to take unique identification out of the - interface configuration file, for this edit - /etc/sysconfig/network-scripts/ifcfg-eth0 and change the content to - the following. + Set a generic name to the Template Instance during installation, this will ensure components such as LVM do not appear unique to a machine. It is recommended that the name of "localhost" is used for installation. .. code:: bash - DEVICE=eth0 - TYPE=Ethernet - BOOTPROTO=dhcp - ONBOOT=yes - - The next steps updates the packages on the Template Primary. - - - Ubuntu - - .. code:: bash - - sudo -i - apt-get update - apt-get upgrade -y - apt-get install -y acpid ntp - reboot - - - CentOS - - .. code:: bash - - ifup eth0 - yum update -y - reboot + hostname localhost + echo "localhost" > /etc/hostname #. **Password management** - + .. note:: - If preferred, custom users (such as ones created during the Ubuntu - installation) should be removed. First ensure the root user account - is enabled by giving it a password and then login as root to continue. - - .. code:: bash - - sudo passwd root - logout + + It is a good practice to remove any non root Users that come with the OS (such as ones created during the Ubuntu + installation). First ensure the root user Account is enabled by giving it a password and then login as root to continue. - As root, remove any custom user accounts created during the - installation process. + Once logged in as root, any custom User can be removed. .. code:: bash - deluser myuser --remove-home - - See :ref:`adding-password-management-to-templates` for - instructions to setup the password management script, this will allow - CloudStack to change your root password from the web interface. - -#. **Hostname Management** - - CentOS configures the hostname by default on boot. Unfortunately - Ubuntu does not have this functionality, for Ubuntu installations use - the following steps. - - - Ubuntu - - The hostname of a Templated VM is set by a custom script in - `/etc/dhcp/dhclient-exit-hooks.d`, this script first checks if the - current hostname is localhost, if true, it will get the host-name, - domain-name and fixed-ip from the DHCP lease file and use those - values to set the hostname and append the `/etc/hosts` file for - local hostname resolution. Once this script, or a user has changed - the hostname from localhost, it will no longer adjust system files - regardless of its new hostname. The script also recreates - openssh-server keys, which should have been deleted before - templating (shown below). Save the following script to - `/etc/dhcp/dhclient-exit-hooks.d/sethostname`, and adjust the - permissions. - - .. code:: bash - - #!/bin/sh - # dhclient change hostname script for Ubuntu - oldhostname=$(hostname -s) - if [ $oldhostname = 'localhost' ] - then - sleep 10 # Wait for configuration to be written to disk - hostname=$(cat /var/lib/dhcp/dhclient.eth0.leases | awk ' /host-name/ { host = $3 } END { printf host } ' | sed 's/[";]//g' ) - fqdn="$hostname.$(cat /var/lib/dhcp/dhclient.eth0.leases | awk ' /domain-name/ { domain = $3 } END { printf domain } ' | sed 's/[";]//g')" - ip=$(cat /var/lib/dhcp/dhclient.eth0.leases | awk ' /fixed-address/ { lease = $2 } END { printf lease } ' | sed 's/[";]//g') - echo "cloudstack-hostname: Hostname _localhost_ detected. Changing hostname and adding hosts." - printf " Hostname: $hostname\n FQDN: $fqdn\n IP: $ip" - # Update /etc/hosts - awk -v i="$ip" -v f="$fqdn" -v h="$hostname" "/^127/{x=1} !/^127/ && x { x=0; print i,f,h; } { print $0; }" /etc/hosts > /etc/hosts.dhcp.tmp - mv /etc/hosts /etc/hosts.dhcp.bak - mv /etc/hosts.dhcp.tmp /etc/hosts - # Rename Host - echo $hostname > /etc/hostname - hostname -b -F /etc/hostname - echo $hostname > /proc/sys/kernel/hostname - # Recreate SSH2 - export DEBIAN_FRONTEND=noninteractive - dpkg-reconfigure openssh-server - fi - ### End of Script ### - - chmod 774 /etc/dhcp/dhclient-exit-hooks.d/sethostname - + deluser myuser --remove-home + + User password management and reset cappabilities in GUI are available with: + + * `Cloud-init integration <_cloud_init.html#linux-with-cloud-init>`_ + * `Adding Password Management to Your Templates <_password.html#adding-password-management-to-templates>`_ /Legacy for non systemd systems only/ + +#. **SSH keys management** + + Cloudstack can create key pair and push certificates to Instances. This feature is available with: + + * `Cloud-init integration <_cloud_init.html#linux-with-cloud-init>`_ + * `Implementing a SSH-Key bash script `_ + +#. **Partition management** + + Volumes can autorextend after reboot when partition is extended in the GUI. + This feature is possible with `Cloud-init integration <_cloud_init.html#linux-with-cloud-init>`_. + +#. **User-data** + + Cloudstack can push user-data during Instance creation. + This feature is possible with `Cloud-init integration <_cloud_init.html#linux-with-cloud-init>`_. + +#. **Template cleanup** + .. warning:: - The following steps should be run when you are ready to template - your Template Primary. If the Template Primary is rebooted during - these steps you will have to run all the steps again. At the end - of this process the Template Primary should be shutdown and the - template created in order to create and deploy the final template. - -#. **Remove the udev persistent device rules** - - This step removes information unique to your Template Primary such as - network MAC addresses, lease files and CD block devices, the files - are automatically generated on next boot. - - - Ubuntu + + Cleanup steps should be run when all Main Template configuration + is done and just before the shutdown step. After shut down Final + Template should be created. If the Main Template is started or + rebooted before Final Template creation all cleanup steps have to be rerun. + + - **Remove the udev persistent device rules** + + This step removes information unique to the Main Template such as + Network MAC addresses, lease files and CD block devices, the files + are automatically generated on next boot. + + ~ CentOS .. code:: bash - rm -f /etc/udev/rules.d/70* - rm -f /var/lib/dhcp/dhclient.* - - - CentOS + rm -f /etc/udev/rules.d/70* + rm -f /var/lib/dhclient/* + + ~ Ubuntu .. code:: bash - rm -f /etc/udev/rules.d/70* - rm -f /var/lib/dhclient/* + rm -f /etc/udev/rules.d/70* + rm -f /var/lib/dhcp/dhclient.* -#. **Remove SSH Keys** + - **Remove SSH Keys** - This step is to ensure all your Templated VMs do not have the same - SSH keys, which would decrease the security of the machines - dramatically. + This step is to ensure all Templated Instances do not have the same + SSH keys, which would decrease the security of the machines + dramatically. - .. code:: bash + .. code:: bash rm -f /etc/ssh/*key* -#. **Cleaning log files** + - **Cleaning log files** - It is good practice to remove old logs from the Template Primary. + It is good practice to remove old logs from the Main Template. - .. code:: bash + .. code:: bash cat /dev/null > /var/log/audit/audit.log 2>/dev/null cat /dev/null > /var/log/wtmp 2>/dev/null logrotate -f /etc/logrotate.conf 2>/dev/null rm -f /var/log/*-* /var/log/*.gz 2>/dev/null -#. **Setting hostname** - - In order for the Ubuntu DHCP script to function and the CentOS - dhclient to set the VM hostname they both require the Template - Primary's hostname to be "localhost", run the following commands to - change the hostname. - - .. code:: bash - - hostname localhost - echo "localhost" > /etc/hostname + - **Set User password to expire** -#. **Set user password to expire** + This step forces the User to change the password of the Instance after the + Template has been deployed. - This step forces the user to change the password of the VM after the - template has been deployed. - - .. code:: bash + .. code:: bash passwd --expire root -#. **Clearing User History** + - **Clearing User History** - The next step clears the bash commands you have just run. + The next step clears the bash commands you have just run. - .. code:: bash + .. code:: bash history -c unset HISTFILE -#. **Shutdown the VM** +#. **Shutdown the Instance** - Your now ready to shutdown your Template Primary and create a - template! + Shutdown the Main Template. .. code:: bash halt -p -#. **Create the template!** +#. **Create the Template!** - You are now ready to create the template, for more information see + You are now ready to create the Final Template, for more information see `“Creating a Template from an Existing Virtual Machine” <#creating-a-template-from-an-existing-virtual-machine>`_. - -.. note:: - Templated VMs for both Ubuntu and CentOS may require a reboot after - provisioning in order to pickup the hostname. diff --git a/source/adminguide/templates/_create_windows.rst b/source/adminguide/templates/_create_windows.rst index cb1d5545ae..53adfe05b4 100644 --- a/source/adminguide/templates/_create_windows.rst +++ b/source/adminguide/templates/_create_windows.rst @@ -17,13 +17,13 @@ Creating a Windows Template --------------------------- -Windows templates must be prepared with Sysprep before they can be +Windows Templates must be prepared with Sysprep before they can be provisioned on multiple machines. Sysprep allows you to create a generic -Windows template and avoid any possible SID conflicts. +Windows Template and avoid any possible SID conflicts. .. note:: - (XenServer) Windows VMs running on XenServer require PV drivers, which - may be provided in the template or added after the VM is created. The + (XenServer) Windows instances running on XenServer require PV drivers, which + may be provided in the Template or added after the instance is created. The PV drivers are necessary for essential management functions such as mounting additional volumes and ISO images, live migration, and graceful shutdown. @@ -35,17 +35,17 @@ An overview of the procedure is as follows: For more information, see `“Adding an ISO” `_. -#. Create a VM Instance with this ISO. +#. Create an instance with this ISO. For more information, see `“Creating - VMs” `_. + instances” `_. #. Follow the steps in Sysprep for Windows Server 2008 R2 (below) or Sysprep for Windows Server 2003 R2, depending on your version of Windows Server #. The preparation steps are complete. Now you can actually create the - template as described in Creating the Windows Template. + Template as described in Creating the Windows Template. System Preparation for Windows Server 2008 R2 @@ -68,8 +68,8 @@ Use the following steps to run sysprep for Windows 2008 R2: #. Download and install the Windows AIK .. note:: - Windows AIK should not be installed on the Windows 2008 R2 VM you - just created. Windows AIK should not be part of the template you + Windows AIK should not be installed on the Windows 2008 R2 instance you + just created. Windows AIK should not be part of the Template you create. It is only used to create the sysprep answer file. #. Copy the install.wim file in the \\sources directory of the Windows @@ -116,7 +116,7 @@ Use the following steps to run sysprep for Windows 2008 R2: |software-license.png| #. Make sure the license key is properly set. If you use MAK key, you - can just enter the MAK key on the Windows 2008 R2 VM. You need not + can just enter the MAK key on the Windows 2008 R2 instance. You need not input the MAK into the Windows System Image Manager. If you use KMS host for activation you need not enter the Product Key. Details of Windows Volume Activation can be found at @@ -140,7 +140,7 @@ Use the following steps to run sysprep for Windows 2008 R2: messages that appear in the validation window. #. Copy the unattend.xml file into the c:\\windows\\system32\\sysprep - directory of the Windows 2008 R2 Virtual Machine + directory of the Windows 2008 R2 Instance #. Once you place the unattend.xml file in c:\\windows\\system32\\sysprep directory, you run the sysprep tool as @@ -151,7 +151,7 @@ Use the following steps to run sysprep for Windows 2008 R2: cd c:\Windows\System32\sysprep sysprep.exe /oobe /generalize /shutdown - The Windows 2008 R2 VM will automatically shut down after sysprep is + The Windows 2008 R2 instance will automatically shut down after sysprep is complete. @@ -163,7 +163,7 @@ steps for Windows Server 2003 R2. #. Extract the content of \\support\\tools\\deploy.cab on the Windows installation CD into a directory called c:\\sysprep on the Windows - 2003 R2 VM. + 2003 R2 instance. #. Run c:\\sysprep\\setupmgr.exe to create the sysprep.inf file. diff --git a/source/adminguide/templates/_import_ami.rst b/source/adminguide/templates/_import_ami.rst index b81829fa8a..5f307d8f5a 100644 --- a/source/adminguide/templates/_import_ami.rst +++ b/source/adminguide/templates/_import_ami.rst @@ -147,7 +147,7 @@ To import an AMI: PermitRootLogin yes PasswordAuthentication yes -#. If you need the template to be enabled to reset passwords from the +#. If you need the Template to be enabled to reset passwords from the CloudStack UI or API, install the password change script into the image at this point. See :ref:`adding-password-management-to-templates`. diff --git a/source/adminguide/templates/_password.rst b/source/adminguide/templates/_password.rst index 1b39ae9739..3378acb50e 100644 --- a/source/adminguide/templates/_password.rst +++ b/source/adminguide/templates/_password.rst @@ -24,20 +24,20 @@ to set a temporary admin or root password as well as reset the existing admin or root password from the CloudStack UI. To enable the Reset Password feature, you will need to download an -additional script to patch your template. When you later upload the -template into CloudStack, you can specify whether reset admin/root -password feature should be enabled for this template. +additional script to patch your Template. When you later upload the +Template into CloudStack, you can specify whether reset admin/root +password feature should be enabled for this Template. The password management feature works always resets the account password -on instance boot. The script does an HTTP call to the virtual router to +on Instance boot. The script does an HTTP call to the virtual router to retrieve the account password that should be set. As long as the virtual router is accessible the guest will have access to the account password that should be used. When the user requests a password reset the management server generates and sends a new password to the virtual -router for the account. Thus an instance reboot is necessary to effect +router for the account. Thus an Instance reboot is necessary to effect any password changes. -If the script is unable to contact the virtual router during instance +If the script is unable to contact the virtual router during Instance boot it will not set the password but boot will continue normally. @@ -82,4 +82,4 @@ Windows OS Installation Download the installer, CloudInstanceManager.msi, from the `Download page `_ -and run the installer in the newly created Windows VM. +and run the installer in the newly created Windows Instance. diff --git a/source/adminguide/troubleshooting.rst b/source/adminguide/troubleshooting.rst index f4c0efceb1..7bb889fbec 100644 --- a/source/adminguide/troubleshooting.rst +++ b/source/adminguide/troubleshooting.rst @@ -155,52 +155,52 @@ Solution Use vCenter to place the host in maintenance mode. -Unable to deploy VMs from uploaded vSphere template ---------------------------------------------------- +Unable to deploy Instances from uploaded vSphere Template +--------------------------------------------------------- Symptom ~~~~~~~~ -When attempting to create a VM, the VM will not deploy. +When attempting to create an Instance, it does not deploy. Cause ~~~~~ -If the template was created by uploading an OVA file that was created +If the Template was created by uploading an OVA file that was created using vSphere Client, it is possible the OVA contained an ISO image. If -it does, the deployment of VMs from the template will fail. +it does, the deployment of Instances from the Template will fail. Solution ~~~~~~~~ -Remove the ISO and re-upload the template. +Remove the ISO and re-upload the Template. -Unable to power on virtual machine on VMware --------------------------------------------- +Unable to power on Instance on VMware +------------------------------------- Symptom ~~~~~~~ -Virtual machine does not power on. You might see errors like: +Instance does not power on. You might see errors like: - Unable to open Swap File - Unable to access a file since it is locked -- Unable to access Virtual machine configuration +- Unable to access Instance configuration Cause ~~~~~ A known issue on VMware machines. ESX hosts lock certain critical -virtual machine files and file systems to prevent concurrent changes. -Sometimes the files are not unlocked when the virtual machine is powered -off. When a virtual machine attempts to power on, it can not access -these critical files, and the virtual machine is unable to power on. +Instance files and file systems to prevent concurrent changes. +Sometimes the files are not unlocked when the Instance is powered +off. When an Instance attempts to power on, it can not access +these critical files, and the Instance is unable to power on. Solution @@ -343,7 +343,7 @@ Trouble Shooting Steps interfaces bridge. This virtual interface to physical interface mapping is done automatically by CloudStack using the traffic label settings for the Zone. If you have provided correct settings and still dont have a - working working Internet, check the switching layer before you debug any + working Internet, check the switching layer before you debug any further. You can verify traffic using tcpdump on the virtual, physical and bridge interfaces. @@ -383,7 +383,7 @@ Trouble Shooting Steps #. The Internet would be accessible from both the SSVM and CPVM - instances by default. Their public IPs will also be directly pingable + Instances by default. Their public IPs will also be directly pingable from the Internet. Please note that these test would work only if your switches and traffic labels are configured correctly for your environment. If your SSVM/CPVM cant reach the Internet, its very @@ -436,7 +436,7 @@ Trouble Shooting Steps .. image:: /_static/images/networking-ingress-rule.png -#. The VM Instances by default wont be able to access the Internet. Add +#. The Instances by default won't be able to access the Internet. Add Egress rules to permit traffic. .. image:: /_static/images/networking-egress-rule.png diff --git a/source/adminguide/tuning.rst b/source/adminguide/tuning.rst index 75b09549f9..c1fb354560 100644 --- a/source/adminguide/tuning.rst +++ b/source/adminguide/tuning.rst @@ -36,22 +36,22 @@ Increase Management Server Maximum Memory If the Management Server is subject to high demand, the default maximum JVM memory allocation can be insufficient. To increase the memory: -#. Edit the Tomcat configuration file: +#. Edit the cloudstack-management.service configuration file at: .. code:: bash - /etc/cloudstack/management/tomcat6.conf + /etc/default/cloudstack-management -#. Change the command-line parameter -XmxNNNm to a higher value of N. +#. Change the command-line parameter from -XmxVVV to replace the VVV with an higher value. - For example, if the current value is -Xmx128m, change it to -Xmx1024m - or higher. + For example, if the current is the default value is -Xmx2G, change it to -Xmx12G + or another applicable value. Make sure not to go over about 2/3rd of the actual physical memory of the machine. #. To put the new setting into effect, restart the Management Server. .. code:: bash - # service cloudstack-management restart + # systemctl restart cloudstack-management For more information about memory issues, see "FAQ: Memory" at `Tomcat Wiki. `_ @@ -91,32 +91,52 @@ at `MySQL Reference Manual `_. -Set and Monitor Total VM Limits per Host ----------------------------------------- +Monitor the Database Load +------------------------- -The CloudStack administrator should monitor the total number of VM -instances in each cluster, and disable allocation to the cluster if the +The load of the database is monitored. By default the queries for each +minute are calculated in queries per second. Three values are retaint by +default. In the UI these are visible under the DB/Usage Server page +under the infrastructure menu. + +|dbLoadAverages.png| + +.. |dbLoadAverages.png| image:: /_static/images/dbLoadAverages.png + :alt: load averages as displayed in the UI + +The configuration variable 'database.server.stats.interval' can be set +to change the interval, which is 60 seconds by default. + +The value of 'database.server.stats.retention' can be changed to tweak +the number of values that are maintained. + + +Set and Monitor Total Instance Limits per Host +---------------------------------------------- + +The CloudStack administrator should monitor the total number of +Instances in each cluster and disable allocation to the cluster if the total is approaching the maximum that the hypervisor can handle. Be sure to leave a safety margin to allow for the possibility of one or more -hosts failing, which would increase the VM load on the other hosts as -the VMs are automatically redeployed. Consult the documentation for your -chosen hypervisor to find the maximum permitted number of VMs per host, +hosts failing, which would increase the Instance load on the other hosts as +the Instances are automatically redeployed. Consult the documentation for your +chosen hypervisor to find the maximum permitted number of Instances per host, then use CloudStack global configuration settings to set this as the -default limit. Monitor the VM activity in each cluster at all times. -Keep the total number of VMs below a safe level that allows for the +default limit. Monitor the Instance activity in each cluster at all times. +Keep the total number of Instances below a safe level that allows for the occasional host failure. For example, if there are N hosts in the cluster, and you want to allow for one host in the cluster to be down at -any given time, the total number of VM instances you can permit in the +any given time, the total number of Instances you can permit in the cluster is at most (N-1) \* (per-host-limit). Once a cluster reaches -this number of VMs, use the CloudStack UI to disable allocation of more -VMs to the cluster. +this number of Instances, use the CloudStack UI to disable allocation of more +Instances to the cluster. Configure XenServer dom0 Memory ------------------------------- Configure the XenServer dom0 settings to allocate more memory to dom0. -This can enable XenServer to handle larger numbers of virtual machines. +This can enable XenServer to handle larger numbers of Instances. We recommend 2940 MB of RAM for XenServer dom0. For instructions on how to do this, see `Citrix Knowledgebase Article `_.The article diff --git a/source/adminguide/ui.rst b/source/adminguide/ui.rst index 5f8594b015..2591af71f6 100644 --- a/source/adminguide/ui.rst +++ b/source/adminguide/ui.rst @@ -19,11 +19,11 @@ Log In to the UI ---------------- CloudStack provides a web-based UI that can be used by both -administrators and end users. The appropriate version of the UI is +administrators and end Users. The appropriate version of the UI is displayed depending on the credentials used to log in. The UI is available in all modern popular browsers including Chrome, Firefox, Edge and Safari. The UI uses API auto-discovery to discover APIs allowed for a logged-in -user and creates navigation and views based on that, and requires the following: +User and creates navigation and views based on that, and requires the following: - API discovery (listApis) enabled for all roles that must use the UI - Modern browsers that are `ES5-compliant `_ @@ -38,19 +38,19 @@ On a fresh Management Server installation, a guided tour splash screen appears. On later visits, you’ll see a login screen where you specify the following to proceed to your Dashboard: -Username -> The user ID of your account. The default username is admin. +Username -> The User ID of your Account. The default username is admin. -Password -> The password associated with the user ID. The password for +Password -> The password associated with the User ID. The password for the default username is password. -Domain -> If you are a root user, leave this field blank. +Domain -> If you are a root User, leave this field blank. -If you are a user in the sub-domains, enter the full path to the domain, +If you are a User in the sub-domains, enter the full path to the domain, excluding the root domain. For example, suppose multiple levels are created under the root domain, -such as Comp1/hr. The users in the Comp1 domain should enter Comp1 in -the Domain field, whereas the users in the Comp1/sales domain should +such as Comp1/hr. The Users in the Comp1 domain should enter Comp1 in +the Domain field, whereas the Users in the Comp1/sales domain should enter Comp1/sales. For more guidance about the choices that appear when you log in to this @@ -60,10 +60,10 @@ UI, see Logging In as the Root Administrator. End User's UI Overview ~~~~~~~~~~~~~~~~~~~~~~ -The CloudStack UI helps users of cloud infrastructure to view and use -their cloud resources, including virtual machines, templates and ISOs, -data volumes and snapshots, guest networks, and IP addresses. If the -user is a member or administrator of one or more CloudStack projects, +The CloudStack UI helps Users of cloud infrastructure to view and use +their cloud resources, including Instances, Templates and ISOs, +data volumes and Snapshots, Guest Networks, and IP addresses. If the +User is a member or administrator of one or more CloudStack projects, the UI can provide a project-oriented view. @@ -76,7 +76,7 @@ Root Administrator's UI Overview :align: left The CloudStack UI helps the CloudStack administrator provision, view, -and manage the cloud infrastructure, domains, user accounts, projects, +and manage the cloud infrastructure, domains, User Accounts, projects, and configuration settings. The first time you start the UI after a fresh Management Server installation, you can choose to follow a guided tour to provision your cloud infrastructure. On subsequent logins, the @@ -90,7 +90,7 @@ Logging In as the Root Administrator ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ After the Management Server software is installed and running, you can -run the CloudStack user interface. This UI is there to help you +run the CloudStack User interface. This UI is there to help you provision, view, and manage your cloud infrastructure. #. Open your favorite Web browser and go to this URL. Substitute the IP @@ -111,8 +111,8 @@ provision, view, and manage your cloud infrastructure. possible configuration so that you can get started right away. We'll help you set up a cloud with the following features: a single machine that runs CloudStack software and uses NFS to - provide storage; a single machine running VMs under the XenServer - or KVM hypervisor; and a shared public network. + provide storage; a single machine running Instances under the XenServer + or KVM hypervisor; and a shared public Network. The prompts in this guided tour should give you all the information you need, but if you want just a bit more detail, you @@ -123,8 +123,8 @@ provision, view, and manage your cloud infrastructure. deployment, or you are ready to start scaling up a trial cloud that you set up earlier with the basic setup screens. In the Administrator UI, you can start using the more powerful features - of CloudStack, such as advanced VLAN networking, high - availability, additional network elements such as load balancers + of CloudStack, such as advanced VLAN Networking, high + availability, additional Network elements such as load balancers and firewalls, and support for multiple hypervisors including Citrix XenServer, KVM, and VMware vSphere. @@ -135,10 +135,10 @@ provision, view, and manage your cloud infrastructure. chose experienced user, use the steps in :ref:`changing-root-password`. .. warning:: - You are logging in as the root administrator. This account manages the + You are logging in as the root administrator. This Account manages the CloudStack deployment, including physical infrastructure. The root administrator can modify configuration settings to change basic - functionality, create or delete user accounts, and take many actions + functionality, create or delete User Accounts, and take many actions that should be performed only by an authorized person. Please change the default password to a new, unique password. @@ -149,9 +149,9 @@ Changing the Root Password During installation and ongoing cloud administration, you will need to log in to the UI as the root administrator. The root administrator -account manages the CloudStack deployment, including physical +Account manages the CloudStack deployment, including physical infrastructure. The root administrator can modify configuration settings -to change basic functionality, create or delete user accounts, and take +to change basic functionality, create or delete User Accounts, and take many actions that should be performed only by an authorized person. When first installing CloudStack, be sure to change the default password to a new, unique value. @@ -163,12 +163,12 @@ new, unique value. http://:8080/client -#. Log in to the UI using the current root user ID and password. The +#. Log in to the UI using the current root User ID and password. The default is admin, password. #. Click Accounts. -#. Click the admin account name. +#. Click the admin Account name. #. Click View Users. @@ -185,19 +185,20 @@ Users can customize the CloudStack's user interface by means of a configuration To change the logo, login banner, error page icon, etc. the following details can be edited in config.json: -========== ================================================== -Property Description -========== ================================================== -apiBase Changes the suffix for the API endpoint -docBase Changes the base URL for the documentation -appTitle Changes the title of the portal -footer Changes the footer text -logo Changes the logo top-left side image -banner Changes the login banner image -error.404 Changes the image of error Page not found -error.403 Changes the image of error Forbidden -error.500 Changes the image of error Internal Server Error. -========== ================================================== +============================= ================================================================ +Property Description +============================= ================================================================ +apiBase Changes the suffix for the API endpoint +docBase Changes the base URL for the documentation +appTitle Changes the title of the portal +footer Changes the footer text +loginFooter Configure to display text (HTML) in the footer at the login screen. +logo Changes the logo top-left side image +banner Changes the login banner image +error.404 Changes the image of error Page not found +error.403 Changes the image of error Forbidden +error.500 Changes the image of error Internal Server Error. +============================= ================================================================ .. parsed-literal:: @@ -205,6 +206,7 @@ error.500 Changes the image of error Internal Server Error. "docBase": "http://docs.cloudstack.apache.org/en/latest", "appTitle": "CloudStack", "footer": "Licensed under the Apache License, Version 2.0.", + "loginFooter": "By logging, you are accepting the usage policy", "logo": "assets/logo.svg", "banner": "assets/banner.svg", "error": { @@ -285,6 +287,44 @@ Some assorted primary theme colours: - Green: #52C41A - Purple: #722ED1 +The config.json also allows to configure a special-purpose card that shows on +the Account and project dashboards. This card is created using the `userCard` +section that has a configurable title, icon and a list of configurable links +that have a title, text (description), link and icon. + +.. parsed-literal:: + + "userCard": { + "title": "label.help", + "icon": "question-circle-outlined", + "links": [ + { + "title": "Documentation", + "text": "CloudStack documentation website", + "link": "https://docs.cloudstack.apache.org/en/latest/", + "icon": "read-outlined" + }, + { + "title": "API Documentation", + "text": "Refer to API documentation", + "link": "https://cloudstack.apache.org/api.html", + "icon": "api-outlined" + }, + { + "title": "Email Support", + "text": "Join CloudStack users mailing list to seek and provide support", + "link": "mailto:users-subscribe@cloudstack.apache.org", + "icon": "mail-outlined" + }, + { + "title": "Report Issue", + "text": "Submit a bug or improvement request", + "link": "https://github.com/apache/cloudstack/issues/new", + "icon": "bug-outlined" + } + ] + }, + Contextual help documentation URLs can be customized with the help of `docBase` and `docHelpMappings` properties. To override a particular documentation URL, a mapping can be added for the URL path in the config. A documentation URL is formed by combining the `docBase` URL base and a path set in the source code. Adding a mapping for any particular path in the configuration will result in generating documetation URL with overridden path. By default, `docHelpMappings` lists all existing documentation URL suffixes, mapped to themselves, in the configuration file that are used in the code. @@ -472,6 +512,66 @@ Useful documentations: - `JavaScript ES6 Reference `_ - `Introduction to ES6 `_ +Multiple Management Support +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +User can use file `/etc/cloudstack/management/config.json` to configure the settings which allow Cloudstack to support multiple servers. + +To Cloudstack support use multiple servers, the following details can be edited in config.json: + +============================= ================================================================ +Property Description +============================= ================================================================ +multipleServer Configure to allow Cloudstack to support multiple servers. +servers List of servers to which Cloudstack can connect. +============================= ================================================================ + +.. parsed-literal:: + + { + ... + "servers" [ + { + "name": "server-1", + "apiHost": "/server-1", + "apiBase": "/client/api", + }, + { + "name": "server-2", + "apiHost": "", + "apiBase": "/client/api", + } + ] + ... + "multipleServer": true + } + +For the UI to work with different servers, it is necessary to configure the Nginx config proxy to allow connections to the respective servers without Cross-Origin (to be put into /etc/nginx/conf.d/default/conf or similar). + +.. parsed-literal:: + + server { + listen 80; + server_name localhost; + location / { + # /src/ui/dist contains the built UI webpack + root /src/ui/dist; + index index.html; + } + # for apiHost of server-1 located in config.json + location /server-1/client/ { + rewrite ^/server-1/(.*)$ /$1 break; + # server's actual URI + proxy_pass https://server-1.your.domain; + } + # for apiHost of server-2 located in config.json + location /client/ { + # server's actual URI + proxy_pass https://server-2.your.domain; + } + } + +|ui-multiple-server-management.png| Known Limitations ~~~~~~~~~~~~~~~~~ @@ -480,11 +580,14 @@ The following features are no longer supported or available in the UI but are st - Support for S3 based secondary storage. - NFS secondary staging storage list/resource view and add/update actions. -- SSL certificate for Guest network LB rule. +- SSL certificate for Guest Network LB rule. - Regions. .. |change-password.png| image:: /_static/images/change-password.png - :alt: button to change a user's password + :alt: button to change a User's password .. |ui-custom-plugin.png| image:: /_static/images/ui-custom-plugin.png :alt: Custom plugin shown in UI with navigation + +.. |ui-multiple-server-management.png| image:: /_static/images/ui-multiple-server-management.png + :alt: Custom plugin shown in UI with navigation diff --git a/source/adminguide/usage.rst b/source/adminguide/usage.rst index 654faea7d8..6467b7ef5b 100644 --- a/source/adminguide/usage.rst +++ b/source/adminguide/usage.rst @@ -28,8 +28,8 @@ will use CloudStack resource UUIDs instead of internal database IDs. To get description in the old format, an API parameter "oldformat" is introduced which is false by default. -The usage records show the amount of resources, such as VM run time or -template storage space, consumed by guest instances. +The usage records show the amount of resources, such as Instance run time or +Template storage space, consumed by Guest Instances. The Usage Server runs at least once per day. It can be configured to run multiple times per day. @@ -99,8 +99,8 @@ usage.sanity.check.interval The number of days between sanity checks. Set this in order to periodically search for records with erroneous data before issuing -customer invoices. For example, this checks for VM usage records created -after the VM was destroyed, and similar checks for templates, volumes, +customer invoices. For example, this checks for Instance usage records created +after the Instance was destroyed, and similar checks for Templates, Volumes, and so on. It also checks for usage times longer than the aggregation range. If any issue is found, the alert ALERT\_TYPE\_USAGE\_SANITY\_RESULT = 21 is sent. @@ -167,7 +167,7 @@ Setting Usage Limits -------------------- CloudStack provides several administrator control points for capping -resource usage by users. Some of these limits are global configuration +resource usage by Users. Some of these limits are global configuration parameters. Others are applied at the ROOT domain and may be overridden on a per-account basis. @@ -175,9 +175,9 @@ on a per-account basis. Globally Configured Limits ~~~~~~~~~~~~~~~~~~~~~~~~~~ -In a zone, the guest virtual network has a 24 bit CIDR by default. This -limits the guest virtual network to 254 running instances. It can be -adjusted as needed, but this must be done before any instances are +In a zone, the guest virtual Network has a 24 bit CIDR by default. This +limits the guest virtual Network to 254 running Instances. It can be +adjusted as needed, but this must be done before any Instances are created in the zone. For example, 10.1.1.0/22 would provide for ~1000 addresses. @@ -188,29 +188,29 @@ The following table lists limits set in the Global Configuration: +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Parameter Name | Definition | +===========================+==================================================================================================================================================================================================================================================================================================+ -| max.account.public.ips | Number of public IP addresses that can be owned by an account | +| max.account.public.ips | Number of public IP addresses that can be owned by an Account | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| max.account.snapshots | Number of snapshots that can exist for an account | +| max.account.snapshots | Number of Templates that can exist for an Account | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| max.account.templates | Number of templates that can exist for an account | +| max.account.templates | Number of Templates that can exist for an Account | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| max.account.user.vms | Number of virtual machine instances that can exist for an account | +| max.account.user.vms | Number of Instances that can exist for an Account | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| max.account.volumes | Number of disk volumes that can exist for an account | +| max.account.volumes | Number of disk volumes that can exist for an Account | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| max.template.iso.size | Maximum size for a downloaded template or ISO in GB | +| max.template.iso.size | Maximum size for a downloaded Template or ISO in GB | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | max.volume.size.gb | Maximum size for a volume in GB | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| network.throttling.rate | Default data transfer rate in megabits per second allowed per user (supported on XenServer) | +| network.throttling.rate | Default data transfer rate in megabits per second allowed per User (supported on XenServer) | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| snapshot.max.hourly | Maximum recurring hourly snapshots to be retained for a volume. If the limit is reached, early snapshots from the start of the hour are deleted so that newer ones can be saved. This limit does not apply to manual snapshots. If set to 0, recurring hourly snapshots can not be scheduled | +| snapshot.max.hourly | Maximum recurring hourly Templates to be retained for a volume. If the limit is reached, early Templates from the start of the hour are deleted so that newer ones can be saved. This limit does not apply to manual Templates. If set to 0, recurring hourly Templates can not be scheduled | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| snapshot.max.daily | Maximum recurring daily snapshots to be retained for a volume. If the limit is reached, snapshots from the start of the day are deleted so that newer ones can be saved. This limit does not apply to manual snapshots. If set to 0, recurring daily snapshots can not be scheduled | +| snapshot.max.daily | Maximum recurring daily Templates to be retained for a volume. If the limit is reached, Templates from the start of the day are deleted so that newer ones can be saved. This limit does not apply to manual Templates. If set to 0, recurring daily Templates can not be scheduled | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| snapshot.max.weekly | Maximum recurring weekly snapshots to be retained for a volume. If the limit is reached, snapshots from the beginning of the week are deleted so that newer ones can be saved. This limit does not apply to manual snapshots. If set to 0, recurring weekly snapshots can not be scheduled | +| snapshot.max.weekly | Maximum recurring weekly Templates to be retained for a volume. If the limit is reached, Templates from the beginning of the week are deleted so that newer ones can be saved. This limit does not apply to manual Templates. If set to 0, recurring weekly Templates can not be scheduled | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| snapshot.max.monthly | Maximum recurring monthly snapshots to be retained for a volume. If the limit is reached, snapshots from the beginning of the month are deleted so that newer ones can be saved. This limit does not apply to manual snapshots. If set to 0, recurring monthly snapshots can not be scheduled. | +| snapshot.max.monthly | Maximum recurring monthly Templates to be retained for a volume. If the limit is reached, Templates from the beginning of the month are deleted so that newer ones can be saved. This limit does not apply to manual Templates. If set to 0, recurring monthly Templates can not be scheduled. | +---------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ To modify global configuration parameters, use the global configuration @@ -224,7 +224,7 @@ CloudStack allows you to control resource usage based on the types of resources, such as CPU, RAM, Primary storage, and Secondary storage. A new set of resource types has been added to the existing pool of resources to support the new customization model—need-basis usage, such -as large VM or small VM. The new resource types are now broadly +as large Instance or small Instance. The new resource types are now broadly classified as CPU, RAM, Primary storage, and Secondary storage. The root administrator is able to impose resource usage limit by the following resource types for Domain, Project, and Accounts. @@ -245,21 +245,21 @@ parameters have been added: =================================== ================================================================= Parameter Name Description =================================== ================================================================= -max.account.cpus Maximum number of CPU cores that can be used for an account. +max.account.cpus Maximum number of CPU cores that can be used for an Account. Default is 40. -max.account.ram (MB) Maximum RAM that can be used for an account. +max.account.ram (MB) Maximum RAM that can be used for an Account. Default is 40960. -max.account.primary.storage (GB) Maximum primary storage space that can be used for an account. +max.account.primary.storage (GB) Maximum primary storage space that can be used for an Account. Default is 200. -max.account.secondary.storage (GB) Maximum secondary storage space that can be used for an account. +max.account.secondary.storage (GB) Maximum secondary storage space that can be used for an Account. Default is 400. -max.project.cpus Maximum number of CPU cores that can be used for an account. +max.project.cpus Maximum number of CPU cores that can be used for an Account. Default is 40. -max.project.ram (MB) Maximum RAM that can be used for an account. +max.project.ram (MB) Maximum RAM that can be used for an Account. Default is 40960. -max.project.primary.storage (GB) Maximum primary storage space that can be used for an account. +max.project.primary.storage (GB) Maximum primary storage space that can be used for an Account. Default is 200. -max.project.secondary.storage (GB) Maximum secondary storage space that can be used for an account. +max.project.secondary.storage (GB) Maximum secondary storage space that can be used for an Account. Default is 400. =================================== ================================================================= @@ -267,7 +267,7 @@ max.project.secondary.storage (GB) Maximum secondary storage space that can be User Permission ~~~~~~~~~~~~~~~ -The root administrator, domain administrators and users are able to list +The root administrator, domain administrators and Users are able to list resources. Ensure that proper logs are maintained in the ``vmops.log`` and ``api.log`` files. @@ -275,10 +275,10 @@ and ``api.log`` files. limits. - The domain administrators are allowed to list and change these - resource limits only for the sub-domains and accounts under their own + resource limits only for the sub-domains and Accounts under their own domain or the sub-domains. -- The end users will the privilege to list resource limits. Use the +- The end Users will the privilege to list resource limits. Use the listResourceLimits API. @@ -289,47 +289,47 @@ Limit Usage Considerations volume and not the physical size— the actual consumed size on disk in case of thin provisioning. -- If the admin reduces the resource limit for an account and set it to +- If the admin reduces the resource limit for an Account and set it to less than the resources that are currently being consumed, the - existing VMs/templates/volumes are not destroyed. Limits are imposed - only if the user under that account tries to execute a new operation + existing Instances/Templates/Volumes are not destroyed. Limits are imposed + only if the User under that Account tries to execute a new operation using any of these resources. For example, the existing behavior in - the case of a VM are: + the case of an Instance are: - - migrateVirtualMachine: The users under that account will be able - to migrate the running VM into any other host without facing any + - migrateVirtualMachine: The Users under that Account will be able + to migrate the running Instance into any other host without facing any limit issue. - - recoverVirtualMachine: Destroyed VMs cannot be recovered. + - recoverVirtualMachine: Destroyed Instances cannot be recovered. - For any resource type, if a domain has limit X, sub-domains or accounts under that domain can have there own limits. However, the - sum of resource allocated to a sub-domain or accounts under the + sum of resource allocated to a sub-domain or Accounts under the domain at any point of time should not exceed the value X. For example, if a domain has the CPU limit of 40 and the sub-domain - D1 and account A1 can have limits of 30 each, but at any point of + D1 and Account A1 can have limits of 30 each, but at any point of time the resource allocated to D1 and A1 should not exceed the limit of 40. - If any operation needs to pass through two of more resource limit check, then the lower of 2 limits will be enforced, For example: if - an account has the VM limit of 10 and CPU limit of 20, and a user - under that account requests 5 VMs of 4 CPUs each. The user can deploy - 5 more VMs because VM limit is 10. However, the user cannot deploy - any more instances because the CPU limit has been exhausted. + an Account has the Instance limit of 10 and CPU limit of 20, and a User + under that Account requests 5 Instances of 4 CPUs each. The User can deploy + 5 more Instances because Instance limit is 10. However, the User cannot deploy + any more Instances because the CPU limit has been exhausted. Limiting Resource Usage in a Domain ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CloudStack allows the configuration of limits on a domain basis. With a -domain limit in place, all users still have their account limits. They +domain limit in place, all Users still have their Account limits. They are additionally limited, as a group, to not exceed the resource limits -set on their domain. Domain limits aggregate the usage of all accounts -in the domain as well as all the accounts in all the sub-domains of that +set on their domain. Domain limits aggregate the usage of all Accounts +in the domain as well as all the Accounts in all the sub-domains of that domain. Limits set at the root domain level apply to the sum of resource -usage by the accounts in all the domains and sub-domains below that root +usage by the Accounts in all the domains and sub-domains below that root domain. To set a domain limit: @@ -353,7 +353,7 @@ To set a domain limit: - Instance Limits - The number of instances that can be used in a domain. + The number of Instances that can be used in a domain. - Public IP Limits @@ -365,11 +365,11 @@ To set a domain limit: - Snapshot Limits - The number of snapshots that can be created in a domain. + The number of Templates that can be created in a domain. - Template Limits - The number of templates that can be registered in a domain. + The number of Templates that can be registered in a domain. - VPC limits @@ -397,19 +397,19 @@ To set a domain limit: Default Account Resource Limits ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -You can limit resource use by accounts. The default limits are set by -using Global configuration parameters, and they affect all accounts +You can limit resource use by Accounts. The default limits are set by +using Global configuration parameters, and they affect all Accounts within a cloud. The relevant parameters are those beginning with max.account, for example: max.account.snapshots. -To override a default limit for a particular account, set a per-account +To override a default limit for a particular Account, set a per-account resource limit. #. Log in to the CloudStack UI. #. In the left navigation tree, click Accounts. -#. Select the account you want to modify. The current limits are +#. Select the Account you want to modify. The current limits are displayed. A value of -1 shows that there is no limit in place. @@ -424,61 +424,61 @@ resource limit. - Instance Limits - The number of instances that can be used in an account. + The number of Instances that can be used in an Account. The default is 20. - Public IP Limits - The number of public IP addresses that can be used in an account. + The number of public IP addresses that can be used in an Account. The default is 20. - Volume Limits - The number of disk volumes that can be created in an account. + The number of disk volumes that can be created in an Account. The default is 20. - Snapshot Limits - The number of snapshots that can be created in an account. + The number of Templates that can be created in an Account. The default is 20. - Template Limits - The number of templates that can be registered in an account. + The number of Templates that can be registered in an Account. The default is 20. - VPC limits - The number of VPCs that can be created in an account. + The number of VPCs that can be created in an Account. The default is 20. - CPU limits - The number of CPU cores that can be used for an account. + The number of CPU cores that can be used for an Account. The default is 40. - Memory limits (MB) - The number of RAM that can be used for an account. + The number of RAM that can be used for an Account. The default is 40960. - Primary Storage limits (GB) - The primary storage space that can be used for an account. + The primary storage space that can be used for an Account. The default is 200. - Secondary Storage limits (GB) - The secondary storage space that can be used for an account. + The secondary storage space that can be used for an Account. The default is 400. @@ -488,40 +488,40 @@ resource limit. Usage Record Format ------------------- -Virtual Machine Usage Record Format -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Instance Usage Record Format +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -For running and allocated virtual machine usage, the following fields +For running and allocated Instance usage, the following fields exist in a usage record: -- account – name of the account +- account – name of the Account -- accountid – ID of the account +- accountid – ID of the Account -- domainid – ID of the domain in which this account resides +- domainid – ID of the domain in which this Account resides - zoneid – Zone where the usage occurred - description – A string describing what the usage record is tracking - usage – String representation of the usage, including the units of - usage (e.g. 'Hrs' for VM running time) + usage (e.g. 'Hrs' for Instance running time) - usagetype – A number representing the usage type (see Usage Types) - rawusage – A number representing the actual usage in hours -- virtualMachineId – The ID of the virtual machine +- virtualMachineId – The ID of the Instance -- name – The name of the virtual machine +- name – The name of the Instance - offeringid – The ID of the service offering -- templateid – The ID of the template or the ID of the parent template. - The parent template value is present when the current template was +- templateid – The ID of the Template or the ID of the parent Template. + The parent Template value is present when the current Template was created from a volume. -- usageid – Virtual machine +- usageid – Instance - type – Hypervisor @@ -532,14 +532,14 @@ exist in a usage record: Network Usage Record Format ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -For network usage (bytes sent/received), the following fields exist in a +For Network usage (bytes sent/received), the following fields exist in a usage record. -- account – name of the account +- account – name of the Account -- accountid – ID of the account +- accountid – ID of the Account -- domainid – ID of the domain in which this account resides +- domainid – ID of the domain in which this Account resides - zoneid – Zone where the usage occurred @@ -562,9 +562,9 @@ IP Address Usage Record Format For IP address usage the following fields exist in a usage record. -- account - name of the account +- account - name of the Account -- accountid - ID of the account +- accountid - ID of the Account - domainid - ID of the domain in which this account resides @@ -617,7 +617,7 @@ For disk volumes, the following fields exist in a usage record. - type – Hypervisor -- templateid – ROOT template ID +- templateid – ROOT Template ID - size – The amount of storage allocated @@ -645,14 +645,14 @@ Template, ISO, and Snapshot Usage Record Format - rawusage – A number representing the actual usage in hours -- usageid – The ID of the the template, ISO, or snapshot +- usageid – The ID of the Template, ISO, or Template - offeringid – The ID of the disk offering -- templateid – – Included only for templates (usage type 7). Source - template ID. +- templateid – – Included only for Templates (usage type 7). Source + Template ID. -- size – Size of the template, ISO, or snapshot +- size – Size of the Template, ISO, or Template - startdate, enddate – The range of time for which the usage is aggregated; see Dates in the Usage Record @@ -706,15 +706,15 @@ Network Offering Usage Record Format - rawusage – A number representing the actual usage in hours -- usageid – ID of the network offering +- usageid – ID of the Network offering - usagetype – A number representing the usage type (see Usage Types) - offeringid – Network offering ID -- virtualMachineId – The ID of the virtual machine +- virtualMachineId – The ID of the Instance -- virtualMachineId – The ID of the virtual machine +- virtualMachineId – The ID of the Instance - startdate, enddate – The range of time for which the usage is aggregated; see Dates in the Usage Record @@ -740,7 +740,7 @@ VPN User Usage Record Format - rawusage – A number representing the actual usage in hours -- usageid – VPN user ID +- usageid – VPN User ID - usagetype – A number representing the usage type (see Usage Types) @@ -755,108 +755,108 @@ The following table shows all usage types. .. cssclass:: table-striped table-bordered table-hover -+------------------+-----------------------------------+-----------------------+ -| Type ID | Type Name | Description | -+==================+===================================+=======================+ -| 1 | RUNNING\_VM | Tracks the total | -| | | running time of a VM | -| | | per usage record | -| | | period. If the VM is | -| | | upgraded during the | -| | | usage period, you | -| | | will get a separate | -| | | Usage Record for the | -| | | new upgraded VM. | -+------------------+-----------------------------------+-----------------------+ -| 2 | ALLOCATED\_VM | Tracks the total time | -| | | the VM has been | -| | | created to the time | -| | | when it has been | -| | | destroyed. This usage | -| | | type is also useful | -| | | in determining usage | -| | | for specific | -| | | templates such as | -| | | Windows-based | -| | | templates. | -+------------------+-----------------------------------+-----------------------+ -| 3 | IP\_ADDRESS | Tracks the public IP | -| | | address owned by the | -| | | account. | -+------------------+-----------------------------------+-----------------------+ -| 4 | NETWORK\_BYTES\_SENT | Tracks the total | -| | | number of bytes sent | -| | | by all the VMs for an | -| | | account. Cloud.com | -| | | does not currently | -| | | track network traffic | -| | | per VM. | -+------------------+-----------------------------------+-----------------------+ -| 5 | NETWORK\_BYTES\_RECEIVED | Tracks the total | -| | | number of bytes | -| | | received by all the | -| | | VMs for an account. | -| | | Cloud.com does not | -| | | currently track | -| | | network traffic per | -| | | VM. | -+------------------+-----------------------------------+-----------------------+ -| 6 | VOLUME | Tracks the total time | -| | | a disk volume has | -| | | been created to the | -| | | time when it has been | -| | | destroyed. | -+------------------+-----------------------------------+-----------------------+ -| 7 | TEMPLATE | Tracks the total time | -| | | a template (either | -| | | created from a | -| | | snapshot or uploaded | -| | | to the cloud) has | -| | | been created to the | -| | | time it has been | -| | | destroyed. The size | -| | | of the template is | -| | | also returned. | -+------------------+-----------------------------------+-----------------------+ -| 8 | ISO | Tracks the total time | -| | | an ISO has been | -| | | uploaded to the time | -| | | it has been removed | -| | | from the cloud. The | -| | | size of the ISO is | -| | | also returned. | -+------------------+-----------------------------------+-----------------------+ -| 9 | SNAPSHOT | Tracks the total time | -| | | from when a snapshot | -| | | has been created to | -| | | the time it have been | -| | | destroyed. | -+------------------+-----------------------------------+-----------------------+ -| 11 | LOAD\_BALANCER\_POLICY | Tracks the total time | -| | | a load balancer | -| | | policy has been | -| | | created to the time | -| | | it has been removed. | -| | | Cloud.com does not | -| | | track whether a VM | -| | | has been assigned to | -| | | a policy. | -+------------------+-----------------------------------+-----------------------+ -| 12 | PORT\_FORWARDING\_RULE | Tracks the time from | -| | | when a port | -| | | forwarding rule was | -| | | created until the | -| | | time it was removed. | -+------------------+-----------------------------------+-----------------------+ -| 13 | NETWORK\_OFFERING | The time from when a | -| | | network offering was | -| | | assigned to a VM | -| | | until it is removed. | -+------------------+-----------------------------------+-----------------------+ -| 14 | VPN\_USERS | The time from when a | -| | | VPN user is created | -| | | until it is removed. | -+------------------+-----------------------------------+-----------------------+ ++------------------+-----------------------------------+-----------------------------+ +| Type ID | Type Name | Description | ++==================+===================================+=============================+ +| 1 | RUNNING\_VM | Tracks the total | +| | | running time of an Instance | +| | | per usage record | +| | | period. If the Instance is | +| | | upgraded during the | +| | | usage period, you | +| | | will get a separate | +| | | Usage Record for the | +| | | new upgraded Instance. | ++------------------+-----------------------------------+-----------------------------+ +| 2 | ALLOCATED\_VM | Tracks the total time | +| | | the Instance has been | +| | | created to the time | +| | | when it has been | +| | | destroyed. This usage | +| | | type is also useful | +| | | in determining usage | +| | | for specific | +| | | Templates such as | +| | | Windows-based | +| | | Templates. | ++------------------+-----------------------------------+-----------------------------+ +| 3 | IP\_ADDRESS | Tracks the public IP | +| | | address owned by the | +| | | account. | ++------------------+-----------------------------------+-----------------------------+ +| 4 | NETWORK\_BYTES\_SENT | Tracks the total | +| | | number of bytes sent | +| | | by all the Instances for an | +| | | account. Cloud.com | +| | | does not currently | +| | | track Network traffic | +| | | per Instance. | ++------------------+-----------------------------------+-----------------------------+ +| 5 | NETWORK\_BYTES\_RECEIVED | Tracks the total | +| | | number of bytes | +| | | received by all the | +| | | Instances for an account. | +| | | Cloud.com does not | +| | | currently track | +| | | Network traffic per | +| | | Instance. | ++------------------+-----------------------------------+-----------------------------+ +| 6 | VOLUME | Tracks the total time | +| | | a disk volume has | +| | | been created to the | +| | | time when it has been | +| | | destroyed. | ++------------------+-----------------------------------+-----------------------------+ +| 7 | TEMPLATE | Tracks the total time | +| | | a Template (either | +| | | created from a | +| | | Template or uploaded | +| | | to the cloud) has | +| | | been created to the | +| | | time it has been | +| | | destroyed. The size | +| | | of the Template is | +| | | also returned. | ++------------------+-----------------------------------+-----------------------------+ +| 8 | ISO | Tracks the total time | +| | | an ISO has been | +| | | uploaded to the time | +| | | it has been removed | +| | | from the cloud. The | +| | | size of the ISO is | +| | | also returned. | ++------------------+-----------------------------------+-----------------------------+ +| 9 | SNAPSHOT | Tracks the total time | +| | | from when a Template | +| | | has been created to | +| | | the time it have been | +| | | destroyed. | ++------------------+-----------------------------------+-----------------------------+ +| 11 | LOAD\_BALANCER\_POLICY | Tracks the total time | +| | | a load balancer | +| | | policy has been | +| | | created to the time | +| | | it has been removed. | +| | | Cloud.com does not | +| | | track whether an Instance | +| | | has been assigned to | +| | | a policy. | ++------------------+-----------------------------------+-----------------------------+ +| 12 | PORT\_FORWARDING\_RULE | Tracks the time from | +| | | when a port | +| | | forwarding rule was | +| | | created until the | +| | | time it was removed. | ++------------------+-----------------------------------+-----------------------------+ +| 13 | NETWORK\_OFFERING | The time from when a | +| | | Network offering was | +| | | assigned to an Instance | +| | | until it is removed. | ++------------------+-----------------------------------+-----------------------------+ +| 14 | VPN\_USERS | The time from when a | +| | | VPN User is created | +| | | until it is removed. | ++------------------+-----------------------------------+-----------------------------+ Example response from listUsageRecords @@ -900,32 +900,32 @@ Usage records include a start date and an end date. These dates define the period of time for which the raw usage number was calculated. If daily aggregation is used, the start date is midnight on the day in question and the end date is 23:59:59 on the day in question (with one -exception; see below). A virtual machine could have been deployed at +exception; see below). An Instance could have been deployed at noon on that day, stopped at 6pm on that day, then started up again at 11pm. When usage is calculated on that day, there will be 7 hours of -running VM usage (usage type 1) and 12 hours of allocated VM usage -(usage type 2). If the same virtual machine runs for the entire next -day, there will 24 hours of both running VM usage (type 1) and allocated -VM usage (type 2). +running Instance usage (usage type 1) and 12 hours of allocated Instance usage +(usage type 2). If the same Instance runs for the entire next +day, there will 24 hours of both running Instance usage (type 1) and allocated +Instance usage (type 2). -Note: The start date is not the time a virtual machine was started, and -the end date is not the time when a virtual machine was stopped. The +Note: The start date is not the time an Instance was started, and +the end date is not the time when an Instance was stopped. The start and end dates give the time range within which usage was calculated. -For network usage, the start date and end date again define the range in -which the number of bytes transferred was calculated. If a user +For Network usage, the start date and end date again define the range in +which the number of bytes transferred was calculated. If a User downloads 10 MB and uploads 1 MB in one day, there will be two records, one showing the 10 megabytes received and one showing the 1 megabyte sent. There is one case where the start date and end date do not correspond to midnight and 11:59:59pm when daily aggregation is used. This occurs only -for network usage records. When the usage server has more than one day's +for Network usage records. When the usage server has more than one day's worth of unprocessed data, the old data will be included in the aggregation period. The start date in the usage record will show the date and time of the earliest event. For other types of usage, such as -IP addresses and VMs, the old unprocessed data is not included in daily +IP addresses and Instances, the old unprocessed data is not included in daily aggregation. diff --git a/source/adminguide/veeam_plugin.rst b/source/adminguide/veeam_plugin.rst index 14424fb5d1..f0d2091b56 100644 --- a/source/adminguide/veeam_plugin.rst +++ b/source/adminguide/veeam_plugin.rst @@ -23,20 +23,20 @@ About the Veeam Backup and Recovery Plugin There are a couple of important concepts to understand before working with the Veeam plugin. -#. Backup Provider Offerings for the Veeam B&R plugin are template backup jobs. +#. Backup Provider Offerings for the Veeam B&R plugin are Template backup jobs. #. Veeams API does not allow for the creation of backup jobs. Therefore, a backup job must be created which will act - as a template for all 'backups' which are based on it. You will need to create backup job templates for each of the - Backup Offerings which you will be presenting to your users, be they a default template for ad-hoc/scheduled backups or - 'SLA' specific templates (ie Gold offering). Refer to the general B&R for information regrading the B&R + as a Template for all 'backups' which are based on it. You will need to create backup job Templates for each of the + Backup Offerings which you will be presenting to your users, be they a default Template for ad-hoc/scheduled backups or + 'SLA' specific Templates (ie Gold offering). Refer to the general B&R for information regrading the B&R job types. -#. The backup job templates will be zone specific as they will contain the backup destination, and this will be different - in each zone (unless you have extreamly fat links between zones). +#. The backup job Templates will be zone specific as they will contain the backup destination, and this will be different + in each zone (unless you have extremely fat links between zones). #. Veeam backup jobs are not allowed to be empty (i.e. they must backup something); therefore a dummy tag which - is not assigned to any VM must be created via vCenter. The initial backup target of the backup job templates is - then 'any VM with the dummy tag assigned' i.e. no VMs + is not assigned to any Instance must be created via vCenter. The initial backup target of the backup job Templates is + then 'any VM with the dummy tag assigned' i.e. no Instances #. Veeam's API is not complete and therefore a mix of API commands and powershell commands (via SSH) are employed. @@ -53,7 +53,7 @@ Windows Server 2019 (with desktop), although much of the development work was do desktop). The following steps give a minimal installation, they do not cover Veeam integrations with backup, storage or -virtualisation hardware. A number of the steps below may already have been carried out if you are already using Veeam Backup +virtualisation hardware. A number of the steps below may already have been carried out if you are already using Veeam Backup and Replication, however please read the steps below carefully to ensure that your installation meet all requirements for compatibility with the B&R Veeam plug-in. @@ -77,7 +77,7 @@ but at a high level you need to have done the following; Creating Template jobs ---------------------- -#. As noted above, a dummy VM tag is required in order to create template jobs which don't contain any VMs. This is done via vCenter +#. As noted above, a dummy VM tag is required in order to create Template jobs which don't contain any Instances. This is done via vCenter by navigating to the 'Tags and Custom Attributes' section, and first creating a category (if you dont already have a suitable one). |BnR-DummyTagCategory.jpg| @@ -86,25 +86,25 @@ Creating Template jobs |BnR-CreateDummyTag.jpg| -#. Now create the template job in Veeam Backup and Replication Manager. using the New Backup Job (Virtual Machine) wizard. +#. Now create the Template job in Veeam Backup and Replication Manager. Using the New Backup Job (Instance) wizard. #. Give the job a name that describes what the job does ie *template_job_zone1_default* or *template_daily_job-14_kept* (the end user will not see this name). - #. In the Virtual Machines section of the wizard, click 'Add' and select the 'VMs and Tags' filter (top right of the + #. In the Instances section of the wizard, click 'Add' and select the 'VMs and Tags' filter (top right of the 'Add Objects' dialog box). And then select your dummy tag and click on Add. |BnR-VMsandTags.jpg| #. In the Storage section is the correct Backup repository for the zone and number of restore points. (note there are a number - of other advanaced options which can be set, these are transparent to CloudStack. CloudStack will clone this job 'as-is' including - all advanced settings. However changing these settings will only effect NEW jobs created from the template, existing jobs will be + of other advanced options which can be set, these are transparent to CloudStack. CloudStack will clone this job 'as-is' including + all advanced settings. However changing these settings will only effect NEW jobs created from the Template, existing jobs will be unchanged. #. The same is true for the Guest Processing section. - #. In the Schedule section you, if you are creating an 'SLA' based backup template, you would set the job to run automatically and + #. In the Schedule section you, if you are creating an 'SLA' based backup Template, you would set the job to run automatically and select 'Periodically every' 24hrs and then in the 'Schedule' dialog set the hours in which the job is allowed to run. This allows - Veeam to choose the best time to run the backup within a given window. If you are creating a template for adhoc/scheduled backups, + Veeam to choose the best time to run the backup within a given window. If you are creating a Template for adhoc/scheduled backups, do not tick 'Run the job automatically' as CloudStack will trigger jobs as and when required. |BnR-backupschedule.jpg| @@ -115,7 +115,7 @@ Creating Template jobs Connecting CloudStack to Veeam ------------------------------- -Once Veeam is configured with SSH enabled and at least one template job, we can connect CloudStack to your Veeam server. +Once Veeam is configured with SSH enabled and at least one Template job, we can connect CloudStack to your Veeam server. To do this, you simply update the global settings listed below: diff --git a/source/adminguide/virtual_machines.rst b/source/adminguide/virtual_machines.rst index 2fa1a378f3..8ee63a59e9 100644 --- a/source/adminguide/virtual_machines.rst +++ b/source/adminguide/virtual_machines.rst @@ -13,87 +13,87 @@ specific language governing permissions and limitations under the License. -About Working with Virtual Machines -=================================== +About Working with Instances +============================ CloudStack provides administrators with complete control over the -lifecycle of all guest VMs executing in the cloud. CloudStack provides -several guest management operations for end users and administrators. -VMs may be stopped, started, rebooted, and destroyed. +lifecycle of all guest Instances executing in the cloud. CloudStack provides +several guest management operations for end Users and administrators. +Instances may be stopped, started, rebooted, and destroyed. -Guest VMs have a name and group. VM names and groups are opaque to -CloudStack and are available for end users to organize their VMs. Each -VM can have three names for use in different contexts. Only two of these -names can be controlled by the user: +Guest Instances have a name and group. Instance names and groups are opaque to +CloudStack and are available for end Users to organize their Instances. Each +Instance can have three names for use in different contexts. Only two of these +names can be controlled by the User: - Instance name – a unique, immutable ID that is generated by - CloudStack and can not be modified by the user. This name conforms to + CloudStack and can not be modified by the User. This name conforms to the requirements in IETF RFC 1123. - Display name – the name displayed in the CloudStack web UI. Can be - set by the user. Defaults to instance name. + set by the User. Defaults to Instance name. -- Name – host name that the DHCP server assigns to the VM. Can be set - by the user. Defaults to instance name +- Name – host name that the DHCP server assigns to the Instance. Can be set + by the User. Defaults to Instance name .. note:: - You can append the display name of a guest VM to its internal name. - For more information, see `“Appending a Name to the Guest VM’s + You can append the display name of a guest Instance to its internal name. + For more information, see `“Appending a Name to the Guest Instance’s Internal Name” <#appending-a-name-to-the-guest-vms-internal-name>`_. -Guest VMs can be configured to be Highly Available (HA). An HA-enabled -VM is monitored by the system. If the system detects that the VM is -down, it will attempt to restart the VM, possibly on a different host. -For more information, see HA-Enabled Virtual Machines on +Guest Instances can be configured to be Highly Available (HA). An HA-enabled +Instance is monitored by the system. If the system detects that the Instance is +down, it will attempt to restart the Instance, possibly on a different host. +For more information, see HA-Enabled Instances on -Each new VM is allocated one public IP address. When the VM is started, +Each new Instance is allocated one public IP address. When the Instance is started, CloudStack automatically creates a static NAT between this public IP -address and the private IP address of the VM. +address and the private IP address of the Instance. If elastic IP is in use (with the NetScaler load balancer), the IP -address initially allocated to the new VM is not marked as elastic. The -user must replace the automatically configured IP with a specifically +address initially allocated to the new Instance is not marked as elastic. The +User must replace the automatically configured IP with a specifically acquired elastic IP, and set up the static NAT mapping between this new -IP and the guest VM’s private IP. The VM’s original IP address is then +IP and the guest Instance’s private IP. The Instance’s original IP address is then released and returned to the pool of available public IPs. Optionally, -you can also decide not to allocate a public IP to a VM in an +you can also decide not to allocate a public IP to an Instance in an EIP-enabled Basic zone. For more information on Elastic IP, see `“About Elastic IP” `_. -CloudStack cannot distinguish a guest VM that was shut down by the user -(such as with the “shutdown” command in Linux) from a VM that shut down -unexpectedly. If an HA-enabled VM is shut down from inside the VM, -CloudStack will restart it. To shut down an HA-enabled VM, you must go +CloudStack cannot distinguish a guest Instance that was shut down by the User +(such as with the “shutdown” command in Linux) from an Instance that shut down +unexpectedly. If an HA-enabled Instance is shut down from inside the Instance, +CloudStack will restart it. To shut down an HA-enabled Instance, you must go through the CloudStack UI or API. .. note:: - **Monitor VMs for Max Capacity** + **Monitor Instances for Max Capacity** - The CloudStack administrator should monitor the total number of VM - instances in each cluster, and disable allocation to the cluster if the - total is approaching the maximum that the hypervisor can handle. Be sure + The CloudStack administrator should monitor the total number of Instances + in each cluster, and disable allocation to the cluster if the total + is approaching the maximum that the hypervisor can handle. Be sure to leave a safety margin to allow for the possibility of one or more - hosts failing, which would increase the VM load on the other hosts as - the VMs are automatically redeployed. Consult the documentation for your - chosen hypervisor to find the maximum permitted number of VMs per host, + hosts failing, which would increase the Instance load on the other hosts as + the Instances are automatically redeployed. Consult the documentation for your + chosen hypervisor to find the maximum permitted number of Instances per host, then use CloudStack global configuration settings to set this as the - default limit. Monitor the VM activity in each cluster at all times. - Keep the total number of VMs below a safe level that allows for the + default limit. Monitor the Instance activity in each cluster at all times. + Keep the total number of Instances below a safe level that allows for the occasional host failure. For example, if there are N hosts in the cluster, and you want to allow for one host in the cluster to be down at - any given time, the total number of VM instances you can permit in the + any given time, the total number of Instances you can permit in the cluster is at most (N-1) \* (per-host-limit). Once a cluster reaches - this number of VMs, use the CloudStack UI to disable allocation of more - VMs to the cluster. + this number of Instances, use the CloudStack UI to disable allocation of more + Instances to the cluster. -VM Lifecycle -============ +Instance Lifecycle +================== -Virtual machines can be in the following states: +Instances can be in the following states: - Created - Running @@ -109,143 +109,158 @@ With the intermediate states of - Expunging -Creating VMs ------------- +Creating Instances +------------------ -Virtual machines are usually created from a template. Users can also -create blank virtual machines. A blank virtual machine is a virtual -machine without an OS template. Users can attach an ISO file and install +Instance are usually created from a Template. Users can also +create blank Instances. A blank Instance is a virtual +machine without an OS Template. Users can attach an ISO file and install the OS from the CD/DVD-ROM. .. note:: - You can create a VM without starting it. You can determine whether the - VM needs to be started as part of the VM deployment. A request parameter, + You can create an Instance without starting it. You can determine whether the + Instance needs to be started as part of the Instance deployment. A request parameter, startVM, in the deployVm API provides this feature. For more information, see the Developer's Guide. -To create a VM from a template: +To create an Instance from a Template: -#. Log in to the CloudStack UI as an administrator or user. +#. Log in to the CloudStack UI as an administrator or User. -#. In the left navigation bar, click Instances. +#. In the left navigation bar, click Compute -> Instances. -#. Click Add Instance. +#. Click the Add Instance button. -#. Select a zone. Admin users will have the option to select a pod, cluster or host. +#. Select a zone. Admin Users will have the option to select a pod, cluster or host. -#. Select a template, then follow the steps in the wizard. For more - information about how the templates came to be in this list, see - `*Working with Templates* `_. +#. Select a Template or ISO. For more information about how the Templates came + to be in this list, see `*Working with Templates* `_. #. Be sure that the hardware you have allows starting the selected service offering. +#. Select a disk offering. + +#. Select/Add a Network. + + .. note:: - VMware only: If the selected template contains OVF properties, different deployment options or configurations, + VMware only: If the selected Template contains OVF properties, different deployment options or configurations, multiple NICs or end-user license agreements, then the wizard will display these properties. See `“Support for Virtual Appliances” `_. -#. Click Submit and your VM will be created and started. +#. Click Launch Instance and your Instance will be created and started. .. note:: - For security reason, the internal name of the VM is visible + For security reason, the internal name of the Instance is visible only to the root admin. -To create a VM from an ISO: - .. note:: **XenServer** - Windows VMs running on XenServer require PV drivers, - which may be provided in the template or added after the VM is + Windows Instances running on XenServer require PV drivers, + which may be provided in the Template or added after the Instance is created. The PV drivers are necessary for essential management functions such as mounting additional volumes and ISO images, live migration, and graceful shutdown. -#. Log in to the CloudStack UI as an administrator or user. - -#. In the left navigation bar, click Instances. - -#. Click Add Instance. - -#. Select a zone. Admin users will have the option to select a pod, cluster or host. - -#. Select ISO Boot, and follow the steps in the wizard. - -#. Click Submit and your VM will be created and started. + **VMware** + If the rootDiskController and dataDiskController are not specified for an Instance using Instance details and + these are set to use osdefault in the Template or the global configuration, then CloudStack tries to find the + recommended disk controllers for it using guest OS from the hypervisor. In some specific cases, it may create + issues with the Instance deployment or start operation. To overcome this, a specific disk controller can be + specified at the Instance or Template level. For an existing Instance its settings can be updated while it is in + stopped state by admin. Install Required Tools and Drivers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Be sure the following are installed on each VM: +Be sure the following are installed on each Instance: -- For XenServer, install PV drivers and Xen tools on each VM. This will +- For XenServer, install PV drivers and Xen tools on each Instance. This will enable live migration and clean guest shutdown. Xen tools are required in order for dynamic CPU and RAM scaling to work. -- For vSphere, install VMware Tools on each VM. This will enable +- For vSphere, install VMware Tools on each Instance. This will enable console view to work properly. VMware Tools are required in order for dynamic CPU and RAM scaling to work. To be sure that Xen tools or VMware Tools is installed, use one of the following techniques: -- Create each VM from a template that already has the tools installed; +- Create each Instance from a Template that already has the tools installed; or, -- When registering a new template, the administrator or user can - indicate whether tools are installed on the template. This can be +- When registering a new Template, the Administrator or User can + indicate whether tools are installed on the Template. This can be done through the UI or using the updateTemplate API; or, -- If a user deploys a virtual machine with a template that does not +- If a User deploys an Instance with a Template that does not have Xen tools or VMware Tools, and later installs the tools on the - VM, then the user can inform CloudStack using the + Instance, then the User can inform CloudStack using the updateVirtualMachine API. After installing the tools and updating the - virtual machine, stop and start the VM. + Instance, stop and start the Instance. -Accessing VMs -------------- +Accessing Instances +------------------- -Any user can access their own virtual machines. The administrator can -access all VMs running in the cloud. +Any User can access their own Instances. The administrator can +access all Instances running in the cloud. -To access a VM through the CloudStack UI: +To access an Instance through the CloudStack UI: -#. Log in to the CloudStack UI as a user or admin. +#. Log in to the CloudStack UI as a User or admin. -#. Click Instances, then click the name of a running VM. +#. Click Compute -> Instances, then click the name of a running Instance. #. Click the View Console button |console-icon.png|. -To access a VM directly over the network: +To access an Instance directly over the Network: -#. The VM must have some port open to incoming traffic. For example, in - a basic zone, a new VM might be assigned to a security group which +#. The Instance must have some port open to incoming traffic. For example, in + a basic zone, a new Instance might be assigned to a security group which allows incoming traffic. This depends on what security group you - picked when creating the VM. In other cases, you can open a port by + picked when creating the Instance. In other cases, you can open a port by setting up a port forwarding policy. See `“IP Forwarding and Firewalling” `_. -#. If a port is open but you can not access the VM using ssh, it’s - possible that ssh is not already enabled on the VM. This will depend - on whether ssh is enabled in the template you picked when creating - the VM. Access the VM through the CloudStack UI and enable ssh on the - machine using the commands for the VM’s operating system. +#. If a port is open but you can not access the Instance using ssh, it’s + possible that ssh is not already enabled on the Instance. This will depend + on whether ssh is enabled in the Template you picked when creating + the Instance. Access the Instance through the CloudStack UI and enable ssh on the + machine using the commands for the Instance’s operating system. -#. If the network has an external firewall device, you will need to +#. If the Network has an external firewall device, you will need to create a firewall rule to allow access. See `“IP Forwarding and Firewalling” `_. -Stopping and Starting VMs -------------------------- +Securing Instance Console Access (KVM only) +------------------------------------------- + +CloudStack provides a way to secure VNC console access on KVM using the CA Framework certificates to enable TLS on VNC on each KVM host. + +To enable TLS on a KVM host, navigate to the host and click on: Provision Host Security Keys (or invoke the provisionCertificate API for the host): + +- When a new host is added and it is provisioned with a certificate, TLS will also be enabled for VNC +- The running Instances on a secured host will continue to be VNC unencrypted unless they are stopped and started. +- New Instances created on a secured host will be VNC encrypted. + +Once the administrator concludes the certificates provisioning on Cloudstack, the console access for new Instances on the hosts will be encrypted. CloudStack displays the console of the Instances through the noVNC viewer embedded in the console proxy System VMs. +The CloudStack Users will notice the encrypted VNC sessions display a green bar stating the session is encrypted as in the image below. Also, the tab title includes ‘(TLS backend)’ when the session is encrypted. -Once a VM instance is created, you can stop, restart, or delete it as -needed. In the CloudStack UI, click Instances, select the VM, and use +.. note:: + CloudStack will give access to the certificates to the group defined on the /etc/libvirt/qemu.conf file (or the last one defined on the file in case of multiple lines setting a group). + +Stopping and Starting Instance +------------------------------- + +Once an Instance is created, you can stop, restart, or delete it as +needed. In the CloudStack UI, click Instances, select the Instance, and use the Stop, Start, Reboot, and Destroy buttons. A stop will attempt to gracefully shut down the operating system, via @@ -255,82 +270,163 @@ be forcefully terminated. This has the same effect as pulling out the power cord from a physical machine. A reboot should not be considered as a stop followed by a start. In CloudStack, -a start command reconfigures the virtual machine to the stored parameters in +a start command reconfigures the Instance to the stored parameters in CloudStack's database. The reboot process does not do this. -When starting a VM, admin users have the option to specify a pod, cluster, or host. +When starting an Instance, admin Users have the option to specify a pod, cluster, or host. -Deleting VMs -------------------------- +Deleting Instance +------------------ -Users can delete their own virtual machines. A running virtual machine -will be abruptly stopped before it is deleted. Administrators can delete -any virtual machines. +Users can delete their own Instance. A running Instance will be abruptly stopped +before it is deleted. Administrators can delete any Instance. -To delete a virtual machine: +To delete an Instance: -#. Log in to the CloudStack UI as a user or admin. +#. Log in to the CloudStack UI as a User or admin. -#. In the left navigation, click Instances. +#. In the left navigation, click Compute -> Instances. -#. Choose the VM that you want to delete. +#. Choose the Instance that you want to delete. #. Click the Destroy Instance button. |Destroyinstance.png| #. Optionally both expunging and the deletion of any attached volumes can be enabled. -When a virtual machine is **destroyed**, it can no longer be seen by the end user, +When an Instance is **destroyed**, it can no longer be seen by the end User, however, it can be seen (and recovered) by a root admin. In this state it still -consumes logical resources. Global settings control the maximum time from a VM -being destroyed, to the physical disks being removed. When the VM and its rooot disk -have been deleted, the VM is said to have been expunged. +consumes logical resources. Global settings control the maximum time from an Instance +being destroyed, to the physical disks being removed. When the Instance and its rooot disk +have been deleted, the Instance is said to have been expunged. + +Once an Instance is **expunged**, it cannot be recovered. All the +resources used by the Instance will be reclaimed by the system, +This includes the Instance’s IP address. + +Cloning VMs +------------------------- + +Users can clone their virtual machines. Administrators can clone +any virtual machines. + +To clone a virtual machine: (cloudmonkey way) + +#. Connect to the management server with Cloudmonkey. + +#. type the cloneVirtualMachine command with virtualmacineid specified + +#. Choose the VM id that you want to clone. + +To clone a virtual machine: (UI) -Once a virtual machine is **expunged**, it cannot be recovered. All the -resources used by the virtual machine will be reclaimed by the system, -This includes the virtual machine’s IP address. +#. Go to the compute instance page -Managing Virtual Machines -========================= +#. Click the Clone VM button to clone the VM -Changing the VM Name, OS, or Group +When a virtual machine is **cloned**, it takes some time for the new cloned instance to be created and started, +snapshots created during the clone procedures are not visible and will be cleaned up once the new instance is created. +Global settings of creating snapshots should be enabled (kvm.snapshot.enabled = true) before commencing with the clone. When the new VM and its root disks have been attached and created, +snapshots will be expunged. + +Once a new virtual machine is created, it takes some time for the network to assign the new ip. All the +resources used by the newly created virtual machine instance will be the same as the original machine, +except the Ip address which will be automatically assigned by the system under the same VPC. + +Managing Instances +================== + +Scheduling operations on an Instance ------------------------------------- -After a VM is created, you can modify the display name, operating +After an Instance is created, you can schedule Instance lifecycle operations using cron expressions. The operations that can be scheduled are: + +- Start +- Stop +- Reboot +- Force Stop +- Force Reboot + +To schedule an operation on an Instance through the UI: + +#. Log in to the CloudStack UI as a User or admin. + +#. In the left navigation, click Instances. + +#. Click the Instance that you want to schedule the operation on. + +#. On the Instance details page, click the **Schedule** button. |vm-schedule-tab.png| + +#. Click on **Add schedule** button to add a new schedule or click on Edit button |EditButton.png| to edit + an existing schedule. |vm-schedule-form.png| + +#. Configure the schedule as per requirements: + + - **Description**: Enter a description for the schedule. If left empty, it's generated on the basis of action and the schedule. + + - **Action**: Select the action to be triggered by the schedule. Can't be changed once the schedule has been created. + + - **Schedule**: Select the frequency using cron format at which the action should be triggered. + For example, `* * * * *` will trigger the job every minute. + + - **Timezone**: Select the timezone in which the schedule should be triggered. + + - **Start Date**: Date at the specified time zone after which the schedule becomes active. + Defaults to current timestamp plus 1 minute. + + - **End Date**: Date at the specified time zone before which the schedule is active. + If not set, schedule won't become inactive. + + .. note:: + It's not possible to remove the end date once it's configured. + + + +#. Click OK to save the schedule. + + .. note:: + If multiple schedules are configured for an Instance and the scheduled time coincides, then only the schedule which was created first + will be executed and the rest will be skipped. + + +Changing the Instance Name, OS, or Group +---------------------------------------- + +After an Instance is created, you can modify the display name, operating system, and the group it belongs to. -To access a VM through the CloudStack UI: +To access an Instance through the CloudStack UI: -#. Log in to the CloudStack UI as a user or admin. +#. Log in to the CloudStack UI as a User or admin. #. In the left navigation, click Instances. -#. Select the VM that you want to modify. +#. Select the Instance that you want to modify. -#. Click the Stop button to stop the VM. |StopButton.png| +#. Click the Stop button to stop the Instance. |StopButton.png| #. Click Edit. |EditButton.png| #. Make the desired changes to the following: #. **Display name**: Enter a new display name if you want to change the - name of the VM. + name of the Instance. #. **OS Type**: Select the desired operating system. -#. **Group**: Enter the group name for the VM. +#. **Group**: Enter the group name for the Instance. #. Click Apply. -Appending a Name to the Guest VM’s Internal Name --------------------------------------------------- +Appending a Name to the Guest Instance’s Internal Name +------------------------------------------------------ -Every guest VM has an internal name. The host uses the internal name to identify the guest VMs. CloudStack gives you an option to provide a guest VM with a name. You can set this name as the internal name so that the vCenter can use it to identify the guest VM. A new global parameter, vm.instancename.flag, has now been added to achieve this functionality. +Every guest Instance has an internal name. The host uses the internal name to identify the guest Instances. CloudStack gives you an option to provide a guest Instance with a name. You can set this name as the internal name so that the vCenter can use it to identify the guest Instance. A new global parameter, vm.instancename.flag, has now been added to achieve this functionality. -The default format of the internal name is i---, where i.n is the value of the global configuration - instance.name. However, If vm.instancename.flag is set to true, and if a name is provided during the creation of a guest VM, the name is appended to the internal name of the guest VM on the host. This makes the internal name format as i---. The default value of vm.instancename.flag is set to false. This feature is intended to make the correlation between instance names and internal names easier in large data center deployments. +The default format of the internal name is i---, where i.n is the value of the global configuration - instance.name. However, If vm.instancename.flag is set to true, and if a name is provided during the creation of a guest Instance, the name is appended to the internal name of the guest Instance on the host. This makes the internal name format as i---. The default value of vm.instancename.flag is set to false. This feature is intended to make the correlation between Instance names and internal names easier in large data center deployments. -The following table explains how a VM name is displayed in different scenarios. +The following table explains how an Instance name is displayed in different scenarios. .. cssclass:: table-striped table-bordered table-hover @@ -348,48 +444,48 @@ The following table explains how a VM name is displayed in different scenarios. represents the value of the global configuration - instance.name -Changing the Service Offering for a VM ----------------------------------------- +Changing the Service Offering for an Instance +--------------------------------------------- -To upgrade or downgrade the level of compute resources available to a -virtual machine, you can change the VM's compute offering. +To upgrade or downgrade the level of compute resources available to an +Instance, you can change the Instance's compute offering. -#. Log in to the CloudStack UI as a user or admin. +#. Log in to the CloudStack UI as a User or admin. #. In the left navigation, click Instances. -#. Choose the VM that you want to work with. +#. Choose the Instance that you want to work with. -#. (Skip this step if you have enabled dynamic VM scaling; see +#. (Skip this step if you have enabled dynamic Instance scaling; see :ref:`cpu-and-memory-scaling`.) - Click the Stop button to stop the VM. |StopButton.png| + Click the Stop button to stop the Instance. |StopButton.png| #. Click the Change Service button. |ChangeServiceButton.png| The Change service dialog box is displayed. -#. Select the offering you want to apply to the selected VM. +#. Select the offering you want to apply to the selected Instance. #. Click OK. .. _cpu-and-memory-scaling: -CPU and Memory Scaling for Running VMs -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CPU and Memory Scaling for Running Instances +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (Supported on VMware and XenServer) It is not always possible to accurately predict the CPU and RAM -requirements when you first deploy a VM. You might need to increase -these resources at any time during the life of a VM. You can dynamically -modify CPU and RAM levels to scale up these resources for a running VM +requirements when you first deploy an Instance. You might need to increase +these resources at any time during the life of an Instance. You can dynamically +modify CPU and RAM levels to scale up these resources for a running Instance without incurring any downtime. Dynamic CPU and RAM scaling can be used in the following cases: -- User VMs on hosts running VMware and XenServer. +- User Instances on hosts running VMware and XenServer. - System VMs on VMware. @@ -397,21 +493,21 @@ Dynamic CPU and RAM scaling can be used in the following cases: machine. - The new requested CPU and RAM values must be within the constraints - allowed by the hypervisor and the VM operating system. + allowed by the hypervisor and the Instance operating system. -- New VMs that are created after the installation of CloudStack 4.2 can +- New Instances that are created after the installation of CloudStack 4.2 can use the dynamic scaling feature. If you are upgrading from a previous - version of CloudStack, your existing VMs created with previous + version of CloudStack, your existing Instances created with previous versions will not have the dynamic scaling capability unless you update them using the following procedure. -Updating Existing VMs -~~~~~~~~~~~~~~~~~~~~~ +Updating Existing Instances +~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you are upgrading from a previous version of CloudStack, and you want -your existing VMs created with previous versions to have the dynamic -scaling capability, update the VMs using the following steps: +your existing Instances created with previous versions to have the dynamic +scaling capability, update the Instances using the following steps: #. Make sure the zone-level setting enable.dynamic.scale.vm is set to true. In the left navigation bar of the CloudStack UI, click @@ -419,9 +515,9 @@ scaling capability, update the VMs using the following steps: the Settings tab. #. Install Xen tools (for XenServer hosts) or VMware Tools (for VMware - hosts) on each VM if they are not already installed. + hosts) on each Instance if they are not already installed. -#. Stop the VM. +#. Stop the Instance. #. Click the Edit button. @@ -429,7 +525,7 @@ scaling capability, update the VMs using the following steps: #. Click Apply. -#. Restart the VM. +#. Restart the Instance. Configuring Dynamic CPU and RAM Scaling @@ -444,35 +540,49 @@ variables: - scale.retry: How many times to attempt the scaling operation. Default = 2. +Along with these global configurations, the following options need to be enabled +to make an Instance dynamically scalable + +- Template from which Instance is created needs to have Xen tools (for XenServer hosts) + or VMware Tools (for VMware hosts) and it should have 'Dynamically Scalable' + flag set to true. + +- Service Offering of the Instance should have 'Dynamic Scaling Enabled' flag set to true. + By default, this flag is true when a Service Offering is created. + +- While deploying an Instance, User or Admin needs to mark 'Dynamic Scaling Enabled' to true. + By default this flag is set to true. + +If any of the above settings are false then the Instance cannot be configured as dynamically scalable. How to Dynamically Scale CPU and RAM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To modify the CPU and/or RAM capacity of a virtual machine, you need to -change the compute offering of the VM to a new compute offering that has -the desired CPU and RAM values. You can use the same steps described -above in `“Changing the Service Offering for a -VM” <#changing-the-service-offering-for-a-vm>`_, but skip the step where you -stop the virtual machine. Of course, you might have to create a new +To modify the CPU and/or RAM capacity of an Instance, you need to +change the compute offering of the Instance to a new compute offering that has +the desired CPU value and RAM value and 'Dynamic Scaling Enabled' flag as true. +You can use the same steps described above in `“Changing the Service Offering for an +Instance” <#changing-the-service-offering-for-a-vm>`_, but skip the step where you +stop the Instance. Of course, you might have to create a new compute offering first. When you submit a dynamic scaling request, the resources will be scaled up on the current host if possible. If the host does not have enough -resources, the VM will be live migrated to another host in the same +resources, the Instance will be live migrated to another host in the same cluster. If there is no host in the cluster that can fulfill the -requested level of CPU and RAM, the scaling operation will fail. The VM +requested level of CPU and RAM, the scaling operation will fail. The Instance will continue to run as it was before. Limitations ~~~~~~~~~~~ -- You can not do dynamic scaling for system VMs on XenServer. +- You can not do dynamic scaling for system Instances on XenServer. - CloudStack will not check to be sure that the new CPU and RAM levels - are compatible with the OS running on the VM. + are compatible with the OS running on the Instance. -- When scaling memory or CPU for a Linux VM on VMware, you might need +- When scaling memory or CPU for a Linux Instance on VMware, you might need to run scripts in addition to the other steps mentioned above. For more information, see `Hot adding memory in Linux (1012764) `_ @@ -484,94 +594,129 @@ Limitations information, see `https://issues.apache.org/jira/browse/CLOUDSTACK-1809 `_. -- On VMs running Linux 64-bit and Windows 7 32-bit operating systems, - if the VM is initially assigned a RAM of less than 3 GB, it can be +- On Instances running Linux 64-bit and Windows 7 32-bit operating systems, + if the Instance is initially assigned a RAM of less than 3 GB, it can be dynamically scaled up to 3 GB, but not more. This is due to a known issue with these operating systems, which will freeze if an attempt is made to dynamically scale from less than 3 GB to more than 3 GB. +- On KVM, not all versions of Qemu/KVM may support dynamic scaling. Some combinations may result CPU or memory related failures during Instance deployment. -Resetting the Virtual Machine Root Volume on Reboot ---------------------------------------------------- -For secure environments, and to ensure that VM state is not persisted +Resetting the Instance Root Volume on Reboot +-------------------------------------------- + +For secure environments, and to ensure that Instance state is not persisted across reboots, you can reset the root disk. For more information, see -`“Reset VM to New Root Disk on +`“Reset Instance to New Root Disk on Reboot” `_. -Moving VMs Between Hosts (Manual Live Migration) ------------------------------------------------- +Moving Instances Between Hosts (Manual Live Migration) +------------------------------------------------------ -The CloudStack administrator can move a running VM from one host to -another without interrupting service to users or going into maintenance +The CloudStack administrator can move a running Instance from one host to +another without interrupting service to Users or going into maintenance mode. This is called manual live migration, and can be done under the following conditions: -- The root administrator is logged in. Domain admins and users can not - perform manual live migration of VMs. +- The root administrator is logged in. Domain admins and Users can not + perform manual live migration of Instances. -- The VM is running. Stopped VMs can not be live migrated. +- The Instance is running. Stopped Instances can not be live migrated. - The destination host must have enough available capacity. If not, the - VM will remain in the "migrating" state until memory becomes + Instance will remain in the "migrating" state until memory becomes available. -- (KVM) The VM must not be using local disk storage. (On XenServer and - VMware, VM live migration with local disk is enabled by CloudStack +- (KVM) The Instance must not be using local disk storage. (On XenServer and + VMware, Instance live migration with local disk is enabled by CloudStack support for XenMotion and vMotion.) - (KVM) The destination host must be in the same cluster as the - original host. (On XenServer and VMware, VM live migration from one + original host. (On XenServer and VMware, Instance live migration from one cluster to another is enabled by CloudStack support for XenMotion and vMotion.) -To manually live migrate a virtual machine +To manually live migrate an Instance -#. Log in to the CloudStack UI as a user or admin. +#. Log in to the CloudStack UI as root administrator. #. In the left navigation, click Instances. -#. Choose the VM that you want to migrate. +#. Choose the Instance that you want to migrate. #. Click the Migrate Instance button. |Migrateinstance.png| #. From the list of suitable hosts, choose the one to which you want to - move the VM. + move the Instance. .. note:: - If the VM's storage has to be migrated along with the VM, this will + If the Instance's storage has to be migrated along with the Instance, this will be noted in the host list. CloudStack will take care of the storage migration for you. #. Click OK. .. note:: - (KVM) If the VM's storage has to be migrated along with the VM, from a mounted NFS storage pool to a cluster-wide mounted NFS storage pool, then the 'migrateVirtualMachineWithVolume' API has to be used. There is no UI integration for this feature. + (KVM) If the Instance's storage has to be migrated along with the Instance, from a mounted NFS storage pool to a cluster-wide mounted NFS storage pool, then the 'migrateVirtualMachineWithVolume' API has to be used. There is no UI integration for this feature. (CloudMonkey) > migrate virtualmachinewithvolume virtualmachineid= hostid= migrateto[i].volume= migrateto[i].pool= - where i in [0,..,N] and N = number of volumes of the virtual machine + where i in [0,..,N] and N = number of volumes of the Instance + +Moving Instance's Volumes Between Storage Pools (offline volume Migration) +-------------------------------------------------------------------------- + +The CloudStack administrator can move a stopped Instance's volumes from one +storage pool to another within the cluster. This is called offline volume +migration, and can be done under the following conditions: + +- The root administrator is logged in. Domain admins and Users can not + perform offline volume migration of Instances. + +- The Instance is stopped. +- The destination storage pool must have enough available capacity. +- UI operation allows only migrating the root volume upon selecting the + storage pool. To migrate all volumes to the desired storage pools + the 'migrateVirtualMachineWithVolume' API has to be used by providing + 'migrateto' map parameter. -Assigning VMs to Hosts ----------------------- -At any point in time, each virtual machine instance is running on a -single host. How does CloudStack determine which host to place a VM on? +To perform stopped Instance's volumes migration + +#. Log in to the CloudStack UI as root administrator. + +#. In the left navigation, click Instances. + +#. Choose the Instance that you want to migrate. + +#. Click the Migrate Instance button. |Migrateinstance.png| + +#. From the list of suitable storage pools, choose the one to which you want to + move the Instance root volume. + +#. Click OK. + +Assigning Instances to Hosts +---------------------------- + +At any point in time, each Instance is running on a single +host. How does CloudStack determine which host to place an Instance on? There are several ways: - Automatic default host allocation. CloudStack can automatically pick - the most appropriate host to run each virtual machine. + the most appropriate host to run each Instance. - Instance type preferences. CloudStack administrators can specify that certain hosts should have a preference for particular types of guest - instances. For example, an administrator could state that a host + Instances. For example, an administrator could state that a host should have a preference to run Windows guests. The default host allocator will attempt to place guests of that OS type on such hosts first. If no such host is available, the allocator will place the - instance wherever there is sufficient physical capacity. + Instance wherever there is sufficient physical capacity. - Vertical and horizontal allocation. Vertical allocation consumes all the resources of a given host before allocating any guests on a @@ -579,24 +724,24 @@ There are several ways: allocation places a guest on each host in a round-robin fashion. This may yield better performance to the guests in some cases. -- Admin users preferences. Administrators have the option to specify a - pod, cluster, or host to run the VM in. CloudStack will then select +- Admin Users preferences. Administrators have the option to specify a + pod, cluster, or host to run the Instance in. CloudStack will then select a host within the given infrastructure. -- End user preferences. Users can not control exactly which host will - run a given VM instance, but they can specify a zone for the VM. - CloudStack is then restricted to allocating the VM only to one of the +- End User preferences. Users can not control exactly which host will + run a given Instance, but they can specify a zone for the Instance. + CloudStack is then restricted to allocating the Instance only to one of the hosts in that zone. - Host tags. The administrator can assign tags to hosts. These tags can - be used to specify which host a VM should use. The CloudStack + be used to specify which host an Instance should use. The CloudStack administrator decides whether to define host tags, then create a - service offering using those tags and offer it to the user. + service offering using those tags and offer it to the User. -- Affinity groups. By defining affinity groups and assigning VMs to - them, the user or administrator can influence (but not dictate) which - VMs should run on separate hosts. This feature is to let users - specify that certain VMs won't be on the same host. +- Affinity groups. By defining affinity groups and assigning Instances to + them, the User or administrator can influence (but not dictate) whether + Instances should run on separate hosts or on the same host. This feature is to + let Users specify whether certain Instances will or will not be on the same host. - CloudStack also provides a pluggable interface for adding new allocators. These custom allocators can provide any policy the @@ -606,15 +751,25 @@ There are several ways: Affinity Groups ~~~~~~~~~~~~~~~ -By defining affinity groups and assigning VMs to them, the user or -administrator can influence (but not dictate) which VMs should run on -separate hosts. This feature is to let users specify that VMs with the -same “host anti-affinity” type won’t be on the same host. This serves to -increase fault tolerance. If a host fails, another VM offering the same -service (for example, hosting the user's website) is still up and +By defining affinity groups and assigning Instances to them, the User or +administrator can influence (but not dictate) which Instances should run on +either the same or separate hosts. This feature allows Users to specify +the affinity groups to which an Instance can belong. Instances with the +same “host anti-affinity” type won’t be on the same host, which serves to +increase fault tolerance. If a host fails, another Instance offering the same +service (for example, hosting the User's website) is still up and running on another host. +It also allows Users to specify that Instances with the same "host affinity" type +must run on the same host, which can be useful in ensuring connectivity and low +latency between guest Instances. +"non-strict host anti-affinity" is similar to, but more flexible than, "host +anti-affinity". In that case Instances are deployed to different hosts as long as +there are enough hosts to satisfy the requirement, otherwise they might be +deployed to the same host. +"non-strict host affinity" is similar to, but more flexible than, "host affinity", +Instances are ideally placed together in the same host, but only if possible. -The scope of an affinity group is per user account. +The scope of an affinity group is on an Account level. Creating a New Affinity Group @@ -622,7 +777,7 @@ Creating a New Affinity Group To add an affinity group: -#. Log in to the CloudStack UI as an administrator or user. +#. Log in to the CloudStack UI as an administrator or User. #. In the left navigation bar, click Affinity Groups. @@ -634,37 +789,41 @@ To add an affinity group: - Description. Any desired text to tell more about the purpose of the group. - - Type. The only supported type shipped with CloudStack is Host - Anti-Affinity. This indicates that the VMs in this group should - avoid being placed on the same host with each other. If you see - other types in this list, it means that your installation of - CloudStack has been extended with customized affinity group - plugins. + - Type. CloudStack supports four types of affinity groups. "host + anti-affinity", "host affinity", "non-strict host affinity" and + "non-strict host anti-affinity". "host anti-affinity" indicates + that the Instances in this group must not be placed on the same + host with each other. "host affinity" on the other hand indicates + that Instances in this group must be placed on the same host. + "non-strict host anti-affinity" indicates that Instances in this group + should be deployed to different hosts. + "non-strict host affinity" indicates that Instances in this group + should not be deployed to same hosts. -Assign a New VM to an Affinity Group -'''''''''''''''''''''''''''''''''''' +Assign a New Instance to an Affinity Group +'''''''''''''''''''''''''''''''''''''''''' -To assign a new VM to an affinity group: +To assign a new Instance to an affinity group: -- Create the VM as usual, as described in `“Creating - VMs” `_. In the Add Instance +- Create the Instance as usual, as described in `“Creating + Instances” `_. In the Add Instance wizard, there is a new Affinity tab where you can select the affinity group. -Change Affinity Group for an Existing VM -'''''''''''''''''''''''''''''''''''''''' +Change Affinity Group for an Existing Instance +'''''''''''''''''''''''''''''''''''''''''''''' -To assign an existing VM to an affinity group: +To assign an existing Instance to an affinity group: -#. Log in to the CloudStack UI as an administrator or user. +#. Log in to the CloudStack UI as an administrator or User. #. In the left navigation bar, click Instances. -#. Click the name of the VM you want to work with. +#. Click the name of the Instance you want to work with. -#. Stop the VM by clicking the Stop button. +#. Stop the Instance by clicking the Stop button. #. Click the Change Affinity button. |change-affinity-button.png| @@ -672,7 +831,7 @@ To assign an existing VM to an affinity group: View Members of an Affinity Group ''''''''''''''''''''''''''''''''' -To see which VMs are currently assigned to a particular affinity group: +To see which Instances are currently assigned to a particular affinity group: #. In the left navigation bar, click Affinity Groups. @@ -680,7 +839,7 @@ To see which VMs are currently assigned to a particular affinity group: #. Click View Instances. The members of the group are listed. - From here, you can click the name of any VM in the list to access all + From here, you can click the name of any Instance in the list to access all its details and controls. @@ -695,56 +854,91 @@ To delete an affinity group: #. Click Delete. - Any VM that is a member of the affinity group will be disassociated + Any Instance that is a member of the affinity group will be disassociated from the group. The former group members will continue to run - normally on the current hosts, but if the VM is restarted, it will no + normally on the current hosts, but if the Instance is restarted, it will no longer follow the host allocation rules from its former affinity group. -Changing a VM's Base Image --------------------------- +Determine Destination Host of Instances with Non-Strict Affinity Groups +''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' -Every VM is created from a base image, which is a template or ISO which +(Non-Strict Host Anti-Affinity and Non-Strict Host Affinity only) + +The destination host of Instances with Non-Strict Affinity Groups are determined +by the host priorities. The hosts have default priority as 0. If there is a +Instance in the same Non-Strict Host Anti-Affinity group on the host, the host +priority will be decreased by 1. If there is an Instance in the same Non-Strict Host +Affinity group on the host, the host priority will be increased by 1. All +available hosts are reordered by host priorities when deploy or start an Instance. + +Here are some examples how host priorities are calculated. + +- Example 1: Instance has a non-strict host anti-affinity group. + +If Host-1 has 2 Instances in the group, Host-2 has 3 Instances in the group. +Host-1 priority is -2, Host-2 priority is -3. If there are only 2 hosts, +Instance will be deployed to Host-1 as it has higher priority (-2 > -3). + +- Example 2: Instance has a non-strict host affinity group. + +If Host-1 has 2 Instances in the group, Host-2 has 3 Instances in the group. +Host-1 priority is 2, Host-2 priority is 3. If there are only 2 hosts, +Instance will be deployed to Host-2 (3 >2). + +- Example 3: Instance has a non-strict host affinity group and also a non-strict host anti-affinity group. + +If Host-1 has 2 Instances in the non-strict host affinity group, and +3 Instances in the non-strict host anti-affinity group. Host-1 priority is +calculated by: + + 0 (default) + 2 (Instances in non-strict host affinity group) - 3 (Instances in the non-strict host anti-affinity group) = -1 + + +Changing an Instance's Base Image +--------------------------------- + +Every Instance is created from a base image, which is a Template or ISO which has been created and stored in CloudStack. Both cloud administrators and -end users can create and modify templates, ISOs, and VMs. +end Users can create and modify Templates, ISOs, and Instances. -In CloudStack, you can change an existing VM's base image from one -template to another, or from one ISO to another. (You can not change -from an ISO to a template, or from a template to an ISO). +In CloudStack, you can change an existing Instance's base image from one +Template to another, or from one ISO to another. (You can not change +from an ISO to a Template, or from a Template to an ISO). -For example, suppose there is a template based on a particular operating +For example, suppose there is a Template based on a particular operating system, and the OS vendor releases a software patch. The administrator -or user naturally wants to apply the patch and then make sure existing -VMs start using it. Whether a software update is involved or not, it's -also possible to simply switch a VM from its current template to any -other desired template. - -To change a VM's base image, call the restoreVirtualMachine API command -and pass in the virtual machine ID and a new template ID. The template -ID parameter may refer to either a template or an ISO, depending on -which type of base image the VM was already using (it must match the -previous type of image). When this call occurs, the VM's root disk is +or User naturally wants to apply the patch and then make sure existing +Instances start using it. Whether a software update is involved or not, it's +also possible to simply switch an Instance from its current Template to any +other desired Template. + +To change an Instance's base image, call the restoreVirtualMachine API command +and pass in the Instance ID and a new Template ID. The Template +ID parameter may refer to either a Template or an ISO, depending on +which type of base image the Instance was already using (it must match the +previous type of image). When this call occurs, the Instance's root disk is first destroyed, then a new root disk is created from the source -designated in the template ID parameter. The new root disk is attached -to the VM, and now the VM is based on the new template. +designated in the Template ID parameter. The new root disk is attached +to the Instance, and now the Instance is based on the new Template. -You can also omit the template ID parameter from the -restoreVirtualMachine call. In this case, the VM's root disk is -destroyed and recreated, but from the same template or ISO that was -already in use by the VM. +You can also omit the Template ID parameter from the +restoreVirtualMachine call. In this case, the Instance's root disk is +destroyed and recreated, but from the same Template or ISO that was +already in use by the Instance. -Advanced VM Instance Settings ------------------------------ +Advanced Instance Settings +-------------------------- -Each user VM has a set of "details" associated with it (as visible via listVirtualMachine API call) - those "details" are shown on the "Settings" tab of the VM in the GUI (words "setting(s)" and "detail(s)" are here used interchangeably). +Each User Instance has a set of "details" associated with it (as visible via listVirtualMachine API call) - those "details" are shown on the "Settings" tab of the Instance in the GUI (words "setting(s)" and "detail(s)" are here used interchangeably). -The Settings tab is always present/visible, but settings can be changed only when the VM is in a Stopped state. -Some VM details/settings can be hidden for users via "user.vm.denied.details" global setting. VM details/settings can also be made read-only for users using "user.vm.readonly.details" global setting. List of default hidden and read-only details/settings is given below. +The Settings tab is always present/visible, but settings can be changed only when the Instance is in a Stopped state. +Some Instance details/settings can be hidden for users via "user.vm.denied.details" global setting. Instance details/settings can also be made read-only for users using "user.vm.readonly.details" global setting. List of default hidden and read-only details/settings is given below. .. note:: - Since version 4.15, VMware VM settings for the ROOT disk controller, NIC adapter type and data disk controller are populated automatically with the values inherited from the template. + Since version 4.15, VMware Instance settings for the ROOT disk controller, NIC adapter type and data disk controller are populated automatically with the values inherited from the Template. When adding a new setting or modifying the existing ones, setting names are shown/offered in a drop-down list, as well as their possible values (with the exception of boolean or numerical values). @@ -775,113 +969,136 @@ An example list of settings as well as their possible values are shown on the im (KVM disk controllers) -Virtual Machine Snapshots -========================= +Instance Snapshots +================== (Supported on VMware, XenServer and KVM (NFS only)) -In addition to the existing CloudStack ability to snapshot individual VM -volumes, you can take a VM snapshot to preserve all the VM's data +In addition to the existing CloudStack ability to snapshot individual Instance +volumes, you can take an Instance Snapshot to preserve all the Instance's data volumes as well as (optionally) its CPU/memory state. This is useful for -quick restore of a VM. For example, you can snapshot a VM, then make +quick restore of an Instance. For example, you can snapshot an Instance, then make changes such as software upgrades. If anything goes wrong, simply -restore the VM to its previous state using the previously saved VM -snapshot. - -The snapshot is created using the hypervisor's native snapshot facility. -The VM snapshot includes not only the data volumes, but optionally also -whether the VM is running or turned off (CPU state) and the memory -contents. The snapshot is stored in CloudStack's primary storage. - -VM snapshots can have a parent/child relationship. Each successive -snapshot of the same VM is the child of the snapshot that came before -it. Each time you take an additional snapshot of the same VM, it saves -only the differences between the current state of the VM and the state -stored in the most recent previous snapshot. The previous snapshot -becomes a parent, and the new snapshot is its child. It is possible to -create a long chain of these parent/child snapshots, which amount to a -"redo" record leading from the current state of the VM back to the +restore the Instance to its previous state using the previously saved Instance +Snapshot. + +The Snapshot is created using the hypervisor's native Snapshot facility. +The Instance Snapshot includes not only the data volumes, but optionally also +whether the Instance is running or turned off (CPU state) and the memory +contents. The Snapshot is stored in CloudStack's primary storage. + +Instance Snapshots can have a parent/child relationship. Each successive +Snapshot of the same Instance is the child of the Snapshot that came before +it. Each time you take an additional Snapshot of the same Instance, it saves +only the differences between the current state of the Instance and the state +stored in the most recent previous Snapshot. The previous Snapshot +becomes a parent, and the new Snapshot is its child. It is possible to +create a long chain of these parent/child Snapshots, which amount to a +"redo" record leading from the current state of the Instance back to the original. -After VM snapshots are created, they can be tagged with a key/value pair, +After Instance Snapshots are created, they can be tagged with a key/value pair, like many other resources in CloudStack. -KVM supports VM snapshots when using NFS shared storage. If raw block storage -is used (i.e. Ceph), then VM snapshots are not possible, since there is no possibility -to write RAM memory content anywhere. +KVM supports Instance Snapshots when using NFS shared storage. If raw block storage +is used (i.e. Ceph), then Instance Snapshots are not possible, since there is no possibility +to write RAM memory content anywhere. In such cases you can use as an alternative +`Storage-based VM Snapshots on KVM`_ -If you need more information about VM snapshots on VMware, check out the + +If you need more information about Instance Snapshots on VMware, check out the VMware documentation and the VMware Knowledge Base, especially -`Understanding virtual machine snapshots +`Understanding Instance Snapshots `_. -Limitations on VM Snapshots ---------------------------- +.. _`Storage-based Instance Snapshots on KVM`: + +Storage-based Instance Snapshots on KVM +--------------------------------------- -- If a VM has some stored snapshots, you can't attach new volume to the - VM or delete any existing volumes. If you change the volumes on the - VM, it would become impossible to restore the VM snapshot which was +.. note:: + For now this functionality is limited for NFS and Local storage. + +CloudStack introduces a new Storage-based Instance Snapshots on KVM feature that provides +crash-consistent Snapshots of all disks attached to the Instance. It employs the underlying storage +providers’ capability to create/revert/delete disk Snapshots. Consistency is obtained by freezing +the Instance before the snapshotting. Memory Snapshots are not supported. + +.. note:: + ``freeze`` and ``thaw`` of Instance is maintained by the guest agent. + ``qemu-guest-agent`` has to be installed in the Instance. + +When the snapshotting is complete, the Instance is thawed. + +You can use this functionality on Instances with raw block storages (E.g. Ceph/SolidFire/Linstor). + +Limitations on Instance Snapshots +--------------------------------- + +- If an Instance has some stored Snapshots, you can't attach new volume to the + Instance or delete any existing volumes. If you change the volumes on the + Instance, it would become impossible to restore the Instance Snapshot which was created with the previous volume structure. If you want to attach a - volume to such a VM, first delete its snapshots. + volume to such an Instance, first delete its Snapshots. -- VM snapshots which include both data volumes and memory can't be kept - if you change the VM's service offering. Any existing VM snapshots of +- Instance Snapshots which include both data volumes and memory can't be kept + if you change the Instance's service offering. Any existing Instance Snapshots of this type will be discarded. -- You can't make a VM snapshot at the same time as you are taking a - volume snapshot. +- You can't make an Instance Snapshot at the same time as you are taking a + Volume Snapshot. -- You should use only CloudStack to create VM snapshots on hosts - managed by CloudStack. Any snapshots that you make directly on the +- You should use only CloudStack to create Instance Snapshots on hosts + managed by CloudStack. Any Snapshots that you make directly on the hypervisor will not be tracked in CloudStack. -Configuring VM Snapshots ------------------------- +Configuring Instance Snapshots +------------------------------ The cloud administrator can use global configuration variables to -control the behavior of VM snapshots. To set these variables, go through +control the behavior of Instance Snapshots. To set these variables, go through the Global Settings area of the CloudStack UI. .. cssclass:: table-striped table-bordered table-hover -====================== ======================== -Configuration Description Type -====================== ======================== -vmsnapshots.max The maximum number of VM snapshots that can be saved for any given virtual machine in the cloud. The total possible number of VM snapshots in the cloud is (number of VMs) \* vmsnapshots.max. If the number of snapshots for any VM ever hits the maximum, the older ones are removed by the snapshot expunge job -vmsnapshot.create.wait Number of seconds to wait for a snapshot job to succeed before declaring failure and issuing an error. -====================== ======================== - +================================= ======================== +Configuration Description +================================= ======================== +vmsnapshots.max The maximum number of Instance Snapshots that can be saved for any given Instance in the cloud. The total possible number of Instance Snapshots in the cloud is (number of Instances) \* vmsnapshots.max. If the number of Snapshots for any Instance ever hits the maximum, the older ones are removed by the Snapshot expunge job. +vmsnapshot.create.wait Number of seconds to wait for a Snapshot job to succeed before declaring failure and issuing an error. +kvm.vmstoragesnapshot.enabled For live Snapshot of an Instance on KVM hypervisor without memory. Requires qemu version 1.6+ (on NFS or Local file system) and qemu-guest-agent installed on guest Instance +================================= ======================== -Using VM Snapshots ------------------- +Using Instance Snapshots +------------------------ -To create a VM snapshot using the CloudStack UI: +To create an Instance Snapshot using the CloudStack UI: #. Log in to the CloudStack UI as a user or administrator. #. Click Instances. -#. Click the name of the VM you want to snapshot. +#. Click the name of the Instance you want to Snapshot. -#. Click the Take VM Snapshot button. |VMSnapshotButton.png| +#. Click the Take Instance Snapshot button. |VMSnapshotButton.png| .. note:: - If a snapshot is already in progress, then clicking this button + If a Snapshot is already in progress, then clicking this button will have no effect. -#. Provide a name and description. These will be displayed in the VM +#. Provide a name and description. These will be displayed in the Instance Snapshots list. -#. (For running VMs only) If you want to include the VM's memory in the - snapshot, click the Memory checkbox. This saves the CPU and memory - state of the virtual machine. If you don't check this box, then only - the current state of the VM disk is saved. Checking this box makes - the snapshot take longer. +#. (For running Instances only) If you want to include the Instance's memory in the + Snapshot, click the Memory checkbox. This saves the CPU and memory + state of the Instance. If you don't check this box, then only + the current state of the Instance disk is saved. Checking this box makes + the Snapshot take longer. -#. Quiesce VM: check this box if you want to quiesce the file system on - the VM before taking the snapshot. Not supported on XenServer when +#. Quiesce Instance: check this box if you want to quiesce the file system on + the Instance before taking the Snapshot. Not supported on XenServer when used with CloudStack-provided primary storage. When this option is used with CloudStack-provided primary storage, @@ -892,25 +1109,25 @@ To create a VM snapshot using the CloudStack UI: #. Click OK. -To delete a snapshot or restore a VM to the state saved in a particular -snapshot: +To delete a Snapshot or restore an Instance to the state saved in a particular +Snapshot: -#. Navigate to the VM as described in the earlier steps. +#. Navigate to the Instance as described in the earlier steps. -#. Click View VM Snapshots. +#. Click View Instance Snapshots. -#. In the list of snapshots, click the name of the snapshot you want to +#. In the list of Snapshots, click the name of the Snapshot you want to work with. #. Depending on what you want to do: - To delete the snapshot, click the Delete button. |delete-button.png| + To delete the Snapshot, click the Delete button. |delete-button.png| - To revert to the snapshot, click the Revert button. |revert-vm.png| + To revert to the Snapshot, click the Revert button. |revert-vm.png| .. note:: - VM snapshots are deleted automatically when a VM is destroyed. You don't - have to manually delete the snapshots in this case. + Instance Snapshots are deleted automatically when an Instance is destroyed. You don't + have to manually delete the Snapshots in this case. Support for Virtual Appliances @@ -919,20 +1136,14 @@ Support for Virtual Appliances .. include:: virtual_machines/virtual_appliances.rst -Unmanaging Virtual Machines -=========================== +Importing and Unmanaging Instances +================================== -.. include:: virtual_machines/unmanage_vms.rst +.. include:: ./virtual_machines/importing_unmanaging_vms.rst -Importing Virtual Machines -=========================== - -.. include:: virtual_machines/VM_Ingestion.rst - - -Virtual Machine Backups (Backup and Recovery Feature) -===================================================== +Instance Backups (Backup and Recovery Feature) +============================================== .. include:: backup_and_recovery.rst @@ -945,22 +1156,22 @@ additional security. You can use the createSSHKeyPair API to generate the SSH keys. Because each cloud user has their own SSH key, one cloud user cannot log -in to another cloud user's instances unless they share their SSH key -files. Using a single SSH key pair, you can manage multiple instances. +in to another cloud user's Instances unless they share their SSH key +files. Using a single SSH key pair, you can manage multiple Instances. Creating an Instance Template that Supports SSH Keys ---------------------------------------------------- -Create an instance template that supports SSH Keys. +Create an Instance Template that supports SSH Keys. -#. Create a new instance by using the template provided by cloudstack. +#. Create a new Instance by using the Template provided by cloudstack. - For more information on creating a new instance, see + For more information on creating a new Instance, see #. Download the cloudstack script from `The SSH Key Gen Script `_ - to the instance you have created. + to the Instance you have created. .. parsed-literal:: @@ -984,7 +1195,7 @@ Create an instance template that supports SSH Keys. chkconfig --add cloud-set-guest-sshkey.in -#. Stop the instance. +#. Stop the Instance. Creating the SSH Keypair @@ -995,7 +1206,7 @@ use the CloudStack Python API library or the curl commands to make the call to the cloudstack api. For example, make a call from the cloudstack server to create a SSH -keypair called "keypair-doc" for the admin account in the root domain: +keypair called "keypair-doc" for the admin Account in the root domain: .. note:: Ensure that you adjust these values to meet your needs. If you are @@ -1049,23 +1260,23 @@ keypair called "keypair-doc" for the admin account in the root domain: Creating an Instance -------------------- -After you save the SSH keypair file, you must create an instance by -using the template that you created at `Section 5.2.1, “ Creating an +After you save the SSH keypair file, you must create an Instance by +using the Template that you created at `Section 5.2.1, “ Creating an Instance Template that Supports SSH Keys” <#create-ssh-template>`__. Ensure that you use the same SSH key name that you created at `Section 5.2.2, “Creating the SSH Keypair” <#create-ssh-keypair>`__. .. note:: - You cannot create the instance by using the GUI at this time and - associate the instance with the newly created SSH keypair. + You cannot create the Instance by using the GUI at this time and + associate the Instance with the newly created SSH keypair. -A sample curl command to create a new instance is: +A sample curl command to create a new Instance is: .. parsed-literal:: curl --globoff http://localhost:/?command=deployVirtualMachine\&zoneId=1\&serviceOfferingId=18727021-7556-4110-9322-d625b52e0813\&templateId=e899c18a-ce13-4bbf-98a9-625c5026e0b5\&securitygroupids=ff03f02f-9e3b-48f8-834d-91b822da40c5\&account=admin\&domainid=1\&keypair=keypair-doc -Substitute the template, service offering and security group IDs (if you +Substitute the Template, service offering and security group IDs (if you are using the security group feature) that are in your cloud environment. @@ -1090,45 +1301,45 @@ Resetting SSH Keys ------------------ With the API command resetSSHKeyForVirtualMachine, a user can set or -reset the SSH keypair assigned to a virtual machine. A lost or -compromised SSH keypair can be changed, and the user can access the VM +reset the SSH keypair assigned to an Instance. A lost or compromised +SSH keypair can be changed, and the user can access the Instance by using the new keypair. Just create or register a new keypair, then call resetSSHKeyForVirtualMachine. .. include:: virtual_machines/user-data.rst -Assigning GPU/vGPU to Guest VMs -=============================== +Assigning GPU/vGPU to Guest Instances +===================================== -CloudStack can deploy guest VMs with Graphics Processing Unit (GPU) or Virtual +CloudStack can deploy guest Instances with Graphics Processing Unit (GPU) or Virtual Graphics Processing Unit (vGPU) capabilities on XenServer hosts. At the time of -VM deployment or at a later stage, you can assign a physical GPU ( known as -GPU-passthrough) or a portion of a physical GPU card (vGPU) to a guest VM by -changing the Service Offering. With this capability, the VMs running on +Instance deployment or at a later stage, you can assign a physical GPU ( known as +GPU-passthrough) or a portion of a physical GPU card (vGPU) to a guest Instance by +changing the Service Offering. With this capability, the Instances running on CloudStack meet the intensive graphical processing requirement by means of the high computation power of GPU/vGPU, and CloudStack users can run multimedia rich applications, such as Auto-CAD, that they otherwise enjoy at their desk on a virtualized environment. CloudStack leverages the XenServer support for NVIDIA GRID Kepler 1 and 2 series -to run GPU/vGPU enabled VMs. NVIDIA GRID cards allows sharing a single GPU cards -among multiple VMs by creating vGPUs for each VM. With vGPU technology, the -graphics commands from each VM are passed directly to the underlying dedicated +to run GPU/vGPU enabled Instances. NVIDIA GRID cards allows sharing a single GPU cards +among multiple Instances by creating vGPUs for each Instance. With vGPU technology, the +graphics commands from each Instance are passed directly to the underlying dedicated GPU, without the intervention of the hypervisor. This allows the GPU hardware -to be time-sliced and shared across multiple VMs. XenServer hosts use the GPU +to be time-sliced and shared across multiple Instances. XenServer hosts use the GPU cards in following ways: **GPU passthrough**: GPU passthrough represents a physical GPU which can be -directly assigned to a VM. GPU passthrough can be used on a hypervisor alongside +directly assigned to an Instance. GPU passthrough can be used on a hypervisor alongside GRID vGPU, with some restrictions: A GRID physical GPU can either host GRID vGPUs or be used as passthrough, but not both at the same time. -**GRID vGPU**: GRID vGPU enables multiple VMs to share a single physical GPU. -The VMs run an NVIDIA driver stack and get direct access to the GPU. GRID +**GRID vGPU**: GRID vGPU enables multiple Instances to share a single physical GPU. +The Instances run an NVIDIA driver stack and get direct access to the GPU. GRID physical GPUs are capable of supporting multiple virtual GPU devices (vGPUs) -that can be assigned directly to guest VMs. Guest VMs use GRID virtual GPUs in +that can be assigned directly to guest Instances. Guest Instances use GRID virtual GPUs in the same manner as a physical GPU that has been passed through by the -hypervisor: an NVIDIA driver loaded in the guest VM provides direct access to +hypervisor: an NVIDIA driver loaded in the guest Instance provides direct access to the GPU for performance-critical fast paths, and a paravirtualized interface to the GRID Virtual GPU Manager, which is used for nonperformant management operations. NVIDIA GRID Virtual GPU Manager for XenServer runs in dom0. @@ -1138,14 +1349,14 @@ CloudStack provides you with the following capabilities: - Creating a Compute Offering with GPU/vGPU capability. -- Deploying a VM with GPU/vGPU capability. +- Deploying an Instance with GPU/vGPU capability. -- Destroying a VM with GPU/vGPU capability. +- Destroying an Instance with GPU/vGPU capability. -- Allowing an user to add GPU/vGPU support to a VM without GPU/vGPU support by +- Allowing an user to add GPU/vGPU support to an Instance without GPU/vGPU support by changing the Service Offering and vice-versa. -- Migrating VMs (cold migration) with GPU/vGPU capability. +- Migrating Instances (cold migration) with GPU/vGPU capability. - Managing GPU cards capacity. @@ -1175,25 +1386,25 @@ Before proceeding, ensure that you have these prerequisites: - Windows Server 2012 R2 (server equivalent of "Blue") -- CloudStack does not restrict the deployment of GPU-enabled VMs with guest OS types that are not supported by XenServer for GPU/vGPU functionality. The deployment would be successful and a GPU/vGPU will also get allocated for VMs; however, due to missing guest OS drivers, VM would not be able to leverage GPU resources. Therefore, it is recommended to use GPU-enabled service offering only with supported guest OS. +- CloudStack does not restrict the deployment of GPU-enabled Instances with guest OS types that are not supported by XenServer for GPU/vGPU functionality. The deployment would be successful and a GPU/vGPU will also get allocated for Instances; however, due to missing guest OS drivers, Instance would not be able to leverage GPU resources. Therefore, it is recommended to use GPU-enabled service offering only with supported guest OS. - NVIDIA GRID K1 (16 GiB video RAM) AND K2 (8 GiB of video RAM) cards supports homogeneous virtual GPUs, implies that at any given time, the vGPUs resident on a single physical GPU must be all of the same type. However, this restriction doesn't extend across physical GPUs on the same card. Each physical GPU on a K1 or K2 may host different types of virtual GPU at the same time. For example, a GRID K2 card has two physical GPUs, and supports four types of virtual GPU; GRID K200, GRID K220Q, GRID K240Q, AND GRID K260Q. - NVIDIA driver must be installed to enable vGPU operation as for a physical NVIDIA GPU. -- XenServer tools are installed in the VM to get maximum performance on XenServer, regardless of type of vGPU you are using. Without the optimized networking and storage drivers that the XenServer tools provide, remote graphics applications running on GRID vGPU will not deliver maximum performance. +- XenServer tools are installed in the Instance to get maximum performance on XenServer, regardless of type of vGPU you are using. Without the optimized networking and storage drivers that the XenServer tools provide, remote graphics applications running on GRID vGPU will not deliver maximum performance. - To deliver high frames from multiple heads on vGPU, install XenDesktop with HDX 3D Pro remote graphics. Before continuing with configuration, consider the following: -- Deploying VMs GPU/vGPU capability is not supported if hosts are not available with enough GPU capacity. +- Deploying Instances GPU/vGPU capability is not supported if hosts are not available with enough GPU capacity. - A Service Offering cannot be created with the GPU values that are not supported by CloudStack UI. However, you can make an API call to achieve this. -- Dynamic scaling is not supported. However, you can choose to deploy a VM without GPU support, and at a later point, you can change the system offering to upgrade to the one with vGPU. You can achieve this by offline upgrade: stop the VM, upgrade the Service Offering to the one with vGPU, then start the VM. +- Dynamic scaling is not supported. However, you can choose to deploy an Instance without GPU support, and at a later point, you can change the system offering to upgrade to the one with vGPU. You can achieve this by offline upgrade: stop the Instance, upgrade the Service Offering to the one with vGPU, then start the Instance. -- Live migration of GPU/vGPU enabled VM is not supported. +- Live migration of GPU/vGPU enabled Instance is not supported. - Limiting GPU resources per Account/Domain is not supported. @@ -1225,7 +1436,7 @@ GPU/vGPU Assignment Workflow ----------------------------- -CloudStack follows the below sequence of operations to provide GPU/vGPU support for VMs: +CloudStack follows the below sequence of operations to provide GPU/vGPU support for Instances: #. Ensure that XenServer host is ready with GPU installed and configured. For more information, see `Citrix 3D Graphics Pack `_. @@ -1238,39 +1449,79 @@ CloudStack follows the below sequence of operations to provide GPU/vGPU support #. Continue with any of the following operations: - - Deploy a VM. + - Deploy an Instance. - Deploy a VM with GPU/vGPU support by selecting appropriate Service Offering. CloudStack decide which host to choose for VM deployment based on following criteria: + Deploy an Instance with GPU/vGPU support by selecting appropriate Service Offering. CloudStack decide which host to choose for Instance deployment based on following criteria: - Host has GPU cards in it. In case of vGPU, CloudStack checks if cards have the required vGPU type support and enough capacity available. Having no appropriate hosts results in an InsufficientServerCapacity exception. - - Alternately, you can choose to deploy a VM without GPU support, and at a later point, you can change the system offering. You can achieve this by offline upgrade: stop the VM, upgrade the Service Offering to the one with vGPU, then start the VM. - In this case, CloudStack gets a list of hosts which have enough capacity to host the VM. If there is a GPU-enabled host, CloudStack reorders this host list and place the GPU-enabled hosts at the bottom of the list. + - Alternately, you can choose to deploy an Instance without GPU support, and at a later point, you can change the system offering. You can achieve this by offline upgrade: stop the Instance, upgrade the Service Offering to the one with vGPU, then start the Instance. + In this case, CloudStack gets a list of hosts which have enough capacity to host the Instance. If there is a GPU-enabled host, CloudStack reorders this host list and place the GPU-enabled hosts at the bottom of the list. + + - Migrate an Instance. + + CloudStack searches for hosts available for Instance migration, which satisfies GPU requirement. If the host is available, stop the Instance in the current host and perform the Instance migration task. If the Instance migration is successful, the remaining GPU capacity is updated for both the hosts accordingly. + + - Destroy an Instance. + + GPU resources are released automatically when you stop an Instance. Once the destroy Instance is successful, CloudStack will make a resource call to the host to get the remaining GPU capacity in the card and update the database accordingly. + + +Instance Metrics +================ + +Instance statistics are collected on a regular interval (defined by global +setting vm.stats.interval with a default of 60000 milliseconds). +Instance statistics include compute, storage and Network statistics. + +Instance statistics are stored in the database as historical data for a desired time period. These historical statistics then can be retrieved using listVirtualMachinesUsageHistory API. For system VMs, the same historical statistics can be retrieved using listSystemVmsUsageHistory API + +Instance statistics retention time in the database is controlled by the global configuration - `vm.stats.max.retention.time`. Default value is 720 minutes, i.e., 12 hours. Another global configuration that affects Instance statistics is: + +- `vm.stats.user.vm.only` - When set to 'false' stats for system VMs will be collected otherwise stats collection will be done only for user Instances. + +In the UI, historical Instance statistics are shown in the Metrics tab in an individual Instance view, as shown in the image below. + +|vm-metrics-ui.png| + + +Instance Disk Metrics +--------------- + +Similar to Instance statistics, Instance disk statistics (disk stats) can also be collected on a regular interval (defined by global setting vm.disk.stats.interval with a default value of 0 seconds which disables disk stats collection). Disk stats are collected in form of diskiopstotal, diskioread, diskiowrite, diskkbsread and diskkbswrite. + +Instance disk statistics can also be made to store in the database and the historical statistics can be retrieved using listVolumesUsageHistory API. + +Instance disk statistics retention in the database is controlled by the global configuration - `vm.disk.stats.retention.enabled`. Default value is false, i.e., retention of Instance disk statistics is disabled. Other global configurations that affects Instance disk statistics are: - - Migrate a VM. +- `vm.disk.stats.interval.min` - Minimal interval (in seconds) to report Instance disk statistics. If vm.disk.stats.interval is smaller than this, use this to report Instance disk statistics. - CloudStack searches for hosts available for VM migration, which satisfies GPU requirement. If the host is available, stop the VM in the current host and perform the VM migration task. If the VM migration is successful, the remaining GPU capacity is updated for both the hosts accordingly. +- `vm.disk.stats.max.retention.time` - The maximum time (in minutes) for keeping disk stats records in the database. The disk stats cleanup process will be disabled if this is set to 0 or less than 0. - - Destroy a VM. +Instance disk statistics are shown in the Metrics tab in an individual volume view, as shown in the image below. - GPU resources are released automatically when you stop a VM. Once the destroy VM is successful, CloudStack will make a resource call to the host to get the remaining GPU capacity in the card and update the database accordingly. +|vm-disk-metrics-ui.png| .. |vm-lifecycle.png| image:: /_static/images/vm-lifecycle.png - :alt: Virtual Machine State Model + :alt: Instance State Model +.. |vm-schedule-tab.png| image:: /_static/images/vm-schedule-tab.png + :alt: Instance Schedule Tab +.. |vm-schedule-form.png| image:: /_static/images/vm-schedule-form.png + :alt: Instance Schedule Form .. |VMSnapshotButton.png| image:: /_static/images/VMSnapshotButton.png :alt: button to restart a VPC .. |delete-button.png| image:: /_static/images/delete-button.png .. |EditButton.png| image:: /_static/images/edit-icon.png - :alt: button to edit the properties of a VM + :alt: button to edit the properties of an Instance .. |change-affinity-button.png| image:: /_static/images/change-affinity-button.png - :alt: button to assign an affinity group to a virtual machine. + :alt: button to assign an affinity group to an Instance. .. |ChangeServiceButton.png| image:: /_static/images/change-service-icon.png - :alt: button to change the service of a VM + :alt: button to change the service of an Instance .. |Migrateinstance.png| image:: /_static/images/migrate-instance.png - :alt: button to migrate an instance + :alt: button to migrate an Instance .. |Destroyinstance.png| image:: /_static/images/destroy-instance.png - :alt: button to destroy an instance + :alt: button to destroy an Instance .. |iso.png| image:: /_static/images/iso-icon.png :alt: depicts adding an iso image .. |console-icon.png| image:: /_static/images/console-icon.png @@ -1287,3 +1538,7 @@ CloudStack follows the below sequence of operations to provide GPU/vGPU support :alt: List of possible VMware NIC models .. |vm-settings-values-dropdown-KVM-list.png| image:: /_static/images/vm-settings-values-dropdown-KVM-list.png :alt: List of possible KVM disk controllers +.. |vm-metrics-ui.png| image:: /_static/images/vm-metrics-ui.png + :alt: VM metrics UI +.. |vm-disk-metrics-ui.png| image:: /_static/images/vm-disk-metrics-ui.png + :alt: VM Disk metrics UI diff --git a/source/adminguide/virtual_machines/VM_Ingestion.rst b/source/adminguide/virtual_machines/VM_Ingestion.rst deleted file mode 100644 index a1eda3e2c8..0000000000 --- a/source/adminguide/virtual_machines/VM_Ingestion.rst +++ /dev/null @@ -1,307 +0,0 @@ -.. Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information# - regarding copyright ownership. The ASF licenses this file - to you 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. - -Use Cases and General Usage -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The ability to import VMs allows Cloud operators (both public and private) to onboard new tenants simply and quickly, -with the minimum amount disk IO. But also can be used in disaster recovery scenarios at remote sites (if storage is -replicated) and in the recreation of VMs which have been backed up (part of the code is indeed used in -CloudStack's Backup and Recovery feature). - -The most complex part of importing VMs is the mapping of an unmanaged VM's networks to CloudStack networks. As an operator -could be importing tens or even hundreds of VMs, a UI for this feature has not been created as yet. - -If the 'destination' network VLAN(s) and the requested service offerings match the existing VM, then the instance can be -imported whilst it is running. If the VLANs or service offerings do not match, then the instance to be imported must be stopped. -Once the instance has been added to CloudStack, starting it through CloudStack will alter the instances settings in line with -those set in the CloudStack DB. - -To import instances, it is imagined that a Cloud Provider will: - -#. List all of the existing networks which the instances to be imported are on. -#. Create corresponding networks in CloudStack -#. Use the listUnmanagedInstances API to create a CSV of instances to be imported. -#. Where required, add metadata to the CSV such as the Account into which each VM is to associated, the network which each VM is to be - attached to, the Compute Offering required for each instance, and the Disk Offering for each disk -#. Create a script that will loop through the CSV, sending the importUnmanagedInstance API command with the corresponding - parameters for each instance being read from the CSV - -listUnmanagedInstances API --------------------------- - -Prerequisites to list unmanaged instances (vSphere) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -In order for CloudStack to list the instances that are not managed by CloudStack on a host/cluster, the host(s) in the vSphere cluster -must have been added to CloudStack. The standard prerequisites for adding a host to CloudStack apply. - -API -~~~ - -This API will list all unmanaged VMs for a given cluster. Optionally, the vSphere name for an existing unmanaged -VM can be given to retrieve VM details. The API will filter all CloudStack managed VMs, and will also filter templates that show up as VMs on vCenter. - -**Request parameters**: - -.. parsed-literal:: - - **clusterid** (CloudStack UUID of cluster) - - **name** (vSphere instance name) - -**Response**: - -.. parsed-literal:: - - **clusterid** - - **hostid** - - **name** - - **osdisplayname** - - **memory** - - **powerstate** - - **cpuCoresPerSocket** - - **cpunumber** - - **cpuspeed** - - **disk** - - **id** - - **capacity** (in bytes) - - **controller** - - **controllerunit** - - **imagepath** - - **position** - - **nic** - - **id** - - **macaddress** - - **networkname** - - **vlanid** - - **pcislot** - - **adaptertype** (when available) - - **ipaddress** (Only returned when VMware tools are running on instance) - - -Importing Unmanaged Instances ------------------------------- - -importUnmanagedInstance API -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**Request parameters**: - -.. parsed-literal:: - - **clusterid** (CloudStack UUID of cluster) - - **name** (vSphere instance name) - - **displayname** - - **hostname** - - **account** (An optional account name for the virtual machine. Must be used with domainid parameter) - - **domainid** (An optional domain ID for the virtual machine. Must be used with account parameter) - - **projectid** - - **templateid** - - **serviceofferingid** - - **nicnetworklist** (Map for NIC ID and corresponding Network UUID) - - **nicipaddresslist** (Map for NIC ID and corresponding IP address) - - **datadiskofferinglist** (Map for data disk ID and corresponding disk offering UUID) - - **details** (Map for VM details) - - **migrateallowed** (VM and its volumes are allowed to migrate to different host/storage pool when offering tags conflict with host/storage pool) - - **forced** (If true, a VM is imported despite some of its NIC's MAC addresses being already present) - -.. note:: The `forced` parameter is false by default and prevents importing a VM which has a NIC containing a MAC address that has been previously assigned by CloudStack. If it is set to true, the NICs with MAC addresses which already exist in the CloudStack database have the existing MAC addresses reassigned to its NICs. - -**Response**: - -.. parsed-literal:: - Same response as that of deployVirtualMachine API. - - - -Prerequisites to Importing Unmanaged Instances (vSphere) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -There are a few prerequisites to importing unmanaged instances into CloudStack. Largely these are simply that the networks which you are going to -attach the instance in CloudStack need to already exist in CloudStack also the storage which an unmanaged instance is on (before importing) and -also the storage which you wish the instance to be on after importing must already have been added to CloudStack. - -VMs can be imported to isolated, shared or L2 networks. VMs can also be imported and then automatically migrated to storage in accordance with -service offerings using the *migrateallowed* API parameter. - -Dummy Template -~~~~~~~~~~~~~~~~~~~~ - -The assumption that all guest instances in CloudStack are created from a template or ISO is hardcoded into CloudStack. This *source* template will -not exist for instances which have been imported into CloudStack, there for a dummy template has been created in the CloudStack database. When a -template ID is not supplied when importing the instance, the built-in dummy template ID will be used. As this template is only a dummy one, it will -not be possible to 'revert' to the original template unless you specify a **real** template ID. - -Offerings and Automatic Mapping -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Networks -######### -When importing an instance, CloudStack needs to attach the virtual network interfaces (vNICs) to CloudStack networks. -vNICs are associated with a network in one of two ways. - -#. Automatically (available for L2 and shared networks) -#. Manual assignment of vNIC to network (ID) as a map if a VM has more that one NIC - -In an enterprise, the vast majority of networks will operate as *Layer 2* networks with IP addressing handled by an IPAM system such as Active Directory -or InfoBlox. This makes CloudStack's L2 networks the natural choice for a like-for-like migration/on-boarding of VMs. - -When importing an instance to a shared or L2 network, CloudStack will automatically look for a CloudStack network that has the same VLAN(s) as the instance's NIC(s) -is already on. This can be overridden by providing a network_id for the **'nicnetworklist'** parameter - -.. note:: this includes PVLANs on L2 networks. - - -IP Addresses -############## - -To assigning a specific IP address to a NIC, the **'nicipaddresslist'** parameter is used. This parameter should not be used for L2 networks, and is optional for shared networks. -To ask CloudStack to assign an instance's existing IP when importing, a value of `auto` can be used. - -.. parsed-literal:: nicipaddresslist[0].nic=NIC_ID nicipaddresslist[0].ip4Address=auto - -Auto-assigning IP addresses requires VMware tools to be on the guest instance (for the IP to be reported to vCenter) and is not supported if an unmanaged VM reports more than one IP -address associated with its NIC (CloudStack cannot tell which is the primary address). For instances with more than 1 IP addresses per NIC, pass the first IP address via the import API -and then add secondary addresses via the **'addIpToNic**' API - - -Compute Offerings -#################### - -**Custom vs Fixed Offerings** -'''''''''''''''''''''''''''''' - -All guest instances in CloudStack must have an associated compute offering. The import API supports using 'fixed' (ie 2 vCPUs with 2GB RAM -hardcoded into the offering) and 'custom' (user can choose the number of vCPUs and memory) offerings. When a custom offering is chosen, -then the CloudStack will automatically set the number vCPUs, CPU speed and amount of RAM, to be the same as the VM before importing it. When -using custom offerings, the instance to be imported can remain running. If the compute offering is 'fixed' and it matches the vCPU and RAM -of the existing instance, the instance can remain running while being imported, otherwise the instance must be stopped first and it will be -reconfigured with the new values when it is started. - -For maximum compatibility when importing a VM, the *Custom Constrained* type of compute offerings in CloudStack are the recommended type of -offerings. The amount of memory and number of CPUs assigned to the imported VM will automatically be matched to the existing VM, while the CPU -speed will have been set to a sensible value by the admin when creating the offering. - - -.. note:: - To use Custom Unconstrained type of compute offering, CPU speed will need to be passed using details parameter when the CPU reservation is not set for - the unmanaged VM in vSphere. CPU speed in the latter case can be passed as, details[0].cpuSpeed=SOME_VALUE. - - -Disk Offerings -############### - - -To import a VM which has data disks attached, a map of the disk ID and corresponding disk offering ID must be passed via the *datadiskofferinglist* parameter. - -For example: - -.. parsed-literal:: datadiskofferinglist[0].disk= datadiskofferinglist[0].diskOffering= - -.. note:: - If the selected disk offering is greater in size than the actual disk size, CloudStack will not perform - resize of the disk when importing. The disk will remain with its original size, but CloudStack will have a - record as per the offering. - -Host and Storage Tags -##################### - -When the **migrateallowed** parameter is set to true, if the host or storage tags in the compute/disk offerings are incompatible with the current host and/or -storage pool(s), CloudStack will migrate the VM and its volumes to a suitable host and storage pool. - -When **migrateallowed** is false and there is a conflict, an appropriate error will be returned. - -Migration is supported for both running and stopped VMs. Live-migration is supported for running imported VM. When a stopped VM is imported, CloudStack will migrate -VM to a suitable host when it is restarted. - -For volumes, live-migration will be carried out for the volumes of a running VM. As per existing CloudStack behaviour, a stopped -imported VM may not appear in vCenter when its root volume is migrated until the VM is restarted. - - -Registered Operating System -########################### - -Import API will try to recognize and map the operating system type for the unmanaged VM to the one from the list of the guest operating systems available in CloudStack. -If the operating system type can not be mapped, the API will return an error, and the templateid parameter (value = ID of a template with the appropriate operating system) -will be needed for a successful import. When `templateid` is defined in the import API call, the guest operating system details of the imported VM will be set to the -operating system details of the specified template after VM restart. - - -Other notes for the importUnmanagedInstance API -################################################ - -- The API will use **name** for the **hostname** of the VM when hostname parameter is not explicitly passed. - The **hostname** cannot be longer than 63 characters. - Only ASCII letters a-z, A-Z, digits 0-9, hyphen are allowed. Must start with a letter and end with a letter or a digit. - -- NIC adapters and disk controllers of the VM will remain same as they were before the import, irrespective of the template configurations. - -- When the VM operating system is automatically recognized during the import (i.e. templateid parameter is not specified), and the operating system of the VM - (as reported by the hypervisor) can be matched to multiple operating systems in the CloudStack, the first match will be used as the operating system for the - imported VM in CloudStack. An example of this is i.e. “CentOS 7 (64-bit)” operating system type, as visible in vSphere, since this one can be matched against - “CentOS 7” or “CentOS 7.1” or “CentOS 7.2” in CloudStack (based on the existing guest OS mappings), - and here the first one (“CentOS 7”) will be used as the operating system for the imported VM. - -- Importing VMs with different types of disk controllers for data disks and multiple NICs of different types is not supported and will result in an error response. - Root disk and other (data disks) disks can have different type of controller. - -- After import, once the VM is started from CloudStack its CPU and RAM configuration, including CPU limits, CPU reservations, memory reservation, etc. may change from - the original configuration, since all those properties are now controlled by CloudStack (i.e. by cluster-level settings and Compute Offering settings). - -- After importing a running VM, the VM will need to be stopped and started (not restarted) via CloudStack to be able to access the console of a VM. - - -Discovery of Existing Networks (for vSphere) ------------------------------------------------ - -To import existing VMs, the networks that they are attached to need to already exist as CloudStack networks. As an existing environment can have a great many networks which -need creating, A Python 3 script has been created to enumerate the existing networks. - -The script (discover_networks.py) can be found in the vm/hypervisor/vmware directory in the CloudStack scripts install location. For most operating systems, -CloudStack installs scripts in /usr/share/cloudstack-common/. The script leverages VMware’s pyvmomi library (https://github.com/vmware/pyvmomi). The script lists all networks -for a vCenter host or cluster which have at least one virtual machine attached to them. The script will iterate through these networks and will report the following parameters for them: - -- **cluster** (vCenter Cluster belongs to) -- **host** (vCenter Host belongs to) -- **portgroup** (Portgroup of the network) -- **switch** (Switch to which network is connected) -- **virtualmachines** (Virtual machines that are currently connected to the network along with their NIC device details) -- **vlanid** (VLAN ID of the network) - -The script can take the following arguments: - -.. parsed-literal:: - -h, --help show this help message and exit - -s HOST, --host HOST vSphere service to connect to - -o PORT, --port PORT Port to connect on - -u USER, --user USER User name to use - -p PASSWORD, --password PASSWORD Password to use - -c CLUSTER, --cluster CLUSTER Cluster for listing network - -S, --disable_ssl_verification Disable ssl host certificate verification - -d, --debug Debug log messages - -.. note:: - To run this script host machine should have Python 3 and module *pyvmomi* installed. - - Python binaries can be found here: https://www.python.org/downloads/ - - Install instructions for pyvmomi are here: https://github.com/vmware/pyvmomi#installing - -The output of this script can then be used in conjunction with the **'createNetwork'** API to add all of the networks to CloudStack that will be required for a -successful import. - - - -.. |br| raw:: html - -
-
diff --git a/source/adminguide/virtual_machines/importing_unmanaging_vms.rst b/source/adminguide/virtual_machines/importing_unmanaging_vms.rst new file mode 100644 index 0000000000..f98f94640c --- /dev/null +++ b/source/adminguide/virtual_machines/importing_unmanaging_vms.rst @@ -0,0 +1,419 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + +.. note:: This is currently only available for **vSphere** clusters. + +About Unmanaged Instances +------------------------- + +As of ACS 4.14, CloudStack has the concept of **unmanaged** Instances. These are Instances that are on CloudStack +managed hosts, but that are not in CloudStack's database and therefore CloudStack cannot control (manage) then in any way. Previously, +such Instances could exist, but CloudStack did not 'see' them (their existence *would* be reported in logs as unrecognised Instances). + +From ACS 4.14 onwards, CloudStack is able to list these Instances via the listUnmanagedInstances API command and then import (also known as ingest) +those unmanaged Instances via the importUnmanagedInstance API so that they become CloudStack managed Guest Instances. +From ACS 4.16 onwards, importing of the unmanaged Instances can also be carried out within the UI. + +From ACS 4.15 onwards, administrators are able to unmanage guest Instances. + +In the UI, both unmanaged and managed Instances are listed in *Tools > Import-Export Instances* section: + + |vm-unmanagedmanaged.png| + + +Importing Unmanaged Instances +----------------------------- + +Use Cases and General Usage +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The ability to import Instances allows Cloud operators (both public and private) to onboard new tenants simply and quickly, +with the minimum amount disk IO. But also can be used in disaster recovery scenarios at remote sites (if storage is +replicated) and in the recreation of Instances which have been backed up (part of the code is indeed used in +CloudStack's Backup and Recovery feature). + +The most complex part of importing Instances is the mapping of an unmanaged Instance's Networks to CloudStack Networks. As an operator +could be importing tens or even hundreds of Instances, a UI for this feature has not been created as yet. + +If the 'destination' Network VLAN(s) and the requested service offerings match the existing Instance, then the Instance can be +imported whilst it is running. If the VLANs or service offerings do not match, then the Instance to be imported must be stopped. +Once the Instance has been added to CloudStack, starting it through CloudStack will alter the Instances settings in line with +those set in the CloudStack DB. + +To import Instances, it is imagined that a Cloud Provider will: + +#. List all of the existing Networks which the Instances to be imported are on. +#. Create corresponding Networks in CloudStack +#. Use the listUnmanagedInstances API to create a CSV of Instances to be imported. +#. Where required, add metadata to the CSV such as the Account into which each Instance is to associated, the Network which each Instance is to be + attached to, the Compute Offering required for each Instance, and the Disk Offering for each disk +#. Create a script that will loop through the CSV, sending the importUnmanagedInstance API command with the corresponding + parameters for each Instance being read from the CSV + +Listing unmanaged Instances +--------------------------- + +Prerequisites to list unmanaged Instances (vSphere) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In order for CloudStack to list the Instances that are not managed by CloudStack on a host/cluster, the host(s) in the vSphere cluster +must have been added to CloudStack. The standard prerequisites for adding a host to CloudStack apply. + +listUnmanagedInstances API +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This API will list all unmanaged Instances for a given cluster. Optionally, the vSphere name for an existing unmanaged +Instance can be given to retrieve Instance details. The API will filter all CloudStack managed Instances, and will also filter Templates that show up as Instances on vCenter. + +**Request parameters**: + +.. parsed-literal:: + - **clusterid** (CloudStack UUID of cluster) + - **name** (vSphere Instance name) + +**Response**: + +.. parsed-literal:: + - **clusterid** + - **hostid** + - **name** + - **osdisplayname** + - **memory** + - **powerstate** + - **cpuCoresPerSocket** + - **cpunumber** + - **cpuspeed** + - **disk** + - **id** + - **capacity** (in bytes) + - **controller** + - **controllerunit** + - **imagepath** + - **position** + - **nic** + - **id** + - **macaddress** + - **networkname** + - **vlanid** + - **pcislot** + - **adaptertype** (when available) + - **ipaddress** (Only returned when VMware tools are running on Instance) + + +Importing Unmanaged Instances +----------------------------- + +Administrators can import unmanaged Instances either using UI or with the importUnmanagedInstance API. + +UI provides the following form for importing the Instance when *Import Instance* action is used in *Import-Export Instances* view: + +|ImportInstance.png| + +importUnmanagedInstance API +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**Request parameters**: + +.. parsed-literal:: + - **clusterid** (CloudStack UUID of cluster) + - **name** (vSphere Instance name) + - **displayname** + - **hostname** + - **account** (An optional account name for the Instance. Must be used with domainid parameter) + - **domainid** (An optional domain ID for the Instance. Must be used with account parameter) + - **projectid** + - **templateid** + - **serviceofferingid** + - **nicnetworklist** (Map for NIC ID and corresponding Network UUID) + - **nicipaddresslist** (Map for NIC ID and corresponding IP address) + - **datadiskofferinglist** (Map for data disk ID and corresponding disk offering UUID) + - **details** (Map for Instance details) + - **migrateallowed** (Instance and its volumes are allowed to migrate to different host/storage pool when offering tags conflict with host/storage pool) + - **forced** (If true, an Instance is imported despite some of its NIC's MAC addresses being already present) + +.. note:: The `forced` parameter is false by default and prevents importing an Instance which has a NIC containing a MAC address that has been previously assigned by CloudStack. If it is set to true, the NICs with MAC addresses which already exist in the CloudStack database have the existing MAC addresses reassigned to its NICs. + +**Response**: + +.. parsed-literal:: + Same response as that of deployVirtualMachine API. + + + +Prerequisites to Importing Unmanaged Instances (vSphere) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +There are a few prerequisites to importing unmanaged Instances into CloudStack. Largely these are simply that the networks which you are going to +attach the Instance in CloudStack need to already exist in CloudStack also the storage which an unmanaged Instance is on (before importing) and +also the storage which you wish the Instance to be on after importing must already have been added to CloudStack. + +Instances can be imported to isolated, shared or L2 networks. Instances can also be imported and then automatically migrated to storage in accordance with +service offerings using the *migrateallowed* API parameter. + +Dummy Template +############## + +The assumption that all Guest Instances in CloudStack are created from a Template or ISO is hardcoded into CloudStack. This *source* Template will +not exist for Instances which have been imported into CloudStack, there for a dummy Template has been created in the CloudStack database. When a +Template ID is not supplied when importing the Instance, the built-in dummy Template ID will be used. As this Template is only a dummy one, it will +not be possible to 'revert' to the original Template unless you specify a **real** Template ID. + +Offerings and Automatic Mapping +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Compute Offerings +################# + +**Custom vs Fixed Offerings** +''''''''''''''''''''''''''''' + +All Guest Instances in CloudStack must have an associated compute offering. The import API supports using 'fixed' (ie 2 vCPUs with 2GB RAM +hardcoded into the offering) and 'custom' (user can choose the number of vCPUs and memory) offerings. When a custom offering is chosen, +then the CloudStack will automatically set the number vCPUs, CPU speed and amount of RAM, to be the same as the Instance before importing it. When +using custom offerings, the Instance to be imported can remain running. If the compute offering is 'fixed' and it matches the vCPU and RAM +of the existing Instance, the Instance can remain running while being imported, otherwise the Instance must be stopped first and it will be +reconfigured with the new values when it is started. + +For maximum compatibility when importing an Instance, the *Custom Constrained* type of compute offerings in CloudStack are the recommended type of +offerings. The amount of memory and number of CPUs assigned to the imported Instance will automatically be matched to the existing Instance, while +the CPU speed will have been set to a sensible value by the admin when creating the offering. + + +.. note:: + To use Custom Unconstrained type of compute offering, CPU speed will need to be passed using details parameter when the CPU reservation is not set for + the unmanaged Instance in vSphere. CPU speed in the latter case can be passed as, details[0].cpuSpeed=SOME_VALUE. + + +Disk Offerings +############### + + +To import an Instance which has data disks attached, a map of the disk ID and corresponding disk offering ID must be passed via the *datadiskofferinglist* parameter. + +For example: + +.. parsed-literal:: datadiskofferinglist[0].disk= datadiskofferinglist[0].diskOffering= + +.. note:: + If the selected disk offering is greater in size than the actual disk size, CloudStack will not perform + resize of the disk when importing. The disk will remain with its original size, but CloudStack will have a + record as per the offering. + +Host and Storage Tags +##################### + +When the **migrateallowed** parameter is set to true, if the host or storage tags in the compute/disk offerings are incompatible with the current host and/or +storage pool(s), CloudStack will migrate the Instance and its volumes to a suitable host and storage pool. + +When **migrateallowed** is false and there is a conflict, an appropriate error will be returned. + +Migration is supported for both running and stopped Instances. Live-migration is supported for running imported Instance. When a stopped Instance is imported, CloudStack +will migrate it to a suitable host when it is restarted. + +For volumes, live-migration will be carried out for the volumes of a running Instance. As per existing CloudStack behaviour, a stopped +imported Instance may not appear in vCenter when its root volume is migrated until the Instance is restarted. + +Networks +######## + +When importing an Instance, CloudStack needs to attach the virtual network interfaces (vNICs) to CloudStack networks. +vNICs are associated with a network in one of two ways. + +#. Automatically (available for L2 and shared networks) +#. Manual assignment of vNIC to network (ID) as a map if an Instance has more that one NIC + +In an enterprise, the vast majority of networks will operate as *Layer 2* networks with IP addressing handled by an IPAM system such as Active Directory +or InfoBlox. This makes CloudStack's L2 networks the natural choice for a like-for-like migration/on-boarding of Instances. + +When importing an Instance to a shared or L2 network, CloudStack will automatically look for a CloudStack network that has the same VLAN(s) as the Instance's NIC(s) +is already on. This can be overridden by providing a network_id for the **'nicnetworklist'** parameter + +.. note:: this includes PVLANs on L2 networks. + + +IP Addresses +'''''''''''' + +To assigning a specific IP address to a NIC, the **'nicipaddresslist'** parameter is used. This parameter should not be used for L2 networks, and is optional for shared networks. +To ask CloudStack to assign an Instance's existing IP when importing, a value of `auto` can be used. + +.. parsed-literal:: nicipaddresslist[0].nic=NIC_ID nicipaddresslist[0].ip4Address=auto + +Auto-assigning IP addresses requires VMware tools to be on the Guest Instance (for the IP to be reported to vCenter) and is not supported if an unmanaged Instance reports more than one IP +address associated with its NIC (CloudStack cannot tell which is the primary address). For Instances with more than 1 IP addresses per NIC, pass the first IP address via the import API +and then add secondary addresses via the **'addIpToNic**' API + + +Registered Operating System +########################### + +Import API will try to recognize and map the operating system type for the unmanaged Instance to the one from the list of the guest operating systems available in CloudStack. +If the operating system type can not be mapped, the API will return an error, and the templateid parameter (value = ID of a Template with the appropriate operating system) +will be needed for a successful import. When `templateid` is defined in the import API call, the guest operating system details of the imported Instance will be set to the +operating system details of the specified Template after Instance restart. + + +Other notes for the importUnmanagedInstance API +################################################ + +- The API will use **name** for the **hostname** of the Instance when hostname parameter is not explicitly passed. + The **hostname** cannot be longer than 63 characters. + Only ASCII letters a-z, A-Z, digits 0-9, hyphen are allowed. Must start with a letter and end with a letter or a digit. + +- NIC adapters and disk controllers of the Instance will remain same as they were before the import, irrespective of the Template configurations. + +- When the Instance operating system is automatically recognized during the import (i.e. templateid parameter is not specified), and the operating system of the Instance + (as reported by the hypervisor) can be matched to multiple operating systems in the CloudStack, the first match will be used as the operating system for the + imported Instance in CloudStack. An example of this is i.e. “CentOS 7 (64-bit)” operating system type, as visible in vSphere, since this one can be matched against + “CentOS 7” or “CentOS 7.1” or “CentOS 7.2” in CloudStack (based on the existing guest OS mappings), + and here the first one (“CentOS 7”) will be used as the operating system for the imported Instance. + +- Importing Instances with different types of disk controllers for data disks and multiple NICs of different types is not supported and will result in an error response. + Root disk and other (data disks) disks can have different type of controller. + +- After import, once the instance is started from CloudStack its CPU and RAM configuration, including CPU limits, CPU reservations, memory reservation, etc. may change from + the original configuration, since all those properties are now controlled by CloudStack (i.e. by cluster-level settings and Compute Offering settings). + +- After importing a running instance, it will need to be stopped and started (not restarted) via CloudStack to be able to access the console of an instance. + + +Discovery of Existing Networks (for vSphere) +-------------------------------------------- + +To import existing instances, the networks that they are attached to need to already exist as CloudStack networks. As an existing environment can have a great many networks which +need creating, A Python 3 script has been created to enumerate the existing networks. + +The script (discover_networks.py) can be found in the vm/hypervisor/vmware directory in the CloudStack scripts install location. For most operating systems, +CloudStack installs scripts in /usr/share/cloudstack-common/. The script leverages VMware’s pyvmomi library (https://github.com/vmware/pyvmomi). The script lists all networks +for a vCenter host or cluster which have at least one Instance attached to them. The script will iterate through these networks and will report the following parameters for them: + +- **cluster** (vCenter Cluster belongs to) +- **host** (vCenter Host belongs to) +- **portgroup** (Portgroup of the network) +- **switch** (Switch to which network is connected) +- **virtualmachines** (Instances that are currently connected to the network along with their NIC device details) +- **vlanid** (VLAN ID of the network) + +The script can take the following arguments: + +.. parsed-literal:: + -h, --help show this help message and exit + -s HOST, --host HOST vSphere service to connect to + -o PORT, --port PORT Port to connect on + -u USER, --user USER User name to use + -p PASSWORD, --password PASSWORD Password to use + -c CLUSTER, --cluster CLUSTER Cluster for listing network + -S, --disable_ssl_verification Disable ssl host certificate verification + -d, --debug Debug log messages + +.. note:: + To run this script host machine should have Python 3 and module *pyvmomi* installed. + + Python binaries can be found here: https://www.python.org/downloads/ + + Install instructions for pyvmomi are here: https://github.com/vmware/pyvmomi#installing + +The output of this script can then be used in conjunction with the **'createNetwork'** API to add all of the networks to CloudStack that will be required for a +successful import. + + +Unmanaging Instances +-------------------- + +Administrators are able to unmanage guest Instances from CloudStack. Once unmanaged, CloudStack can no longer monitor, control or administer the provisioning and orchestration related operations on an Instance. + +To unmanage a guest Instance, an administrator must either use the UI or invoke the unmanageVirtualMachine API passing the ID of the Instance to unmanage. The API has the following preconditions: + +- The Instance must not be destroyed +- The Instance state must be 'Running’ or ‘Stopped’ +- The Instance must be a VMware Instance + +The API execution will perform the following pre-checks, failing if they are not met: + +- There are no Volume Snapshots associated with any of the Instance volumes +- There is no ISO attached to the Instance + +In the UI, *Unmanage instance* action can be used in Instance view. |UnmanageButton.png| + +Alternately, the same operation can also be carried out using *Unmanage Instance* action in *Import-Export Instances* view under the *Tools* section. + +|UnmanageInstance.png| + +Preserving unmanaged Instance NICs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The zone setting: unmanage.vm.preserve.nics can be used to preserve Instance NICs and its MAC addresses after unmanaging them. If set to true, the Instance NICs (and their MAC addresses) are preserved when unmanaging it. Otherwise, NICs are removed and MAC addresses can be reassigned. + + +Unmanaging Instance actions +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Clean up Instance NICs and deallocate network resources used such as IP addresses and DHCP entries on virtual routers. + + - If ‘unmanage.vm.preserve.nics’ = ‘false’ then the NICs are deallocated and removed from CloudStack + + - If ‘unmanage.vm.preserve.nics’ = ‘true’ then the NICs remain allocated and are not removed from the database. The NIC’s MAC addresses remain preserved and therefore cannot be assigned to any new NIC. + +- Clean up Instance volumes in the CloudStack database + +- Clean up Instance Snapshots in the CloudStack database (if any) +- Revoke host access to any managed volumes attached to the instance (applicable to managed storage only) + +- Clean up the Instance from the following: + + - Remove the Instance from security groups (if any) + + - Remove the Instance from instance groups (if any) + + - Remove firewall rules for the Instance (if any) + + - Remove port forwarding rules for the Instance (if any) + + - Remove load balancing rules for the Instance (if any) + + - Disable static NAT (if the Instance is assigned to it) + + - Remove the Instance from affinity groups (if any) + +- Remove instance details from the CloudStack database + +- Decrement the account resources count for volumes and Instances + +- Generate usage events: + + - For volumes destroyed, with type: ‘VOLUME.DELETE’ + + - For Instance Snapshots destroyed (if any), with type: ‘VMSNAPSHOT.DELETE’ and 'VMSNAPSHOT.OFF_PRIMARY' + + - For Instance NICs destroyed: with type: ‘NETWORK.OFFERING.REMOVE’ + + - For the Instance being unmanaged: stopped and destroyed usage events (similar to the generated usage events when expunging an Instance), with types: ‘VM.STOP’ and ‘VM.DESTROY', unless the instance has been already stopped before being unmanaged and in this case only ‘VM.DESTROY' is generated. + +.. |br| raw:: html + +
+
+ +.. |ImportInstance.png| image:: /_static/images/vm-importinstance.png + :alt: Import Unmanaged Instance. + :width: 600 px +.. |vm-unmanagedmanaged.png| image:: /_static/images/vm-unmanagedmanaged.png + :alt: Unmanaged and Managed Instances. + :width: 600 px +.. |UnmanageButton.png| image:: /_static/images/unmanage-instance-icon.png + :alt: button to unmanage an instance +.. |UnmanageInstance.png| image:: /_static/images/vm-unmanage-instance.png + :alt: button to unmanage an instance + :width: 600 px diff --git a/source/adminguide/virtual_machines/unmanage_vms.rst b/source/adminguide/virtual_machines/unmanage_vms.rst deleted file mode 100644 index 9cf2c3635c..0000000000 --- a/source/adminguide/virtual_machines/unmanage_vms.rst +++ /dev/null @@ -1,82 +0,0 @@ -About Unmanaged Virtual Machines --------------------------------- - -As of ACS 4.14, CloudStack has the concept of **unmanaged** virtual machines. These are virtual machines that are on CloudStack -managed hosts, but that are not in CloudStack's database and therefore CloudStack cannot control (manage) then in any way. Previously, -such VMs could exist, but CloudStack did not 'see' them (their existence *would* be reported in logs as unrecognised VMs). - -From ACS 4.14 onwards, CloudStack is able to list these VMs via the listUnmanagedInstances API command and then import (also known as ingest) -those unmanaged VMs via the importUnmanagedInstance API so that they become CloudStack managed guest instances - -From ACS 4.15 onwards, administrators are able to unmanage guest virtual machines. - -.. note:: This is currently only available for **vSphere** clusters. - -Unmanaging Virtual Machines via API ------------------------------------ - -Administrators are able to unmanage guest virtual machines from CloudStack. Once unmanaged, CloudStack can no longer monitor, control or administer the provisioning and orchestration related operations on a virtual machine. - -To unmanage a guest virtual machine, an administrator must invoke the unmanageVirtualMachine API passing the ID of the virtual machine to unmanage. The API has the following preconditions: - -- The virtual machine must not be destroyed -- The virtual machine state must be 'Running’ or ‘Stopped’ -- The virtual machine must be a VMware virtual machine - -The API execution will perform the following pre-checks, failing if they are not met: - -- There are no volume snapshots associated with any of the virtual machine volumes -- There is no ISO attached to the virtual machine - -.. note:: This is currently only available for **vSphere** clusters. - - -Preserving unmanaged virtual machine NICs ------------------------------------------ - -The zone setting: unmanage.vm.preserve.nics can be used to preserve virtual machine NICs and its MAC addresses after unmanaging them. If set to true, the virtual machine NICs (and their MAC addresses) are preserved when unmanaging it. Otherwise, NICs are removed and MAC addresses can be reassigned. - - -Unmanaging virtual machine actions ----------------------------------- - -- Clean up virtual machine NICs and deallocate network resources used such as IP addresses and DHCP entries on virtual routers. - - - If ‘unmanage.vm.preserve.nics’ = ‘false’ then the NICs are deallocated and removed from CloudStack - - - If ‘unmanage.vm.preserve.nics’ = ‘true’ then the NICs remain allocated and are not removed from the database. The NIC’s MAC addresses remain preserved and therefore cannot be assigned to any new NIC. - -- Clean up virtual machine volumes in the CloudStack database - -- Clean up virtual machine snapshots in the CloudStack database (if any) -- Revoke host access to any managed volumes attached to the VM (applicable to managed storage only) - -- Clean up the virtual machine from the following: - - - Remove the virtual machine from security groups (if any) - - - Remove the virtual machine from instance groups (if any) - - - Remove firewall rules for the virtual machine (if any) - - - Remove port forwarding rules for the virtual machine (if any) - - - Remove load balancing rules for the virtual machine (if any) - - - Disable static NAT (if the virtual machine is assigned to it) - - - Remove the virtual machine from affinity groups (if any) - -- Remove VM details from the CloudStack database - -- Decrement the account resources count for volumes and virtual machines - -- Generate usage events: - - - For volumes destroyed, with type: ‘VOLUME.DELETE’ - - - For virtual machine snapshots destroyed (if any), with type: ‘VMSNAPSHOT.DELETE’ and 'VMSNAPSHOT.OFF_PRIMARY' - - - For virtual machine NICs destroyed: with type: ‘NETWORK.OFFERING.REMOVE’ - - - For the virtual machine being unmanaged: stopped and destroyed usage events (similar to the generated usage events when expunging a virtual machine), with types: ‘VM.STOP’ and ‘VM.DESTROY', unless the VM has been already stopped before being unmanaged and in this case only ‘VM.DESTROY' is generated. diff --git a/source/adminguide/virtual_machines/user-data.rst b/source/adminguide/virtual_machines/user-data.rst index 3fe6511649..74a37a647a 100644 --- a/source/adminguide/virtual_machines/user-data.rst +++ b/source/adminguide/virtual_machines/user-data.rst @@ -17,21 +17,119 @@ User-Data and Meta-Data ----------------------- -CloudStack provides APIs to attach up to 32KB of user-data to a deployed VM. +Users can register userdata in CloudStack and refer the registered userdata while +deploying or editing or reset userdata on an instance. The userdata content can also be +directly provided while deploying the instance. Userdata content length can be up to 32kb. -There are two CloudStack APIs that can be used to store user-data: -`deployVirtualMachine `_ -and -`updateVirtualMachine `_ -They both support the parameter ``userdata=``. The value for this parameter -must be a `base64 `_-encoded multi-part MIME -message. See further below for an example of what this should look like. +To register a new userdata: + +#. Log in to the CloudStack UI. + +#. In the left navigation bar, click Compute and then User Data. + +#. Click Register a userdata. + +#. In the dialog, make the following choices: + + - **Name**: Any desired name for the userdata. + + - **Userdata**: Plain userdata content. CloudStack UI does base64 encoding. + + - **Userdata parameters**: Comma separated list of variables which (if any) declared + in userdata content. + + - **Domain**: An optional domain for the userdata. + + - **Account**: An optional account for the userdata. + +.. image:: /_static/images/register_userdata.png + :width: 400px + :align: center + :alt: Regiser userdata dialog box + +If userdata content has variables declared in it, user can register the Userdata +with userdata parameters. + +For example, if userdata content is like below having a custom variable "variable1" + + .. code:: bash + + ## template: jinja + #cloud-config + runcmd: + - echo 'TestVariable {{ ds.meta_data.variable1 }}' >> /tmp/variable + - echo 'Hostname {{ ds.meta_data.public_hostname }}' > /tmp/hostname + +Userdata has to be registered with userdata parameter "variable1" like below + +.. image:: /_static/images/register_userdata_with_variables.png + :width: 400px + :align: center + :alt: Regiser userdata with variables dialog box + +If the variables in userdata content are of a predefined metadata like "public_hostname" +or "instance_id", then userdata parameters should not declare these variables. That is +the reason in the above example "public_hostname" is not declared. + +There are three CloudStack APIs that can be used to provide user-data to instance: +deployVirtualMachine, updateVirtualMachine and resetUserDataForVirtualMachine. +These APIs accepts parameters ``userdataid`` and ``userdatadetails``. +userdatadetails is to specify the custom values for the variables which are declared +in userdata in a key value parameter map details. + +.. image:: /_static/images/deployvm_userdata.png + :width: 400px + :align: center + :alt: Provide userdata id or userdata text dialog box + +If the userdata contains variables that are declared during registration then those values +has to be specified like below, + +.. image:: /_static/images/deployvm_userdata_with_variables.png + :width: 400px + :align: center + :alt: Provide userdata id or userdata with variables text dialog box + +These details will be saved as meta-data file(s) in both config drive and virtual router, +which in turn support jinja based instance meta-data feature of cloud-init, +refer to https://cloudinit.readthedocs.io/en/latest/topics/instancedata.html. + +These APIs also support the parameter ``userdata=`` to provide the userdata content +directly. The value for this parameter must be a `base64 `_-encoded +multi-part MIME message. See further below for an example of what this should look like. + +The registered UserData can be linked to a Template or ISO on registration/upload/editing +using linkUserDataToTemplate API. The same API can be used to unlink the mapping of userdata and Template. + +While linking userData to a Template/ISO userdata override policy has to be specified. +Following are the override policies available: + +Allow Override: Allow users to override UserData for the Template during instance deployment or on reset. + This is the default override policy if not specified + +Deny Override: Override of UserData isn’t allowed during instance deployment or on reset. + +Append Only: Don’t allow users to override linked UserData but allow users to pass userdata content + or ID that should be appended to the linked UserData of the Template. When the users pass userdata it is appended to the Template userdata in the form of a multipart MIME message + +This is how it looks like in Template/ISO register/upload/edit forms. + +.. image:: /_static/images/userdata_template_link.png + :width: 400px + :align: center + :alt: Linking userdata to template/ISO + +Based on these override policies, "Add Instance" UI form provides relevant options to either +override or append. If it is "Deny Override" then "Add Instance" will not allow adding user specific userdata + +Storing and accessing userdata +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HTTP GET parameters are limited to a length of 2048 bytes, but it is possible to store larger user-data blobs by sending them in the body via HTTP POST instead of GET. -From inside the VM, the user-data is accessible via the virtual router, +From inside the instance, the user-data is accessible via the virtual router, if the UserData service is enabled on the network offering. If you are using the DNS service of the virtual router, a special hostname @@ -39,31 +137,31 @@ called `data-server.` is provided, that will point to a valid user-data server. Otherwise you have to determine the virtual router address via other means, such as DHCP leases. Be careful to scan all routers if you have multiple -networks attached to a VM, in case not all of them have the UserData service +networks attached to an instance, in case not all of them have the UserData service enabled. User-data is available from the URL ``http://data-server./latest/user-data`` and can be fetched via curl or other HTTP client. -It is also possible to fetch VM metadata from the same service, via the URL +It is also possible to fetch instance metadata from the same service, via the URL ``http://data-server./latest/{metadata type}``. For backwards compatibility, the previous URL ``http://data-server./latest/{metadata type}`` is also supported. For metadata type, use one of the following: -- ``service-offering``. A description of the VMs service offering +- ``service-offering``. A description of the instances service offering - ``availability-zone``. The Zone name -- ``local-ipv4``. The guest IP of the VM +- ``local-ipv4``. The guest IP of the instance -- ``local-hostname``. The hostname of the VM +- ``local-hostname``. The hostname of the instance - ``public-ipv4``. The first public IP for the router. - ``public-hostname``. This is the same as public-ipv4 -- ``instance-id``. The instance name of the VM +- ``instance-id``. The instance name of the instance Determining the virtual router address without DNS @@ -88,7 +186,7 @@ possible to determine the user-data server from a DHCP lease. Fetching user-data via the API ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -User-data is not included with the normal VM state for historic reasons. +User-data is not included with the normal instance state for historic reasons. To read out the base64-encoded user-data via the API, use the `getVirtualMachineUserData `_ API call: @@ -101,11 +199,11 @@ Using cloud-init ~~~~~~~~~~~~~~~~ `cloud-init `_ can be used to access -and interpret user-data inside virtual machines. If you install cloud-init into your -VM templates, it will allow you to store SSH keys and user passwords on each new -VM deployment automatically (:ref:`adding-password-management-to-templates` and `using ssh keys `_). +and interpret user-data inside Instances. If you install cloud-init into your +Instance Templates, it will allow you to store SSH keys and user passwords on each new +Instance deployment automatically (:ref:`adding-password-management-to-templates` and `using ssh keys `_). -#. Install cloud-init package into a VM template: +#. Install cloud-init package into an Instance Template: .. code:: bash @@ -113,7 +211,7 @@ VM deployment automatically (:ref:`adding-password-management-to-templates` and or $ sudo apt-get install cloud-init -#. Create a datasource configuration file in the VM template: ``/etc/cloud/cloud.cfg.d/99_cloudstack.cfg`` +#. Create a datasource configuration file in the Instance Template: ``/etc/cloud/cloud.cfg.d/99_cloudstack.cfg`` .. code:: yaml @@ -124,36 +222,44 @@ Custom user-data example This example uses cloud-init to automatically update all OS packages on the first launch. -#. Create user-data, wrapped into a multi-part MIME message and encoded in base64: +#. Register the following user-data in CloudStack. If APIs are used to register userdata or to + provide direct userdata text then userdata needs to be wrapped into a multi-part MIME message + and encoded in base64: -.. code:: bash + .. code:: bash - base64 < +.. note:: When using multipart userdata, cloud-init expects userdata format of one particular type only in one multipart section. Disclaimer ~~~~~~~~~~ diff --git a/source/adminguide/virtual_machines/virtual_appliances.rst b/source/adminguide/virtual_machines/virtual_appliances.rst index 5d9ad262fb..d5f167fd8c 100644 --- a/source/adminguide/virtual_machines/virtual_appliances.rst +++ b/source/adminguide/virtual_machines/virtual_appliances.rst @@ -17,20 +17,20 @@ About Virtual Appliances ------------------------ CloudStack allows users to deploy virtual appliances on VMware such as its been made directly though vCenter. -Vendors of virtual appliances for VMware often produce ‘templates’ of their appliances in an OVA format. +Vendors of virtual appliances for VMware often produce ‘Templates’ of their appliances in an OVA format. An OVA file contain disc images, as well as the configuration data of the virtual appliance and also at times a EULA which must be acknowledged. Virtual Appliances are supported only on VMware. .. note:: - Since version 4.15.1, administrators and users can register virtual appliance templates by selecting the option 'Read VM Settings from OVA' on the template registration. + Since version 4.15.1, administrators and users can register virtual appliance Templates by selecting the option 'Read instance Settings from OVA' on the Template registration. Deployment options (configurations) ----------------------------------- -VMware templates can provide different deployment options in their OVF descriptor file. CloudStack obtains -the different deployment options when the template is registered and it displays them to the users -in the virtual machine deployment wizard, under the 'Compute Offering' section. +VMware Templates can provide different deployment options in their OVF descriptor file. CloudStack obtains +the different deployment options when the Template is registered and it displays them to the users +in the Instance deployment wizard, under the 'Compute Offering' section. After the user selects a deployment option, CloudStack lists the compute offerings which match or exceed the deployment options hardware requirements for CPU and memory. @@ -51,7 +51,7 @@ The 'Compute Offering' section will be similar to this: Network interfaces ------------------ -In case the template requires the virtual appliance to connect different network interfaces, these are displayed in the 'Networks' section, similar to this: +In case the Template requires the virtual appliance to connect different network interfaces, these are displayed in the 'Networks' section, similar to this: |vapps-networks.png| @@ -59,7 +59,7 @@ In case the template requires the virtual appliance to connect different network Properties ---------- -If the template contains properties that require the user input, those are being displayed on the 'Properties' section, similar to this: +If the Template contains properties that require the user input, those are being displayed on the 'Properties' section, similar to this: |vapps-properties.png| @@ -67,7 +67,7 @@ If the template contains properties that require the user input, those are being End-user license agreements --------------------------- -If the template contains one or more end-user license agreements, the user must accept them prior to deploy their virtual appliance. +If the Template contains one or more end-user license agreements, the user must accept them prior to deploy their virtual appliance. If the license agreements are not accepted, then it is not possible to deploy a virtual appliance. |vapps-eulas.png| @@ -75,4 +75,4 @@ If the license agreements are not accepted, then it is not possible to deploy a Advanced deployment settings ---------------------------- -It is not possible to choose the boot type (BIOS, UEFI) and boot mode for virtual appliances. The boot mode and type used by the virtual appliances is defined in the template. \ No newline at end of file +It is not possible to choose the boot type (BIOS, UEFI) and boot mode for virtual appliances. The boot mode and type used by the virtual appliances is defined in the Template. \ No newline at end of file diff --git a/source/conceptsandterminology/choosing_deployment_architecture.rst b/source/conceptsandterminology/choosing_deployment_architecture.rst index 3dcbac5594..55f673a05f 100644 --- a/source/conceptsandterminology/choosing_deployment_architecture.rst +++ b/source/conceptsandterminology/choosing_deployment_architecture.rst @@ -27,20 +27,20 @@ Small-Scale Deployment |Small-Scale Deployment| -This diagram illustrates the network architecture of a small-scale +This diagram illustrates the Network architecture of a small-scale CloudStack deployment. - A firewall provides a connection to the Internet. The firewall is configured in NAT mode. The firewall forwards HTTP requests and API calls from the Internet to the Management Server. The Management - Server resides on the management network. + Server resides on the Management Network. - A layer-2 switch connects all physical servers and storage. - A single NFS server functions as both the primary and secondary storage. -- The Management Server is connected to the management network. +- The Management Server is connected to the Management Network. Large-Scale Redundant Setup @@ -48,7 +48,7 @@ Large-Scale Redundant Setup |Large-Scale Redundant Setup| -This diagram illustrates the network architecture of a large-scale +This diagram illustrates the Network architecture of a large-scale CloudStack deployment. - A layer-3 switching layer is at the core of the data center. A router @@ -59,8 +59,8 @@ CloudStack deployment. mode. The firewalls provide the following functions: - Forwards HTTP requests and API calls from the Internet to the - Management Server. The Management Server resides on the management - network. + Management Server. The Management Server resides on the Management + Network. - When the cloud spans multiple zones, the firewalls should enable site-to-site VPN such that servers in different zones can directly @@ -72,9 +72,9 @@ CloudStack deployment. - The Management Server cluster (including front-end load balancers, Management Server nodes, and the MySQL database) is connected to the - management network through a pair of load balancers. + Management Network through a pair of load balancers. -- Secondary storage servers are connected to the management network. +- Secondary storage servers are connected to the Management Network. - Each pod contains storage and computing servers. Each storage and computing server should have redundant NICs connected to separate @@ -85,10 +85,10 @@ Separate Storage Network ------------------------ In the large-scale redundant setup described in the previous section, -storage traffic can overload the management network. A separate storage -network is optional for deployments. Storage protocols such as iSCSI are -sensitive to network delays. A separate storage network ensures guest -network traffic contention does not impact storage performance. +storage traffic can overload the Management Network. A separate Storage +Network is optional for deployments. Storage protocols such as iSCSI are +sensitive to network delays. A separate Storage Network ensures Guest +Network traffic contention does not impact storage performance. Multi-Node Management Server @@ -127,19 +127,19 @@ Management Server installation in Data Center 2. |Separate Storage Network| -This diagram illustrates a setup with a separate storage network. Each +This diagram illustrates a setup with a separate Storage Network. Each server has four NICs, two connected to pod-level network switches and -two connected to storage network switches. +two connected to Storage Network switches. -There are two ways to configure the storage network: +There are two ways to configure the Storage Network: - Bonded NIC and redundant switches can be deployed for NFS. In NFS deployments, redundant switches and bonded NICs still result in one - network (one CIDR block+ default gateway address). + Network (one CIDR block+ default gateway address). -- iSCSI can take advantage of two separate storage networks (two CIDR +- iSCSI can take advantage of two separate Storage Networks (two CIDR blocks each with its own default gateway). Multipath iSCSI client can - failover and load balance between separate storage networks. + failover and load balance between separate Storage Networks. |NIC Bonding And Multipath I/O| @@ -165,38 +165,38 @@ supported by CloudStack. The following table provides this information. .. cssclass:: table-striped table-bordered table-hover -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ -| Feature | XenServer | vSphere | KVM - | LXC | HyperV | Bare | -| | | | RHEL | | | Metal | -+===================================+===========+==========+========+=====+========+=======+ -| Network Throttling | Yes | Yes | Yes | No | ? | N/A | -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ -| Security groups in zones that use | Yes | No | Yes | Yes | ? | No | -| basic networking | | | | | | | -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ -| iSCSI | Yes | Yes | Yes | Yes | Yes | N/A | -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ -| FibreChannel | Yes | Yes | Yes | Yes | Yes | N/A | -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ -| Local Disk | Yes | Yes | Yes | Yes | Yes | Yes | -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ -| HA | Yes | Yes | Yes | ? | Yes | N/A | -| | | (Native) | | | | | -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ -| Snapshots of local disk | Yes | Yes | Yes | ? | ? | N/A | -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ -| Local disk as data disk | Yes | No | Yes | Yes | Yes | N/A | -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ -| Work load balancing | No | DRS | No | No | ? | N/A | -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ -| Manual live migration of VMs from | Yes | Yes | Yes | ? | Yes | N/A | -| host to host | | | | | | | -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ -| Conserve management traffic IP | Yes | No | Yes | Yes | ? | N/A | -| address by using link local | | | | | | | -| network to communicate with | | | | | | | -| virtual router | | | | | | | -+-----------------------------------+-----------+----------+--------+-----+--------+-------+ ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ +| Feature | XenServer | vSphere | KVM - | LXC | HyperV | Bare | +| | | | RHEL | | | Metal | ++=========================================+===========+==========+========+=====+========+=======+ +| Network Throttling | Yes | Yes | Yes | No | ? | N/A | ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ +| Security groups in zones that use | Yes | No | Yes | Yes | ? | No | +| basic networking | | | | | | | ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ +| iSCSI | Yes | Yes | Yes | Yes | Yes | N/A | ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ +| FibreChannel | Yes | Yes | Yes | Yes | Yes | N/A | ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ +| Local Disk | Yes | Yes | Yes | Yes | Yes | Yes | ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ +| HA | Yes | Yes | Yes | ? | Yes | N/A | +| | | (Native) | | | | | ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ +| Snapshots of local disk | Yes | Yes | Yes | ? | ? | N/A | ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ +| Local disk as data disk | Yes | No | Yes | Yes | Yes | N/A | ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ +| Work load balancing | No | DRS | No | No | ? | N/A | ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ +| Manual live migration of Instances from | Yes | Yes | Yes | ? | Yes | N/A | +| host to host | | | | | | | ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ +| Conserve management traffic IP | Yes | No | Yes | Yes | ? | N/A | +| address by using link local | | | | | | | +| network to communicate with | | | | | | | +| virtual router | | | | | | | ++-----------------------------------------+-----------+----------+--------+-----+--------+-------+ Hypervisor Support for Primary Storage @@ -228,7 +228,7 @@ hypervisors. | SMB/CIFS | No | No | No | No | Yes | +----------------------------------+-------------+---------------+----------------+----------------+--------+ -XenServer uses a clustered LVM system to store VM images on iSCSI and +XenServer uses a clustered LVM system to store Instance images on iSCSI and Fiber Channel volumes and does not support over-provisioning in the hypervisor. The storage server itself, however, can support thin-provisioning. As a result the CloudStack can still support storage @@ -311,7 +311,7 @@ Setup Best Practices reliability. - 10G networks are generally recommended for storage access when larger - servers that can support relatively more VMs are used. + servers that can support relatively more Instances are used. - Host capacity should generally be modeled in terms of RAM for the guests. Storage and CPU may be overprovisioned. RAM may not. RAM is @@ -319,7 +319,7 @@ Setup Best Practices - (XenServer) Configure the XenServer dom0 settings to allocate more memory to dom0. This can enable XenServer to handle larger numbers of - virtual machines. We recommend 2940 MB of RAM for XenServer dom0. For + Instances. We recommend 2940 MB of RAM for XenServer dom0. For instructions on how to do this, see `http://support.citrix.com/article/CTX126531 `_. @@ -333,24 +333,24 @@ Maintenance Best Practices - Monitor host disk space. Many host failures occur because the host's root disk fills up from logs that were not rotated adequately. -- Monitor the total number of VM instances in each cluster, and disable +- Monitor the total number of Instances in each cluster, and disable allocation to the cluster if the total is approaching the maximum that the hypervisor can handle. Be sure to leave a safety margin to allow for the possibility of one or more hosts failing, which would - increase the VM load on the other hosts as the VMs are redeployed. + increase the Instance load on the other hosts as the Instances are redeployed. Consult the documentation for your chosen hypervisor to find the - maximum permitted number of VMs per host, then use CloudStack global + maximum permitted number of Instances per host, then use CloudStack global configuration settings to set this as the default limit. Monitor the - VM activity in each cluster and keep the total number of VMs below a + Instance activity in each cluster and keep the total number of Instances below a safe level that allows for the occasional host failure. For example, if there are N hosts in the cluster, and you want to allow for one host in the cluster to be down at any given time, the total number of - VM instances you can permit in the cluster is at most (N-1) \* - (per-host-limit). Once a cluster reaches this number of VMs, use the + Instances you can permit in the cluster is at most (N-1) \* + (per-host-limit). Once a cluster reaches this number of Instances, use the CloudStack UI to disable allocation to the cluster. .. warning:: - The lack of up-do-date hotfixes can lead to data corruption and lost VMs. + The lack of up-do-date hotfixes can lead to data corruption and lost Instances. Be sure all the hotfixes provided by the hypervisor vendor are applied. Track the release of hypervisor patches through your hypervisor vendor’s support diff --git a/source/conceptsandterminology/concepts.rst b/source/conceptsandterminology/concepts.rst index d938b918ae..467b6b94fa 100644 --- a/source/conceptsandterminology/concepts.rst +++ b/source/conceptsandterminology/concepts.rst @@ -11,7 +11,7 @@ "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. + under the License @@ -61,18 +61,18 @@ CloudStack can manage tens of thousands of physical servers installed in geographically distributed datacenters. The management server scales near-linearly eliminating the need for cluster-level management servers. Maintenance or other outages of the management server can occur without -affecting the virtual machines running in the cloud. +affecting the Instances running in the cloud. Automatic Cloud Configuration Management ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CloudStack automatically configures the network and storage settings for each -virtual machine deployment. Internally, a pool of virtual appliances support +Instance deployment. Internally, a pool of virtual appliances support the operation of configuration of the cloud itself. These appliances offer services such as firewalling, routing, DHCP, VPN, console proxy, storage access, and storage replication. The extensive use of horizontally scalable -virtual machines simplifies the installation and ongoing operation of a cloud. +Instances simplifies the installation and ongoing operation of a cloud. Graphical User Interface @@ -80,7 +80,7 @@ Graphical User Interface CloudStack offers an administrators web interface used for provisioning and managing the cloud, as well as an end-user's Web interface, used for running -VMs and managing VM templates. The UI can be customized to reflect the desired +Instances and managing Instance Templates. The UI can be customized to reflect the desired service provider or enterprise look and feel. @@ -137,25 +137,24 @@ The management server orchestrates and allocates the resources in your cloud deployment. The management server typically runs on a dedicated machine or as a virtual -machine. It controls allocation of virtual machines to hosts and assigns -storage and IP addresses to the virtual machine instances. The Management -Server runs in an Apache Tomcat container and requires a MySQL database for -persistence. +machine. It controls allocation of Instances to hosts and assigns +storage and IP addresses to the Instances. The Management Server runs +in an Apache Tomcat container and requires a MySQL database for persistence. The management server: -- Provides the web interface for both the adminstrator and end user. +- Provides the web interface for both the administrator and end user. - Provides the API interfaces for both the CloudStack API as well as the EC2 interface. -- Manages the assignment of guest VMs to a specific compute resource +- Manages the assignment of guest Instances to a specific compute resource - Manages the assignment of public and private IP addresses. -- Allocates storage during the VM instantiation process. +- Allocates storage during the VM instantiation process. -- Manages snapshots, disk images (templates), and ISO images. +- Manages Snapshots, disk images (Templates), and ISO images. - Provides a single point of configuration for your cloud. @@ -181,11 +180,11 @@ Resources within the cloud are managed as follows: - Host: A single compute node within a cluster; often a hypervisor. - Primary Storage: A storage resource typically provided to a single cluster - for the actual running of instance disk images. (Zone-wide primary storage + for the actual running of Instance disk images. (Zone-wide primary storage is an option, though not typically used.) -- Secondary Storage: A zone-wide resource which stores disk templates, ISO - images, and snapshots. +- Secondary Storage: A zone-wide resource which stores disk Templates, ISO + images, and Snapshots. Networking Overview @@ -221,9 +220,9 @@ technique for providing fault tolerance and disaster recovery. By grouping zones into regions, the cloud can achieve higher availability and scalability. User accounts can span regions, so that -users can deploy VMs in multiple, widely-dispersed regions. Even if one +users can deploy Instances in multiple, widely-dispersed regions. Even if one of the regions becomes unavailable, the services are still available to -the end-user through VMs deployed in another region. And by grouping +the end-user through Instances deployed in another region. And by grouping communities of zones under their own nearby Management Servers, the latency of communications within the cloud is reduced compared to managing widely-dispersed zones from a single central Management Server. @@ -234,11 +233,11 @@ creating reports or invoices for each geographic region. .. figure:: /_static/images/region-overview.png -Regions are visible to the end user. When a user starts a guest VM on a +Regions are visible to the end user. When a user starts a Guest Instance on a particular CloudStack Management Server, the user is implicitly selecting that region for their guest. Users might also be required to -copy their private templates to additional regions to enable creation of -guest VMs using their templates in those regions. +copy their private Templates to additional regions to enable creation of +Guest Instances using their Templates in those regions. .. _about-zones: @@ -266,10 +265,10 @@ A zone consists of: .. figure:: /_static/images/zone-overview.png -Zones are visible to the end user. When a user starts a guest VM, the +Zones are visible to the end user. When a user starts a Guest Instance, the user must select a zone for their guest. Users might also be required to -copy their private templates to additional zones to enable creation of -guest VMs using their templates in those zones. +copy their private Templates to additional zones to enable creation of +Guest Instances using their Templates in those zones. Zones can be public or private. Public zones are visible to all users. This means that any user may create a guest in that zone. Private zones @@ -337,12 +336,12 @@ About Clusters ~~~~~~~~~~~~~~ A cluster provides a way to group hosts. To be precise, a cluster is a -XenServer server pool, a set of KVM servers, , or a VMware cluster +XenServer server pool, a set of KVM servers or a VMware cluster preconfigured in vCenter. The hosts in a cluster all have identical hardware, run the same hypervisor, are on the same subnet, and access -the same shared primary storage. Virtual machine instances (VMs) can be -live-migrated from one host to another within the same cluster, without -interrupting service to the user. +the same shared primary storage. Instances can be live-migrated from +one host to another within the same cluster, without interrupting service +to the user. A cluster is the fourth-largest organizational unit within a CloudStack deployment. Clusters are contained within pods, and pods are contained @@ -371,8 +370,8 @@ About Hosts ~~~~~~~~~~~ A host is a single computer. Hosts provide the computing resources that -run guest virtual machines. Each host has hypervisor software installed -on it to manage the guest VMs. For example, a host can be a Citrix +run Guest Instances. Each host has hypervisor software installed +on it to manage the Guest Instances. For example, a host can be a Citrix XenServer server, a Linux KVM-enabled server, an ESXi server, or a Windows Hyper-V server. @@ -384,7 +383,7 @@ within regions. Hosts in a CloudStack deployment: - Provide the CPU, memory, storage, and networking resources needed to - host the virtual machines + host the Instances - Interconnect using a high bandwidth TCP/IP network and connect to the Internet @@ -397,7 +396,7 @@ Hosts in a CloudStack deployment: be homogeneous Additional hosts can be added at any time to provide more capacity for -guest VMs. +Guest Instances. CloudStack automatically detects the amount of CPU and memory resources provided by the hosts. @@ -418,7 +417,7 @@ About Primary Storage ~~~~~~~~~~~~~~~~~~~~~ Primary storage is associated with a cluster, and it stores -virtual disks for all the VMs running on hosts in that cluster. +virtual disks for all the Instances running on hosts in that cluster. On KVM and VMware, you can provision primary storage on a per-zone basis. You can add multiple primary storage servers to a cluster or zone. At @@ -428,8 +427,8 @@ virtual disks to particular primary storage devices. It is useful to set up zone-wide primary storage when you want to avoid extra data copy operations. With cluster-based primary storage, data in -the primary storage is directly available only to VMs within that -cluster. If a VM in a different cluster needs some of the data, it must +the primary storage is directly available only to Instances within that +cluster. If an Instance in a different cluster needs some of the data, it must be copied from one cluster to another, using the zone's secondary storage as an intermediate step. This operation can be unnecessarily time-consuming. @@ -466,14 +465,14 @@ About Secondary Storage Secondary storage stores the following: -- Templates — OS images that can be used to boot VMs and can include +- Templates — OS images that can be used to boot Instances and can include additional configuration information, such as installed applications - ISO images — disc images containing data or bootable media for operating systems -- Disk volume snapshots — saved copies of VM data which can be used for - data recovery or to create new templates +- Disk Volume Snapshots — saved copies of Instance data which can be used for + data recovery or to create new Templates The items in secondary storage are available to all hosts in the scope of the secondary storage, which may be defined as per zone or per @@ -481,8 +480,8 @@ region. To make items in secondary storage available to all hosts throughout the cloud, you can add object storage in addition to the zone-based NFS -Secondary Staging Store. It is not necessary to copy templates and -snapshots from one zone to another, as would be required when using zone +Secondary Staging Store. It is not necessary to copy Templates and +Snapshots from one zone to another, as would be required when using zone NFS alone. Everything is available everywhere. For Hyper-V hosts, SMB/CIFS storage is supported. @@ -493,9 +492,9 @@ Simple Storage Service (S3) object storage. When using one of these storage plugins, you configure Swift or S3 storage for the entire CloudStack, then set up the NFS Secondary Staging Store for each zone. The NFS storage in each zone acts as a staging area through which all -templates and other secondary storage data pass before being forwarded +Templates and other secondary storage data pass before being forwarded to Swift or S3. The backing object storage acts as a cloud-wide -resource, making templates and other data available to any zone in the +resource, making Templates and other data available to any zone in the cloud. .. warning:: @@ -503,6 +502,15 @@ cloud. you cannot set up multiple zones, one using NFS secondary and the other using S3 or Swift secondary. +.. _about-object-storage: + +About Object Storage +~~~~~~~~~~~~~~~~~~~~~~~ +Object storage (also known as object-based storage) is a data storage that manages data as objects. +CloudStack admin can setup supported Object Storage systems and add them to CloudStack as an Object Storage Pool. +Users can create buckets within the object storage pool. +The basic storage units of Object Store are objects. Any type of data, regardless of content type, is stored as an object. +Buckets are logical containers for storing objects. About Physical Networks ~~~~~~~~~~~~~~~~~~~~~~~ @@ -538,8 +546,8 @@ Basic Zone Network Traffic Types When basic networking is used, there can be only one physical network in the zone. That physical network carries the following traffic types: -- Guest. When end users run VMs, they generate guest traffic. The guest - VMs communicate with each other over a network that can be referred +- Guest. When end users run Instances, they generate guest traffic. The guest + Instances communicate with each other over a network that can be referred to as the guest network. Each pod in a basic zone is a broadcast domain, and therefore each pod has a different IP range for the guest network. The administrator must configure the IP range for each pod. @@ -555,25 +563,23 @@ the zone. That physical network carries the following traffic types: We strongly recommend the use of separate NICs for management traffic and guest traffic. -- Public. Public traffic is generated when VMs in the cloud access the - Internet. Publicly accessible IPs must be allocated for this purpose. - End users can use the CloudStack UI to acquire these IPs to implement - NAT between their guest network and the public network, as described - in Acquiring a New IP Address. +- Public. Public traffic doesn't exist in the Basic Zone. Instead, the Guest + network can be assigned publicly routable IP space in case you want your + Instances to be directly exposed to the Internet -- Storage. While labeled "storage" this is specifically about secondary - storage, and doesn't affect traffic for primary storage. This - includes traffic such as VM templates and snapshots, which is sent +- Storage. While labeled "storage" this is specifically about Secondary + Storage traffic, and doesn't affect traffic for primary storage. This + includes traffic such as Instance Templates and Snapshots, which is sent between the secondary storage VM and secondary storage servers. CloudStack uses a separate Network Interface Controller (NIC) named - storage NIC for storage network traffic. Use of a storage NIC that - always operates on a high bandwidth network allows fast template and - snapshot copying. You must configure the IP range to use for the - storage network. + storage NIC for Storage Network traffic. Use of a storage NIC that + always operates on a high bandwidth network allows fast Template and + Snapshot copying. You must configure the IP range to use for the + Storage Network. In a basic network, configuring the physical network is fairly straightforward. In most cases, you only need to configure one guest -network to carry traffic that is generated by guest VMs. If you use a +network to carry traffic that is generated by Guest Instances. If you use a NetScaler load balancer and enable its elastic IP and elastic load balancing (EIP and ELB) features, you must also configure a network to carry public traffic. CloudStack takes care of presenting the necessary @@ -599,13 +605,13 @@ traffic types, and you need to let CloudStack know which type of network traffic you want each network to carry. The traffic types in an advanced zone are: -- Guest. When end users run VMs, they generate guest traffic. The guest - VMs communicate with each other over a network that can be referred +- Guest. When end users run Instances, they generate guest traffic. The guest + Instances communicate with each other over a network that can be referred to as the guest network. This network can be isolated or shared. In an isolated guest network, the administrator needs to reserve VLAN ranges to provide isolation for each CloudStack account’s network (potentially a large number of VLANs). In a shared guest network, all - guest VMs share a single network. + Guest Instances share a single network. - Management. When CloudStack’s internal resources communicate with each other, they generate management traffic. This includes @@ -614,21 +620,30 @@ zone are: communicates directly with the CloudStack Management Server. You must configure the IP range for the system VMs to use. -- Public. Public traffic is generated when VMs in the cloud access the - Internet. Publicly accessible IPs must be allocated for this purpose. +- Public. Public traffic is generated when Instances in the cloud need to access + systems that are external to CloudStack. Guest Instances will route the + traffic through their Virtual Router to access external systems. End users can use the CloudStack UI to acquire these IPs to implement - NAT between their guest network and the public network, as described + NAT between their guest network and the Public Network, as described in “Acquiring a New IP Address” in the Administration Guide. + Public IPs are assigned to the "Public" interface of system VMs, including + Virtual Routers. + +.. note:: + The IP space used in a "Public" network can either be really publicly + routable IP space (e.g. in case of a Public cloud setup), or can be + any other company internal (RFC 1918) IP space that is not used with other + CloudStack networks (e.g. in case of a Private cloud setup - Storage. While labeled "storage" this is specifically about secondary storage, and doesn't affect traffic for primary storage. This - includes traffic such as VM templates and snapshots, which is sent + includes traffic such as Instance Templates and Snapshots, which is sent between the secondary storage VM and secondary storage servers. CloudStack uses a separate Network Interface Controller (NIC) named - storage NIC for storage network traffic. Use of a storage NIC that - always operates on a high bandwidth network allows fast template and - snapshot copying. You must configure the IP range to use for the - storage network. + storage NIC for Storage Network traffic. Use of a storage NIC that + always operates on a high bandwidth network allows fast Template and + Snapshot copying. You must configure the IP range to use for the + Storage Network. These traffic types can each be on a separate physical network, or they can be combined with certain restrictions. When you use the Add Zone @@ -646,14 +661,14 @@ account, in which case only the named account may create guests that attach to these networks. The networks are defined by a VLAN ID, IP range, and gateway. The administrator may provision thousands of these networks if desired. Additionally, the administrator can reserve a part -of the IP address space for non-CloudStack VMs and servers. +of the IP address space for non-CloudStack Instances and servers. Advanced Zone Public IP Addresses ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When advanced networking is used, the administrator can create -additional networks for use by the guests. These networks can span the +additional Public networks for use by the guests. These networks can span the zone and be available to all accounts, or they can be scoped to a single account, in which case only the named account may create guests that attach to these networks. The networks are defined by a VLAN ID, IP diff --git a/source/conceptsandterminology/index.rst b/source/conceptsandterminology/index.rst index 827233833d..f29e29478d 100644 --- a/source/conceptsandterminology/index.rst +++ b/source/conceptsandterminology/index.rst @@ -28,7 +28,7 @@ This is the Apache CloudStack installation guide. In this guide we first go thro .. toctree:: -Concepts and Terminolgy +Concepts and Terminology ------------------------ .. toctree:: :maxdepth: 2 diff --git a/source/conceptsandterminology/network_setup.rst b/source/conceptsandterminology/network_setup.rst index feed58a73b..467130a270 100644 --- a/source/conceptsandterminology/network_setup.rst +++ b/source/conceptsandterminology/network_setup.rst @@ -287,7 +287,7 @@ External Guest Firewall Integration for Juniper SRX (Optional) CloudStack provides for direct management of the Juniper SRX series of firewalls. This enables CloudStack to establish static NAT mappings from -public IPs to guest VMs, and to use the Juniper device in place of the +public IPs to Guest Instances, and to use the Juniper device in place of the virtual router for firewall services. You can have one or more Juniper SRX per zone. This feature is optional. If Juniper integration is not provisioned, CloudStack will use the virtual router for these services. @@ -482,9 +482,9 @@ Guidelines - Use the public IP address range from a single subnet. You cannot add IP addresses from different subnets. -- Only one ASA instance per VLAN is allowed because multiple VLANS +- Only one ASA Instance per VLAN is allowed because multiple VLANS cannot be trunked to ASA ports. Therefore, you can use only one ASA - instance in a guest network. + Instance in a guest network. - Only one Cisco VNMC per zone is allowed. @@ -538,7 +538,7 @@ Prerequisites Typically, you create a pool of ASA 1000v appliances and register them with CloudStack. - Specify the following while setting up a Cisco ASA 1000v instance: + Specify the following while setting up a Cisco ASA 1000v Instance: - VNMC host IP. @@ -558,7 +558,7 @@ Prerequisites #. Register Cisco ASA 1000v with VNMC. - After Cisco ASA 1000v instance is powered on, register VNMC from the + After Cisco ASA 1000v Instance is powered on, register VNMC from the ASA console. @@ -569,11 +569,11 @@ Using Cisco ASA 1000v Services See `“Prerequisites” <#prerequisites>`_. -#. Add a VNMC instance. +#. Add a VNMC Instance. See `“Adding a VNMC Instance” <#adding-a-vnmc-instance>`_. -#. Add a ASA 1000v instance. +#. Add a ASA 1000v Instance. See :ref:`adding-an-asa-1000v-instance`. @@ -610,9 +610,9 @@ Adding a VNMC Instance #. Click the Add VNMC Device and provide the following: - - Host: The IP address of the VNMC instance. + - Host: The IP address of the VNMC Instance. - - Username: The user name of the account on the VNMC instance that + - Username: The user name of the account on the VNMC Instance that CloudStack should use. - Password: The password of the account. @@ -645,14 +645,14 @@ Adding an ASA 1000v Instance #. Click the Add CiscoASA1000v Resource and provide the following: - - **Host**: The management IP address of the ASA 1000v instance. The + - **Host**: The management IP address of the ASA 1000v Instance. The IP address is used to connect to ASA 1000V. - **Inside Port Profile**: The Inside Port Profile configured on Cisco Nexus1000v dvSwitch. - **Cluster**: The VMware cluster to which you are adding the ASA - 1000v instance. + 1000v Instance. Ensure that the cluster is Cisco Nexus 1000v dvSwitch enabled. @@ -689,7 +689,7 @@ offering as follows: - **Persistent**: Indicate whether the guest network is persistent or not. The network that you can provision without having to - deploy a VM on it is termed persistent network. + deploy an Instance on it is termed persistent network. - **VPC**: This option indicate whether the guest network is Virtual Private Cloud-enabled. A Virtual Private Cloud (VPC) is a private, @@ -830,7 +830,7 @@ management: #. Click OK. The installation and provisioning of the external load balancer is -finished. You can proceed to add VMs and NAT or load balancing rules. +finished. You can proceed to add Instances and NAT or load balancing rules. Management Server Load Balancing @@ -895,10 +895,10 @@ Storage Network Topology Requirements The secondary storage NFS export is mounted by the secondary storage VM. Secondary storage traffic goes over the management traffic network, even -if there is a separate storage network. Primary storage traffic goes -over the storage network, if available. If you choose to place secondary -storage NFS servers on the storage network, you must make sure there is -a route from the management traffic network to the storage network. +if there is a separate Storage Network. Primary storage traffic goes +over the Storage Network, if available. If you choose to place secondary +storage NFS servers on the Storage Network, you must make sure there is +a route from the management traffic network to the Storage Network. External Firewall Topology Requirements @@ -1020,10 +1020,10 @@ To set up the integration between CloudStack and Traffic Sentinel: Setting Zone VLAN and Running VM Maximums ----------------------------------------- -In the external networking case, every VM in a zone must have a unique +In the external networking case, every Instance in a zone must have a unique guest IP address. There are two variables that you need to consider in determining how to configure CloudStack to support this: how many Zone -VLANs do you expect to have and how many VMs do you expect to have +VLANs do you expect to have and how many Instances do you expect to have running in the Zone at any one time. Use the following table to determine how to configure CloudStack for @@ -1031,14 +1031,14 @@ your deployment. .. cssclass:: table-striped table-bordered table-hover -=============== ============================ ================== -guest.vlan.bits Maximum Running VMs per Zone Maximum Zone VLANs -=============== ============================ ================== -12 4096 4094 -11 8192 2048 -10 16384 1024 -10 32768 512 -=============== ============================ ================== +=============== ================================== ================== +guest.vlan.bits Maximum Running Instances per Zone Maximum Zone VLANs +=============== ================================== ================== +12 4096 4094 +11 8192 2048 +10 16384 1024 +10 32768 512 +=============== ================================== ================== Based on your deployment's needs, choose the appropriate value of guest.vlan.bits. Set it as described in Edit the Global Configuration diff --git a/source/conceptsandterminology/storage_setup.rst b/source/conceptsandterminology/storage_setup.rst index 24e6706a50..cbd238c85d 100644 --- a/source/conceptsandterminology/storage_setup.rst +++ b/source/conceptsandterminology/storage_setup.rst @@ -56,9 +56,9 @@ Small-Scale Setup In a small-scale setup, a single NFS server can function as both primary and secondary storage. The NFS server must export two separate shares, one for primary storage and the other for secondary storage. This -could be a VM or physical host running an NFS service on a Linux OS or a virtual software appliance. Disk +could be an Instance or physical host running an NFS service on a Linux OS or a virtual software appliance. Disk and network performance are still important in a small scale setup to get a good experience when deploying, -running or snapshotting VMs. +running or snapshotting Instances. Large-Scale Setup @@ -66,14 +66,14 @@ Large-Scale Setup In large-scale environments primary and secondary storage typically consist of independent physical storage arrays. -Primary storage is likely to have to support mostly random read/write I/O once a template has been +Primary storage is likely to have to support mostly random read/write I/O once a Template has been deployed. Secondary storage is only going to experience sustained sequential reads or writes. -In clouds which will experience a large number of users taking snapshots or deploying VMs at the +In clouds which will experience a large number of users taking Snapshots or deploying Instances at the same time, secondary storage performance will be important to maintain a good user experience. It is important to start the design of your storage with the a rough profile of the workloads which it will -be required to support. Care should be taken to consider the IOPS demands of your guest VMs as much as the +be required to support. Care should be taken to consider the IOPS demands of your Guest Instances as much as the volume of data to be stored and the bandwidth (MB/s) available at the storage interfaces. Storage Architecture @@ -89,10 +89,10 @@ Local Storage ============= Local storage works best for pure 'cloud-era' workloads which rarely need to be migrated between storage -pools and where HA of individual VMs is not required. As SSDs become more mainstream/affordable, local -storage based VMs can now be served with the size of IOPS which previously could only be generated by +pools and where HA of individual Instances is not required. As SSDs become more mainstream/affordable, local +storage based Instances can now be served with the size of IOPS which previously could only be generated by large arrays with 10s of spindles. Local storage is highly scalable because as you add hosts you would -add the same proportion of storage. Local Storage is relatively inefficent as it can not take advantage +add the same proportion of storage. Local Storage is relatively inefficient as it can not take advantage of linked clones or any deduplication. @@ -110,7 +110,7 @@ host fail. These shared storage arrays often have the ability to create 'tiers' say large SATA disks, 15k SAS disks and SSDs. These differently performing tiers can then be presented as different offerings to users. The sizing of an array should take into account the IOPS required by the workload as well as the volume -of data to be stored. One should also consider the number of VMs which a storage array will be expected +of data to be stored. One should also consider the number of Instances which a storage array will be expected to support, and the maximum network bandwidth possible through the controllers. @@ -144,8 +144,8 @@ that it is the hypervisor itself that communicates with the primary storage, the server only communicates with the host hypervisor. Now, all hypervisors communicate with the outside world via some kind of management interface – think VMKernel port on ESXi or ‘Management Interface’ on XenServer. As the CloudStack management server needs to communicate with the hypervisor in the host, -this management interface must be on the CloudStack ‘management’ or ‘private’ network. There may be -other interfaces configured on your host carrying guest and public traffic to/from VMs within the hosts +this management interface must be on the CloudStack ‘management’ or ‘private’ Network. There may be +other interfaces configured on your host carrying guest and public traffic to/from Instances within the hosts but the hypervisor itself doesn’t/can’t communicate over these interfaces. |hypervisorcomms.png| @@ -163,7 +163,7 @@ The logical reasoning which explains how this splitting of traffic works is as f #. The mechanism to create an additional interface that the hypervisor can use is to create an additional management interface #. So that the hypervisor can differentiate between the management interfaces they have to be in different (non-overlapping) subnets #. In order for the ‘primary storage’ management interface to communicate with the primary storage, the interfaces on the primary storage arrays must be in the same CIDR as the ‘primary storage’ management interface. -#. Therefore the primary storage must be in a different subnet to the management network +#. Therefore the primary storage must be in a different subnet to the Management Network |subnetting storage.png| *Figure 2*: Subnetting of Storage Traffic @@ -215,7 +215,7 @@ operating system version. Adjust the above command to suit your deployment needs. -- **Limiting NFS export.** It is highly recommended that you limit the NFS export to a particular subnet by specifying a subnet mask (e.g.,”192.168.1.0/24”). By allowing access from only within the expected cluster, you avoid having non-pool member mount the storage. The limit you place must include the management network(s) and the storage network(s). If the two are the same network then one CIDR is sufficient. If you have a separate storage network you must provide separate CIDR’s for both or one CIDR that is broad enough to span both. +- **Limiting NFS export.** It is highly recommended that you limit the NFS export to a particular subnet by specifying a subnet mask (e.g.,”192.168.1.0/24”). By allowing access from only within the expected cluster, you avoid having non-pool member mount the storage. The limit you place must include the Management Network(s) and the Storage Network(s). If the two are the same network then one CIDR is sufficient. If you have a separate Storage Network you must provide separate CIDR’s for both or one CIDR that is broad enough to span both. The following is an example with separate CIDRs: @@ -336,8 +336,8 @@ Now you can set up /export as an NFS share. from only within the expected cluster, you avoid having non-pool member mount the storage and inadvertently delete all its data. The limit you place must include the management network(s) and the - storage network(s). If the two are the same network then one CIDR is - sufficient. If you have a separate storage network you must provide + Storage Network(s). If the two are the same network then one CIDR is + sufficient. If you have a separate Storage Network you must provide separate CIDRs for both or one CIDR that is broad enough to span both. diff --git a/source/conf.py b/source/conf.py index 55fb01d176..4dc872cb6a 100644 --- a/source/conf.py +++ b/source/conf.py @@ -20,13 +20,13 @@ # -- Project information ----------------------------------------------------- project = 'Apache CloudStack' -copyright = '2012-2021, Apache Foundation' +copyright = '2012-2023, Apache Foundation' author = 'Apache CloudStack Project' # The short X.Y version -version = '4.16' +version = '4.18' # The full version, including alpha/beta/rc tags -release = '4.16.0.0' +release = '4.18.1.0' rst_epilog = """ .. include:: /_global.rst @@ -45,6 +45,7 @@ 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', + 'sphinx.ext.autosectionlabel', ] # Add any paths that contain templates here, relative to this directory. diff --git a/source/developersguide/alloc.rst b/source/developersguide/alloc.rst index 00ce8c9760..33dc95d82a 100644 --- a/source/developersguide/alloc.rst +++ b/source/developersguide/alloc.rst @@ -24,10 +24,10 @@ allocate guest virtual disk images. These are following categories of allocators currently supported: - HostAllocators - Allows you to create custom rules to determine which - physical host to allocate the guest virtual machines on. + physical host to allocate the Guest Instances on. - StoragePoolAllocators - Allows you to create custom rules to - determine which storage pool to allocate the guest virtual machines + determine which storage pool to allocate the Guest Instances on. @@ -46,7 +46,7 @@ The interface defines the following two methods. :: /** - * Checks if the VM can be upgraded to the specified ServiceOffering + * Checks if the Instance can be upgraded to the specified ServiceOffering * @param UserVm vm * @param ServiceOffering offering * @return boolean true if the VM can be upgraded @@ -55,7 +55,7 @@ The interface defines the following two methods. publicboolean isVirtualMachineUpgradable(final UserVm vm, final ServiceOffering offering); /** - * Determines which physical hosts are suitable to allocate the guest virtual machines on + * Determines which physical hosts are suitable to allocate the Guest Instances on * * @paramVirtualMachineProfile vmProfile * @paramDeploymentPlan plan @@ -76,35 +76,35 @@ Input Parameters for the method ‘HostAllocator :: allocateTo’ *com.cloud.vm.VirtualMachineProfile vmProfile* -VirtualMachineProfile describes one virtual machine. This allows the +VirtualMachineProfile describes one Instance. This allows the adapters like Allocators to process the information in the virtual -machine and make determinations on what the virtual machine profile +machine and make determinations on what the Instance profile should look like before it is actually started on the hypervisor. HostAllocators can make use of the following information present in the VirtualMachineProfile: - The ServiceOffering that specifies configuration like requested CPU - speed, RAM etc necessary for the guest VM. + speed, RAM etc necessary for the Guest Instance. -- The VirtualMachineTemplate, the template to be used to start the VM. +- The VirtualMachineTemplate, the Template to be used to start the Instance. *com.cloud.deploy.DeploymentPlan plan* DeploymentPlan should specify: -- dataCenterId: The data center the VM should deploy in +- dataCenterId: The data center the Instance should deploy in -- podId: The pod the Vm should deploy in; null if no preference +- podId: The pod the Instance should deploy in; null if no preference -- clusterId: The cluster the VM should deploy in; null if no preference +- clusterId: The cluster the Instance should deploy in; null if no preference -- poolId: The storage pool the VM should be created in; null if no +- poolId: The storage pool the Instance should be created in; null if no preference *com.cloud.host.Host.Type type* -Type of the Host needed for this guest VM. Currently +Type of the Host needed for this Guest Instance. Currently com.cloud.host.Host.Type interface defines the following Host types: - Storage @@ -122,7 +122,7 @@ com.cloud.host.Host.Type interface defines the following Host types: *com.cloud.deploy.DeploymentPlanner.ExcludeList avoid* The ExcludeList specifies what datacenters, pods, clusters, hosts, -storagePools should not be considered for allocating this guest VM. +storagePools should not be considered for allocating this Guest Instance. HostAllocators should avoid the hosts that are mentioned in ExcludeList.hostIds. @@ -138,7 +138,7 @@ ExcludeList.hostIds. *int returnUpTo* -This specifies return up to that many available hosts for this guest VM. +This specifies return up to that many available hosts for this Guest Instance. To get all possible hosts, set this value to -1. @@ -152,7 +152,7 @@ hosts in the specified datacenter, Pod, Cluster and considering the given ServiceOffering requirements. If returnUpTo = 1, this allocator would return the first Host that fits -the requirements of the guest VM. +the requirements of the Guest Instance. Loading a custom HostAllocator @@ -198,7 +198,7 @@ A custom StoragePoolAllocator can be written by implementing the :: /** - * Determines which storage pools are suitable for the guest virtual machine + * Determines which storage pools are suitable for the guest Instance * @param DiskProfile dskCh * @param VirtualMachineProfile vmProfile * @param DeploymentPlan plan @@ -227,36 +227,36 @@ searching for a storage pool. *com.cloud.vm.VirtualMachineProfile vmProfile* -VirtualMachineProfile describes one virtual machine. This allows the +VirtualMachineProfile describes one Instance. This allows the adapters like Allocators to process the information in the virtual -machine and make determinations on what the virtual machine profile +machine and make determinations on what the Instance profile should look like before it is actually started on the hypervisor. StoragePoolAllocators can make use of the following information present in the VirtualMachineProfile: -- The VirtualMachine instance that specifies properties of the guest - VM. +- The VirtualMachine Instance that specifies properties of the guest + Instance. -- The VirtualMachineTemplate, the template to be used to start the VM. +- The VirtualMachineTemplate, the Template to be used to start the Instance. *com.cloud.deploy.DeploymentPlan plan* DeploymentPlan should specify: -- dataCenterId: The data center the VM should deploy in +- dataCenterId: The data center the Instance should deploy in -- podId: The pod the VM should deploy in; null if no preference +- podId: The pod the Instance should deploy in; null if no preference -- clusterId: The cluster the VM should deploy in; null if no preference +- clusterId: The cluster the Instance should deploy in; null if no preference -- poolId: The storage pool the VM should be created in; null if no +- poolId: The storage pool the Instance should be created in; null if no preference *com.cloud.deploy.DeploymentPlanner.ExcludeList avoid* The ExcludeList specifies what datacenters, pods, clusters, hosts, -storagePools should not be considered for allocating this guest VM. +storagePools should not be considered for allocating this Guest Instance. StoragePoolAllocators should avoid the pools that are mentioned in ExcludeList.poolIds @@ -272,7 +272,7 @@ ExcludeList.poolIds *int returnUpTo* -This specifies return up to that many available pools for this guest VM +This specifies return up to that many available pools for this Guest Instance To get all possible pools, set this value to -1 @@ -286,7 +286,7 @@ available pools in the specified datacenter, Pod, Cluster and considering the given DiskProfile characteristics. If returnUpTo = 1, this allocator would return the first Storage Pool -that fits the requirements of the guest VM. +that fits the requirements of the Guest Instance. Loading a custom StoragePoolAllocator diff --git a/source/developersguide/ansible.rst b/source/developersguide/ansible.rst index 21eb38b7a4..a91e71195a 100644 --- a/source/developersguide/ansible.rst +++ b/source/developersguide/ansible.rst @@ -17,11 +17,6 @@ Deploying CloudStack with Ansible ================================= -In this article, `Paul Angus `__ Cloud -Architect at ShapeBlue takes a look at using Ansible to Deploy an -Apache CloudStack cloud.  - - What is Ansible --------------- @@ -68,7 +63,7 @@ So let’s see something For this example we’re going to create an Ansible server which will then deploy a CloudStack server. Both of these servers will be CentOS 6.4 -virtual machines. +Instances. Installing Ansible @@ -239,7 +234,7 @@ the file will look like this: This needs to be saved as `/etc/ansible/roles/mysql/tasks/main.yml` As explained earlier, this playbook in fact describes the state of the -host rather than setting out commands to be run. For instance, we +host rather than setting out commands to be run. For Instance, we specify certain lines which must be in the my.cnf file and allow Ansible to decide whether or not it needs to add them. @@ -272,7 +267,7 @@ For the management server role we create a main.yml task like this:   yum: name=libselinux-python state=present - - name: Ensure the Apache Cloudstack Repo file exists as per template + - name: Ensure the Apache Cloudstack Repo file exists as per Template   template: src=cloudstack.repo.j2 dest=/etc/yum.repos.d/cloudstack.repo @@ -299,9 +294,9 @@ For the management server role we create a main.yml task like this: Save this as `/etc/ansible/roles/cloudstack-management/tasks/main.yml` -Now we have some new elements to deal with. The Ansible template module +Now we have some new elements to deal with. The Ansible Template module uses Jinja2 based templating.  As we’re doing a simplified example here, -the Jinja template for the cloudstack.repo won’t have any variables in +the Jinja Template for the cloudstack.repo won’t have any variables in it, so it would simply look like this: :: @@ -340,7 +335,7 @@ There are some more variables here for us to declare later. System VM Templates: -------------------- -Finally we would want to seed the system VM templates into the secondary +Finally we would want to seed the system VM Templates into the secondary storage.  The playbook for this would look as follows: :: @@ -367,7 +362,7 @@ storage.  The playbook for this would look as follows: Save this as `/etc/ansible/roles/cloudstack-manager/tasks/seedstorage.yml` Again, there isn’t a CloudStack module so Ansible will always run this -even if the secondary storage already has the templates in it. +even if the secondary storage already has the Templates in it.   Bringing it all together diff --git a/source/developersguide/dev.rst b/source/developersguide/dev.rst index f35333c653..e85b943646 100644 --- a/source/developersguide/dev.rst +++ b/source/developersguide/dev.rst @@ -32,8 +32,8 @@ To get started using the CloudStack API, you should have the following: - URL of the CloudStack server you wish to integrate with. -- Both the API Key and Secret Key for an account. This should have been - generated by the administrator of the cloud instance and given to +- Both the API Key and Secret Key for an Account. This should have been + generated by the administrator of the cloud Instance and given to you. - Familiarity with HTTP GET/POST and query strings. @@ -55,8 +55,8 @@ The CloudStack API supports three access roles: #. Domain Admin. Access to only the virtual resources of the clouds that belong to the administrator’s domain. -#. User. Access to only the features that allow management of the user’s - virtual instances, storage, and network. +#. User. Access to only the features that allow management of the User’s + Instances, storage, and Network. API Reference Documentation @@ -79,7 +79,7 @@ the following whether in HTTP or HTTPS: example, http://www.example.com:8080/client/api) - Command: The web services command you wish to execute, such as start - a virtual machine or create a disk volume + an Instance or create a disk volume - Parameters: Any additional required or optional parameters for the command @@ -103,11 +103,11 @@ Or in a more readable format: 7. &apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXqjB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ 8. &signature=Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D -The first line is the CloudStack API URL. This is the Cloud instance you +The first line is the CloudStack API URL. This is the Cloud Instance you wish to interact with. The second line refers to the command you wish to execute. In our -example, we are attempting to deploy a fresh new virtual machine. It is +example, we are attempting to deploy a fresh new Instance. It is preceded by a (?) to separate itself from the CloudStack API URL. Lines 3-6 are the parameters for this given command. To see the command @@ -115,10 +115,10 @@ and its request parameters, please refer to the appropriate section in the CloudStack API documentation. Each parameter field-value pair (field=value) is preceded by an ampersand character (&). -Line 7 is the user API Key that uniquely identifies the account. See +Line 7 is the User API Key that uniquely identifies the Account. See Signing API Requests on page 7. -Line 8 is the signature hash created to authenticate the user account +Line 8 is the signature hash created to authenticate the User Account executing the API command. @@ -129,7 +129,7 @@ Whether you access the CloudStack API with HTTP or HTTPS, it must still be signed so that CloudStack can verify the caller has been authenticated and authorized to execute the command. Make sure that you have both the API Key and Secret Key provided by the CloudStack -administrator for your account before proceeding with the signing +administrator for your Account before proceeding with the signing process. To show how to sign a request, we will re-use the previous example. @@ -154,7 +154,7 @@ Breaking this down, we have several distinct parts to this URL. /client/api? - Command String: This part of the query string comprises of the - command, its parameters, and the API Key that identifies the account. + command, its parameters, and the API Key that identifies the Account. .. note:: As with all query string parameters of field-value pairs, the "field" @@ -166,7 +166,7 @@ Breaking this down, we have several distinct parts to this URL. command=deployVirtualMachine&serviceOfferingId=1&diskOfferingId=1&templateId=2&zoneId=4&apiKey=miVr6X7u6bN_sdahOBpjNejPgEsT35eXq-jB8CG20YI3yaxXcgpyuaIRmFI_EJTVwZ0nUkkJbPmY3y2bciKwFQ - Signature: This is the signature of the command string that is - generated using a combination of the user’s Secret Key and the HMAC + generated using a combination of the User’s Secret Key and the HMAC SHA-1 hashing algorithm. .. parsed-literal:: @@ -194,7 +194,7 @@ To generate the signature. #. Take the sorted Command String and run it through the HMAC SHA-1 hashing algorithm (most programming languages offer a utility method - to do this) with the user’s Secret Key. Base64 encode the resulting + to do this) with the User’s Secret Key. Base64 encode the resulting byte array in UTF-8 so that it can be safely transmitted via HTTP. The final string produced after Base64 encoding should be "Lxx1DM40AjcXU%2FcaiK8RAP0O1hU%3D". @@ -229,7 +229,7 @@ First import the required modules: Define the endpoint of the Cloud, the command that you want to execute -and the keys of the user. +and the keys of the User. .. parsed-literal:: @@ -431,7 +431,7 @@ results, the command will return 20 pages. The default page size limit can be different for each cloud. It is set in the global configuration parameter `default.page.size`. If your cloud -has many users with lots of VMs, you might need to increase the value of +has many users with lots of Instances, you might need to increase the value of this parameter. At the same time, be careful not to set it so high that your site can be taken down by an enormous return from an API call. For more information about how to set global configuration parameters, see @@ -591,7 +591,7 @@ Asynchronous Commands Asynchronous commands were introduced in CloudStack 2.x. Commands are designated as asynchronous when they can potentially take a long period -of time to complete such as creating a snapshot or disk volume. They +of time to complete such as creating a Snapshot or disk volume. They differ from synchronous commands by the following: - They are identified in the API Reference by an (A). @@ -1134,7 +1134,7 @@ Event Types | | | | | TRAFFIC.TYPE.UPDATE | +-------------------+--------------------------------------------------------+ -| External network | PHYSICAL.LOADBALANCER.ADD | +| External Network | PHYSICAL.LOADBALANCER.ADD | | device events | | | | PHYSICAL.LOADBALANCER.DELETE | | | | @@ -1198,13 +1198,13 @@ Event Types | events | | | | DELETE\_RESOURCE\_DETAILS | +-------------------+--------------------------------------------------------+ -| VM snapshot | VMSNAPSHOT.CREATE | +| VM Snapshot | VMSNAPSHOT.CREATE | | events | | | | VMSNAPSHOT.DELETE | | | | | | VMSNAPSHOT.REVERTTO | +-------------------+--------------------------------------------------------+ -| External network | PHYSICAL.NVPCONTROLLER.ADD | +| External Network | PHYSICAL.NVPCONTROLLER.ADD | | device events | | | | PHYSICAL.NVPCONTROLLER.DELETE | | | | @@ -1292,7 +1292,7 @@ Time Zones The following time zone identifiers are accepted by CloudStack. There are several places that have a time zone as a required or optional -parameter. These include scheduling recurring snapshots, creating a +parameter. These include scheduling recurring Snapshots, creating a user, and specifying the usage time zone in the Configuration table. .. cssclass:: table-striped table-bordered table-hover diff --git a/source/developersguide/developer_guide.rst b/source/developersguide/developer_guide.rst index e4484b5b8f..7e61f040de 100644 --- a/source/developersguide/developer_guide.rst +++ b/source/developersguide/developer_guide.rst @@ -137,7 +137,7 @@ have to setup a physical infrastructure. Using the Simulator ------------------- -CloudStack comes with a simulator for hosts, VMs and network infrastructure, +CloudStack comes with a simulator for hosts, Instances and Network infrastructure, allowing you to use the CloudStack management server without using real servers. It also comes with Marvin, which can create a set of infrastructure based on a configuration file that defines the number @@ -235,7 +235,7 @@ with the VirtualBox image. For KVM see the #. Verify the settings under > Settings and check the ``enable PAE`` option in the processor menu -#. Once the VM has booted try to ``ssh`` to it with credentials: +#. Once the Instance has booted try to ``ssh`` to it with credentials: ``root/password`` ssh root@192.168.56.10 @@ -264,7 +264,7 @@ Start the management server mvn -pl client jetty:run Then you are going to configure CloudStack to use the running DevCloud -instance: +Instance: :: @@ -499,7 +499,7 @@ interface from installing packages. In this section we show you how to compile the interface with ``maven`` and test it with Python boto module. -Starting from a running management server (with DevCloud for instance), +Starting from a running management server (with DevCloud for Instance), start the AWS API interface in a separate shell with: :: @@ -508,7 +508,7 @@ start the AWS API interface in a separate shell with: Log into the CloudStack UI ``http://localhost:8080/client``, go to *Service Offerings* and edit one of the compute offerings to have the -name ``m1.small`` or any of the other AWS EC2 instance types. +name ``m1.small`` or any of the other AWS EC2 Instance types. With access and secret keys generated for a user you should now be able to use Python `Boto `__ module: diff --git a/source/developersguide/plugins.rst b/source/developersguide/plugins.rst index 72d16ee798..3864d99225 100644 --- a/source/developersguide/plugins.rst +++ b/source/developersguide/plugins.rst @@ -39,14 +39,14 @@ available so that storage providers can develop vendor-specific plugins based on well-defined contracts that can be seamlessly managed by CloudStack. -Artifacts such as templates, ISOs and snapshots are kept in storage +Artifacts such as Templates, ISOs and Snapshots are kept in storage which CloudStack refers to as secondary storage. To improve scalability and performance, as when a number of hosts access secondary storage concurrently, object storage can be used for secondary storage. Object storage can also provide built-in high availability capability. When using object storage, access to secondary storage data can be made available across multiple zones in a region. This is a huge benefit, as -it is no longer necessary to copy templates, snapshots etc. across zones +it is no longer necessary to copy Templates, Snapshots etc. across zones as would be needed in an environment using only zone-based NFS storage. The user enables a storage plugin through the UI. A new dialog box @@ -70,7 +70,7 @@ steps (explained in more detail later in this section): - DataStoreProvider - - VMSnapshotStrategy (if you want to customize the VM snapshot + - VMSnapshotStrategy (if you want to customize the Instance Snapshot functionality) #. Hardcode your plugin's required additional input fields into the code @@ -167,7 +167,7 @@ VMSnapshotStrategy has the following methods: - revertVMSnapshot() -- canHandle(). For a given VM snapshot, tells whether this +- canHandle(). For a given Instance Snapshot, tells whether this implementation of VMSnapshotStrategy can handle it. @@ -541,7 +541,7 @@ Plugins are written in a very similar way to the main UI. function in the plugin code with a 'listView' block, containing the required syntax for a list view. To get the data, use the listVirtualMachines API call. Without any parameters, it will return - VMs only for your active user. Use the provided 'apiCall' helper + Instances only for your active user. Use the provided 'apiCall' helper method to handle the server call. Of course, you are free to use any other method for making the AJAX call (for example, jQuery's $.ajax method). @@ -604,12 +604,12 @@ Plugins are written in a very similar way to the main UI. First, copy all the plugin code that you have created so far to `/tomcat/webapps/client/plugins`. Then refresh the browser. You can see that your placeholder content was replaced with a list table, - containing 4 columns of virtual machine data. + containing 4 columns of Instance data. #. **Add an action button.** Let's add an action button to the list view, which will reboot the - VM. To do this, add an actions block under listView. After + Instance. To do this, add an actions block under listView. After specifying the correct format, the actions will appear automatically to the right of each row of data. diff --git a/source/installguide/building_from_source.rst b/source/installguide/building_from_source.rst index 19080f54ad..87e720359b 100644 --- a/source/installguide/building_from_source.rst +++ b/source/installguide/building_from_source.rst @@ -384,14 +384,17 @@ line: .. parsed-literal:: - deb http://server.url/cloudstack/repo/binary ./ + deb http:///cloudstack/repo/binary ./ If you signed your Release file with GnuPG, import the signing key on your target system first. .. parsed-literal:: - $ wget -q -O - http://server.url/cloudstack/repo/binary/KEY.gpg | sudo apt-key add - + $ wget -q -O - http:///cloudstack/repo/binary/KEY.gpg | sudo apt-key add - + +.. note:: + In the previous lines the variable must be replaced with the address of the repository Now that you have the repository info in place, you'll want to run another update so that APT knows where to find the CloudStack packages. @@ -502,7 +505,7 @@ Creating a yum repo ^^^^^^^^^^^^^^^^^^^ While RPMs is a useful packaging format - it's most easily consumed from -Yum repositories over a network. The next step is to create a Yum Repo +Yum repositories over a Network. The next step is to create a Yum Repo with the finished packages: .. parsed-literal:: @@ -534,7 +537,7 @@ named ``/etc/yum.repos.d/cloudstack.repo`` with this information: gpgcheck=0 Completing this step will allow you to easily install CloudStack on a -number of machines across the network. +number of machines across the Network. .. _building-noredist: diff --git a/source/installguide/configuration.rst b/source/installguide/configuration.rst index 402e70a456..1b23cd127f 100644 --- a/source/installguide/configuration.rst +++ b/source/installguide/configuration.rst @@ -267,7 +267,7 @@ and secondary storage. #. Choose one of the following network types: - **Basic.** For AWS-style networking. Provides a single network - where each VM instance is assigned an IP directly from the + where each instance is assigned an IP directly from the network. Guest isolation can be provided through layer-3 means such as security groups (IP address source filtering). @@ -296,13 +296,13 @@ Basic Zone Configuration - **Name.** A name for the zone. - - **DNS 1 and 2.** These are DNS servers for use by guest VMs in the + - **DNS 1 and 2.** These are DNS servers for use by Guest Instances in the zone. These DNS servers will be accessed via the public network you will add later. The public IP addresses for the zone must have a route to the DNS server named here. - **Internal DNS 1 and Internal DNS 2.** These are DNS servers for - use by system VMs in the zone (these are VMs used by CloudStack + use by system VMs in the zone (these are instances used by CloudStack itself, such as virtual routers, console proxies, and Secondary Storage VMs.) These DNS servers will be accessed via the management traffic network interface of the System VMs. The @@ -315,25 +315,25 @@ Basic Zone Configuration zone. - **Network Offering.** Your choice here determines what network - services will be available on the network for guest VMs. + services will be available on the network for Guest Instances. .. cssclass:: table-striped table-bordered table-hover =============================================== =================================================================================================================== Network Offering Description =============================================== =================================================================================================================== - DefaultSharedNetworkOfferingWithSGService If you want to enable security groups for guest traffic isolation, choose this. (See Using Security Groups to Control Traffic to VMs.) + DefaultSharedNetworkOfferingWithSGService If you want to enable security groups for guest traffic isolation, choose this. (See Using Security Groups to Control Traffic to instances.) DefaultSharedNetworkOffering If you do not need security groups, choose this. DefaultSharedNetscalerEIPandELBNetworkOffering If you have installed a Citrix NetScaler appliance as part of your zone network, and you will be using its Elastic IP and Elastic Load Balancing features, choose this. With the EIP and ELB features, a basic zone with security groups enabled can offer 1:1 static NAT and load balancing. =============================================== =================================================================================================================== - **Network Domain.** (Optional) If you want to assign a special - domain name to the guest VM network, specify the DNS suffix. + domain name to the Guest Instance network, specify the DNS suffix. - **Public.** A public zone is available to all users. A zone that is not public will be assigned to a particular domain. Only users - in that domain will be allowed to create guest VMs in this zone. + in that domain will be allowed to create Guest Instances in this zone. #. Choose which traffic types will be carried by the physical network. @@ -402,7 +402,7 @@ Basic Zone Configuration - **Start IP/End IP.** A range of IP addresses that are assumed to be accessible from the Internet and will be allocated for access - to guest VMs. + to Guest Instances. #. In a new zone, CloudStack adds the first pod for you. You can always add more pods later. For an overview of what a pod is, see :ref:`about-pods` @@ -462,7 +462,7 @@ Basic Zone Configuration .. note:: When you add a hypervisor host to CloudStack, the host must not have - any VMs already running. + any instances already running. Before you can configure the host, you need to install the hypervisor software on the host. You will need to know which version of the @@ -485,12 +485,22 @@ Basic Zone Configuration - **Password.** This is the password for the user named above (from your XenServer or KVM install). + One additional facility that is available in case of KVM is, host can also be added + using CloudStack's SSH key without having to provide host password. + + Before adding the host in CloudStack do the following, + + - Copy the SSH public key from /var/cloudstack/management/.ssh/id_rsa.pub on the management server + - Add the copied key to /root/.ssh/authorized_keys file on the host + + Select "System SSH Key" and proceed with next steps. + - **Host Tags.** (Optional) Any labels that you use to categorize hosts for ease of maintenance. For example, you can set this to the cloud's HA tag (set in the ha.tag global configuration - parameter) if you want this host to be used only for VMs with the + parameter) if you want this host to be used only for instances with the "high availability" feature enabled. For more information, see - HA-Enabled Virtual Machines as well as HA for Hosts. + HA-Enabled Instances as well as HA for Hosts. #. In a new cluster, CloudStack adds the first primary storage server for you. You can always add more servers later. For an overview of @@ -511,39 +521,43 @@ Basic Zone Configuration Advanced Zone Configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#. After you select Advanced in the Add Zone wizard and click Next, you - will be asked to enter the following details. Then click Next. +For Advanced zone, you may chose to select Edge which will allow creating an Edge Zone. If Edge is not selected then wizard will continue creating a Core zone. + +Core Zone +********* + +#. For a Core zone, you will be asked to enter the following details. Then click Next. - **Name.** A name for the zone. - - **DNS 1 and 2.** (DNS 1 obligatory)These are DNS servers for use by guest VMs in the + - **DNS 1 and 2.** (DNS 1 obligatory)These are DNS servers for use by Guest Instances in the zone. These DNS servers will be accessed via the public network you will add later. The public IP addresses for the zone must have a route to the DNS server named here. - **Internal DNS 1 and Internal DNS 2.** (DNS 1 obligatory) These are DNS servers for use by system VMs in the zone(these are - VMs used by CloudStack itself, such as virtual routers, console + instances used by CloudStack itself, such as virtual routers, console proxies,and Secondary Storage VMs.) These DNS servers will be accessed via the management traffic network interface of the System VMs. The private IP address you provide for the pods must have a route to the internal DNS server named here. - **Network Domain.** If you want to assign a special - domain name to the guest VM network, specify the DNS suffix. + domain name to the Guest Instance network, specify the DNS suffix. - **Hypervisor.** (Obligatory) Choose the hypervisor for the first cluster in the zone. You can add clusters with different hypervisors later, after you finish adding the zone. - **Dedicated.** A dedicated zone is available to selected users or groups - within a domain. Only specified users or grous in that domain will - be allowed to create guest VMs in this zone. + within a domain. Only specified users or groups in that domain will + be allowed to create Guest Instances in this zone. - - **Enable local storage for User VMs.** Give the user the opperunity to - provide local storage (physical storage on the host) for User VMs to store data. + - **Enable local storage for User instances.** Give the user the opportunity to + provide local storage (physical storage on the host) for User instances to store data. - - **Enable local storage for System VMs.** Give the system the opperunity to + - **Enable local storage for System VMs.** Give the system the opportunity to use local storage (physical storage on the hosts) for System VMs. #. Click Next. @@ -604,7 +618,7 @@ Advanced Zone Configuration For more information, see :ref:`about_system_reserved_ip_addresses` #. Configure the IP range for guest traffic. Guest network traffic is - communication between end-user virtual machines. Enter the + communication between end-user Instances. Enter the following details, then click Add. When done, click Next. - **Guest Gateway.** The gateway in use for these IP addresses. @@ -630,7 +644,7 @@ Advanced Zone Configuration always add more hosts later. For an overview of what a host is, see :ref:`about-hosts`. .. note:: - When you deploy CloudStack, the hypervisor host must not have any VMs + When you deploy CloudStack, the hypervisor host must not have any instances already running. Before you can configure the host, you need to install the hypervisor @@ -662,9 +676,9 @@ Advanced Zone Configuration - **Host Tags.** Any labels that you use to categorize hosts for ease of maintenance. For example, you can set to the cloud's HA tag (set in the ha.tag global configuration parameter) - if you want this host to be used only for VMs with the "high + if you want this host to be used only for instances with the "high availability" feature enabled. For more information, see - HA-Enabled Virtual Machines as well as HA for Hosts, both in the + HA-Enabled Instances as well as HA for Hosts, both in the Administration Guide. #. In a new cluster, CloudStack adds the first primary storage server @@ -744,7 +758,7 @@ Advanced Zone Configuration Before you can fill out this screen, you need to prepare the secondary storage by setting up NFS shares and installing the latest - CloudStack System VM template. See Adding Secondary Storage : + CloudStack System VM Template. See Adding Secondary Storage : - **NFS Server.** The IP address of the server or fully qualified domain name of the server. @@ -754,6 +768,56 @@ Advanced Zone Configuration #. Click Launch. +Edge Zone +********* + +.. note:: + Support for Edge zones has been added with 4.18.0 and these zones will only be supported on KVM hypervisors + +An Edge Zone is a simpler, light-weight zone which may often contain a single hypervisor host. There will be no need for shared storage, public and management physical networks for an Edge zone. +To work with limited compute resources, an Edge zone will not deploy system VMs. This type of zone only supports shared and L2 guest networks. For virtual routers of a shared guest network, a direct-download System VM must be added after adding the zone. + +#. For an Edge zone, you will be asked to enter the following details + + - **Name.** A name for the zone. + + - **Hypervisor.** (Obligatory) Choose the hypervisor for the zone. Currently, this is disabled and set to KVM. + + - **Dedicated.** A dedicated zone is available to selected users or groups within a domain. Only specified users or groups in that domain will be allowed to create Guest Instances in this zone. + +#. Click Next. + +#. Choose the details for the physical network that will carry guest. + +#. Click Next. + +#. Specify VLAN/VNI range for guest traffic isolation. + +#. Click Next. + +#. Configure the host for the zone, enter the following, then click Next: + + - **Host Name.** (Obligatory) The DNS name or IP address of the host. + + - **Username.** (Obligatory) Username of a user who has administrator / root privilidges on the specified host (using Linux-hosts usually root). + + - **Authentication.** Atuthentication type used for the host, either Password or System SSH Key. + + - **Password.** (Obligatory if Password authentication is selected) This is the password for the user named above. + + .. note:: + For security reasons there are ways to use non-adminstrative users for + adding a host. Please refer to the hypervisor setup guides for further information. + + - **Host Tags.** Any labels that you use to categorize + hosts for ease of maintenance. For example, you can set to the + cloud's HA tag (set in the ha.tag global configuration parameter) + if you want this host to be used only for instances with the "high + availability" feature enabled. For more information, see + HA-Enabled Instances as well as HA for Hosts, both in the + Administration Guide. + + .. _adding-a-pod: Adding a Pod @@ -841,7 +905,7 @@ requirements: - Do not put more than 8 hosts in a vSphere cluster -- Make sure the hypervisor hosts do not have any VMs already running +- Make sure the hypervisor hosts do not have any instances already running before you add them to CloudStack. To add a vSphere cluster to CloudStack: @@ -896,7 +960,7 @@ Adding a Host #. Before adding a host to the CloudStack configuration, you must first install your chosen hypervisor on the host. CloudStack can manage - hosts running VMs under a variety of hypervisors. + hosts running instances under a variety of hypervisors. The CloudStack Installation Guide provides instructions on how to install each supported hypervisor and configure it for use with @@ -930,7 +994,7 @@ Requirements for XenServer and KVM Hosts ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. warning:: - Make sure the hypervisor host does not have any VMs already running before + Make sure the hypervisor host does not have any instances already running before you add it to CloudStack. Configuration requirements: @@ -1001,8 +1065,8 @@ KVM Host Additional Requirements cloudstack ALL=NOPASSWD: /usr/bin/cloudstack-setup-agent defaults:cloudstack !requiretty -Adding a XenServer or KVM Host -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Adding a XenServer Host +^^^^^^^^^^^^^^^^^^^^^^^ #. If you have not already done so, install the hypervisor software on the host. You will need to know which version of the hypervisor @@ -1030,15 +1094,14 @@ Adding a XenServer or KVM Host - Username. Usually root. - - Password. This is the password for the user from your XenServer or - KVM install). + - Password. This is the password for the user from your XenServer install). - Host Tags (Optional). Any labels that you use to categorize hosts for ease of maintenance. For example, you can set to the cloud's HA tag (set in the ha.tag global configuration parameter) if you want this host to be used only for VMs with the "high availability" feature enabled. For more information, see - HA-Enabled Virtual Machines as well as HA for Hosts. + HA-Enabled Instances as well as HA for Hosts. There may be a slight delay while the host is provisioned. It should automatically display in the UI. @@ -1046,6 +1109,23 @@ Adding a XenServer or KVM Host #. Repeat for additional hosts. +Adding a KVM Host +^^^^^^^^^^^^^^^^^ + +The steps to add a KVM host are same as adding a XenServer Host as mentioned in +the above section. +One additional facility that is available in case of KVM is, host can also be added +using CloudStack's SSH key without having to provide host password. + +Before adding the host in CloudStack do the following, + + - Copy the SSH public key from /var/cloudstack/management/.ssh/id_rsa.pub on the management server + - Add the copied key to /root/.ssh/authorized_keys file on the host + +While adding the host from CloudStack UI, select "System SSH Key" as shown below + + |add-Host.png: Adding a KVM Host| + .. _adding-a-host-vsphere: Adding a Host (vSphere) @@ -1081,7 +1161,7 @@ When setting up primary storage, follow these restrictions: - If you do not provision shared primary storage, you must set the global configuration parameter system.vm.local.storage.required to - true, or else you will not be able to start VMs. + true, or else you will not be able to start instances. Adding Primary Storage @@ -1328,6 +1408,57 @@ powerflex://:@/ - =[PowerFlex storage pool name (case sensitive)] +StorPool Plug-in +~~~~~~~~~~~~~~~~ + +.. note:: + The StorPool storage plug-in for CloudStack is part of the standard + CloudStack install. There is no additional work required to add this + component. + +The StorPool plug-in is deeply integrated with CloudStack and works on with KVM hypervisors. + +When used with service or disk offerings, an administrator is able to +build an environment in which a root or data disk that a user creates +leads to the dynamic creation of a StorPool volume, which has guaranteed +performance. Such a StorPool volume is associated with one CloudStack volume, +so performance of the CloudStack volume does not vary depending on how +heavily other tenants are using the system. The volume migration is supported +accross non-managed storage pools (e.g. NFS/Local storage/Ceph) to StorPool, and +accross StorPool storage pools. + +More technical details could be found on `StorPool Knowledge Base `_. + +The createStoragePool API has been augmented to support plugable storage providers. +The following is a list of parameters to use when adding storage to CloudStack that is based on the StorPool plug-in: + +command=createStoragePool +scope=[zone] +zoneid=[your zone id] +hypervisor=KVM +name=[name for primary storage] +protocol=SharedMountPoint +provider=StorPool +capacityBytes=[used for accounting purposes only. May be more or less than the actual StorPool Template capacity] +url=[storage pool url] +The url parameter contains the StorPool storage pool details, specified in the following format: + +SP_API_HTTP=address:port;SP_AUTH_TOKEN=token;SP_TEMPLATE=template_name + +- =[address of StorPool Api] +- =[StorPool's token] +- =[name of StorPool's Template] + +================================= ==================================================================================================================================================================== +StorPool Configurations Description +================================= ==================================================================================================================================================================== +sp.bypass.secondary.storage For StorPool Managed storage backup to secondary +sp.cluster.id For StorPool multi cluster authorization (It will be set automatically for each cluster) +sp.enable.alternative.endpoint Used for StorPool primary storage, defines if there is a need to be used alternative endpoint +sp.alternative.endpoint Used for StorPool primary storage for an alternative endpoint. Structure of the endpoint is `SP_API_HTTP=address:port; SP_AUTH_TOKEN=token; SP_TEMPLATE=template_name` +storpool.volume.tags.checkup Minimal interval (in seconds) to check and report if a StorPool volume created by CloudStack exists in CloudStack's database +storpool.snapshot.tags.checkup Minimal interval (in seconds) to check and report if a StorPool Snapshot created by CloudStack exists in CloudStack's database +================================= ==================================================================================================================================================================== .. _add-secondary-storage: @@ -1347,7 +1478,7 @@ System Requirements for Secondary Storage - 100GB minimum capacity - A secondary storage device must be located in the same zone as the - guest VMs it serves. + Guest Instances it serves. - Each Secondary Storage server must be available to all hosts in the zone. @@ -1371,7 +1502,7 @@ add more servers to an existing zone. If you are using an Hyper-V host, ensure that you have created a SMB share. -#. Make sure you prepared the system VM template during Management +#. Make sure you prepared the system VM Template during Management Server installation. See `“Prepare the System VM Template” `_. @@ -1453,6 +1584,43 @@ zone: - Path. The path to the zone's Secondary Staging Store. +Adding Object Storage +~~~~~~~~~~~~~~~~~~~~~~~~ + +You can add object storage pools at any time to add more capacity or providers to CloudStack + + + +#. Make sure you have installed supported Object Storage provider and the Object Store is accessible from CloudStack Management Server + + +#. Log in to the CloudStack UI as root administrator. + +#. In the left navigation bar, click Infrastructure. + +#. In Object Storage, click View All. + +#. Click Add Object Storage. + +#. Fill in the following fields: + + - Name. Give the object store a descriptive name. + + - Provider. Choose provider and then fill in the related + fields which appear. The fields will vary depending on the object storage + provider; for more information, consult the provider's + documentation (such as the MinIO website). + + - URL: API endpoint of the object storage server + + - Access key: Credentials with access to admin API of the object storage server + + - Secret key: Credentials with access to admin API of the object storage server + + |AddObjectStore.png: Add Object Storage| + +See https://min.io/docs/minio/linux/index.html for MinIO Documentation + .. _initialize-and-test: Initialize and Test @@ -1464,7 +1632,7 @@ of your network. When the initialization has completed successfully, the administrator's Dashboard should be displayed in the CloudStack UI. #. Verify that the system is ready. In the left navigation bar, select - Templates. Click on the CentOS 5.5 (64bit) no Gui (KVM) template. + Templates. Click on the CentOS 5.5 (64bit) no Gui (KVM) Template. Check to be sure that the status is "Download Complete." Do not proceed to the next step until this status is displayed. @@ -1474,9 +1642,9 @@ administrator's Dashboard should be displayed in the CloudStack UI. #. Choose the zone you just added. - #. In the template selection, choose the template to use in the VM. + #. In the Template selection, choose the Template to use in the instance. If this is a fresh installation, likely only the provided CentOS - template is available. + Template is available. #. Select a service offering. Be sure that the hardware you have allows starting the selected service offering. @@ -1484,27 +1652,27 @@ administrator's Dashboard should be displayed in the CloudStack UI. #. In data disk offering, if desired, add another data disk. This is a second volume that will be available to but not mounted in the guest. For example, in Linux on XenServer you will see /dev/xvdb - in the guest after rebooting the VM. A reboot is not required if + in the guest after rebooting the instance. A reboot is not required if you have a PV-enabled OS kernel in use. #. In default network, choose the primary network for the guest. In a trial installation, you would have only one option here. - #. Optionally give your VM a name and a group. Use any descriptive + #. Optionally give your instance a name and a group. Use any descriptive text you would like. - #. Click Launch VM. Your VM will be created and started. It might - take some time to download the template and complete the VM - startup. You can watch the VM’s progress in the Instances + #. Click Launch instance. Your instance will be created and started. It might + take some time to download the Template and complete the instance + startup. You can watch the instance's progress in the Instances screen. -#. To use the VM, click the View Console button. |ConsoleButton.png: +#. To use the instance, click the View Console button. |ConsoleButton.png: button to launch a console| - For more information about using VMs, including instructions for how - to allow incoming network traffic to the VM, start, stop, and delete - VMs, and move a VM from one host to another, see Working With Virtual - Machines in the Administrator’s Guide. + For more information about using instances, including instructions for how + to allow incoming network traffic to the instance, start, stop, and delete + instances, and move an instance from one host to another, see Working With Virtual + Machines in the Administrator's Guide. Congratulations! You have successfully completed a CloudStack Installation. @@ -1541,11 +1709,11 @@ Field Value ================================= ================================================================================ management.network.cidr A CIDR that describes the network that the management CIDRs reside on. This variable must be set for deployments that use vSphere. It is recommended to be set for other deployments as well. Example: 192.168.3.0/24. xen.setup.multipath For XenServer nodes, this is a true/false variable that instructs CloudStack to enable iSCSI multipath on the XenServer Hosts when they are added. This defaults to false. Set it to true if you would like CloudStack to enable multipath.If this is true for a NFS-based deployment multipath will still be enabled on the XenServer host. However, this does not impact NFS operation and is harmless. -secstorage.allowed.internal.sites This is used to protect your internal network from rogue attempts to download arbitrary files using the template download feature. This is a comma-separated list of CIDRs. If a requested URL matches any of these CIDRs the Secondary Storage VM will use the private network interface to fetch the URL. Other URLs will go through the public interface. We suggest you set this to 1 or 2 hardened internal machines where you keep your templates. For example, set it to 192.168.1.66/32. -use.local.storage Determines whether CloudStack will use storage that is local to the Host for data disks, templates, and snapshots. By default CloudStack will not use this storage. You should change this to true if you want to use local storage and you understand the reliability and feature drawbacks to choosing local storage. +secstorage.allowed.internal.sites This is used to protect your internal network from rogue attempts to download arbitrary files using the Template download feature. This is a comma-separated list of CIDRs. If a requested URL matches any of these CIDRs the Secondary Storage VM will use the private network interface to fetch the URL. Other URLs will go through the public interface. We suggest you set this to 1 or 2 hardened internal machines where you keep your Templates. For example, set it to 192.168.1.66/32. +use.local.storage Determines whether CloudStack will use storage that is local to the Host for data disks, Templates, and Snapshots. By default CloudStack will not use this storage. You should change this to true if you want to use local storage and you understand the reliability and feature drawbacks to choosing local storage. host This is the IP address of the Management Server. If you are using multiple Management Servers you should enter a load balanced IP address that is reachable via the private network. default.page.size Maximum number of items per page that can be returned by a CloudStack API command. The limit applies at the cloud level and can vary from cloud to cloud. You can override this with a lower value on a particular API call by using the page and pagesize API command parameters. For more information, see the Developer's Guide. Default: 500. -ha.tag The label you want to use throughout the cloud to designate certain hosts as dedicated HA hosts. These hosts will be used only for HA-enabled VMs that are restarting due to the failure of another host. For example, you could set this to ha\_host. Specify the ha.tag value asa host tag when you add a new host to the cloud. +ha.tag The label you want to use throughout the cloud to designate certain hosts as dedicated HA hosts. These hosts will be used only for HA-enabled instances that are restarting due to the failure of another host. For example, you could set this to ha\_host. Specify the ha.tag value asa host tag when you add a new host to the cloud. vmware.vcenter.session.timeout Determines the vCenter session timeout value by using this parameter. The default value is 20 minutes. Increase the timeout value to avoid timeout errors in VMware deployments because certain VMware operations take more than 20 minutes. ================================= ================================================================================ @@ -1602,6 +1770,9 @@ the global configuration settings. #. In the Actions column, click the Edit icon to modify a value. + .. note:: + Local configuration parameters will default to global configuration value when an explicit value is not set for them. Reset action for local configurations will also update their value to global configuration value. + Granular Global Configuration Parameters ---------------------------------------- @@ -1616,9 +1787,10 @@ account, cluster, and zone. Field Field Value ======== ========================================================= ====================================================================================================================================== account remote.access.vpn.client.iprange The range of IPs to be allocated to remotely access the VPN clients. The first IP in the range is used by the VPN server. -account allow.public.user.templates If false, users will not be able to create public templates. +account allow.public.user.templates If false, users will not be able to create public Templates. account use.system.public.ips If true and if an account has one or more dedicated public IP ranges, IPs are acquired from the system pool after all the IPs dedicated to the account have been consumed. account use.system.guest.vlans If true and if an account has one or more dedicated guest VLAN ranges, VLANs are allocated from the system pool after all the VLANs dedicated to the account have been consumed. +account router.service.offering Uuid of the service offering used by virtual routers; if NULL - system offering will be used cluster cluster.storage.allocated.capacity.notificationthreshold The percentage, as a value between 0 and 1, of allocated storage utilization above which alerts are sent that the storage is below the threshold. cluster cluster.storage.capacity.notificationthreshold The percentage, as a value between 0 and 1, of storage utilization above which alerts are sent that the available storage is below the threshold. cluster cluster.cpu.allocated.capacity.notificationthreshold The percentage, as a value between 0 and 1, of cpu utilization above which alerts are sent that the available CPU is below the threshold. @@ -1635,11 +1807,11 @@ zone pool.storage.allocated.capacity.disablethreshold The percent zone pool.storage.capacity.disablethreshold The percentage, as a value between 0 and 1, of storage utilization above which allocators will disable the pool because the available storage capacity is below the threshold. zone storage.overprovisioning.factor Used for storage over-provisioning calculation; available storage will be the mathematical product of actualStorageSize and storage.overprovisioning.factor. zone network.throttling.rate Default data transfer rate in megabits per second allowed in a network. -zone guest.domain.suffix Default domain name for VMs inside a virtual networks with a router. -zone router.template.xen Name of the default router template on Xenserver. -zone router.template.kvm Name of the default router template on KVM. -zone router.template.vmware Name of the default router template on VMware. -zone enable.dynamic.scale.vm Enable or diable dynamically scaling of a VM. +zone guest.domain.suffix Default domain name for instances inside a virtual networks with a router. +zone router.template.xen Name of the default router Template on Xenserver. +zone router.template.kvm Name of the default router Template on KVM. +zone router.template.vmware Name of the default router Template on VMware. +zone enable.dynamic.scale.vm Enable or disable dynamically scaling of a instance. zone use.external.dns Bypass internal DNS, and use the external DNS1 and DNS2 zone denied.routes Routes that are denied cannot be used for creating static routes for a VPC Private Gateway. ======== ========================================================= ====================================================================================================================================== @@ -1648,4 +1820,6 @@ zone denied.routes Routes that .. |provisioning-overview.png: Conceptual overview of a basic deployment| image:: /_static/images/provisioning-overview.png .. |vsphereclient.png: vSphere client| image:: /_static/images/vsphere-client.png .. |addcluster.png: add a cluster| image:: /_static/images/add-cluster.png +.. |add-Host.png: Adding a KVM Host| image:: /_static/images/add-Host.png .. |ConsoleButton.png: button to launch a console| image:: /_static/images/console-icon.png +.. |AddObjectStore.png: Add Object Storage| image:: /_static/images/add-object-store.png diff --git a/source/installguide/encryption.rst b/source/installguide/encryption.rst index dae437556e..ec927f0a6a 100644 --- a/source/installguide/encryption.rst +++ b/source/installguide/encryption.rst @@ -64,25 +64,25 @@ highly recommended that you change these to more secure keys. Changing the Default Password Encryption ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Passwords are encoded when creating or updating users. CloudStack allows +Passwords are encoded when creating or updating Users. CloudStack allows you to determine the default encoding and authentication mechanism for -admin and user logins. Two new configurable lists have been +admin and User logins. Two new configurable lists have been introduced—userPasswordEncoders and userAuthenticators. userPasswordEncoders allows you to configure the order of preference for encoding passwords, whereas userAuthenticators allows you to configure -the order in which authentication schemes are invoked to validate user +the order in which authentication schemes are invoked to validate User passwords. -Additionally, the plain text user authenticator has been modified not to +Additionally, the plain text User authenticator has been modified not to convert supplied passwords to their md5 sums before checking them with the database entries. It performs a simple string comparison between retrieved and supplied login passwords instead of comparing the retrieved md5 hash of the stored password against the supplied md5 hash of the password because clients no longer hash the password. The following method determines what encoding scheme is used to encode the -password supplied during user creation or modification. +password supplied during User creation or modification. -When a new user is created, the user password is encoded by using the +When a new User is created, the User password is encoded by using the first valid encoder loaded as per the sequence specified in the ``UserPasswordEncoders`` property in the ``ComponentContext.xml`` or ``nonossComponentContext.xml`` files. The order of authentication @@ -122,11 +122,11 @@ desired order: In the above default ordering, SHA256Salt is used first for ``UserPasswordEncoders``. If the module is found and encoding returns a -valid value, the encoded password is stored in the user table's password +valid value, the encoded password is stored in the User table's password column. If it fails for any reason, the MD5UserAuthenticator will be tried next, and the order continues. For ``UserAuthenticators``, -SHA256Salt authentication is tried first. If it succeeds, the user is +SHA256Salt authentication is tried first. If it succeeds, the User is logged into the Management server. If it fails, md5 is tried next, and -attempts continues until any of them succeeds and the user logs in . If -none of them works, the user is returned an invalid credential message. +attempts continues until any of them succeeds and the User logs in . If +none of them works, the User is returned an invalid credential message. diff --git a/source/installguide/hypervisor/custom.rst b/source/installguide/hypervisor/custom.rst new file mode 100644 index 0000000000..4e7066c2c8 --- /dev/null +++ b/source/installguide/hypervisor/custom.rst @@ -0,0 +1,36 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + +Custom Hypervisor Installation +------------------------------ + +CloudStack allows adapting a new hypervisor plugin that may be developed privately. + +The new hypervisor type is internally named Custom to the CloudStack services. + + +The setting ‘hypervisor.custom.display.name’ allows administrators to set the display name of the hypervisor type. +The display name will be shown in the CloudStack UI and API. + + - In case the ‘hypervisor.list’ setting contains the display name of the new hypervisor type, the setting value is automatically updated after the ‘hypervisor.custom.display.name’ setting is updated. + + +The custom hypervisor type supports: + + - Direct downloads (the ability to download templates into primary storage from the hypervisor hosts without using secondary storage) + - Local storage (use hypervisor hosts local storage as primary storage) + - Template format: RAW format (the templates to be registered on the new hypervisor type must be in RAW format) + +The UI is also extended to display the new hypervisor type and the supported features listed above. diff --git a/source/installguide/hypervisor/hyperv.rst b/source/installguide/hypervisor/hyperv.rst index 075c73917e..792e51778b 100644 --- a/source/installguide/hypervisor/hyperv.rst +++ b/source/installguide/hypervisor/hyperv.rst @@ -17,7 +17,7 @@ Host Hyper-V Installation ------------------------- -If you want to use Hyper-V hypervisor to run guest virtual machines, +If you want to use Hyper-V hypervisor to run Guest Instances, install Hyper-V on the hosts in your cloud. The instructions in this section doesn't duplicate Hyper-V Installation documentation. It provides the CloudStack-specific steps that are needed to prepare a @@ -179,7 +179,7 @@ Installing the CloudStack Agent on a Hyper-V Host The Hyper-V Agent helps CloudStack perform operations on the Hyper-V hosts. This Agent communicates with the Management Server and controls -all the instances on the host. Each Hyper-V host must have the Hyper-V +all the Instances on the host. Each Hyper-V host must have the Hyper-V Agent installed on it for successful interaction between the host and CloudStack. The Hyper-V Agent runs as a Windows service. Install the Agent on each host using the following steps. diff --git a/source/installguide/hypervisor/kvm.rst b/source/installguide/hypervisor/kvm.rst index 5f94750d0d..e5bdd331ab 100644 --- a/source/installguide/hypervisor/kvm.rst +++ b/source/installguide/hypervisor/kvm.rst @@ -26,7 +26,11 @@ are recommended: - CentOS / RHEL: 7.X -- Ubuntu: 16.04 +- CentOS / RHEL / Binary-compatible variants: 8.X + +- Ubuntu: 18.04 + + +- openSUSE / SLES: 15.2 + The main requirement for KVM hypervisors is the libvirt and Qemu version. No matter what Linux distribution you are using, make sure the @@ -44,6 +48,8 @@ with OpenVswitch, the requirements are listed below - openvswitch: 1.7.1 or higher +Not all versions of Qemu/KVM may support dynamic scaling of Instances. Some combinations may result CPU or memory related failures during Instance deployment. + In addition, the following hardware requirements apply: - Within a single cluster, the hosts must be of the same distribution @@ -60,7 +66,7 @@ In addition, the following hardware requirements apply: - At least 1 NIC -- When you deploy CloudStack, the hypervisor host must not have any VMs +- When you deploy CloudStack, the hypervisor host must not have any Instances already running. These will be destroy by CloudStack. @@ -68,7 +74,7 @@ KVM Installation Overview ~~~~~~~~~~~~~~~~~~~~~~~~~ If you want to use the Linux Kernel Virtual Machine (KVM) hypervisor to -run guest virtual machines, install KVM on the host(s) in your cloud. +run Guest Instances, install KVM on the host(s) in your cloud. The material in this section doesn't duplicate KVM installation docs. It provides the CloudStack-specific steps that are needed to prepare a KVM host to work with CloudStack. @@ -81,6 +87,14 @@ host to work with CloudStack. It is NOT recommended to run services on this host not controlled by CloudStack. +.. warning:: + Certain servers such as Dell provide the option to choose the Power Management Profile. + The Active Power Controller enables Dell System DBPM (Demand Based Power Management) + which can restrict the visibility of the maximum CPU clock speed availble to the OS, + which in turn can lead to CloudStack fetching the incorrect CPU speed of the server. + To ensure that CloudStack can always fetch the maximum cpu speed on the server, ensure + that "OS Control" is set as the Power Management Profile. + The procedure for installing a KVM Hypervisor Host is: #. Prepare the Operating System @@ -96,7 +110,7 @@ Prepare the Operating System ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The OS of the Host must be prepared to host the CloudStack Agent and run -KVM instances. +KVM Instances. #. Log in to your OS as root. @@ -122,29 +136,40 @@ KVM instances. NTP is required to synchronize the clocks of the servers in your cloud. Unsynchronized clocks can cause unexpected problems. - #. Install NTP + +#. Install NTP + + In RHEL or CentOS: .. parsed-literal:: - $ yum install ntp + $ yum install chrony + + In Ubuntu: + + .. parsed-literal:: + + $ apt install chrony + + In SUSE: .. parsed-literal:: - $ apt-get install openntpd + $ zypper install chrony #. Repeat all of these steps on every hypervisor host. .. warning:: CloudStack |version| requires Java 11 JRE. Installing CloudStack agent will - automatically install Java 11, but it's good to explicitly confirm that the Java 11 + automatically install Java 11, but it's good to explicitly confirm that the Java 11 is the selected/active one (in case you had a previous Java version already installed) with ``alternatives --config java``, after CloudStack agent is installed. Install and configure the Agent ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To manage KVM instances on the host CloudStack uses a Agent. This Agent -communicates with the Management server and controls all the instances +To manage KVM Instances on the host CloudStack uses a Agent. This Agent +communicates with the Management server and controls all the Instances on the host. .. note:: @@ -164,7 +189,14 @@ In Ubuntu: .. parsed-literal:: - $ apt-get install cloudstack-agent + $ apt install cloudstack-agent + +In SUSE: + +.. parsed-literal:: + + $ zypper install cloudstack-agent + The host is now ready to be added to a cluster. This is covered in a later section, see :ref:`adding-a-host`. It is @@ -177,20 +209,20 @@ sudoers file: .. parsed-literal:: cloudstack ALL=NOPASSWD: /usr/bin/cloudstack-setup-agent - defaults:cloudstack !requiretty + Defaults:cloudstack !requiretty Configure CPU model for KVM guest (Optional) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ In additional,the CloudStack Agent allows host administrator to control -the guest CPU model which is exposed to KVM instances. By default, the -CPU model of KVM instance is likely QEMU Virtual CPU version x.x.x with +the guest CPU model which is exposed to KVM Instances. By default, the +CPU model of KVM Instance is likely QEMU Virtual CPU version x.x.x with least CPU features exposed. There are a couple of reasons to specify the CPU model: -- To maximise performance of instances by exposing new host CPU - features to the KVM instances; +- To maximise performance of Instances by exposing new host CPU + features to the KVM Instances; - To ensure a consistent default CPU across all machines,removing reliance of variable QEMU defaults; @@ -259,12 +291,18 @@ Here are some examples: Install and Configure libvirt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -CloudStack uses libvirt for managing virtual machines. Therefore it is +CloudStack uses libvirt for managing Instances. Therefore it is vital that libvirt is configured correctly. Libvirt is a dependency of cloudstack-agent and should already be installed. -#. In order to have live migration working libvirt has to listen for - unsecured TCP connections. We also need to turn off libvirts attempt +.. note:: + Please note that Cloudstack will automatically perform basic configuration of the agent and libvirt when the host is added. This is relevant if you are + planning to automate the deployment and configuration of your KVM hosts. + +#. To avoid potential security attack to Instances, We need to turn + off libvirt to listen on unsecure TCP port. CloudStack will automatically + set up cloud keystore and certificates when the host is added to cloudstack. + We also need to turn off libvirts attempt to use Multicast DNS advertising. Both of these settings are in ``/etc/libvirt/libvirtd.conf`` @@ -276,7 +314,11 @@ cloudstack-agent and should already be installed. .. parsed-literal:: - listen_tcp = 1 + listen_tcp = 0 + + .. parsed-literal:: + + tls_port = "16514" .. parsed-literal:: @@ -290,10 +332,9 @@ cloudstack-agent and should already be installed. mdns_adv = 0 -#. Turning on "listen\_tcp" in libvirtd.conf is not enough, we have to - change the parameters as well: +#. We have to change the parameters as well: - On RHEL or CentOS modify ``/etc/sysconfig/libvirtd``: + On RHEL or CentOS or SUSE modify ``/etc/sysconfig/libvirtd``: Uncomment the following line: @@ -301,68 +342,43 @@ cloudstack-agent and should already be installed. #LIBVIRTD_ARGS="--listen" - On Ubuntu 14.04: modify ``/etc/default/libvirt-bin`` - - Add "-l" to the following line + On RHEL 8 / CentOS 8 / SUSE run the following command : .. parsed-literal:: - libvirtd_opts="-d" - - so it looks like: - - .. parsed-literal:: + systemctl mask libvirtd.socket libvirtd-ro.socket libvirtd-admin.socket libvirtd-tls.socket libvirtd-tcp.socket - libvirtd_opts="-d -l" - And modify ``/etc/init/libvirt-bin.conf`` + On Ubuntu 20.04 or older, modify ``/etc/default/libvirtd`` - Add "-l" to the following line + Uncomment and change the following line .. parsed-literal:: - env libvirtd_opts="-d" + #libvirtd_opts="" so it looks like: .. parsed-literal:: - env libvirtd_opts="-d -l" + libvirtd_opts="-l" - On Ubuntu 16.04: just modify ``/etc/default/libvirt-bin`` - - Uncomment and change the following line + On Ubuntu 22.04 or newer version, modify ``/etc/default/libvirtd``: - .. parsed-literal:: - - #env libvirtd_opts="" - - so it looks like: + Uncomment the following line: .. parsed-literal:: - env libvirtd_opts="-l" - - - + #LIBVIRTD_ARGS="--listen" #. Restart libvirt - In RHEL or CentOS: + In RHEL or CentOS or SUSE or Ubuntu: .. parsed-literal:: - $ service libvirtd restart - - In Ubuntu: - - .. parsed-literal:: + $ systemctl restart libvirtd - $ service libvirt-bin restart - -.. note:: - Please note that Cloudstack will automatically perform basic configuration of the agent and libvirt when the host is added. This is relevant if you are - planning to automate the deployment and configuration of your KVM hosts. Configure the Security Policies ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -371,7 +387,7 @@ CloudStack does various things which can be blocked by security mechanisms like AppArmor and SELinux. These have to be disabled to ensure the Agent has all the required permissions. -#. Configure SELinux (RHEL and CentOS) +#. Configure SELinux (RHEL, CentOS, SUSE) #. Check to see whether SELinux is installed on your machine. If not, you can skip this section. @@ -455,12 +471,12 @@ Configuring the Networking implementation in Linux. Please refer to the next section if you intend to use OpenVswitch -CloudStack uses the network bridges in conjunction with KVM to connect the guest instances to -each other and the outside world. They also are used to connect the System VMs to your +CloudStack uses the network bridges in conjunction with KVM to connect the Guest Instances to +each other and the outside world. They also are used to connect the System VMs to your infrastructure. -By default these bridges are called *cloudbr0* and *cloudbr1* etc, but this can be -changed to be more description. +By default these bridges are called *cloudbr0* and *cloudbr1* etc, but this can be +changed to be more descriptive. .. note:: Ensure that the interfaces names to be used for configuring the bridges match one of the following patterns: @@ -471,7 +487,7 @@ changed to be more description. .. warning:: It is essential that you keep the configuration consistent across all of your hypervisors. -There are many ways to configure your networking. Even within the scope of a given +There are many ways to configure your networking. Even within the scope of a given network mode. Below are a few simple examples. .. note:: @@ -489,8 +505,8 @@ for the guest network. We assume that the hypervisor has one NIC (eth0) with one tagged VLAN trunked from the switch: -#. Native VLAN for management network (cloudbr0) -#. VLAN 200 for guest network of the instances (cloudbr1) +#. Native VLAN for Management Network (cloudbr0) +#. VLAN 200 for guest network of the Instances (cloudbr1) In this the following example we give the Hypervisor the IP-Address 192.168.42.11/24 with the gateway 192.168.42.1 @@ -502,7 +518,7 @@ Configuring the Network Bridges for Basic Networks ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ It depends on the distribution you are using how to configure these, -below you'll find examples for RHEL/CentOS and Ubuntu. +below you'll find examples for RHEL/CentOS, SUSE and Ubuntu. .. note:: The goal is to have two bridges called 'cloudbr0' and 'cloudbr1' after this @@ -597,6 +613,95 @@ We configure cloudbr1 as a plain bridge without an IP address With this configuration you should be able to restart the network, although a reboot is recommended to see if everything works properly. +.. warning:: + Make sure you have an alternative way like IPMI or ILO to reach the machine + in case you made a configuration error and the network stops functioning! + +Configure SUSE for Basic Networks +''''''''''''''''''''''''''''''''''''' + +The required packages were installed when libvirt was installed, we can +proceed to configuring the network. + +First we configure eth0 + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-eth0 + +Make sure it looks similar to: + +.. parsed-literal:: + + NAME=eth0 + STARTMODE=auto + BOOTPROTO=none + +We now have to configure the VLAN interfaces: + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-eth0.200 + +.. parsed-literal:: + + NAME=eth0.200 + STARTMODE=auto + BOOTPROTO=none + VLAN_ID=200 + ETHERDEVICE=eth0 + +Now that we have the VLAN interfaces configured we can add the bridges on top +of them. + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-cloudbr0 + +Now we configure cloudbr0 and include the Management IP of the hypervisor. + +.. note:: + The management IP of the hypervisor doesn't have to be in same subnet/VLAN as the + management network, but its quite common. + +.. parsed-literal:: + + NAME=cloudbr0 + STARTMODE=auto + BOOTPROTO=static + BRIDGE=yes + BRIDGE_PORTS=eth0 + BRIDGE_STP=on + BRIDGE_FORWARDDELAY=5 + IPADDR=192.168.42.11 + NETMASK=255.255.255.0 + +Add the gateway in ``/etc/sysconfig/network/routes`` + +.. parsed-literal:: + + default 192.168.42.1 - cloudbr0 + + +We configure cloudbr1 as a plain bridge without an IP address + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-cloudbr1 + +.. parsed-literal:: + + NAME=cloudbr1 + STARTMODE=auto + BOOTPROTO=none + BRIDGE=yes + BRIDGE_PORTS=eth0.200 + BRIDGE_STP=on + BRIDGE_FORWARDDELAY=5 + +With this configuration you should be able to restart the network, +although a reboot is recommended to see if everything works properly. + .. warning:: Make sure you have an alternative way like IPMI or ILO to reach the machine in case you made a configuration error and the network stops functioning! @@ -630,7 +735,7 @@ Modify the interfaces file to look like this: auto cloudbr0 iface cloudbr0 inet static bridge_ports eth0 - bridge_fd 5 + bridge_fd 0 bridge_stp off bridge_maxwait 1 address 192.168.42.11 @@ -643,7 +748,7 @@ Modify the interfaces file to look like this: auto cloudbr1 iface cloudbr1 inet manual bridge_ports eth0.200 - bridge_fd 5 + bridge_fd 0 bridge_stp off bridge_maxwait 1 @@ -659,7 +764,7 @@ although a reboot is recommended to see if everything works properly. Network Example for Advanced Networks ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -In the Advanced networking mode is most common to have (at least) two physical interfaces per hypervior-host. +In the Advanced networking mode, it is most common to have (at least) two physical interfaces per hypervior-host. We will use the interface eth0 linked to the bridge 'cloudbr0' using the untagged (native) VLAN for hypervisor management. Additionally we configure the second interface for usage with the bridge 'cloudbr1' for public and guest traffic. This time there are no VLANs applied by us - CloudStack will add the VLANs as required during actual use. @@ -675,7 +780,7 @@ Configuring the Network Bridges for Advanced Networks ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ It depends on the distribution you are using how to configure these, -below you'll find examples for RHEL/CentOS and Ubuntu. +below you'll find examples for RHEL/CentOS, SUSE and Ubuntu. .. note:: The goal is to have two bridges called 'cloudbr0' and 'cloudbr1' after this @@ -770,6 +875,92 @@ We configure 'cloudbr1' as a plain bridge without an IP address or dedicated VLA With this configuration you should be able to restart the network, although a reboot is recommended to see if everything works properly. +.. warning:: + Make sure you have an alternative way like IPMI or ILO to reach the machine + in case you made a configuration error and the network stops functioning! + +Configure SUSE for Advanced Networks +'''''''''''''''''''''''''''''''''''''''' + +The required packages were installed when libvirt was installed, we can +proceed to configuring the network. + +First we configure eth0 + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-eth0 + +Make sure it looks similar to: + +.. parsed-literal:: + + NAME=eth0 + STARTMODE=auto + BOOTPROTO=none + +We now have to configure the VLAN interfaces: + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-eth1 + +.. parsed-literal:: + + NAME=eth1 + STARTMODE=auto + BOOTPROTO=none + +Now we have the VLAN interfaces configured we can add the bridges on top +of them. + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-cloudbr0 + +Now we configure cloudbr0 and include the Management IP of the hypervisor. + +.. note:: + The management IP of the hypervisor doesn't have to be in same subnet/VLAN as the + management network, but its quite common. + +.. parsed-literal:: + + NAME=cloudbr0 + STARTMODE=auto + BOOTPROTO=static + BRIDGE=yes + BRIDGE_PORTS=eth0 + BRIDGE_STP=on + BRIDGE_FORWARDDELAY=5 + IPADDR=192.168.42.11 + NETMASK=255.255.255.0 + +Add the gateway in ``/etc/sysconfig/network/routes`` + +.. parsed-literal:: + + default 192.168.42.1 - cloudbr0 + +We configure cloudbr1 as a plain bridge without an IP address + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-cloudbr1 + +.. parsed-literal:: + + NAME=cloudbr1 + STARTMODE=auto + BOOTPROTO=none + BRIDGE=yes + BRIDGE_PORTS=eth1 + BRIDGE_STP=on + BRIDGE_FORWARDDELAY=5 + +With this configuration you should be able to restart the network, +although a reboot is recommended to see if everything works properly. + .. warning:: Make sure you have an alternative way like IPMI or ILO to reach the machine in case you made a configuration error and the network stops functioning! @@ -835,7 +1026,7 @@ Configure the network using OpenVswitch .. warning:: This is a very important section, please make sure you read this thoroughly. -In order to forward traffic to your instances you will need at least two +In order to forward traffic to your Instances you will need at least two bridges: *public* and *private*. By default these bridges are called *cloudbr0* and *cloudbr1*, but you @@ -850,8 +1041,8 @@ Preparing To make sure that the native bridge module will not interfere with openvswitch the bridge module should be added to the denylist (likely named -'denylist') see the modprobe documentation for your distribution on -where to find the denylist. Make sure the module is not loaded either +'denylist') see the modprobe documentation for your distribution on +where to find the denylist. Make sure the module is not loaded either by rebooting or executing rmmod bridge before executing next steps. The network configurations below depend on the ifup-ovs and ifdown-ovs @@ -871,7 +1062,7 @@ VLANs: #. VLAN 100 for management of the hypervisor -#. VLAN 200 for public network of the instances (cloudbr0) +#. VLAN 200 for public network of the Instances (cloudbr0) #. VLAN 300 for private network of the instances (cloudbr1) @@ -1004,6 +1195,93 @@ although a reboot is recommended to see if everything works properly. in case you made a configuration error and the network stops functioning! +Configure OpenVswitch in SUSE +''''''''''''''''''''''''''''''''' + +The required packages were installed when openvswitch and libvirt were +installed, we can proceed to configuring the network. + +First we configure eth0 + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-eth0 + +Make sure it looks similar to: + +.. parsed-literal:: + + NAME=eth0 + STARTMODE=auto + BOOTPROTO=none + + +We have to configure the base bridge with the trunk. + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-cloudbr + +.. parsed-literal:: + + NAME=cloudbr + STARTMODE=auto + BOOTPROTO=none + OVS_BRIDGE=yes + +We now have to configure the three VLAN bridges: + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/mgmt0 + +.. parsed-literal:: + + NAME=mgmt0 + STARTMODE=auto + BOOTPROTO=static + OVS_BRIDGE=yes + IPADDR=192.168.42.11 + NETMASK=255.255.255.0 + + +Add the gateway in ``/etc/sysconfig/network/routes`` + +.. parsed-literal:: + + default 192.168.42.1 - mgmt0 + + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-cloudbr0 + +.. parsed-literal:: + + NAME=cloudbr0 + STARTMODE=auto + BOOTPROTO=none + OVS_BRIDGE=yes + + +.. parsed-literal:: + + $ vi /etc/sysconfig/network/ifcfg-cloudbr1 + +.. parsed-literal:: + + NAME=cloudbr1 + STARTMODE=auto + BOOTPROTO=none + OVS_BRIDGE=yes + +With this configuration you should be able to restart the network, +although a reboot is recommended to see if everything works properly. + +.. warning:: + Make sure you have an alternative way like IPMI or ILO to reach the machine + in case you made a configuration error and the network stops functioning! + Configuring the firewall ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1018,7 +1296,7 @@ using a firewall): #. 1798 -#. 16509, 16514 (libvirt) +#. 16514 (libvirt) #. 5900 - 6100 (VNC consoles) @@ -1028,8 +1306,8 @@ It depends on the firewall you are using how to open these ports. Below you'll find examples how to open these ports in RHEL/CentOS and Ubuntu. -Open ports in RHEL/CentOS -^^^^^^^^^^^^^^^^^^^^^^^^^ +Open ports in RHEL / CentOS / SUSE +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ RHEL and CentOS use iptables for firewalling the system, you can open extra ports by executing the following iptable commands: @@ -1042,10 +1320,6 @@ extra ports by executing the following iptable commands: $ iptables -I INPUT -p tcp -m tcp --dport 1798 -j ACCEPT -.. parsed-literal:: - - $ iptables -I INPUT -p tcp -m tcp --dport 16509 -j ACCEPT - .. parsed-literal:: $ iptables -I INPUT -p tcp -m tcp --dport 16514 -j ACCEPT @@ -1065,6 +1339,14 @@ save them first. $ iptables-save > /etc/sysconfig/iptables +.. warning:: + On RHEL 8 / CentOS 8 / SUSE, firewalld is the default firewall manager and controls iptables. It is + recommended that it be disabled ``systemctl stop firewalld ; systemctl disable firewalld`` + +.. warning:: + On SUSE, iptables are not persisted on reboot, so it is recommended that an iptables and + ip6tables service be created to ensure that they persist + Open ports in Ubuntu ^^^^^^^^^^^^^^^^^^^^ @@ -1082,10 +1364,6 @@ To open the required ports, execute the following commands: $ ufw allow proto tcp from any to any port 1798 -.. parsed-literal:: - - $ ufw allow proto tcp from any to any port 16509 - .. parsed-literal:: $ ufw allow proto tcp from any to any port 16514 @@ -1101,13 +1379,13 @@ To open the required ports, execute the following commands: .. note:: By default UFW is not enabled on Ubuntu. Executing these commands with the firewall disabled does not enable the firewall. - - If you have an issue with ufw while using a bridged connection, + + If you have an issue with ufw while using a bridged connection, add those two lines at the end of the /etc/ufw/before.rules just before COMMIT - + .. parsed-literal:: sudo vi /etc/ufw/before.rules - + .. parsed-literal:: -A FORWARD -d 192.168.42.11 -j ACCEPT -A FORWARD -s 192.168.42.11 -j ACCEPT @@ -1120,27 +1398,48 @@ Additional Packages Required for Features Secondary Storage Bypass ^^^^^^^^^^^^^^^^^^^^^^^^ -New in 4.11 is the ability to bypass storing a template on secondary storage, and -instead directly downloading a 'template' from an alternate remote location. +New in 4.11 is the ability to bypass storing a Template on secondary storage, and +instead directly downloading a 'Template' from an alternate remote location. In order to facilitate this the **Aria2** (https://aria2.github.io/) package must be installed on all of your KVM hosts. As this package often is not available in standard distribution repos, you will need -to install the package from your preferred source. +to install the package from your preferred source. -Volume snapshots +Volume Snapshots ^^^^^^^^^^^^^^^^ -CloudStack uses the qemu-img to perform snapshots. In CentOS >= 6.5, the qemu-img -supplied by RedHat/CentOS ceased to include a '-s' switch which performs snapshots. The +CloudStack uses the qemu-img to perform Snapshots. In CentOS >= 6.5, the qemu-img +supplied by RedHat/CentOS ceased to include a '-s' switch which performs Snapshots. The '-s' switch has been restored in latest CentOS/RHEL 7.x versions. -In order to be able to perform volume snapshots on CentOS 6.x (greater than 6.4) you must +In order to be able to perform Volume Snapshots on CentOS 6.x (greater than 6.4) you must replace your version of qemu-img with one which has been patched to include the '-s' switch. +Live Migration +^^^^^^^^^^^^^^ + +For Live Migration of the guests, it is better to configure the guest network bridge on +the same interface in the KVM hosts. In case, the guest network bridge is configured on +different interfaces in the KVM hosts, ensure the destination host doesn't have interface +with the interface name of guest network bridge in the source host. + + +UEFI legacy / secureboot +^^^^^^^^^^^^^^^^^^^^^^^^ + +For deploying instances using UEFI legacy / secureboot, there are some further tasks to +perform. +You can find further informations regarding prerequisites at the CloudStack Wiki +(https://cwiki.apache.org/confluence/display/CLOUDSTACK/Enable+UEFI+booting+for+Instance) +as well as limitations for using UEFI in CloudStack. +The options to deploy a instances using UEFI can be found in the "Advanced Mode" section +of the instance deployment wizard. + + Add the host to CloudStack ~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/source/installguide/hypervisor/lxc.rst b/source/installguide/hypervisor/lxc.rst index 4ee94348e5..03948bdcf7 100644 --- a/source/installguide/hypervisor/lxc.rst +++ b/source/installguide/hypervisor/lxc.rst @@ -60,7 +60,7 @@ In addition, the following hardware requirements apply: - At least 1 NIC -- When you deploy CloudStack, the hypervisor host must not have any VMs +- When you deploy CloudStack, the hypervisor host must not have any Instances already running @@ -97,7 +97,7 @@ Prepare the Operating System ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The OS of the Host must be prepared to host the CloudStack Agent and run -KVM instances. +KVM Instances. #. Log in to your OS as root. @@ -139,8 +139,8 @@ KVM instances. Install and configure the Agent ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To manage LXC instances on the host CloudStack uses a Agent. This Agent -communicates with the Management server and controls all the instances +To manage LXC Instances on the host CloudStack uses a Agent. This Agent +communicates with the Management server and controls all the Instances on the host. First we start by installing the agent: @@ -191,7 +191,7 @@ the host! Install and Configure libvirt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -CloudStack uses libvirt for managing virtual machines. Therefore it is +CloudStack uses libvirt for managing Instances. Therefore it is vital that libvirt is configured correctly. Libvirt is a dependency of cloudstack-agent and should already be installed. @@ -361,7 +361,7 @@ Configure the network bridges implementation in Linux. Please refer to the next section if you intend to use OpenVswitch -In order to forward traffic to your instances you will need at least two +In order to forward traffic to your Instances you will need at least two bridges: *public* and *private*. By default these bridges are called *cloudbr0* and *cloudbr1*, but you @@ -383,9 +383,9 @@ VLAN's: #. VLAN 100 for management of the hypervisor -#. VLAN 200 for public network of the instances (cloudbr0) +#. VLAN 200 for public network of the Instances (cloudbr0) -#. VLAN 300 for private network of the instances (cloudbr1) +#. VLAN 300 for private network of the Instances (cloudbr1) On VLAN 100 we give the Hypervisor the IP-Address 192.168.42.11/24 with the gateway 192.168.42.1 diff --git a/source/installguide/hypervisor/vsphere.rst b/source/installguide/hypervisor/vsphere.rst index 9061e0612c..391a1cf74e 100644 --- a/source/installguide/hypervisor/vsphere.rst +++ b/source/installguide/hypervisor/vsphere.rst @@ -49,13 +49,13 @@ Software requirements: .. warning:: Apply All Necessary Hotfixes. The lack of up-do-date hotfixes can lead to - data corruption and lost VMs. + data corruption and lost Instances. .. note:: When using vSphere and vCenter versions 6.0 and 6.5 there is a limitation on - instance names with a sequence number between 99999 and 1000000. For example if you take - a snapshot of a VM, the expected filename will be different to what cloudstack expects. + Instance names with a sequence number between 99999 and 1000000. For example if you take + a Snapshot of an Instance, the expected filename will be different to what cloudstack expects. It is advisable to set the sequence number to 1M to prevent issues by executing the following script on your cloudstack database: @@ -140,7 +140,7 @@ Other requirements: - CloudStack requires ESXi and vCenter. ESX is not supported. - Ideally all resources used for CloudStack must be used for CloudStack only. - CloudStack should not share instance of ESXi or storage with other + CloudStack should not share Instance of ESXi or storage with other management consoles. Do not share the same storage volumes that will be used by CloudStack with a different set of ESXi servers that are not managed by CloudStack. @@ -149,9 +149,9 @@ Other requirements: in vCenter. - Ideally clusters that will be managed by CloudStack should not contain - any other VMs. Do not run the management server or vCenter on + any other Instances. Do not run the management server or vCenter on the cluster that is designated for CloudStack use. Create a separate - cluster for use of CloudStack and make sure that they are no VMs in + cluster for use of CloudStack and make sure that they are no Instances in this cluster. - All of the required VLANs must be trunked into all network switches that @@ -443,19 +443,19 @@ switch's supervisor. It controls multiple VEMs as a single network device. The VSM is installed independent of the VEM and is deployed in redundancy mode as pairs or as a standalone appliance. The VEM is installed on each VMware ESXi server to provide packet-forwarding -capability. It provides each virtual machine with dedicated switch +capability. It provides each Instance with dedicated switch ports. This VSM-VEM architecture is analogous to a physical Cisco switch's supervisor (standalone or configured in high-availability mode) and multiple linecards architecture. Nexus 1000v switch uses vEthernet port profiles to simplify network -provisioning for virtual machines. There are two types of port profiles: +provisioning for Instances. There are two types of port profiles: Ethernet port profile and vEthernet port profile. The Ethernet port profile is applied to the physical uplink ports-the NIC ports of the physical NIC adapter on an ESXi server. The vEthernet port profile is -associated with the virtual NIC (vNIC) that is plumbed on a guest VM on -the ESXi server. The port profiles help the network administrators -define network policies which can be reused for new virtual machines. +associated with the virtual NIC (vNIC) that is plumbed on a guest Instance +on the ESXi server. The port profiles help the network administrators +define network policies which can be reused for new Instances. The Ethernet port profiles are created on the VSM and are represented as port groups on the vCenter server. @@ -608,7 +608,7 @@ Creating a Port Profile resources in the CloudStack environment. - You do not have to create any vEthernet port profiles – CloudStack - does that during VM deployment. + does that during Instance deployment. - Ensure that you create required port profiles to be used by CloudStack for different traffic types of CloudStack, such as @@ -1042,10 +1042,10 @@ Applying Hotfixes to a VMware vSphere Host #. Move each of the ESXi hosts in the cluster to maintenance mode. - #. Ensure that all the VMs are migrated to other hosts in that + #. Ensure that all the Instances are migrated to other hosts in that cluster. - #. If there is only one host in that cluster, shutdown all the VMs + #. If there is only one host in that cluster, shutdown all the instances and move the host into maintenance mode. #. Apply the patch on the ESXi host. diff --git a/source/installguide/hypervisor/xenserver.rst b/source/installguide/hypervisor/xenserver.rst index 76112f5359..1d51145e83 100644 --- a/source/installguide/hypervisor/xenserver.rst +++ b/source/installguide/hypervisor/xenserver.rst @@ -18,7 +18,7 @@ Host Citrix XenServer Installation ---------------------------------- If you want to use the Citrix XenServer hypervisor to run guest virtual -machines, install XenServer 6.0 or XenServer 6.0.2 on the host(s) in +machines, install XenServer/XCP-ng 7.0 or later on the host(s) in your cloud. For an initial installation, follow the steps below. If you have previously installed XenServer and want to upgrade to another version, see :ref:`upgrading-xenserver-version`. @@ -31,12 +31,18 @@ System Requirements for XenServer Hosts See the Citrix Hardware Compatibility Guide: `http://hcl.xensource.com `_ - - XenServer 5.6 SP2 - - XenServer 6.0 - - XenServer 6.0.2 - - XenServer 6.1.0 - - XenServer 6.2.0 - - XenServer 6.5.0 + - XenServer 7.0 + - XenServer 7.1 + - XenServer 7.5 + - XenServer 8.0 (not tested explicitly, but should work - see the release notes) + - XenServer 8.1 (not tested explicitly, but should work - see the release notes) + - XCP-ng 7.4.0 + - XCP-ng 7.5.0 + - XCP-ng 7.6.0 + - XCP-ng 8.0.0 + - XCP-ng 8.1.0 + - XCP-ng 8.2.0 + - You must re-install Citrix XenServer if you are going to re-use a host from a previous install. @@ -69,11 +75,11 @@ System Requirements for XenServer Hosts - Statically allocated IP Address -- When you deploy CloudStack, the hypervisor host must not have any VMs +- When you deploy CloudStack, the hypervisor host must not have any instances already running .. warning:: - The lack of up-to-date hotfixes can lead to data corruption and lost VMs. + The lack of up-to-date hotfixes can lead to data corruption and lost instances. XenServer Installation Steps @@ -98,11 +104,11 @@ Configure XenServer dom0 Memory ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Configure the XenServer dom0 settings to allocate more memory to dom0. -This can enable XenServer to handle larger numbers of virtual machines. +This can enable XenServer to handle larger numbers of Instances. We recommend 2940 MB of RAM for XenServer dom0. For instructions on how -to do this, see `http://support.citrix.com/article/CTX126531 -`_. The article refers to -XenServer 5.6, but the same information applies to XenServer 6.0. +to do this, see `https://docs.citrix.com/en-us/xencenter/7-1/hosts-control-domain-memory.html +`_. The article refers to +XenServer 7.1 LTSR. Username and Password @@ -222,7 +228,7 @@ CSP functionality is already present in XenServer 6.1 .. parsed-literal:: - # xe-switch-network-backend bridge + # xe-switch-network-backend bridge Restart the host machine when prompted. @@ -449,32 +455,32 @@ CloudStack: Separate Storage Network for XenServer (Optional) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -You can optionally set up a separate storage network. This should be +You can optionally set up a separate Storage Network. This should be done first on the host, before implementing the bonding steps below. This can be done using one or two available NICs. With two NICs bonding may be done as above. It is the administrator's responsibility to set up -a separate storage network. +a separate Storage Network. -Give the storage network a different name-label than what will be given +Give the Storage Network a different name-label than what will be given for other networks. -For the separate storage network to work correctly, it must be the only +For the separate Storage Network to work correctly, it must be the only interface that can ping the primary storage device's IP address. For example, if eth0 is the management network NIC, ping -I eth0 must fail. In all deployments, secondary storage devices must be pingable from the management network NIC or bond. If a -secondary storage device has been placed on the storage network, it must -also be pingable via the storage network NIC or bond on the hosts as +secondary storage device has been placed on the Storage Network, it must +also be pingable via the Storage Network NIC or bond on the hosts as well. -You can set up two separate storage networks as well. For example, if +You can set up two separate Storage Networks as well. For example, if you intend to implement iSCSI multipath, dedicate two non-bonded NICs to multipath. Each of the two networks needs a unique name-label. If no bonding is done, the administrator must set up and name-label the -separate storage network on all hosts (masters and slaves). +separate Storage Network on all hosts (masters and slaves). -Here is an example to set up eth5 to access a storage network on +Here is an example to set up eth5 to access a Storage Network on 172.16.0.0/24. .. parsed-literal:: @@ -492,7 +498,7 @@ NIC Bonding for XenServer (Optional) XenServer supports Source Level Balancing (SLB) NIC bonding. Two NICs can be bonded together to carry public, private, and guest traffic, or -some combination of these. Separate storage networks are also possible. +some combination of these. Separate Storage Networks are also possible. Here are some example supported configurations: - 2 NICs on private, 2 NICs on public, 2 NICs on storage @@ -648,6 +654,10 @@ Now the bonds are set up and configured properly across the cluster. Upgrading XenServer Versions ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.. note:: + This section has been updated and the upgrade steps shown below + have been tested with XenServer 6.5 and up (i.e. upgrading from 6.5 to 7.1 and later) + This section tells how to upgrade XenServer software on CloudStack hosts. The actual upgrade is described in XenServer documentation, but there are some additional steps you must perform before and after the @@ -659,138 +669,104 @@ upgrade. To upgrade XenServer: -#. Upgrade the database. On the Management Server node: - - #. Back up the database: - - .. parsed-literal:: - - # mysqldump --user=root --databases cloud > cloud.backup.sql - # mysqldump --user=root --databases cloud_usage > cloud_usage.backup.sql - - #. You might need to change the OS type settings for VMs running on - the upgraded hosts. - - - If you upgraded from XenServer 5.6 GA to XenServer 5.6 SP2, - change any VMs that have the OS type CentOS 5.5 (32-bit), - Oracle Enterprise Linux 5.5 (32-bit), or Red Hat Enterprise - Linux 5.5 (32-bit) to Other Linux (32-bit). Change any VMs that - have the 64-bit versions of these same OS types to Other Linux - (64-bit). - - - If you upgraded from XenServer 5.6 SP2 to XenServer 6.0.2, - change any VMs that have the OS type CentOS 5.6 (32-bit), - CentOS 5.7 (32-bit), Oracle Enterprise Linux 5.6 (32-bit), - Oracle Enterprise Linux 5.7 (32-bit), Red Hat Enterprise Linux - 5.6 (32-bit) , or Red Hat Enterprise Linux 5.7 (32-bit) to - Other Linux (32-bit). Change any VMs that have the 64-bit - versions of these same OS types to Other Linux (64-bit). - - - If you upgraded from XenServer 5.6 to XenServer 6.0.2, do all - of the above. - - #. Restart the Management Server and Usage Server. You only need to - do this once for all clusters. - - .. parsed-literal:: - - # service cloudstack-management start - # service cloudstack-usage start - #. Disconnect the XenServer cluster from CloudStack. - #. Log in to the CloudStack UI as root. + #. Log in to the CloudStack UI as admin. #. Navigate to the XenServer cluster, and click Actions – Unmanage. - #. Watch the cluster status until it shows Unmanaged. + #. Watch the cluster status until it shows "Unmanaged". + + This ensures that any actions against hosts in this cluster + are not possible (i.e. instance stop/start/snapshot, etc.) and CloudStack will + "ignore" the cluster (i.e. it will not react if the host goes down, etc.). + + This is important since in the following steps we will be migrating instances out of band, + upgrading and rebooting each host in the cluster, etc. #. Log in to one of the hosts in the cluster, and run this command to - clean up the VLAN: + clean up the VLAN (all VLANs and networks are attempted to be removed, but only + the ones with no VIFs/PIFs are actually removed - i.e. we are doing a bit of housekeeping) .. parsed-literal:: - # . /opt/xensource/bin/cloud-clean-vlan.sh + # /opt/cloud/bin/cloud-clean-vlan.sh -#. Still logged in to the host, run the upgrade preparation script: +#. Still logged in to the host, run the upgrade preparation script which will ensure that all existing VLANs and networks are propagated to all hosts, eject ISOs from all instances and also "fake" presence of PV drivers on PV instances - all of this is done to enable live migration of instances between hosts later: .. parsed-literal:: - # /opt/xensource/bin/cloud-prepare-upgrade.sh + # /opt/cloud/bin/cloud-prepare-upgrade.sh Troubleshooting: If you see the error "can't eject CD," log in to the - VM and umount the CD, then run the script again. + instance and umount the CD, then run the script again. -#. Upgrade the XenServer software on all hosts in the cluster. Upgrade - the master first. +#. Upgrade the XenServer software on all hosts in the cluster. Upgrade the master first. Do NOT put the pool master host into the Maintenance mode as this will move the pool master role to another host. - #. Live migrate all VMs on this host to other hosts. See the + #. Live migrate all instances on this host to other hosts. See the instructions for live migration in the Administrator's Guide. Troubleshooting: You might see the following error when you - migrate a VM: + migrate a instance: .. parsed-literal:: [root@xenserver-qa-2-49-4 ~]# xe vm-migrate live=true host=xenserver-qa-2-49-5 vm=i-2-8-VM - You attempted an operation on a VM which requires PV drivers to be installed but the drivers were not detected. + You attempted an operation on a instance which requires PV drivers to be installed but the drivers were not detected. vm: b6cf79c8-02ee-050b-922f-49583d9f1a14 (i-2-8-VM) To solve this issue, run the following: .. parsed-literal:: - # /opt/xensource/bin/make_migratable.sh b6cf79c8-02ee-050b-922f-49583d9f1a14 + # /opt/cloud/bin/make_migratable.sh b6cf79c8-02ee-050b-922f-49583d9f1a14 #. Reboot the host. - #. Upgrade to the newer version of XenServer. Use the steps in - XenServer documentation. + #. Upgrade to the newer version of XenServer using an ISO file. This will essentially backup the current root partition + of the host and install a new version of hypervisor, while preserving the existing instances and configuration. Use the steps in XenServer documentation. - #. After the upgrade is complete, copy the following files from the - management server to this host, in the directory locations shown - below: + #. After the upgrade is complete and the host boots, create the destination folder "/opt/cloud/bin/" on the host + and copy the following files from the management server to this host, in the directory locations shown below: .. cssclass:: table-striped table-bordered table-hover ================================================================================= ======================================= Copy this Management Server file To this location on the XenServer host ================================================================================= ======================================= - /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/xenserver60/NFSSR.py /opt/xensource/sm/NFSSR.py - /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/setupxenserver.sh /opt/xensource/bin/setupxenserver.sh - /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/make\_migratable.sh /opt/xensource/bin/make\_migratable.sh - /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/cloud-clean-vlan.sh /opt/xensource/bin/cloud-clean-vlan.sh + /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/setupxenserver.sh /opt/cloud/bin/setupxenserver.sh + /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/make\_migratable.sh /opt/cloud/bin/make\_migratable.sh + /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/cloud-clean-vlan.sh /opt/cloud/bin/cloud-clean-vlan.sh ================================================================================= ======================================= - #. Run the following script: + #. Run the following script, which will configure a few things on the freshly upgraded XenServer host + (disable IPv6, configure VNC related firewall settings, configure a few network settings, clear the heartbeat file, etc.): .. parsed-literal:: - # /opt/xensource/bin/setupxenserver.sh + # /opt/cloud/bin/setupxenserver.sh - Troubleshooting: If you see the following error message, you can - safely ignore it. + Troubleshooting: If you see the following error messages, you can + safely ignore them. .. parsed-literal:: - mv: cannot stat `/etc/cron.daily/logrotate`: No such file or directory + iptables: Bad rule (does a matching rule exist in that chain?). + sed: can't read /opt/xensource/libexec/qemu-dm-wrapper: No such file or directory + mv: cannot stat ‘/etc/cron.daily/logrotate’: No such file or directory #. Plug in the storage repositories (physical block devices) to the - XenServer host: + XenServer host (although all of them should already be plugged in): .. parsed-literal:: - # for pbd in `xe pbd-list currently-attached=false| grep ^uuid | awk '{print $NF}'`; do xe pbd-plug uuid=$pbd ; done + # for pbd in $(xe pbd-list currently-attached=false | grep ^uuid | awk '{print $NF}'); do xe pbd-plug uuid=$pbd ; done - .. note:: - If you add a host to this XenServer pool, you need to migrate all VMs - on this host to other hosts, and eject this host from XenServer pool. -#. Repeat these steps to upgrade every host in the cluster to the same - version of XenServer. +#. Repeat these steps to upgrade every host in the cluster to the same version of XenServer. -#. Run the following command on one host in the XenServer cluster to - clean up the host tags: +#. When all of the hosts in the pool are upgraded, run the following command on one host in the XenServer cluster to + clean up the host tags (this will make sure ACS later copies the rest of the required scripts and plugins to each host): .. parsed-literal:: @@ -803,13 +779,14 @@ To upgrade XenServer: #. Reconnect the XenServer cluster to CloudStack. - #. Log in to the CloudStack UI as root. + #. Log in to the CloudStack UI as admin. #. Navigate to the XenServer cluster, and click Actions – Manage. - #. Watch the status to see that all the hosts come up. + #. Watch the status to see that all the hosts come "Up" (it can take a few minutes, as it takes time for CloudStack to copy + all of the required scripts and plugins to the upgraded hosts) -#. After all hosts are up, run the following on one host in the cluster: +#. Optionally, after all hosts are "Up", run the following on one host in the cluster: .. parsed-literal:: diff --git a/source/installguide/locale/pot/hypervisor_installation.pot b/source/installguide/locale/pot/hypervisor_installation.pot index b0cb2726ae..def2f8a3a7 100644 --- a/source/installguide/locale/pot/hypervisor_installation.pot +++ b/source/installguide/locale/pot/hypervisor_installation.pot @@ -1668,7 +1668,7 @@ msgstr "" #: ../../hypervisor_installation.rst:1484 # 21486bfc4a50447a974137680f2e8750 msgid "If no bonding is done, the administrator must set up and name-label the separate storage network on all hosts (masters and slaves)." -msgstr "" +msgstr " #: ../../hypervisor_installation.rst:1487 # e74b734827c148e4abf67add41daf5fa diff --git a/source/installguide/locale/pot/managing_networks.pot b/source/installguide/locale/pot/managing_networks.pot index cb2c581a83..35b07554ad 100644 --- a/source/installguide/locale/pot/managing_networks.pot +++ b/source/installguide/locale/pot/managing_networks.pot @@ -2761,12 +2761,12 @@ msgstr "" #: ../../managing_networks.rst:2392 # 596a2d14b50c4e298970de7db5c4d19b -msgid "Ensure that the endpointe.url parameter present in the Global Settings is set to the Management Server API URL. For example, http://10.102.102.22:8080/client/api. In a multi-node Management Server deployment, use the virtual IP address configured in the load balancer for the management server’s cluster. Additionally, ensure that the NetScaler device has access to this IP address to provide AutoScale support." +msgid "Ensure that the endpoint.url parameter present in the Global Settings is set to the Management Server API URL. For example, http://10.102.102.22:8080/client/api. In a multi-node Management Server deployment, use the virtual IP address configured in the load balancer for the management server’s cluster. Additionally, ensure that the NetScaler device has access to this IP address to provide AutoScale support." msgstr "" #: ../../managing_networks.rst:2400 # 59583fe0dfc14e2db8bcc23629da18e3 -msgid "If you update the endpointe.url, disable the AutoScale functionality of the load balancer rules in the system, then enable them back to reflect the changes. For more information see `Updating an AutoScale Configuration <#update-autoscale>`__" +msgid "If you update the endpoint.url, disable the AutoScale functionality of the load balancer rules in the system, then enable them back to reflect the changes. For more information see `Updating an AutoScale Configuration <#update-autoscale>`__" msgstr "" #: ../../managing_networks.rst:2407 diff --git a/source/installguide/management-server/_database.rst b/source/installguide/management-server/_database.rst index bad57c73e3..89e2f8c244 100644 --- a/source/installguide/management-server/_database.rst +++ b/source/installguide/management-server/_database.rst @@ -43,7 +43,11 @@ MySQL. See :ref:`install-database-on-separate-node`. .. parsed-literal:: - sudo apt-get install mysql-server + zypper install mysql-server + + .. parsed-literal:: + + sudo apt install mysql-server #. Open the MySQL configuration file. The configuration file is ``/etc/my.cnf`` or ``/etc/mysql/my.cnf``, depending on your OS. @@ -62,12 +66,12 @@ MySQL. See :ref:`install-database-on-separate-node`. max_connections=350 log-bin=mysql-bin binlog-format = 'ROW' - + .. note:: For Ubuntu 16.04 and later, make sure you specify a ``server-id`` in your ``.cnf`` file for binary logging. Set the ``server-id`` according to your database setup. - + .. parsed-literal:: - + server-id=source-01 innodb_rollback_on_timeout=1 innodb_lock_wait_timeout=600 @@ -75,9 +79,9 @@ MySQL. See :ref:`install-database-on-separate-node`. log-bin=mysql-bin binlog-format = 'ROW' - .. note:: - You can also create a file ``/etc/mysql/conf.d/cloudstack.cnf`` - and add these directives there. Don't forget to add ``[mysqld]`` on the + .. note:: + You can also create a file ``/etc/mysql/conf.d/cloudstack.cnf`` + and add these directives there. Don't forget to add ``[mysqld]`` on the first line of the file. @@ -89,22 +93,28 @@ MySQL. See :ref:`install-database-on-separate-node`. .. parsed-literal:: - service mysqld start + systemctl start mysqld + + On SUSE, start MySQL + + .. parsed-literal:: + + systemctl start mysql On Ubuntu, restart MySQL. .. parsed-literal:: - sudo service mysql restart + sudo systemctl restart mysql #. (CentOS and RHEL only; not required on Ubuntu) .. warning:: - On RHEL and CentOS, MySQL does not set a root password by default. It is - very strongly recommended that you set a root password as a security + On RHEL and CentOS, MySQL does not set a root password by default. It is + very strongly recommended that you set a root password as a security precaution. - Run the following command to secure your installation. You can answer "Y" + Run the following command to secure your installation. You can answer "Y" to all questions. .. parsed-literal:: @@ -156,13 +166,19 @@ MySQL. See :ref:`install-database-on-separate-node`. setenforce permissive -#. Set up the database. The following command creates the "cloud" user - on the database. +#. Set up the database. + + The cloudstack-setup-databases script is used for creating the cloudstack + databases (cloud, cloud_usage), creating a User (cloud), granting permissions + to the User and preparing the tables for the first startup of the management + server. + + The following command creates the "cloud" user on the database. .. parsed-literal:: cloudstack-setup-databases cloud:@localhost \ - --deploy-as=root: \ + [ --deploy-as=root: | --schema-only ] \ -e \ -m \ -k \ @@ -174,8 +190,39 @@ MySQL. See :ref:`install-database-on-separate-node`. - In deploy-as, specify the username and password of the user deploying the database. In the following command, it is assumed - the root user is deploying the database and creating the "cloud" - user. + the root User is deploying the database and creating the "cloud" + User. + + - (Optional) There is an option to bypass the creating of the databases, + User and granting permissions to the user. This is useful if you don't + want to expose your root credentials but still want the database to + be prepared for first start up. These skipped steps will have had to be + done manually prior to executing this script. This behaviour can be + invoked by passing the --schema-only flag. This flag conflicts with the + --deploy-as flag so the two cannot be used together. To set up the + databases and user manually before executing the script with the flag, + these commands can be executed: + + .. code:: mysql + + -- Create the cloud and cloud_usage databases + CREATE DATABASE `cloud`; + CREATE DATABASE `cloud_usage`; + + -- Create the cloud user + CREATE USER cloud@`localhost` identified by ''; + CREATE USER cloud@`%` identified by ''; + + -- Grant all privileges to the cloud user on the databases + GRANT ALL ON cloud.* to cloud@`localhost`; + GRANT ALL ON cloud.* to cloud@`%`; + + GRANT ALL ON cloud_usage.* to cloud@`localhost`; + GRANT ALL ON cloud_usage.* to cloud@`%`; + + -- Grant process list privilege for all other databases + GRANT process ON *.* TO cloud@`localhost`; + GRANT process ON *.* TO cloud@`%`; - (Optional) For encryption\_type, use file or web to indicate the technique used to pass in the database encryption password. @@ -184,28 +231,27 @@ MySQL. See :ref:`install-database-on-separate-node`. - (Optional) For management\_server\_key, substitute the default key that is used to encrypt confidential parameters in the CloudStack properties file. Default: password. It is highly recommended that - you replace this with a more secure value. See + you replace this with a more secure value. See :ref:`about-password-key-encryption`. - (Optional) For database\_key, substitute the default key that is used to encrypt confidential parameters in the CloudStack database. Default: password. It is highly recommended that you - replace this with a more secure value. See + replace this with a more secure value. See :ref:`about-password-key-encryption`. - (Optional) For management\_server\_ip, you may explicitly specify cluster management server node IP. If not specified, the local IP address will be used. - When this script is finished, you should see a message like “Successfully initialized the database.” .. note:: - If the script is unable to connect to the MySQL database, check the - "localhost" loopback address in ``/etc/hosts``. It should be pointing to - the IPv4 loopback address "127.0.0.1" and not the IPv6 loopback address - ``::1``. Alternatively, reconfigure MySQL to bind to the IPv6 loopback + If the script is unable to connect to the MySQL database, check the + "localhost" loopback address in ``/etc/hosts``. It should be pointing to + the IPv4 loopback address "127.0.0.1" and not the IPv6 loopback address + ``::1``. Alternatively, reconfigure MySQL to bind to the IPv6 loopback interface. #. If you are running the KVM hypervisor on the same machine with the @@ -237,14 +283,14 @@ This section describes how to install MySQL on a standalone machine, separate from the Management Server. This technique is intended for a deployment that includes several Management Server nodes. If you have a single-node Management Server deployment, you will typically use the -same node for MySQL. See `“Install the Database on the Management Server Node” +same node for MySQL. See `“Install the Database on the Management Server Node” <#install-the-database-on-the-management-server-node>`_. -.. note:: - The management server doesn't require a specific distribution for the MySQL - node. You can use a distribution or Operating System of your choice. Using - the same distribution as the management server is recommended, but not - required. See `“Management Server, Database, and Storage System Requirements” +.. note:: + The management server doesn't require a specific distribution for the MySQL + node. You can use a distribution or Operating System of your choice. Using + the same distribution as the management server is recommended, but not + required. See `“Management Server, Database, and Storage System Requirements” <#management-server-database-and-storage-system-requirements>`_. #. Install MySQL from the package repository from your distribution: @@ -255,7 +301,11 @@ same node for MySQL. See `“Install the Database on the Management Server Node .. parsed-literal:: - sudo apt-get install mysql-server + zypper install mysql-server + + .. parsed-literal:: + + sudo apt install mysql-server #. Edit the MySQL configuration (/etc/my.cnf or /etc/mysql/my.cnf, depending on your OS) and insert the following lines in the [mysqld] @@ -265,8 +315,8 @@ same node for MySQL. See `“Install the Database on the Management Server Node two Management Servers. .. note:: - On Ubuntu, you can also create /etc/mysql/conf.d/cloudstack.cnf file and - add these directives there. Don't forget to add [mysqld] on the first + On Ubuntu, you can also create /etc/mysql/conf.d/cloudstack.cnf file and + add these directives there. Don't forget to add [mysqld] on the first line of the file. .. parsed-literal:: @@ -287,6 +337,13 @@ same node for MySQL. See `“Install the Database on the Management Server Node service mysqld start + On SUSE, enable and start MySQL + + .. parsed-literal:: + + systemctl enable mysql + systemctl start mysql + On Ubuntu, restart MySQL. .. parsed-literal:: @@ -296,10 +353,10 @@ same node for MySQL. See `“Install the Database on the Management Server Node #. (CentOS and RHEL only; not required on Ubuntu) .. warning:: - On RHEL and CentOS, MySQL does not set a root password by default. It is - very strongly recommended that you set a root password as a security - precaution. Run the following command to secure your installation. You - can answer "Y" to all questions except "Disallow root login remotely?". + On RHEL and CentOS, MySQL does not set a root password by default. It is + very strongly recommended that you set a root password as a security + precaution. Run the following command to secure your installation. You + can answer "Y" to all questions except "Disallow root login remotely?". Remote root login is required to set up the databases. .. parsed-literal:: @@ -316,7 +373,7 @@ same node for MySQL. See `“Install the Database on the Management Server Node ufw allow mysql - On RHEL/CentOS: + On RHEL/CentOS/SUSE: #. Edit the /etc/sysconfig/iptables file and add the following line at the beginning of the INPUT chain. @@ -331,10 +388,34 @@ same node for MySQL. See `“Install the Database on the Management Server Node service iptables restart + .. warning:: + On CentOS 8 / SUSE, firewalld is the default firewall manager and controls iptables. It is + recommended that it be disabled ``systemctl stop firewalld ; systemctl disable firewalld``, + since CloudStack directly manipulates the iptable rules to manage Networks. + + .. warning:: + On SUSE, iptables are not persisted on reboot, so it is recommended that iptables and + ip6tables service be created to ensure that they persist + #. Return to the root shell on your first Management Server. -#. Set up the database. The following command creates the cloud user on - the database. +#. Set up the database. + +The cloudstack-setup-databases script is used for creating the cloudstack +databases (cloud, cloud_usage), creating a user (cloud), granting permissions +to the user and preparing the tables for the first startup of the management +server. + +The following command creates the cloud user on the database. + + .. parsed-literal:: + + cloudstack-setup-databases cloud:@ \ + [ --deploy-as=root: | --schema-only ]\ + -e \ + -m \ + -k \ + -i - In dbpassword, specify the password to be assigned to the cloud user. You can choose to provide no password. @@ -344,6 +425,37 @@ same node for MySQL. See `“Install the Database on the Management Server Node the root user is deploying the database and creating the cloud user. + - (Optional) There is an option to bypass the creating of the databases, + user and granting permissions to the user. This is useful if you don't + want to expose your root credentials but still want the database to + be prepared for first start up. These skipped steps will have had to be + done manually prior to executing this script. This behaviour can be + envoked by passing the --schema-only flag. This flag conflicts with the + --deploy-as flag so the two cannot be used together. To set up the + databases and user manually before executing the script with the flag, + these commands can be executed: + + .. code:: mysql + + -- Create the cloud and cloud_usage databases + CREATE DATABASE `cloud`; + CREATE DATABASE `cloud_usage`; + + -- Create the cloud user + CREATE USER cloud@`localhost` identified by ''; + CREATE USER cloud@`%` identified by ''; + + -- Grant all privileges to the cloud user on the databases + GRANT ALL ON cloud.* to cloud@`localhost`; + GRANT ALL ON cloud.* to cloud@`%`; + + GRANT ALL ON cloud_usage.* to cloud@`localhost`; + GRANT ALL ON cloud_usage.* to cloud@`%`; + + -- Grant process list privilege for all other databases + GRANT process ON *.* TO cloud@`localhost`; + GRANT process ON *.* TO cloud@`%`; + - (Optional) For encryption\_type, use file or web to indicate the technique used to pass in the database encryption password. Default: file. See :ref:`about-password-key-encryption`. @@ -351,13 +463,13 @@ same node for MySQL. See `“Install the Database on the Management Server Node - (Optional) For management\_server\_key, substitute the default key that is used to encrypt confidential parameters in the CloudStack properties file. Default: password. It is highly recommended that - you replace this with a more secure value. See About Password and - Key Encryption. + you replace this with a more secure value. See + :ref:`about-password-key-encryption`. - (Optional) For database\_key, substitute the default key that is used to encrypt confidential parameters in the CloudStack database. Default: password. It is highly recommended that you - replace this with a more secure value. See + replace this with a more secure value. See :ref:`about-password-key-encryption`. - (Optional) For management\_server\_ip, you may explicitly specify @@ -373,7 +485,7 @@ same node for MySQL. See `“Install the Database on the Management Server Node -k \ -i - When this script is finished, you should see a message like + When this script is finished, you should see a message like “Successfully initialized the database.” #. Now that the database is set up, you can finish configuring the OS @@ -388,9 +500,9 @@ same node for MySQL. See `“Install the Database on the Management Server Node done!” .. warning:: - On RHEL and CentOS systems, firewalld (installed by default) will override all - iptables rules set by the cloudstack-setup-management script, + On RHEL and CentOS systems, firewalld (installed by default) will override all + iptables rules set by the cloudstack-setup-management script, so ensure that the firewalld is disabled or ensure the correct firewalld rules are in place to allow traffic to ports 8080, 8250 and 9090 to the management server. - - + + diff --git a/source/installguide/management-server/_nfs.rst b/source/installguide/management-server/_nfs.rst index 91969b9520..176d8b7695 100644 --- a/source/installguide/management-server/_nfs.rst +++ b/source/installguide/management-server/_nfs.rst @@ -24,9 +24,9 @@ section tells how to set up the NFS shares before adding the storage to CloudStack. .. note:: - NFS is not the only option for primary or secondary storage. For example, - you may use Ceph RBD, PowerFlex, GlusterFS, iSCSI, and others. The choice of storage - system will depend on the choice of hypervisor and whether you are dealing + NFS is not the only option for primary or secondary storage. For example, + you may use Ceph RBD, PowerFlex, GlusterFS, iSCSI, and others. The choice of storage + system will depend on the choice of hypervisor and whether you are dealing with primary or secondary storage. The requirements for primary and secondary storage are described in: @@ -35,7 +35,7 @@ The requirements for primary and secondary storage are described in: - :ref:`about-secondary-storage` -A production installation typically uses a separate NFS server. +A production installation typically uses a separate NFS server. See :ref:`using-a-separage-nfs-server`. You can also use the Management Server node as the NFS server. This is @@ -118,17 +118,21 @@ on the host. The exact commands for the following steps may vary depending on your operating system version. -#. On RHEL/CentOS systems, you'll need to install the nfs-utils package: +#. On RHEL/CentOS/SUSE systems, you'll need to install the nfs-utils package: .. parsed-literal:: yum install nfs-utils + .. parsed-literal:: + + zypper install nfs-utils + or for Ubuntu - + .. parsed-literal:: - apt-get install nfs-kernel-server + apt install nfs-kernel-server #. On the Management Server host, create two directories that you will use for primary and secondary storage. For example: @@ -182,7 +186,7 @@ operating system version. vi /etc/sysconfig/iptables Add the following lines at the beginning of the INPUT chain, where - is the network that you'll be using: + is the Network that you'll be using: .. parsed-literal:: @@ -196,7 +200,7 @@ operating system version. -A INPUT -s -m state --state NEW -p tcp --dport 875 -j ACCEPT -A INPUT -s -m state --state NEW -p udp --dport 875 -j ACCEPT -A INPUT -s -m state --state NEW -p tcp --dport 662 -j ACCEPT - -A INPUT -s -m state --state NEW -p udp --dport 662 -j ACCEPT + -A INPUT -s -m state --state NEW -p udp --dport 662 -j ACCEPT #. Run the following commands: diff --git a/source/installguide/management-server/_pkg_install.rst b/source/installguide/management-server/_pkg_install.rst index ad2bc40598..ad8aed59cd 100644 --- a/source/installguide/management-server/_pkg_install.rst +++ b/source/installguide/management-server/_pkg_install.rst @@ -21,8 +21,8 @@ Management Server on one host or many, is to install the software on a single node. .. note:: - If you are planning to install the Management Server on multiple nodes for - high availability, do not proceed to the additional nodes yet. That step + If you are planning to install the Management Server on multiple nodes for + high availability, do not proceed to the additional nodes yet. That step will come later. The CloudStack Management server can be installed using either RPM or @@ -34,16 +34,22 @@ the Management server. Install on CentOS/RHEL ^^^^^^^^^^^^^^^^^^^^^^ - + .. parsed-literal:: yum install cloudstack-management +Install on SUSE +^^^^^^^^^^^^^^^ + +.. parsed-literal:: + + zypper install cloudstack-management Install on Ubuntu ^^^^^^^^^^^^^^^^^ .. parsed-literal:: - sudo apt-get install cloudstack-management + sudo apt install cloudstack-management diff --git a/source/installguide/management-server/_pkg_repo.rst b/source/installguide/management-server/_pkg_repo.rst index 2f4e3c1d23..9ef80c3548 100644 --- a/source/installguide/management-server/_pkg_repo.rst +++ b/source/installguide/management-server/_pkg_repo.rst @@ -22,25 +22,27 @@ binaries so that users can install Apache CloudStack without needing to build from source. If you didn't follow the steps to build your own packages from source in -the sections for `“Building RPMs from Source” -<../building_from_source.html#building-rpms-from-source>`__ or -`“Building DEB packages” <../building_from_source.html#building-deb-packages>`__ -you may find pre-built DEB and RPM packages for your convenience linked from +the sections for `“Building RPMs from Source” +<../building_from_source.html#building-rpms-from-source>`__ or +`“Building DEB packages” <../building_from_source.html#building-deb-packages>`__ +you may find pre-built DEB and RPM packages for your convenience linked from the `downloads `_ page. .. note:: - These repositories contain both the Management Server and KVM Hypervisor + These repositories contain both the Management Server and KVM Hypervisor packages. RPM package repository ~~~~~~~~~~~~~~~~~~~~~~ There is a RPM package repository for CloudStack so you can easily -install on RHEL based platforms. +install on RHEL and SUSE based platforms. If you're using an RPM-based system, you'll want to add the Yum repository so that you can install CloudStack with Yum. +In RHEL or CentOS: + Yum repository information is found under ``/etc/yum.repos.d``. You'll see several ``.repo`` files in this directory, each one denoting a specific repository. @@ -49,6 +51,8 @@ To add the CloudStack repository, create ``/etc/yum.repos.d/cloudstack.repo`` and insert the following information. +In the case of RHEL being used, you can replace 'centos' by 'rhel' in the value of baseurl + .. parsed-literal:: [cloudstack] @@ -57,16 +61,36 @@ information. enabled=1 gpgcheck=0 - Now you should now be able to install CloudStack using Yum. +In SUSE: + +Zypper repository information is found under ``/etc/zypp/repos.d/``. You'll +see several ``.repo`` files in this directory, each one denoting a +specific repository. + +To add the CloudStack repository, create +``/etc/zypp/repos.d/cloudstack.repo`` and insert the following +information. + +.. parsed-literal:: + + [cloudstack] + name=cloudstack + baseurl=http://download.cloudstack.org/suse/|version|/ + enabled=1 + gpgcheck=0 + + +Now you should now be able to install CloudStack using zypper. + DEB package repository ~~~~~~~~~~~~~~~~~~~~~~ You can add a DEB package repository to your apt sources with the -following commands. Please note that only packages for Ubuntu 20.04 (Focal), -Ubuntu 18.04 (Bionic) and Ubuntu 16.04 (Xenial) are being built at this time. +following commands. Replace the code name with your Ubuntu LTS version : +Ubuntu 16.04 (Xenial), Ubuntu 18.04 (Bionic) and Ubuntu 20.04 (Focal) . Ubuntu 14.04 (Trusty) is no longer supported. Use your preferred editor and open (or create) @@ -75,19 +99,19 @@ repository to the file (replace "trusty" with "xenial" or "bionic" if it is the .. parsed-literal:: - deb http://download.cloudstack.org/ubuntu focal |version| + deb https://download.cloudstack.org/ubuntu focal |version| We now have to add the public key to the trusted keys. .. parsed-literal:: - sudo wget -O - http://download.cloudstack.org/release.asc|apt-key add - + wget -O - https://download.cloudstack.org/release.asc |sudo tee /etc/apt/trusted.gpg.d/cloudstack.asc Now update your local apt cache. .. parsed-literal:: - sudo apt-get update + sudo apt update Your DEB package repository should now be configured and ready for use. diff --git a/source/installguide/management-server/_prerequisite.rst b/source/installguide/management-server/_prerequisite.rst index 9c2ab52c75..648f1670d8 100644 --- a/source/installguide/management-server/_prerequisite.rst +++ b/source/installguide/management-server/_prerequisite.rst @@ -29,7 +29,7 @@ In either case, each machine must meet the system requirements described in :ref:`minimum-system-requirements`. .. warning:: - For the sake of security, be sure the public Internet can not access port + For the sake of security, be sure the public Internet can not access port 8096 or port 8250 on the Management Server. The procedure for installing the Management Server is: @@ -81,19 +81,29 @@ node. Install chrony. - .. parsed-literal:: + In RHEL or CentOS: - yum install chrony + .. parsed-literal:: - .. parsed-literal:: + $ yum install chrony + + In Ubuntu: + + .. parsed-literal:: + + $ apt install chrony + + In SUSE: + + .. parsed-literal:: - sudo apt install chrony + $ zypper install chrony #. Repeat all of these steps on every host where the Management Server will be installed. .. warning:: CloudStack |version| requires Java 11 JRE. Installing CloudStack packages will - automatically install Java 11, but it's good to explicitly confirm that the Java 11 + automatically install Java 11, but it's good to explicitly confirm that the Java 11 is the selected/active one (in case you had a previous Java version already installed) with ``alternatives --config java`` after CloudStack packages are already installed. diff --git a/source/installguide/management-server/_systemvm.rst b/source/installguide/management-server/_systemvm.rst index 825beaf717..0e6f2433cf 100644 --- a/source/installguide/management-server/_systemvm.rst +++ b/source/installguide/management-server/_systemvm.rst @@ -16,8 +16,10 @@ Prepare the System VM Template ------------------------------ -Secondary storage must be seeded with a template that is used for -CloudStack system VMs. +From Apache CloudStack v4.16 onwards, upgrade path handles SystemVM Template registration, if not done prior to initiating upgrade. +One may choose, to also omit the SystemVM Template seeding step during fresh installation of CloudStack, as support has been added to +initiate SystemVM Template registration for all hypervisors present in the zone when the first secondary storage pool is added. +Secondary storage must be seeded with a Template that is used for CloudStack System VMs. .. note:: When copying and pasting a command, be sure the command has pasted as a @@ -26,8 +28,8 @@ CloudStack system VMs. #. On the Management Server, run one or more of the following ``cloud-install-sys-tmplt`` commands to retrieve and decompress the - system VM template. Run the command for each hypervisor type that you - expect end users to run in this Zone. + System VM Template. Run the command for each hypervisor type that you + expect end Users to run in this Zone. If your secondary storage mount point is not named ``/mnt/secondary``, substitute your own mount point name. diff --git a/source/installguide/management-server/index.rst b/source/installguide/management-server/index.rst index c6a2532b4c..2efe51a7f8 100644 --- a/source/installguide/management-server/index.rst +++ b/source/installguide/management-server/index.rst @@ -49,7 +49,7 @@ What should you do next? CloudStack on an ongoing basis. See Log In to the UI. - When you're ready, add the cloud infrastructure and try running some - virtual machines on it, so you can watch how CloudStack manages the + Instances on it, so you can watch how CloudStack manages the infrastructure. See Provision Your Cloud Infrastructure. diff --git a/source/installguide/optional_installation.rst b/source/installguide/optional_installation.rst index 54cd52dab2..9496bd245a 100644 --- a/source/installguide/optional_installation.rst +++ b/source/installguide/optional_installation.rst @@ -26,7 +26,7 @@ Installing the Usage Server (Optional) You can optionally install the Usage Server once the Management Server is configured properly. The Usage Server takes data from the events in -the system and enables usage-based billing for accounts. +the system and enables usage-based billing for Accounts. When multiple Management Servers are present, the Usage Server may be installed on any number of them. The Usage Servers will coordinate usage @@ -62,7 +62,7 @@ Steps to Install the Usage Server .. parsed-literal:: - # apt-get install cloudstack-usage + # apt install cloudstack-usage #. Once installed, start the Usage Server with the following command. @@ -158,9 +158,9 @@ steps are a guide to implementing MySQL replication. # service mysql restart -#. Create a replication account on the source server and give it privileges. We +#. Create a replication Account on the source server and give it privileges. We will use the "cloud-repl" user with the password "password". This - assumes that source and replica run on the 172.16.1.0/24 network. + assumes that source and replica run on the 172.16.1.0/24 Network. .. sourcecode: bash .. parsed-literal:: @@ -186,7 +186,7 @@ steps are a guide to implementing MySQL replication. | mysql-bin.000001 | 412 | | | +------------------+----------+--------------+------------------+ -#. Note the file and the position that are returned by your instance. +#. Note the file and the position that are returned by your Instance. #. Exit from this session. @@ -287,7 +287,7 @@ Amazon Web Services Compatible Interface ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CloudStack can translate Amazon Web Services (AWS) API calls to native -CloudStack API calls so that users can continue using existing +CloudStack API calls so that Users can continue using existing AWS-compatible tools. This translation service runs as a separate web application in the same tomcat server as the management server of CloudStack, listening on a different port. The Amazon Web Services (AWS) @@ -314,7 +314,7 @@ Limitations - Features such as Elastic IP (EIP) and Elastic Load Balancing (ELB) are only available in an infrastructure with a Citrix NetScaler device. Users accessing a Zone with a NetScaler device will need to - use a NetScaler-enabled network offering (DefaultSharedNetscalerEIP + use a NetScaler-enabled Network offering (DefaultSharedNetscalerEIP and ELBNetworkOffering). @@ -371,7 +371,7 @@ You do not have to enable both at the same time. Enable the ones you need. This can be done via the CloudStack GUI by going in *Global Settings* or via the API. -The snapshot below shows you how to use the GUI to enable these services +The Snapshot below shows you how to use the GUI to enable these services |Use the GUI to set the configuration variable to true| @@ -397,7 +397,7 @@ types `_ API names (e.g m1.small,m1.large). This can be done via the CloudStack GUI. Go under *Service Offerings* select *Compute offering* and either create a new compute offering or modify an existing one, ensuring that the name -matches an EC2 instance type API name. The snapshot below shows you how: +matches an EC2 instance type API name. The Snapshot below shows you how: |Use the GUI to set the name of a compute service offering to an EC2 instance type API name.| @@ -427,16 +427,16 @@ and if need be update the port. AWS API User Setup ~~~~~~~~~~~~~~~~~~ -In general, users need not be aware that they are using a translation +In general, Users need not be aware that they are using a translation service provided by CloudStack. They only need to send AWS API calls to CloudStack's endpoint, and it will translate the calls to the native CloudStack API. Users of the Amazon EC2 compatible interface will be able to keep their existing EC2 tools and scripts and use them with their CloudStack deployment, by specifying the endpoint of the -management server and using the proper user credentials. In order to do -this, each user must perform the following configuration steps: +management server and using the proper User credentials. In order to do +this, each User must perform the following configuration steps: -- Generate user credentials. +- Generate User credentials. - Register with the service. @@ -447,7 +447,7 @@ this, each user must perform the following configuration steps: AWS API Command-Line Tools Setup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To use the EC2 command-line tools, the user must perform these steps: +To use the EC2 command-line tools, the User must perform these steps: #. Be sure you have the right version of EC2 Tools. The supported version is available at diff --git a/source/installguide/overview/_overview.rst b/source/installguide/overview/_overview.rst index 3ba81aff0e..376cbc1481 100644 --- a/source/installguide/overview/_overview.rst +++ b/source/installguide/overview/_overview.rst @@ -23,7 +23,7 @@ For those who have already gone through a design phase and planned a more sophisticated deployment, or those who are ready to start scaling up a trial installation. With the following procedures, you can start using the more powerful features of CloudStack, such as advanced VLAN -networking, high availability, additional network elements such as load +networking, high availability, additional Network elements such as load balancers and firewalls, and support for multiple hypervisors including Citrix XenServer, KVM, and VMware vSphere. diff --git a/source/installguide/overview/_requirements.rst b/source/installguide/overview/_requirements.rst index 173e32908f..c46f90ed69 100644 --- a/source/installguide/overview/_requirements.rst +++ b/source/installguide/overview/_requirements.rst @@ -25,7 +25,7 @@ Management Server, Database, and Storage System Requirements The machines that will run the Management Server and MySQL database must meet the following requirements. The same machines can also be used to provide primary and secondary storage, such as via localdisk or NFS. The -Management Server may be placed on a virtual machine. +Management Server may be placed on an Instance. - Operating system: diff --git a/source/plugins/cloudian-connector.rst b/source/plugins/cloudian-connector.rst index 58bb170a90..addd869b3b 100644 --- a/source/plugins/cloudian-connector.rst +++ b/source/plugins/cloudian-connector.rst @@ -26,8 +26,8 @@ Connector integrates Cloudian S3 Storage into the CloudStack Management GUI and allows administrators to easily give their CloudStack users access to and manage their own S3 storage areas. -Compatibilty -~~~~~~~~~~~~ +Compatibility +~~~~~~~~~~~~~ The following table shows the compatiblity of Cloudian Connector with CloudStack. @@ -81,10 +81,10 @@ logged in. User Mapping and Provisioning/De-provisioning ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -CloudStack domains are mapped to Cloudian Groups. CloudStack accounts within +CloudStack domains are mapped to Cloudian Groups. CloudStack Accounts within those domains are mapped to Cloudian users. The Cloudian user and group are created on demand if it doesn’t already exist when the CloudStack user accesses -CMC through the Cloudian Storage button. When accounts and domains are created +CMC through the Cloudian Storage button. When Accounts and domains are created or removed in CloudStack, they automatically create or remove users or groups in CMC. @@ -166,7 +166,7 @@ Edit Puppet config to enable SSO on all CMC servers: .. note:: - Once configured in Puppet, you should roll out out to each CMC server and + Once configured in Puppet, you should roll out to each CMC server and restart CMC services. Please refer to the HyperStore documentation for how to do this. @@ -316,13 +316,13 @@ directly to S3 but instead talk through the standard file system API. As such, CloudStack requires an NFS staging server which the Hypervisors use to read and write data from/to. The NFS storage requirements for the staging server are small however as space is only required while objects are staged (moving) -between the S3 server and the VMs. +between the S3 server and the Instances. DNS Name Resolution Requirement ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -All CloudStack Management Servers, system VMs and customer VMs (if required) +All CloudStack Management Servers, System VMs and customer Instances (if required) must be able to resolve your S3 bucket names. Usually, if you already have Cloudian installed and running in your environment, this is already working. At a minimum the following names should resolve to the correct IP addresses @@ -348,7 +348,7 @@ Adding Cloudian as CloudStack Secondary Storage Setup a Cloudian User and Bucket for Secondary Storage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -S3 Secondary Storage stores the CloudStack templates, snapshots etc in a +S3 Secondary Storage stores the CloudStack Templates, Snapshots etc in a dedicated S3 Bucket. To properly configure CloudStack you will need to know the S3 Bucket name and how to access your S3 Server (the S3 endpoint, access key and secret key). @@ -379,9 +379,9 @@ Create a dedicated bucket: Open Up Access to your S3 Network from Secondary Storage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -If your S3 server is on a different network to your Secondary Storage VM, you -will need to open up access to the S3 network. This also allows users to -download templates from their S3 object store areas. +If your S3 server is on a different Network to your Secondary Storage VM, you +will need to open up access to the S3 Network. This also allows users to +download Templates from their S3 object store areas. .. figure:: /_static/images/cloudian-ss_globalopt.png :align: center @@ -450,13 +450,13 @@ Adding S3 Secondary Storage: When you have finished adding Cloudian as Secondary Storage in the previous steps, CloudStack will populate the new secondary storage with the system and -default templates. This can take some time do download as the templates are +default Templates. This can take some time do download as the Templates are quite big. .. note:: - You can check if the system template and the default template have properly + You can check if the system Template and the default Template have properly downloaded to the new secondary storage by navigating to Templates, selecting a - template, clicking on the Zones tab and checking its Status is Ready 100% + Template, clicking on the Zones tab and checking its Status is Ready 100% Downloaded. .. note:: diff --git a/source/plugins/cloudstack-kubernetes-provider.rst b/source/plugins/cloudstack-kubernetes-provider.rst new file mode 100644 index 0000000000..f093dee6a1 --- /dev/null +++ b/source/plugins/cloudstack-kubernetes-provider.rst @@ -0,0 +1,153 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + +The CloudStack Kubernetes Provider +================================== + +Introduction +------------ + +The CloudStack Kubernetes Provider facilitates Kubernetes deployments on Cloudstack. +It allows Kubernetes to dynamically allocate IP addresses and the respective networking +rules on CloudStack to ensure seamless TCP, UDP and TCP-Proxy LoadBalancer deployments +on Kubernetes. + +It also automatically manages these rules modifying them based on the deployment as well +as the size of the cluster. + +It was initially the Cloudstack provider in Kubernetes which was later extracted to allow +for pluggable providers. + +The Prebuilt containers are available on `Docker Hub `_. + +Deployment +---------- +The CloudStack Kubernetes Provider is automatically deployed when a Kuberentes Cluster is +created on CloudStack 4.16+ + +In order to communicate with CloudStack, a separate service user **kubeadmin** is created +in the same Account as the cluster owner. The provider uses this user's API keys to get +the details of the cluster as well as update the networking rules. It is imperative that +this user is not altered or have its keys regenerated. + +The provider can also be manually deployed with instructions `here +`_ + +Further details as well as instructions on how to build and contribute to the project can be found `here +`_ + +Usage +----- + +In the following example, a LoadBalancer Service is created to balance traffic between the nodes in +a cluster. The DaemonSet creates pods and maps the ports on the pods to the same ports on the host. +The LoadBalancer creates an externally-accessible IP address that sends traffic to the correct port +on the cluster nodes. + +#. The following yaml creates a DaemonSet which brings up a pod on every node and maps port 80 and + 443 from the pod to the node. The LoadBalancer Service then creates a public IP to balance traffic + on port 80 and 443 between the nodes. + + .. parsed-literal:: + --- + apiVersion: v1 + kind: Service + metadata: + name: traefik + annotations: + service.beta.kubernetes.io/cloudstack-load-balancer-proxy-protocol: enabled + spec: + type: LoadBalancer + ports: + - name: http + port: 80 + targetPort: http + - name: https + port: 443 + targetPort: https + --- + apiVersion: v1 + kind: ConfigMap + metadata: + name: traefik-conf + data: + traefik.toml: | + defaultEntryPoints = ["http"] + [entryPoints] + [entryPoints.http] + address = ":80" + [entryPoints.http.proxyProtocol] + trustedIPs = ["127.0.0.1/32", "10.0.0.1/32"] + [entryPoints.https] + address = ":443" + [entryPoints.https.proxyProtocol] + trustedIPs = ["127.0.0.1/32", "10.0.0.1/32"] + --- + apiVersion: apps/v1 + kind: DaemonSet + metadata: + name: traefik-ingress-controller + spec: + selector: + matchLabels: + name: traefik-ingress-controller + template: + metadata: + labels: + name: traefik-ingress-controller + spec: + hostNetwork: true + containers: + - args: + - --configfile=/config/traefik.toml + image: traefik:1.7.12 + imagePullPolicy: Always + name: traefik-ingress + ports: + - containerPort: 80 + hostPort: 80 + name: http + protocol: TCP + - containerPort: 443 + hostPort: 443 + name: https + protocol: TCP + volumeMounts: + - mountPath: /config + name: config + volumes: + - configMap: + defaultMode: 420 + name: traefik-conf + name: config + + It can be deployed by running the command + + .. parsed-literal:: + kubectl apply -f https://raw.githubusercontent.com/apache/cloudstack-kubernetes-provider/main/traefik-ingress-controller.yml + +#. On successfully deploying the yaml file, a new Public IP Address in the same Network + as the cluster will be created. It will automatically have the firewall and port forwarding + rules configured to distribute any traffic amongst the cluster worker nodes + +|ckp-ip.png| + +|ckp-ip-fw.png| + +|ckp-ip-lb.png| + +.. |ckp-ip.png| image:: /_static/images/ckp-ip.png +.. |ckp-ip-fw.png| image:: /_static/images/ckp-ip-fw.png +.. |ckp-ip-lb.png| image:: /_static/images/ckp-ip-lb.png diff --git a/source/plugins/cloudstack-kubernetes-service.rst b/source/plugins/cloudstack-kubernetes-service.rst index ac26bd8fb6..70f394d515 100644 --- a/source/plugins/cloudstack-kubernetes-service.rst +++ b/source/plugins/cloudstack-kubernetes-service.rst @@ -15,13 +15,15 @@ CloudStack Kubernetes Service The Kubernetes Service plugin adds Kubernetes integration to CloudStack. The plugin is disabled by default and an admin can enable it using a Global Setting. It enables users to run containerized services using Kubernetes clusters. -Kubernetes Service plugin uses a CoreOS based template for node VMs for the Kubernetes cluster. CoreOS has been used as it provides docker installation and networking rules needed for Kubernetes by default. In future, different guest OSes might be used. For installation of Kubernetes binaries on cluster nodes, a binaries ISO is used for each Kubernetes version to be made available via CloudStack. This allows faster, offline installation of Kubernetes binaries and docker images along with support for adding multiple versions of Kubernetes for upgrades and running different clusters. +With CoreOS having reached EOL, from 4.16 the Kubernetes Service Plugin will use the existing SystemVM Template for deploying kubernetes clusters. For installation of Kubernetes binaries on the cluster nodes, a binaries ISO is used for each Kubernetes version to be made available via CloudStack. This allows faster, offline installation of Kubernetes binaries and docker images along with support for adding multiple versions of Kubernetes for upgrades and running different clusters. -For deployment and setup of Kubernetes on cluster nodes, the plugin uses the Kubernetes tool, 'kubeadm'. kubeadm is the command-line tool for easily provisioning a secure Kubernetes cluster on top of physical or cloud servers or virtual machines. Under the hood, control node(s) of the cluster starts a Kubernetes cluster using kubeadm init command with a custom token, and worker nodes join this Kubernetes cluster using kubeadm join command with the same token. More about kubeadm here: https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/. Weave Net CNI provider plugin is used for cluster networking. More about Weave Net provide plugin here: https://www.weave.works/docs/net/latest/kubernetes/kube-addon/. +For deployment and setup of Kubernetes on cluster nodes, the plugin uses the Kubernetes tool, 'kubeadm'. kubeadm is the command-line tool for easily provisioning a secure Kubernetes cluster on top of physical or cloud servers or Instances. Under the hood, control node(s) of the cluster starts a Kubernetes cluster using kubeadm init command with a custom token, and worker nodes join this Kubernetes cluster using kubeadm join command with the same token. More about kubeadm here: https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/. Weave Net CNI provider plugin is used for cluster networking. More about Weave Net provide plugin here: https://www.weave.works/docs/net/latest/kubernetes/kube-addon/. To access the Kubernetes dashboard securely, the plugin provides access to kubeconfig file data which uses the Kubernetes tool kubectl to run a local proxy and thereby access the dashboard. More about kubectl here: https://kubernetes.io/docs/reference/kubectl/overview/ -The service allows creation of Kubernetes clusters using the UI or API. Both UI and API provide the ability to list, delete, scale upgrade, stop and start these clusters. +The service allows creation of Kubernetes clusters using the UI or API. Both UI and API provide the ability to list, delete, scale, upgrade, stop and start these clusters. + +From ACS 4.19 onwards, you can also create `ExternalManaged` kubernetes clusters using the API. This helps provide a centralized view of kubernetes clusters managed by other providers. Enabling the Kubernetes Service -------------------------------- @@ -38,9 +40,10 @@ Restart the Management Server to enable the set configuration values. # service cloudstack-management restart - # service cloudstack-usage restart +Once the Kubernetes service is running the new APIs will become accessible and the UI will show the Kubernetes tab under the Compute section. -Once the Kubernetes service is running the new APIs will become accessible and the UI will start show a Kubernetes Service tab. +**NOTE:** +From ACS 4.16 onwards, if a CKS cluster is to be deployed on VMware, the 'vmware.create.full.clone' configuration parameter will need to be set to true, so as to allow resizing of root volumes of the cluster nodes. Kubernetes Supported Versions ------------------------------ @@ -50,21 +53,34 @@ The Kubernetes service provides the functionality to manage multiple supported K - http://download.cloudstack.org/cks/ - http://packages.shapeblue.com/cks/ -A script is provided (see below) to add other Kubernetes versions. Once an ISO is created for a Kubernetes version it can be added in the service and other CRUD operations can be performed using both the UI and API. Using a pre-packaged ISO containing required binaries and docker images allows faster provisioning on the node virtual machines of a Kubernetes cluster. Complete offline provisioning of the Kubernetes cluster is not supported at present as the kubeadm init command needs active Internet access. +A script is provided (see below) to add other Kubernetes versions. Once an ISO is created for a Kubernetes version it can be added in the service and other CRUD operations can be performed using both the UI and API. Using a pre-packaged ISO containing required binaries and docker images allows faster provisioning on the node Instances of a Kubernetes cluster. Complete offline provisioning of the Kubernetes cluster is not supported at present as the kubeadm init command needs active Internet access. A script named create-kubernetes-binaries-iso.sh has been provided in the cloudstack-common package for creating a new setup ISO with the desired version of Kubernetes binaries and corresponding docker images. +Eg: To generate the latest kubernetes iso + +.. parsed-literal:: + + 1.27.2, kubernetes version, see https://github.com/kubernetes/kubernetes/releases + 1.3.0, CNI version, see https://github.com/containernetworking/plugins/releases + 1.27.0, cri-tools version, see https://github.com/kubernetes-sigs/cri-tools/releases + 1.11, weave addon for kubernetes, see https://github.com/weaveworks/weave/tree/master/prog/weave-kube + 2.7.0, kubernetes dashboard version, see https://github.com/kubernetes/dashboard/release + Usage: .. parsed-literal:: - # ./create-kubernetes-binaries-iso.sh OUTPUT_PATH KUBERNETES_VERSION CNI_VERSION CRICTL_VERSION WEAVENET_NETWORK_YAML_CONFIG DASHBOARD_YAML_CONFIG + # ./create-kubernetes-binaries-iso.sh OUTPUT_PATH KUBERNETES_VERSION CNI_VERSION CRICTL_VERSION WEAVENET_NETWORK_YAML_CONFIG DASHBOARD_YAML_CONFIG [OPTIONAL_OUTPUT_FILENAME] Eg: .. parsed-literal:: - # ./create-kubernetes-binaries-iso.sh ./ 1.12.5 0.7.1 1.12.0 "https://cloud.weave.works/k8s/net?k8s-version=1.12.5" https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta1/aio/deploy/recommended.yaml + # ./create-kubernetes-binaries-iso.sh ./ 1.27.2 1.3.0 1.27.0 https://raw.githubusercontent.com/weaveworks/weave/master/prog/weave-kube/weave-daemonset-k8s-1.11.yaml https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml setup-v1.27.2 + +**NOTE:** +From ACS 4.16 onwards, Kubernetes versions >= 1.20.x are only supported (https://endoflife.date/kubernetes). Working with Kubernetes supported version ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -128,41 +144,43 @@ Deleting supported Kubernetes version deleteKubernetesSupportedVersion API has been provided for admins to delete an existing supported version if it is not used by any Kubernetes cluster in the service. id parameter of the API can be used to pass Kubernetes version to be deleted. .. note:: - addKubernetesSupportedVersion, updatedKubernetesSupportedVersion and deleteKubernetesSupportedVersion APIs are available to admin only + addKubernetesSupportedVersion, updateKubernetesSupportedVersion and deleteKubernetesSupportedVersion APIs are available to root admins only Kubernetes clusters -------------------- -The Kubernetes service provides the functionality of running and managing Kubernetes clusters. Highly available, scalable Kubernetes clusters can be created to run containerized deployments without having to set up Kubernetes on each container node manually. The service will automatically provision the desired number of virtual machines as per cluster size using the binaries from the given Kubernetes version. Additionally, the service provides the functionality to upgrade and scale clusters. Running clusters can be upgraded to a newer minor or patch Kubernetes version at a time. Running clusters can also be scaled for the number of worker nodes up and down and for the service offering used by each node. +The Kubernetes service provides the functionality of running and managing Kubernetes clusters. Highly available, scalable Kubernetes clusters can be created to run containerized deployments without having to set up Kubernetes on each container node manually. The service will automatically provision the desired number of Instances as per cluster size using the binaries corresponding to the provided Kubernetes version. Additionally, the service provides the functionality to upgrade and scale clusters. Running clusters can be upgraded to a newer minor or patch Kubernetes version at a time. Running clusters can also be scaled up or down based on the number of worker nodes provided and to the service offering used by each node. -This provides functionality to create Kubernetes clusters for Shared, Isolated and VPC networks in CloudStack, but such networks must be accessible to the CloudStack management server for provisioning virtual machines on the cluster. Template and default network offering must be set Global Settings for the service to create Kubernetes clusters. +This provides functionality to create Kubernetes clusters for Shared, Isolated and VPC Networks in CloudStack, but such Networks must be accessible to the CloudStack management server for provisioning Instances on the cluster. The default Network offering must be set in the Global Settings for the service to create Kubernetes clusters. -.. note:: - In case of isolated and VPC networks, if egress rules and ACLs don't allow traffic the setup of the Kubernetes cluster and deployment of pods may fail due to inability of fetching the images from public network. +The following Global Setting value must be set to the name of Network Offering to be used for creating a new Network when no Network has been selected while creating a Kubernetes cluster: -The following Global Settings value must be set to the name of Template to be used for deploying node virtual machines for the respective hypervisor while creating a Kubernetes cluster: +.. parsed-literal:: -- **cloud.kubernetes.cluster.template.name.hyperv** (Name of the template to be used for creating Kubernetes cluster nodes on HyperV) -- **cloud.kubernetes.cluster.template.name.kvm** (Name of the template to be used for creating Kubernetes cluster nodes on KVM) -- **cloud.kubernetes.cluster.template.name.vmware** (Name of the template to be used for creating Kubernetes cluster nodes on VMware) -- **cloud.kubernetes.cluster.template.name.xenserver** (Name of the template to be used for creating Kubernetes cluster nodes on Xenserver) + cloud.kubernetes.cluster.network.offering -Using a CoreOS template is required - you can find CoreOS templates for CloudStack here, http://dl.openvm.eu/cloudstack/coreos/x86_64/ +A new Network offering named DefaultNetworkOfferingforKubernetesService has been added since 4.14.0 .. note:: - For VMware, CoreOS template must be registered with root disk controller as **pvscsi** and NIC adapter type as **Vmxnet3**. + - Multi-control nodes, HA cluster can be created for Kubernetes version 1.16 and above only. + - While creating multi-control nodes, HA cluster over a shared Network, an external load-balancer must be manually setup. This load-balancer should have port-forwarding rules for SSH, Kubernetes API server access. Service assumes SSH access to cluster nodes is available from port 2222 to (2222 + cluster node count -1). Similarly, for API access 6443 must be forwarded to control nodes. Over the CloudStack isolated Network these rules are automatically provisioned. + + +Examples of how to ssh into the Control and Worker nodes -The following Global Setting value must be set to the name of Network Offering to be used for creating a new network when no network has been selected while creating a Kubernetes cluster: +Control node .. parsed-literal:: - cloud.kubernetes.cluster.network.offering + ssh -i -p 2222 cloud@ + +Worker node + +.. parsed-literal:: -A new network offering named DefaultNetworkOfferingforKubernetesService has been added since 4.14.0 + ssh -i -p 2223 cloud@ -.. note:: - - Multi-control nodes, HA cluster can be created for Kubernetes version 1.16 and above only. - - While creating multi-control nodes, HA cluster over a shared network, an external load-balancer must be manually setup. This load-balancer should have port-forwarding rules for SSH, Kubernetes API server access. Service assumes SSH access to cluster nodes is available from port 2222 to (2222 + cluster node count -1). Similarly, for API access 6443 must be forwarded to control nodes. Over the CloudStack isolated network these rules are automatically provisioned. + Managing Kubernetes clusters ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -172,24 +190,26 @@ For Kubernetes cluster management, the service provides create, stop, start, sca Creating a new Kubernetes cluster ################################## -New Kubernetes clusters can be create using API or from UI. User will be provided with a Add Kubernetes Cluster form as shown below, +New Kubernetes clusters can be created using the API or via the UI. User will be provided with an 'Add Kubernetes Cluster' form as shown below, |cks-create-cluster-form.png| createKubernetesCluster API can be used to create new Kubernetes cluster. It takes following parameters as input, - **name** (name for the Kubernetes cluster; Required) -- **description** (description for the Kubernetes cluster; Required) +- **description** (description for the Kubernetes cluster) - **zoneid** (availability zone in which Kubernetes cluster to be launched; Required) -- **kubernetesversionid** (Kubernetes version with which cluster to be launched; Required) -- **serviceofferingid** (the ID of the service offering for the virtual machines in the cluster; Required) -- **account** (an optional account for the virtual machine. Must be used with domainId) -- **domainid** (an optional domainId for the virtual machine. If the account parameter is used, domainId must also be used) +- **clustertype** (Define the type of cluster: `CloudManaged` (managed by CloudStack), `ExternalManaged` (managed by an external kubernetes provider). Defaults to `CloudManaged`) +- **kubernetesversionid** (Kubernetes version with which cluster to be launched; Required for CloudManaged clusters) +- **serviceofferingid** (the ID of the service offering for the Instances in the cluster; Required for CloudManaged clusters) +- **account** (an optional Account for the Instance. Must be used with domainId) +- **domainid** (an optional domainId for the Instance. If the account parameter is used, domainId must also be used) - **projectid** (Deploy cluster for the project) - **networkid** (Network in which Kubernetes cluster is to be launched) -- **keypair** (name of the ssh key pair used to login to the virtual machines) -- **controlnodes** (number of Kubernetes cluster control nodes, default is 1) externalloadbalanceripaddress (external load balancer IP address while using shared network with Kubernetes HA cluster) -- **size** (number of Kubernetes cluster worker nodes; Required) +- **keypair** (name of the ssh key pair used to login to the Instances) +- **controlnodes** (number of Kubernetes cluster control nodes, default is 1) +- **externalloadbalanceripaddress** (external load balancer IP address while using shared Network with Kubernetes HA cluster) +- **size** (number of Kubernetes cluster worker nodes; Required for manage clusters) - **noderootdisksize** (root disk size of root disk for each node) - **dockerregistryusername** (username for the docker image private registry; Experimental) - **dockerregistrypassword** (password for the docker image private registry; Experimental) @@ -227,13 +247,13 @@ For example: } } -On successful creation, the new cluster will be automatically started and will show up in Running state. If creation of the new cluster fails it can be in following states: -- Alert – When node virtual machines were successfully provisioned, and cluster API server is accessible but further provisioning steps could not be completed. -- Error – When the service has unable to provision node virtual machines for the cluster or cluster API server is not accessible. +On successful creation, the new cluster will automatically be started and will show up in Running state. If creation of the new cluster fails it can be in following states: +- Alert – When node Instances were successfully provisioned, and cluster API server is accessible but further provisioning steps could not be completed. +- Error – When the service was unable to provision the node Instances for the cluster or if the cluster API server is not accessible. .. note:: - - For CoreOS, a minimum of 2 cores of CPU and 2GB of RAM is needed for deployment. Therefore, the serviceofferingid parameter of createKuberntesCluster API must be provided with the ID of such compute offerings that conform to these requirements. - - Private docker registry related parameters of createKubentesCluster API (dockerregistryusername, dockerregistryusername, dockerregistryurl, dockerregistryemail) provides experimental functionality. To use them during cluster deployment value for global setting, cloud.kubernetes.cluster.experimental.features.enabled, must be set as true by admin beforehand. + - A minimum of 2 cores of CPU and 2GB of RAM is needed for deployment. Therefore, the serviceofferingid parameter of createKubernetesCluster API must be provided with the ID of such compute offerings that conform to these requirements. + - Private docker registry related parameters of createKubenetesCluster API (dockerregistryusername, dockerregistryusername, dockerregistryurl, dockerregistryemail) provides experimental functionality. To use them during cluster deployment value for global setting, cloud.kubernetes.cluster.experimental.features.enabled, must be set to true by admin beforehand. Listing Kubernetes clusters ############################ @@ -245,18 +265,20 @@ listKubernetesCluster API can be used to list existing Kubernetes clusters. id p Stopping Kubernetes cluster ############################ -A running Kubernetes cluster can be stopped using both the API and |cks-stop-action.png| action icon from UI. action icon is shown for a running cluster in the UI. +A running Kubernetes cluster can be stopped using either the stopKubernetesCluster API which takes id of the cluster as an input parameter or |cks-stop-action.png| action icon from UI. action icon is shown for a running cluster in the UI. -stopKubernetesCluster can be used to stop a running cluster. It takes id of the cluster as the input parameter. +.. note:: + This operation is supported only for CloudManaged kubernetes cluster. Starting a stopped Kubernetes cluster ###################################### -A stopped Kubernetes cluster can be started using both API and the |cks-start-action.png| action icon from UI. action icon is shown for a stopped cluster in the UI. +A stopped Kubernetes cluster can be started using either the startKubernetesCluster API which takes id of the cluster as the input parameter or the |cks-start-action.png| action icon from UI. action icon is shown for a stopped cluster in the UI. -startKubernetesCluster can be used to start a stopped cluster. It takes id of the cluster as the input parameter. +When the service fails to start a stopped cluster, the cluster will show in Alert state else it will show up as Running. -When the service fails to start a stopped cluster, the cluster will show in Alert state else it will show in Running state. +.. note:: + This operation is supported only for CloudManaged kubernetes cluster. Scaling Kubernetes cluster ########################### @@ -265,15 +287,17 @@ A running or stopped Kubernetes cluster can be scaled using both API and UI. |ck |cks-scale-cluster-form.png| -scaleKubernetesCluster API can be used to scale a running (or stopped cluster) for a desired cluster size and service offering. It takes following parameters as input, +scaleKubernetesCluster API can be used to scale a running (or stopped cluster) to a desired cluster size and service offering. It takes the following parameters as input: - **id** (the ID of the Kubernetes cluster to be scaled; Required) -- **serviceofferingid** (the ID of the new service offering for the virtual machines in the cluster) +- **serviceofferingid** (the ID of the new service offering for the Instances in the cluster) - **size** (number of Kubernetes cluster worker nodes) -Only running Kubernetes clusters can be scaled for size. When the service fails to scale the cluster, the cluster will show in Alert state else if the scaling is successfull cluster will show up in Running state. +Only running Kubernetes clusters can be scaled in size. When the service fails to scale the cluster, the cluster will show in Alert state else if the scaling is successfull cluster will show up in Running state. -Note: Only upscaling is supported while scaling clusters for service offering. +.. note:: + - Only up scaling is supported while scaling clusters for service offering. + - This operation is supported only for CloudManaged kubernetes cluster Upgrading Kubernetes cluster ############################# @@ -282,30 +306,30 @@ A running Kubernetes cluster can be upgraded using both API and UI. |cks-upgrade |cks-upgrade-cluster-form.png| -upgradeKubernetesCluster API can be used to upgrade a running cluster. It takes following parameters as input: +upgradeKubernetesCluster API can be used to upgrade a running cluster. It takes the following parameters as input: - **id** (the ID of the Kubernetes cluster to be upgraded; Required) - **kubernetesversionid** (Kubernetes version with which cluster to be launched; Required) -When the service fails to upgrade the cluster, the cluster will show in Alert state. If the upgrade has been successful cluster will show in Running state. +When the service fails to upgrade the cluster, the cluster will show up in Alert state, else if successful, the cluster appears Running state. -.. note:: Kubernetes can be upgraded from one MINOR version to the next MINOR version, or between PATCH versions of the same MINOR. That is, you cannot skip MINOR versions when you upgrade. For example, you can upgrade from 1.y to 1.y+1, but not from 1.y to 1.y+2. Therefore, service can upgrade running clusters in the similar manner only. +.. note:: + - Kubernetes can be upgraded from one MINOR version to the next MINOR version, or between PATCH versions of the same MINOR. That is, you cannot skip MINOR versions when you upgrade. For example, you can upgrade from 1.y to 1.y+1, but not from 1.y to 1.y+2. Therefore, service can upgrade running clusters in the similar manner only. + - This operation is supported only for CloudManaged kubernetes cluster Deleting Kubernetes cluster ############################ -Both UI and API can be used to delete a created Kubernetes cluster. |cks-delete-action.png| action icon will be available in UI to delete a cluster. +A kubernetes cluster can be deleted using either the deleteKubernetesCluster API which takes cluster id as the input parameter or the |cks-delete-action.png| action icon from the UI. -deleteKubernetesCluster can be used to delete a cluster. It takes id of the cluster as the input parameter. - -The Kubernetes service runs a background state scanner process which regularly checks for cluster health. For clusters in Alert state, this background process verifies their state and moves them to Running state if all node virtual machines for the cluster are running and API server for the cluster is accessible. +The Kubernetes service runs a background state scanner process which regularly checks the cluster health. For clusters in Alert state, this background process verifies their state and moves them to Running state if all node Instances of the cluster are running and the API server for the cluster is accessible. Working with Kubernetes cluster ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |cks-cluster-details-tab.png| -Once a Kubernetes cluster is created successfully and it is running state, it can be accessed using kubectl tool using cluster’s kubeconfig file. The web dashboard can be accessed by running local proxy using kubectl. Deployments in the cluster can be done using kubectl or web dashboard. More about deployment in Kubernetes here: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ +Once a Kubernetes cluster is created successfully and is in Running state, it can be accessed using the kubectl tool using the cluster’s kubeconfig file. The web dashboard can be accessed by running a local proxy using kubectl. Deployments in the cluster can be done using kubectl or web dashboard. More about deployment in Kubernetes here: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ Accessing Kubernetes cluster ############################# @@ -321,7 +345,7 @@ Kubernetes cluster web dashboard The service while creating a cluster automatically deploys dashboard for the cluster. More details about Kubernetes dashboard here: https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/ -Instructions for accessing the dashboard for a running cluster will be shown in the Access tab in the UI. Essentially, the user needs to run a local proxy first using kubectl and kubecofig file for the cluster to access the dashboard. For secure login, the service doesn’t enable kubeconfig based login for the dashboard. Token-based access is enabled and kubectl can be used to access service account secret token. +Instructions for accessing the dashboard for a running cluster will be shown in the Access tab in the UI. Essentially, the user needs to run a local proxy first using kubectl and kubecofig file for the cluster to access the dashboard. For secure login, the service doesn’t enable kubeconfig based login for the dashboard. Token-based access is enabled and kubectl can be used to access service Account secret token. |cks-cluster-access-tab.png| @@ -331,7 +355,7 @@ The following command can be used, while passing the correct path to kubeconfig # kubectl --kubeconfig /custom/path/kube.config proxy -Once the proxy is running user can open the following URL in the browser to open the dashboard, +Once the proxy is running, users can open the following URL in the browser to access the dashboard, .. parsed-literal:: @@ -339,13 +363,48 @@ Once the proxy is running user can open the following URL in the browser to open |cks-cluster-dashboard.png| -Token for dashboard login can be retrieved using following command +Token for dashboard login can be retrieved using the following command: .. parsed-literal:: # kubectl --kubeconfig /custom/path/kube.config describe secret $(kubectl --kubeconfig /custom/path/kube.config get secrets -n kubernetes-dashboard | grep kubernetes-dashboard-token | awk '{print $1}') -n kubernetes-dashboard +Kubernetes compatibility Matrix +################################# + ++--------------+---------------------------------+-----------------------------+-------------+ +|ACS Version | Supported Kubernetes Versions | CKS Template | SSH User | ++==============+=================================+=============================+=============+ +| 4.14.x | v1.11 onward (< 1.18) | CoreOS | core | ++--------------+---------------------------------+-----------------------------+-------------+ +| 4.15.x | v1.11 onward (< 1.18) | CoreOS | core | ++--------------+---------------------------------+-----------------------------+-------------+ +| 4.16.0 | v1.20 onward | SystemVM Template (Debian) | core | ++--------------+---------------------------------+-----------------------------+-------------+ +| 4.16.1 | v1.20 onward | SystemVM Template (Debian) | cloud | ++--------------+---------------------------------+-----------------------------+-------------+ + +Adding/Removing Instances for an ExternalManaged Kubernetes Cluster +################################################################### +The Instances launched by the external kubernetes provider can be linked to the ExternalManaged kubernetes cluster. + +To add an Instance to an ExternalManaged Kubernetes cluster: + +.. code-block:: bash + + cmk add VirtualMachinesToKubernetesCluster id=59028a81-d9c9-46f6-bd16-8da918571c23 virtualmachineids=1d991764-3be8-4d2e-a9f1-2de2fc80ca72,97172931-286b-46c5-9427-ffc19315479e + +To remove an Instance from an ExternalManaged Kubernetes cluster: + +.. code-block:: bash + + cmk remove VirtualMachinesFromKubernetesCluster id=59028a81-d9c9-46f6-bd16-8da918571c23 virtualmachineids=1d991764-3be8-4d2e-a9f1-2de2fc80ca72,97172931-286b-46c5-9427-ffc19315479e + +.. note:: + These operations are only supported for an ExternalManaged Kubernetes Cluster + + .. |cks-add-version-form.png| image:: /_static/images/cks-add-version-form.png :alt: Add Kubernetes Supported Version form. .. |cks-cluster-access-tab.png| image:: /_static/images/cks-cluster-access-tab.png diff --git a/source/plugins/index.rst b/source/plugins/index.rst index 6c8ac83441..661ec82c3c 100644 --- a/source/plugins/index.rst +++ b/source/plugins/index.rst @@ -37,4 +37,5 @@ This is the Apache CloudStack Plugins guide. This section gives information for ipv6 quota cloudstack-kubernetes-service + cloudstack-kubernetes-provider.rst diff --git a/source/plugins/ipv6.rst b/source/plugins/ipv6.rst index ce22360b6a..81fe7a5cc0 100644 --- a/source/plugins/ipv6.rst +++ b/source/plugins/ipv6.rst @@ -23,10 +23,13 @@ traffic. IPv6 uses a 128-bit address that exponentially expands the current address space that is available to the users. IPv6 addresses consist of eight groups of four hexadecimal digits separated by colons, for example, 5001:0dt8:83a3:1012:1000:8s2e:0870:7454. CloudStack -supports IPv6 for public IPs in shared networks. With IPv6 support, VMs -in shared networks can obtain both IPv4 and IPv6 addresses from the DHCP -server. You can deploy VMs either in a IPv6 or IPv4 network, or in a -dual network environment. If IPv6 network is used, the VM generates a +supports IPv6 for shared and isolated networks. It also supports IPv6 for VPC Network Tiers. + +Shared network +-------------- +With IPv6 support, Instances in shared networks can obtain both IPv4 and IPv6 addresses from the DHCP +server. You can deploy Instances either in a IPv6 or IPv4 network, or in a +dual network environment. If IPv6 network is used, the Instance generates a link-local IPv6 address by itself, and receives a stateful IPv6 address from the DHCPv6 server. @@ -37,22 +40,22 @@ Here's the sequence of events when IPv6 is used: #. The administrator creates an IPv6 shared network in an advanced zone. -#. The user deploys a VM in an IPv6 shared network. +#. The user deploys an Instance in an IPv6 shared network. -#. The user VM generates an IPv6 link local address by itself, and gets +#. The user Instance generates an IPv6 link local address by itself, and gets an IPv6 global or site local address through DHCPv6. Prerequisites and Guidelines ----------------------------- +############################ Consider the following: - CIDR size must be 64 for IPv6 networks. -- The DHCP client of the guest VMs should support generating DUID based +- The DHCP client of the Guest Instances should support generating DUID based on Link-layer Address (DUID- LL). DUID-LL derives from the MAC - address of guest VMs, and therefore the user VM can be identified by + address of Guest Instances, and therefore the user Instance can be identified by using DUID. See `Dynamic Host Configuration Protocol for IPv6 `__\ for more information. @@ -69,28 +72,30 @@ Consider the following: available for address configuration in addition to any IPs set by using stateless address auto-configuration. -- Use the System VM template exclusively designed to support IPv6. - Download the System VM template from +- Use the System VM Template exclusively designed to support IPv6. + Download the System VM Template from `http://download.cloudstack.org/systemvm/ `__. - The concept of Default Network applies to IPv6 networks. However, unlike IPv4 CloudStack does not control the routing information of IPv6 in shared network; the choice of Default Network will not affect - the routing in the user VM. + the routing in the user Instance. + +- A shared network cannot be IPv6 only. Therefore, it is necessary to configure the IPv4 address range for the shared network with IPv6 addresses. The IPv4 range can be of a public or internal IPv4 network. - In a multiple shared network, the default route is set by the rack router, rather than the DHCP server, which is out of CloudStack - control. Therefore, in order for the user VM to get only the default - route from the default NIC, modify the configuration of the user VM, + control. Therefore, in order for the user Instance to get only the default + route from the default NIC, modify the configuration of the user Instance, and set non-default NIC's ``accept_ra`` to 0 explicitly. The ``accept_ra`` parameter accepts Router Advertisements and auto-configure ``/proc/sys/net/ipv6/conf/interface`` with received data. -Limitations of IPv6 in CloudStack ---------------------------------- +Limitations +########### The following are not yet supported: @@ -101,22 +106,22 @@ The following are not yet supported: #. Passwords -Guest VM Configuration for DHCPv6 ---------------------------------- +Guest Instance Configuration for DHCPv6 +####################################### -For the guest VMs to get IPv6 address, run dhclient command manually on -each of the VMs. Use DUID-LL to set up dhclient. +For the Guest Instances to get IPv6 address, run dhclient command manually on +each of the Instances. Use DUID-LL to set up dhclient. .. note:: - The IPv6 address is lost when a VM is stopped and started. Therefore, - use the same procedure to get an IPv6 address when a VM is stopped and + The IPv6 address is lost when an Instance is stopped and started. Therefore, + use the same procedure to get an IPv6 address when an Instance is stopped and started. #. Set up dhclient by using DUID-LL. Perform the following for DHCP Client 4.2 and above: - #. Run the following command on the selected VM to get the dhcpv6 + #. Run the following command on the selected Instance to get the dhcpv6 offer from VR: .. parsed-literal:: @@ -197,3 +202,145 @@ each of the VMs. Use DUID-LL to set up dhclient. iface eth0 inet6 dhcp autoconf 0 accept_ra 1 + + +Isolated network and VPC Network Tier +------------------------------------- + +.. note:: + - The IPv6 support for isolated networks and VPC Network Tiers is available from version 4.17.0. + + - The IPv6 isolated networks and VPC Network Tiers only supports **Static routing**, i.e, the administrator will need to add upstream routes for routing to work inside the networks. + + - IPv6 only isolated networks and VPC Network Tiers are not supported currently. Public network for IPv6 supported isolated networks and VPC Network Tiers must be on the same VLAN for both IPv4 and IPv6. + +Guest Instances in an isolated network or VPC Network Tier can obtain both IPv4 and IPv6 IP addresses by using a supported network offering and appropriate configurations for IPv6 support by the administrator. +Both VR for such networks and the Guest Instances using these networks obtain a SLAAC based IPv6 address. While VR is assigned an IPv6 address from the public IPv6 range, Guest Instances get their IPv6 addresses from the IPv6 subnet assigned to the network. + +Here's the sequence of events when IPv6 is used: + +#. The administrator sets global configuration - ``ipv6.offering.enabled`` to **true**. + +#. The administrator adds a public IPv6 range in an advanced zone. + +#. The administrator adds an IPv6 prefix for guest traffic type for the zone. + +#. The administrator creates a network or VPC offering with IPv4 + IPv6 (Dual stack) support. + +#. The user deploys an isolated network with the IPv6 supported network offering. For VPC, user creates a VPC with IPv6 supported VPC offering and then deploys a Network Tier with IPv6 supported network offering. + +#. CloudStack assigns a SLAAC based public IPv6 address to the network from the public IPv6 range of the zone. It also assigns an IPv6 subnet to the network from the guest IPv6 prefix for the zone. See `SLAAC `__\ for more information. + +#. The user deploys a Guest Instance in the network. The Instance is assigned a SLAAC based IPv6 address from the guest IPv6 subnet of the network. + + +Prerequisites and Guidelines +############################ + +Consider the following: + +- CIDR size for the public IPv6 range for a zone must be 64. + +- CIDR size for the guest IPv6 prefix for the zone must be lesser than 64. Each guest network is assigned a subnet from this prefix with CIDR size 64 therefore only as many IPv6 supporting guest networks can be deployed from the guest prefix as the number of subnets with CIDR size 64. + +- Currently, a guest network cannot be IPv6 only and it can only be either IPv4 only or Dual Stack (both IPv4 + IPv6). + +- Once a public IPv6 address and guest subnet are assigned to the network or the network is successfully, the operator must update routing in the upstream router. For this, CloudStack returns the gateway and subnet for the network with listNetworks API response. + + +Adding a Public IPv6 Range +########################## + +The administrator can use both UI and API to add a public IPv6 range. UI is the preferable option. +Option to add a new public IPv6 range in the UI can be found in Infrastructure > Zones > Zone details > Physical Network tab > Physical network details > Traffic Types tab > Public > *Add IP range*. +In the Add IP range form, IPv6 can be selected as the IP Range Type. IPv6 Gateway and CIDR must be provided and optionally a VLAN/VNI can be provided. + +Alternatively, ``createVlanIpRange`` API can be used to add a new public IPv6 range. + +|add-public-ipv6-range-form.png| + + + + .. note:: + - The public IPv6 address range or CIDR must be added with same VLAN as that of public IPv4 address range. + + - As SLAAC based public IPv6 addresses will be assigned to the networks therefore public IPv6 range must be added without specifying start and end IP addresses. + + +Adding Guest IPv6 Prefix +######################## + +Again, both UI and API to add a guest IPv6 prefix. UI is the preferable option. +Option to add a new public Ipv6 range in the UI can be found in Infrastructure > Zones > Zone details > Physical Network tab > Physical network details > Traffic Types tab > Guest > *Add IPv6 prefix*. +In the Add IPv6 prefix form, an IPv6 prefix with CIDR size lesser than 64 must be provided. + +Alternatively, ``createGuestNetworkIpv6Prefix`` API can be used to add a new guest IPv6 prefix. + +|add-guest-ipv6-prefix-form.png| + + +Adding Network or VPC Offering with IPv6 Support +################################################ + +To create an IPv6 suported network or VPC offering, global configuration - ``ipv6.offering.enabled`` must be set to **true**. + +With 4.17.0, a new paramter - ``internetprotocol`` has been added to: + - the ``createNetworkOffering`` API which can be used to create a network offering with IPv6 support by using the value dualstack. + - the ``createVPCOffering`` API which can be used to create a VPC offering with IPv6 support by using the value dualstack. +Corresponding option has also been provided in the UI form creating network/VPC offering: + +|add-ipv6-network-offering-form.png| + +|add-ipv6-vpc-offering-form.png| + + +Adding Upstream Route +##################### + +Currently, CloudStack supports IPv6 isolated networks and VPC Network Tiers only with **static** routes and therefore the administrator needs to add upstream IPv6 routes once a network is successfully deployed. +To facilitate the automation, *CloudStack Event Notification* can be used. CloudStack will generate appropriate events on network creation or deletion and while assigning or releasing a public IPv6 address for a network. Based on the events the corresponding network can be queried for the IPv6 routes that it needs configured in upstream network. +Upstream IPv6 routes required by an IPv6 supported isolated network or VPC Network Tier are also shown in the UI in the network details. + +|network-details-upstream-ipv6-routes.png| + + +IPv6 Firewall +############# + +For using and managing firewall rules with an IPv6 supported isolated network, CloudStack provides following APIs: + +- ``listIpv6FirewallRules`` - To list existing IPv6 firewall rules for a network. +- ``createIpv6FirewallRule`` - To create a new IPv6 firewall rules for a network. +- ``updateIpv6FirewallRule`` - To update an exisitng IPv6 firewall rules for a network. +- ``deleteIpv6FirewallRule`` - To delete an exisitng IPv6 firewall rules for a network. + +These operations are also available using UI in the network details view of an IPv6 supported network. + +|network-details-ipv6-firewall.png| + + +IPv6 ACL +######## + +IPv6 ACL rules for an IPv6 supported VPC Network Tier can be managed using Network ACL lists for the VPC. IPv6 CIDRs can be specified while adding or updating an ACL rule. + +|add-ipv6-acl-rule-form.png| +|ipv6-acl-list.png| + + +.. |add-public-ipv6-range-form.png| image:: /_static/images/add-public-ipv6-range-form.png + :alt: Add Public IPv6 Range form. +.. |add-guest-ipv6-prefix-form.png| image:: /_static/images/add-guest-ipv6-prefix-form.png + :alt: Add Guest IPv6 Prefix form. +.. |add-ipv6-network-offering-form.png| image:: /_static/images/add-ipv6-network-offering-form.png + :alt: Add IPv6 supported Network Offering form. +.. |add-ipv6-vpc-offering-form.png| image:: /_static/images/add-ipv6-vpc-offering-form.png + :alt: Add IPv6 supported VPC Offering form. +.. |network-details-upstream-ipv6-routes.png| image:: /_static/images/network-details-upstream-ipv6-routes.png + :alt: Upstream IPv6 routes in network details. +.. |network-details-ipv6-firewall.png| image:: /_static/images/network-details-ipv6-firewall.png + :alt: IPv6 Firewall management in network details. +.. |add-ipv6-acl-rule-form.png| image:: /_static/images/add-ipv6-acl-rule-form.png + :alt: Add IPv6 ACL rule. +.. |ipv6-acl-list.png| image:: /_static/images/ipv6-acl-list.png + :alt: IPv6 ACL rule in Network ACL list. diff --git a/source/plugins/midonet.rst b/source/plugins/midonet.rst index fab489e092..a7de6d57ac 100644 --- a/source/plugins/midonet.rst +++ b/source/plugins/midonet.rst @@ -21,7 +21,7 @@ Introduction to the MidoNet Plugin ---------------------------------- The MidoNet plugin allows CloudStack to use the MidoNet virtualized -networking solution as a provider for CloudStack networks and services. For +networking solution as a provider for CloudStack Networks and services. For more information on MidoNet and how it works, see http://www.midokura.com/midonet/. @@ -34,9 +34,9 @@ Features of the MidoNet Plugin combination with MidoNet. In CloudStack release 4.2.0 this plugin supports several services in the -Advanced Isolated network mode. +Advanced Isolated Network mode. -When tenants create new isolated layer 3 networks, instead of spinning +When tenants create new isolated layer 3 Networks, instead of spinning up extra Virtual Router VMs, the relevant L3 elements (routers etc) are created in the MidoNet virtual topology by making the appropriate calls to the MidoNet API. Instead of using VLANs, isolation is provided by @@ -69,8 +69,8 @@ the MidoNet Agent, and the MidoNet API server must be available. Please consult the MidoNet User Guide for more information. The following section describes the CloudStack side setup. -#. CloudStack needs to have at least one physical network with the - isolation method set to "MIDO". This network should be enabled for +#. CloudStack needs to have at least one physical Network with the + isolation method set to "MIDO". This Network should be enabled for the Guest and Public traffic types. #. Next, we need to set the following CloudStack settings under "Global @@ -121,8 +121,8 @@ section describes the CloudStack side setup. Enabling the MidoNet service provider via the UI ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To allow CloudStack to use the MidoNet Plugin the network service provider -needs to be enabled on the physical network. +To allow CloudStack to use the MidoNet Plugin the Network service provider +needs to be enabled on the physical Network. The steps to enable via the UI are as follows: @@ -152,11 +152,11 @@ To enable via the API, use the following API calls: - name = "MidoNet" -- physicalnetworkid = +- physicalnetworkid = *updateNetworkServiceProvider* -- id = +- id = - state = "Enabled" diff --git a/source/plugins/nicira-plugin.rst b/source/plugins/nicira-plugin.rst index 2fa447b4c3..6e1f780e8d 100644 --- a/source/plugins/nicira-plugin.rst +++ b/source/plugins/nicira-plugin.rst @@ -21,15 +21,15 @@ Introduction to the Nicira NVP Plugin ------------------------------------- The Nicira NVP plugin adds Nicira NVP as one of the available SDN -implementations in CloudStack. With the plugin an exisiting Nicira NVP -setup can be used by CloudStack to implement isolated guest networks and +implementations in CloudStack. With the plugin an existing Nicira NVP +setup can be used by CloudStack to implement isolated guest Networks and to provide additional services like routing and NAT. Features of the Nicira NVP Plugin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The following table lists the CloudStack network services provided by +The following table lists the CloudStack Network services provided by the Nicira NVP Plugin. .. cssclass:: table-striped table-bordered table-hover @@ -103,8 +103,8 @@ Make sure you have the following information ready: Zone Configuration ~~~~~~~~~~~~~~~~~~ -CloudStack needs to have at least one physical network with the isolation -method set to "STT". This network should be enabled for the Guest +CloudStack needs to have at least one physical Network with the isolation +method set to "STT". This Network should be enabled for the Guest traffic type. .. note:: @@ -115,14 +115,14 @@ traffic type. .. figure:: /_static/images/nvp-physical-network-stt.png :align: center - :alt: a screenshot of a physical network with the STT isolation type + :alt: a screenshot of a physical Network with the STT isolation type Enabling the service provider ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The Nicira NVP provider is disabled by default. Navigate to the "Network -Service Providers" configuration of the physical network with the STT +Service Providers" configuration of the physical Network with the STT isolation type. Navigate to the Nicira NVP provider and press the "Enable Provider" button. @@ -140,9 +140,9 @@ Device Management ~~~~~~~~~~~~~~~~~ In CloudStack a Nicira NVP setup is considered a "device" that can be added -and removed from a physical network. To complete the configuration of +and removed from a physical Network. To complete the configuration of the Nicira NVP plugin a device needs to be added to the physical -network. Press the "Add NVP Controller" button on the provider panel and +Network. Press the "Add NVP Controller" button on the provider panel and enter the configuration details. .. figure:: /_static/images/nvp-physical-network-stt.png @@ -153,7 +153,7 @@ enter the configuration details. Network Offerings ~~~~~~~~~~~~~~~~~ -Using the Nicira NVP plugin requires a network offering with Virtual +Using the Nicira NVP plugin requires a Network offering with Virtual Networking enabled and configured to use the NiciraNvp element. Typical use cases combine services from the Virtual Router appliance and the Nicira NVP plugin. @@ -184,17 +184,17 @@ Nicira NVP plugin. | Virtual Networking | NiciraNVP | +----------------------+-----------------+ -Table: Isolated network offering with regular services from the Virtual +Table: Isolated Network offering with regular services from the Virtual Router. .. figure:: /_static/images/nvp-physical-network-stt.png :align: center - :alt: a screenshot of a network offering. + :alt: a screenshot of a Network offering. .. note:: - The tag in the network offering should be set to the name of the - physical network with the NVP provider. + The tag in the Network offering should be set to the name of the + physical Network with the NVP provider. Isolated network with network services. The virtual router is still required to provide network services like dns and dhcp. @@ -242,14 +242,14 @@ Logical Switch VPC Offering with Nicira NVP ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To allow a VPC to use the Nicira NVP plugin to provision networks, a new +To allow a VPC to use the Nicira NVP plugin to provision Networks, a new VPC offering needs to be created which allows the Virtual Networking service to be implemented by NiciraNVP. This is not currently possible with the UI. The API does provide the proper calls to create a VPC offering with Virtual Networking enabled. However due to a limitation in the 4.1 API it is not possible to select -the provider for this network service. To configure the VPC offering +the provider for this Network service. To configure the VPC offering with the NiciraNVP provider edit the database table 'vpc\_offering\_service\_map' and change the provider to NiciraNvp for the service 'Connectivity' @@ -272,8 +272,8 @@ provider 'NiciraNvp' VPC Network Offerings ~~~~~~~~~~~~~~~~~~~~~ -The VPC needs specific network offerings with the VPC flag enabled. -Otherwise these network offerings are identical to regular network +The VPC needs specific Network offerings with the VPC flag enabled. +Otherwise these Network offerings are identical to regular Network offerings. To allow VPC networks with a Nicira NVP isolated network the offerings need to support the Virtual Networking service with the NiciraNVP provider. diff --git a/source/plugins/ovs-plugin.rst b/source/plugins/ovs-plugin.rst index 56608fc691..e48ca7314b 100644 --- a/source/plugins/ovs-plugin.rst +++ b/source/plugins/ovs-plugin.rst @@ -17,19 +17,28 @@ The OVS Plugin ============== +.. warning:: + The OVS Plugin was not maintained in some CloudStack versions. Please use CloudStack + 4.16.0.0 and later. If you wish to use OVS as the default networking backend on Linux, + only follow the Agent Configuration part of this guide. + CloudStack will automatically detect it up based on the configuration in the + agent.properties file. This in spite of the OVS Plugin not being shown in the + Network Service Providers. + + Introduction to the OVS Plugin ------------------------------ The OVS plugin is the native SDN -implementations in CloudStack, using GRE isolation method. The plugin can be -used by CloudStack to implement isolated guest networks and to provide +implementations in CloudStack, using GRE isolation method. The plugin can be +used by CloudStack to implement isolated guest Networks and to provide additional services like NAT, port forwarding and load balancing. Features of the OVS Plugin ~~~~~~~~~~~~~~~~~~~~~~~~~~ -The following table lists the CloudStack network services provided by +The following table lists the CloudStack Network services provided by the OVS Plugin. .. cssclass:: table-striped table-bordered table-hover @@ -48,12 +57,6 @@ the OVS Plugin. Table: Supported Services -.. note:: - If you wish to use OVS as the default networking backend on Linux, - just follow this guide and CloudStack will automatically pick it up - based on the configuration in the agent.properties file. This in spite - of the OVS Plugin not being shown in the Network Service Providers. - .. note:: The Virtual Networking service was originally called 'Connectivity' in CloudStack 4.0 @@ -79,33 +82,32 @@ Configuring the OVS Plugin Prerequisites ~~~~~~~~~~~~~ -Before enabling the OVS plugin the hypervisor needs to be install OpenvSwitch. -Default, XenServer has already installed OpenvSwitch. However, you must -install OpenvSwitch manually on KVM. CentOS 6.4 and OpenvSwitch 1.10 are +Before enabling the OVS plugin the hypervisor needs to be install OpenvSwitch. +Default, XenServer has already installed OpenvSwitch. However, you must +install OpenvSwitch manually on KVM. CentOS 6.4 and OpenvSwitch 1.10 are recommended. KVM hypervisor: - CentOS 6.4 is recommended. -- To make sure that the native bridge module will not interfere with - openvSwitch the bridge module should be added to the denylist. See the - modprobe documentation for your distribution on where to find the denylist - (likely named 'denylist'). - Make sure the module is not loaded either by rebooting or executing rmmod +- To make sure that the native bridge module will not interfere with + openvSwitch the bridge module should be added to the blacklist. See the + modprobe documentation for your distribution on where to find the blacklist. + Make sure the module is not loaded either by rebooting or executing rmmod bridge before executing next steps. Zone Configuration ~~~~~~~~~~~~~~~~~~ -CloudStack needs to have at least one physical network with the isolation -method set to “GRE”. This network should be enabled for the Guest +CloudStack needs to have at least one physical Network with the isolation +method set to “GRE”. This Network should be enabled for the Guest traffic type. .. note:: With KVM, the traffic type should be configured with the traffic label - that matches the name of the Integration Bridge on the hypervisor. For + that matches the name of the Integration Bridge on the hypervisor. For example, you should set the traffic label as following: - Management & Storage traffic: cloudbr0 @@ -116,7 +118,7 @@ traffic type. .. figure:: /_static/images/ovs-physical-network-gre.png :align: center - :alt: a screenshot of a physical network with the GRE isolation type + :alt: a screenshot of a physical Network with the GRE isolation type Agent Configuration @@ -125,10 +127,10 @@ Agent Configuration .. note:: Only for KVM hypervisor -- Configure network interfaces: +- Configure Network interfaces: :: - + /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none @@ -138,7 +140,7 @@ Agent Configuration TYPE=OVSPort DEVICETYPE=ovs OVS_BRIDGE=cloudbr0 - + /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BOOTPROTO=none @@ -148,7 +150,7 @@ Agent Configuration TYPE=OVSPort DEVICETYPE=ovs OVS_BRIDGE=cloudbr1 - + /etc/sysconfig/network-scripts/ifcfg-cloudbr0 DEVICE=cloudbr0 ONBOOT=yes @@ -159,7 +161,7 @@ Agent Configuration GATEWAY=172.16.10.1 NETMASK=255.255.255.0 HOTPLUG=no - + /etc/sysconfig/network-scripts/ifcfg-cloudbr1 DEVICE=cloudbr1 ONBOOT=yes @@ -167,7 +169,7 @@ Agent Configuration TYPE=OVSBridge BOOTPROTO=none HOTPLUG=no - + /etc/sysconfig/network NETWORKING=yes HOSTNAME=testkvm1 @@ -176,7 +178,7 @@ Agent Configuration - Edit /etc/cloudstack/agent/agent.properties :: - + network.bridge.type=openvswitch libvirt.vif.driver=com.cloud.hypervisor.kvm.resource.OvsVifDriver @@ -185,7 +187,7 @@ Enabling the service provider ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The OVS provider is disabled by default. Navigate to the "Network -Service Providers" configuration of the physical network with the GRE +Service Providers" configuration of the physical Network with the GRE isolation type. Navigate to the OVS provider and press the "Enable Provider" button. @@ -197,7 +199,7 @@ isolation type. Navigate to the OVS provider and press the Network Offerings ~~~~~~~~~~~~~~~~~ -Using the OVS plugin requires a network offering with Virtual +Using the OVS plugin requires a Network offering with Virtual Networking enabled and configured to use the OVS element. Typical use cases combine services from the Virtual Router appliance and the OVS plugin. @@ -228,20 +230,20 @@ OVS plugin. | Virtual Networking | OVS | +----------------------+-----------------+ -Table: Isolated network offering with regular services from the Virtual +Table: Isolated Network offering with regular services from the Virtual Router. .. figure:: /_static/images/ovs-network-offering.png :align: center - :alt: a screenshot of a network offering. + :alt: a screenshot of a Network offering. .. note:: - The tag in the network offering should be set to the name of the - physical network with the OVS provider. + The tag in the Network offering should be set to the name of the + physical Network with the OVS provider. -Isolated network with network services. The virtual router is still -required to provide network services like dns and dhcp. +Isolated Network with Network services. The virtual router is still +required to provide Network services like dns and dhcp. .. cssclass:: table-striped table-bordered table-hover @@ -265,7 +267,7 @@ required to provide network services like dns and dhcp. | Virtual Networking | OVS | +----------------------+-----------------+ -Table: Isolated network offering with network services +Table: Isolated Network offering with Network services Using the OVS plugin with VPC @@ -287,7 +289,7 @@ Agent configuration - Edit /etc/cloudstack/agent/agent.properties to enable DPDK support on the agent and on ovs-vstcl commands for port creations as well as the path to OVS ports (usually: /var/run/openvswitch) :: - + openvswitch.dpdk.enabled=true openvswitch.dpdk.ovs.path=OVS_PATH @@ -296,19 +298,19 @@ Agent should be restarted for actions to take effect. When the host agent connects to the management server, it sends the list of hosts capabilities. When DPDK support is enabled on the host, the capability with name 'dpdk' is sent to the management server. The list of host capabilities are persisted on the 'capabilities' column on 'hosts' table, and can be retrieved by the 'listHosts' API method: :: - + list hosts id=HOST_ID filter=capabilities -Additional VM configurations -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In order to enable DPDK on VM deployments, users should pass addition configuration to VMs. The required configurations are listed on the next section. Administrators can allow users to pass additional configurations to their VMs by the account scoped setting: +Additional Instance configurations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In order to enable DPDK on Instance deployments, users should pass addition configuration to Instances. The required configurations are listed on the next section. Administrators can allow users to pass additional configurations to their Instances by the Account scoped setting: :: - + enable.additional.vm.configuration Users are able to pass extra configurations as part of the 'deployVirtualMachine' or 'updateVirtualMachine' API methods. -These extra configurations are included on the resulting XML domain of the virtual machine and are also persisted on CloudStack database as details on the 'user_vm_details' table. +These extra configurations are included on the resulting XML domain of the Instance and are also persisted on CloudStack database as details on the 'user_vm_details' table. The 'deployVirtualMachine' and 'updateVirtualMachine' API methods accept a URL UTF-8 string encoded parameter 'extraconfig'. @@ -317,14 +319,14 @@ Parameter is decoded following these rules: - There could be multiple XML sections, separated by a new line - Each section can be named, setting a title ending on ':' at the first line - Double quotes instead of single quotes should be used -- Configurations are persisted as VM details, with the key: 'extraconfig-TITLE' or 'extraconfig-N' where N is a number. +- Configurations are persisted as Instance details, with the key: 'extraconfig-TITLE' or 'extraconfig-N' where N is a number. Example: -In order to pass the below extra configuration to the VM, named 'config-1' +In order to pass the below extra configuration to the Instance, named 'config-1' :: - + config-1: VALUE @@ -333,26 +335,26 @@ In order to pass the below extra configuration to the VM, named 'config-1' The 'extraconfig' parameter should receive the UTF-8 URL encoded string: :: - + config-1%3A%0A%3Ctag%3E%0A%20%20%20%3Cinner-tag%3EVALUE%3C%2Finner-tag%3E%0A%3C%2Ftag%3E On 'user_vm_details' table the additional configuration is persisted with key: 'extraconfig-config-1' -Additional configurations to enable DPDK on VMs -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To enable DPDK on VM deployments: +Additional configurations to enable DPDK on Instances +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +To enable DPDK on Instance deployments: -- Set the global configuration to 'true' (as global setting or account setting) +- Set the global configuration to 'true' (as global setting or Account setting) :: - + enable.additional.vm.configuration - Generate the UTF-8 URL encoded additional configuration to enable huge pages and NUMA, examples below: :: - + dpdk-hugepages: @@ -369,13 +371,13 @@ To enable DPDK on VM deployments: - Pass the 'extraconfig' parameter to 'deployVirtualMachine' or 'updateVirtualMachine' API methods as a single UTF-8 URL encoded string containing multiple extra configurations (as shown above). Note: if multiple extra configurations are needed, follow the example above and add new sections separated by an empty line, encode the whole string and pass it as a single string to the APIs as 'extraconfig' parameter. :: - + deployVirtualMachine extraconfig=dpdk-hugepages%3A%0A%3CmemoryBacking%3E%0A%20%20%20%3Chugepages%3E%0A%20%20%20%20%3C%2Fhugepages%3E%0A%3C%2FmemoryBacking%3E%0A%0Adpdk-numa%3A%0A%3Ccpu%20mode%3D%22host-passthrough%22%3E%0A%20%20%20%3Cnuma%3E%0A%20%20%20%20%20%20%20%3Ccell%20id%3D%220%22%20cpus%3D%220%22%20memory%3D%229437184%22%20unit%3D%22KiB%22%20memAccess%3D%22shared%22%2F%3E%0A%20%20%20%3C%2Fnuma%3E%0A%3C%2Fcpu%3E%0A -- Additionally, users can pass extra configuration named 'dpdk-interface-TAG' to be included on VMs interfaces definition. Example below: +- Additionally, users can pass extra configuration named 'dpdk-interface-TAG' to be included on Instances interfaces definition. Example below: :: - + dpdk-interface-model: @@ -396,7 +398,7 @@ The vHost user mode describes a client/server model between Openvswitch along wi Applying additional configurations via service offerings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -It is possible to avoid passing additional configuration on each VM deployment, but setting these configurations on a service offering, and those are passed to the VM. +It is possible to avoid passing additional configuration on each Instance deployment, but setting these configurations on a service offering, and those are passed to the Instance. - To create a service offering with additional configurations, pass each key/value pair as service offering details on service offering creation, with keys starting with the "extraconfig" keyword, and each value an URL UTF-8 encoded string. - Additional configurations are stored as service offering details @@ -404,49 +406,49 @@ It is possible to avoid passing additional configuration on each VM deployment, For example, applying DPDK additional configurations via service offering: :: - + create serviceoffering name= displaytext= serviceofferingdetails[0].key=extraconfig-dpdk-hugepages serviceofferingdetails[0].value=%3CmemoryBacking%3E%20%3Chugepages%2F%3E%20%3C%2FmemoryBacking%3E serviceofferingdetails[1].key=extraconfig-dpdk-numa serviceofferingdetails[1].value=%3Ccpu%20mode%3D%22host-passthrough%22%3E%20%3Cnuma%3E%20%3Ccell%20id%3D%220%22%20cpus%3D%220%22%20memory%3D%229437184%22%20unit%3D%22KiB%22%20memAccess%3D%22shared%22%2F%3E%20%3C%2Fnuma%3E%20%3C%2Fcpu%3E -The preferred DPDK vHost User Mode must be passed as a service offering detail, with special key name: "DPDK-VHOSTUSER". Possible values are: "client" or "server". The following table illustrates the expected behaviour on DPDK ports and VM guest interfaces. +The preferred DPDK vHost User Mode must be passed as a service offering detail, with special key name: "DPDK-VHOSTUSER". Possible values are: "client" or "server". The following table illustrates the expected behaviour on DPDK ports and Instance guest interfaces. By default, the server mode is assumed if it is not passed as a service offering detail. -+----------------------+------------------------+-------------------------+ -| DPDK vHost User Mode | OVS port creation type | VM guest interface mode | -+======================+========================+=========================+ -| server | dpdkvhostuser | client | -+----------------------+------------------------+-------------------------+ -| client | dpdkvhostuserclient | server | -+----------------------+------------------------+-------------------------+ ++----------------------+------------------------+-------------------------------+ +| DPDK vHost User Mode | OVS port creation type | Instance guest interface mode | ++======================+========================+===============================+ +| server | dpdkvhostuser | client | ++----------------------+------------------------+-------------------------------+ +| client | dpdkvhostuserclient | server | ++----------------------+------------------------+-------------------------------+ :: - + create serviceoffering name= displaytext= serviceofferingdetails[0].key=DPDK-VHOSTUSER serviceofferingdetails[0].value=client serviceofferingdetails[1].key=extraconfig-dpdk-hugepages serviceofferingdetails[1].value=%3CmemoryBacking%3E%20%3Chugepages%2F%3E%20%3C%2FmemoryBacking%3E serviceofferingdetails[2].key=extraconfig-dpdk-numa serviceofferingdetails[2].value=%3Ccpu%20mode%3D%22host-passthrough%22%3E%20%3Cnuma%3E%20%3Ccell%20id%3D%220%22%20cpus%3D%220%22%20memory%3D%229437184%22%20unit%3D%22KiB%22%20memAccess%3D%22shared%22%2F%3E%20%3C%2Fnuma%3E%20%3C%2Fcpu%3E -DPDK VMs live migrations -~~~~~~~~~~~~~~~~~~~~~~~~ -It is possible to perform live migrations of DPDK enabled VMs since CloudStack version 4.13. DPDK enabled VMs can be migrated between hosts in the same cluster which are both DPDK enabled. +DPDK Instances live migrations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +It is possible to perform live migrations of DPDK enabled Instances since CloudStack version 4.13. DPDK enabled Instances can be migrated between hosts in the same cluster which are both DPDK enabled. -CloudStack determinates that a VM is a DPDK enabled VM when the following conditions are met: +CloudStack determines that an Instance is a DPDK enabled VM when the following conditions are met: -- The VM is a user VM -- The VM state is Running -- The host in which the VM is running is a DPDK enabled host (i.e. host contains the 'dpdk' capability as part of its capabilities. Check `Agent configuration for DPDK support`_.) -- The VM acquires the DPDK required configurations via VM details or service offering details. DPDK required additional configurations are additional configurations with name: +- The Instance is a user Instance +- The Instance state is Running +- The host in which the Instance is running is a DPDK enabled host (i.e. host contains the 'dpdk' capability as part of its capabilities. Check `Agent configuration for DPDK support`_.) +- The Instance acquires the DPDK required configurations via Instance details or service offering details. DPDK required additional configurations are additional configurations with name: - 'extraconfig-dpdk-numa' - 'extraconfig-dpdk-hugepages' -DPDK enabled VMs can only be migrated between DPDK enabled hosts. Therefore the 'findHostsForMigration' API method excludes non-DPDK enabled hosts from the list of suitable hosts to migrate DPDK enabled VMs. +DPDK enabled Instances can only be migrated between DPDK enabled hosts. Therefore the 'findHostsForMigration' API method excludes non-DPDK enabled hosts from the list of suitable hosts to migrate DPDK enabled Instances. DPDK ports ~~~~~~~~~~ -When VM is created or started, CloudStack creates ports with DPDK support with format: "csdpdk-N" where N is a number, incremented on new ports creation. This port is set into the 'source' property of the 'interface' tag on the XML domain of the VM, prepended by the value of the OVS path set on the property: +When an Instance is created or started, CloudStack creates ports with DPDK support with format: "csdpdk-N" where N is a number, incremented on new ports creation. This port is set into the 'source' property of the 'interface' tag on the XML domain of the Instance, prepended by the value of the OVS path set on the property: :: openvswitch.dpdk.ovs.path=OVS_PATH -That would set interfaces to type 'vhostuser' and reference the ports created in the XML domain of the VMs as: +That would set interfaces to type 'vhostuser' and reference the ports created in the XML domain of the Instances as: :: diff --git a/source/plugins/quota.rst b/source/plugins/quota.rst index bf86944046..3beb0892bc 100644 --- a/source/plugins/quota.rst +++ b/source/plugins/quota.rst @@ -18,18 +18,18 @@ not exploited by attacks, careless use and program errors. To address this problem, employ the quota-enforcement service that allows resource usage within certain bounds as defined by policies and available quotas for various entities. Quota service extends the functionality of usage server to -provide a measurement for the resources used by the accounts and domains using a +provide a measurement for the resources used by the Accounts and domains using a common unit referred to as cloud currency in this document. It can be configured -to ensure that your usage won’t exceed the budget allocated to accounts/domain +to ensure that your usage won’t exceed the budget allocated to Accounts/domain in cloud currency. It will let users know how much of the cloud resources they are using. It will help the cloud admins, if they want, to ensure that a user does -not go beyond their allocated quota. Per usage cycle if an account is found to be -exceeding its quota then it is locked. Locking an account means that it will not +not go beyond their allocated quota. Per usage cycle if an Account is found to be +exceeding its quota then it is locked. Locking an Account means that it will not be able to initiate a new resource allocation request, whether it is more -storage or an additional ip. To unlock an account you need to add more credit to it. -In case you want the locking to be disabled on global or on account scope those +storage or an additional IP. To unlock an Account you need to add more credit to it. +In case you want the locking to be disabled on global or on Account scope those provisions are also provided. Needless to say quota service as well as any action -on the account is configurable. +on the Account is configurable. Enabling the Quota Service ---------------------------- @@ -46,8 +46,8 @@ set the following global configuration to true: #. quota.enable.service -By default Quota service does not lock the accounts that have exceeded the quota -usage. To enable quota service to lock accounts set the following global +By default Quota service does not lock the Accounts that have exceeded the quota +usage. To enable quota service to lock Accounts set the following global configuration to true: #. quota.enable.enforcement @@ -79,7 +79,7 @@ values. service cloudstack-management restart service cloudstack-usage restart -Once the quota service is running it will calculate the quota balance for each account. +Once the quota service is running it will calculate the quota balance for each Account. The quota usage is calculated as per the quota tariff provided by the site administrator. @@ -98,7 +98,7 @@ The following table shows all quota types for which you can specify tariff. | | | Compute-Month | +------------------+-----------------------------------+--------------------------+ | 2 | ALLOCATED\_VM | One month of allocated | -| | | VM | +| | | Instance | +------------------+-----------------------------------+--------------------------+ | 3 | IP\_ADDRESS | Quota for a month of | | | | allocated IP | @@ -125,7 +125,7 @@ The following table shows all quota types for which you can specify tariff. | 12 | PORT\_FORWARDING\_RULE | Quota for port forwarding| | | | policy month | +------------------+-----------------------------------+--------------------------+ -| 13 | NETWORK\_OFFERING | Quota for network | +| 13 | NETWORK\_OFFERING | Quota for Network | | | | Offering for a month | +------------------+-----------------------------------+--------------------------+ | 14 | VPN\_USERS | Quota for VPN usage | @@ -151,13 +151,13 @@ Quota Credits ------------- The quota credit (quotaCredit) API lets you add or remove quota currency credits to -an account. With this API you can also control the quota enforcement policy at -account level. This will enable you to have some accounts where the quota policy is +an Account. With this API you can also control the quota enforcement policy at +Account level. This will enable you to have some Accounts where the quota policy is not enforced. The overall quota enforcement is controlled by the quota.enable.enforcement global setting. In addition to above the quota API lets you can fine tune the alert generation by specifying -the quota threshold for each account. If not explictly stated, the threshold is taken as 80% +the quota threshold for each Account. If not explicitly stated, the threshold is taken as 80% of the last deposit. Quota Balance @@ -182,8 +182,8 @@ is running. Quota Alert Management ----------------------- -Quota module also provides APIs to customize various email templates that are used to -alert account owners about quota going down below threshold and quota getting over. +Quota module also provides APIs to customize various email Templates that are used to +alert Account owners about quota going down below threshold and quota getting over. All the above functionality is also available via quota UI plugin. diff --git a/source/plugins/vxlan.rst b/source/plugins/vxlan.rst index dd2c14aca8..69556abff8 100644 --- a/source/plugins/vxlan.rst +++ b/source/plugins/vxlan.rst @@ -80,12 +80,12 @@ To check the capability of your system, execute the following commands. Important note on MTU size ~~~~~~~~~~~~~~~~~~~~~~~~~~ -When new vxlan interfaces are created, kernel will obtain current MTU size of the physical interface (ethX or the bridge) -and then create vxlan interface/bridge that are exactly 50 bytes smaller than the MTU on physical interface/bridge. -This means that in order to support default MTU size of 1500 bytes inside VM, your vxlan interface/bridge must also +When new VXLAN interfaces are created, kernel will obtain current MTU size of the physical interface (ethX or the bridge) +and then create VXLAN interface/bridge that are exactly 50 bytes smaller than the MTU on physical interface/bridge. +This means that in order to support default MTU size of 1500 bytes inside Instance, your VXLAN interface/bridge must also have MTU of 1500 bytes, meaning that your physical interface/bridge must have MTU of at least 1550 bytes. -In order to configure "jumbo frames" you can i.e. make physical interface/bridge with 9000 bytes MTU, then all the vxlan -interfaces will be created with MTU of 8950 bytes, and then MTU size inside VM can be set to 8950 bytes. +In order to configure "jumbo frames" you can i.e. make physical interface/bridge with 9000 bytes MTU, then all the VXLAN +interfaces will be created with MTU of 8950 bytes, and then MTU size inside Instance can be set to 8950 bytes. Important note on max number of multicast groups (and thus VXLAN interfaces) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -95,7 +95,7 @@ Since all VXLAN (VTEP) interfaces provisioned on host are multicast-based (belon On Linux kernel 3.x you actually can provision more than 20, but ARP request will silently fail and cause client's networking problems On Linux kernel 4.x you can NOT provision (start) more than 20 VXLAN interfaces and error message "No buffer space available" can be observed in Cloudstack Agent logs after provisioning required bridges and VXLAN interfaces. Increase needed parameter to sane value (i.e. 100 or 200) as required. -If you need to operate more than 20 VMs from different client's network, this change above is required. +If you need to operate more than 20 Instances from different client's Network, this change above is required. Advanced: Build kernel and iproute2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -207,8 +207,8 @@ differs per host, you may use a bridge to set a same name. If you would like to use a bridge name as a traffic label, you may create a bridge in this way. -Let ``cloudbr1`` be the bridge interface for the instances' private -network. +Let ``cloudbr1`` be the bridge interface for the Instances' private +Network. Configure in RHEL or CentOS @@ -347,7 +347,7 @@ save them first. $ sudo iptables-save > /etc/sysconfig/iptables -With this configuration you should be able to restart the network, +With this configuration you should be able to restart the Network, although a reboot is recommended to see if everything works properly. :: @@ -358,7 +358,7 @@ although a reboot is recommended to see if everything works properly. .. warning:: Make sure you have an alternative way like IPMI or ILO to reach the machine - in case you made a configuration error and the network stops functioning! + in case you made a configuration error and the Network stops functioning! Configure in Ubuntu @@ -377,7 +377,7 @@ To open the required ports, execute the following commands: By default UFW is not enabled on Ubuntu. Executing these commands with the firewall disabled does not enable the firewall. -With this configuration you should be able to restart the network, +With this configuration you should be able to restart the Network, although a reboot is recommended to see if everything works properly. :: @@ -387,25 +387,25 @@ although a reboot is recommended to see if everything works properly. .. warning:: Make sure you have an alternative way like IPMI or ILO to reach the machine - in case you made a configuration error and the network stops functioning! + in case you made a configuration error and the Network stops functioning! Setup zone using VXLAN ~~~~~~~~~~~~~~~~~~~~~~ In almost all parts of zone setup, you can just follow the advanced zone -setup istruction in "CloudStack Installation Guide" to use this plugin. It -is not required to add a network element nor to reconfigure the network +setup instruction in "CloudStack Installation Guide" to use this plugin. It +is not required to add a Network element nor to reconfigure the Network offering. The only thing you have to do is configure the physical -network to use VXLAN as the isolation method for Guest Network. +Network to use VXLAN as the isolation method for Guest Network. -Configure the physical network +Configure the physical Network ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. figure:: /_static/images/vxlan-physicalnetwork.png -CloudStack needs to have one physical network for Guest Traffic with the +CloudStack needs to have one physical Network for Guest Traffic with the isolation method set to "VXLAN". .. figure:: /_static/images/vxlan-trafficlabel.png @@ -420,7 +420,7 @@ Configure the guest traffic .. figure:: /_static/images/vxlan-vniconfig.png -Specify a range of VNIs you would like to use for carrying guest network +Specify a range of VNIs you would like to use for carrying guest Network traffic. .. warning:: diff --git a/source/quickinstallationguide/qig.rst b/source/quickinstallationguide/qig.rst index 37b96d6ad1..172d3adc8e 100644 --- a/source/quickinstallationguide/qig.rst +++ b/source/quickinstallationguide/qig.rst @@ -30,21 +30,36 @@ goal for this runbook is to provide a straightforward set of instructions to get you up and running with CloudStack with a minimum amount of trouble. +.. warning:: + This guide is meant to be used to build CloudStack test/demo cloud only, + as certain networking choices have been made to get you up and running with + minimal amount of time. This guide can NOT be used for production setup. + +.. warning:: + In case you don't have physical server to "play with", you can use e.g. Oracle VirtualBox 6.1+. + The requirement is that you enable "Enable Nested VT-x/AMD-V" as the Extended Feature on the System page of the Settings of the Instance. + You will want to create an Instance of "Red Hat (64-bit)" type and 40+GB disk space. + You will need to have 1 NIC in your Instance, bridged to the NIC of your laptop/desktop + (wifi or wired NIC, doesn't matter), and optimally to set Adapter Type="Paravirtualized Network (virtio-net)" + for somewhat better network performance (Settings of Instance, Network section, Adapter1, + expand "Advanced"). Make sure the NIC on your Instance is configured as promiscuous (in VirtualBox, + choose "Allow All" or just "Allow Instances" as the Promiscuous Mode), so that it can pass traffic from + CloudStack's system VMs to the gateway. Also, make sure you have allowed enough ram (6G+) and + enough CPU cores (3+) for demo purposes. + + High level overview of the process ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This guide will focus on building a CloudStack cloud using KVM on CentOS -7.7 with NFS storage on a flat layer-2 network utilizing layer-3 network -isolation (aka Security Groups), and doing it all on a single piece of -hardware. +7.9 with NFS storage and layer-2 isolation using VLANs, +(flat home network can be used for this as well) and on a single piece of +hardware (server/VM) KVM, or Kernel-based Virtual Machine is a virtualization technology for the Linux kernel. KVM supports native virtualization atop processors with hardware virtualization extensions. -Security Groups act as distributed firewalls that control access to a group of -virtual machines. - Prerequisites ~~~~~~~~~~~~~ @@ -53,11 +68,11 @@ To complete this guide you'll need the following items: #. At least one computer which supports and has enabled hardware virtualization. -#. An `CentOS 7.7 x86_64 install ISO, on bootable media - `_ +#. An `CentOS 7.9 minimal x86_64 install ISO, on bootable media + `_ -#. A /24 network with the gateway being at xxx.xxx.xxx.1, no DHCP should be on - this network and none of the computers running CloudStack will have a +#. A /24 network with the gateway being at (e.g.) xxx.xxx.xxx.1, no DHCP is needed + on this network and none of the computers running CloudStack will have a dynamic address. Again this is done for the sake of simplicity. @@ -71,20 +86,15 @@ CloudStack. We will go over the steps to prepare now. Operating System ~~~~~~~~~~~~~~~~ -Using the CentOS 7.7 x86_64 install ISO, you'll need to install CentOS 7 -on your hardware. The defaults will generally be acceptable for this -installation. You may want to configure network configuration during -setup - either using the guidelines below, or using a standard access -configuration which we will modify later. +Using the CentOS 7.9.2009 minimal x86_64 install ISO, you'll need to install +CentOS 7 on your hardware. The defaults will generally be acceptable for this +installation - but make sure to configure IP address/parameters so that you can later install needed +packages from the internet. Later, we will change the Network configuration as needed. Once this installation is complete, you'll want to gain access to your -server - through SSH (if network is configured) or connected peripherals. -Note that you should not allow remote root logins in a production -environment, so be sure to turn off this feature once the installation -and configuration is complete. +server - through SSH. -If your network interface was configured to grant the server internet -access, it is always wise to update the system before starting: +It is always wise to update the system before starting: .. parsed-literal:: # yum -y upgrade @@ -92,30 +102,27 @@ access, it is always wise to update the system before starting: .. _conf-network: -Configuring the network +Configuring the Network ^^^^^^^^^^^^^^^^^^^^^^^ -Unless you have configured it during install, which will not be covered by -this guide, the network interface will not come up on your hardware and you -will need to configure it to work in your environment. Since we specified -that there will be no DHCP server in this environment we will be manually -configuring your network interface. - -Before going any further, make sure that "brctl" and "net-tools" are installed and available: +Before going any further, make sure that "bridge-utils" and "net-tools" are installed and available: .. parsed-literal:: # yum install bridge-utils net-tools -y -Connecting via the console you should login as root. We will start by creating +Connecting via the console or SSH, you should login as root. We will start by creating the bridge that Cloudstack will use for networking. Create and open /etc/sysconfig/network-scripts/ifcfg-cloudbr0 and add the following settings: .. note:: IP Addressing - Throughout this document we are assuming that you will have a /24 network for your CloudStack implementation. This can be any RFC 1918 - network. However, we are assuming that you will match the machine address + Network. However, we are assuming that you will match the machine address that we are using. Thus we may use 172.16.10.2 and because you might be - using the 192.168.55.0/24 network you would use 192.168.55.2 + using e.g. 192.168.55.0/24 network you would use 192.168.55.2. Another example + would be if you are using i.e. VirtualBox on your local home network on 192.168.1.0/24 network - + in this case you can use a single free IP address from your home range (VirtualBox NIC for this Instance + should be in bridged mode for correct functioning) :: @@ -126,8 +133,8 @@ the bridge that Cloudstack will use for networking. Create and open IPV6INIT=no IPV6_AUTOCONF=no DELAY=5 - IPADDR=172.16.10.2 - GATEWAY=172.16.10.1 + IPADDR=172.16.10.2 #(or e.g. 192.168.1.2) + GATEWAY=172.16.10.1 #(or e.g. 192.168.1.1 - this would be your physical/home router) NETMASK=255.255.255.0 DNS1=8.8.8.8 DNS2=8.8.4.4 @@ -135,13 +142,14 @@ the bridge that Cloudstack will use for networking. Create and open USERCTL=no NM_CONTROLLED=no -Save the configuration and exit. We will then edit the interface so that it +Save the configuration and exit. We will then edit the NIC so that it makes use of this bridge. -Open the configuration file of your interface and configure it as follows: +Open the configuration file of your NIC (e.g. /etc/sysconfig/network-scripts/ifcfg-eth0) +and edit it as follows: .. note:: - Interface name used as example only. Replace eth0 with your default ethernet interface name. + Interface name (eth0) used as example only. Replace eth0 with your default ethernet interface name. .. parsed-literal:: TYPE=Ethernet @@ -152,11 +160,13 @@ Open the configuration file of your interface and configure it as follows: ONBOOT=yes BRIDGE=cloudbr0 -.. note:: - You should not use the Hardware Address (aka the MAC address, or UUID) from our - example for your configuration. It is network interface specific, so you - should keep the address already provided in the UUID directive. - +.. note:: + If your physical nic (eth0 in the case of our example) has already been + setup before following this guide, make sure that there is no duplication + between IP configuration of /etc/config/network-scripts/ifcfg-cloudbr0 and + /etc/sysconfig/network-scripts/ifcfg-eth0 which will cause a failure that + would prevent the network from starting. Basically, IP configuration + of eth0 should be moved to the bridge and eth0 will be added to the bridge. Now that we have the configuration files properly set up, we need to run a few @@ -164,19 +174,16 @@ commands to start up the network: .. parsed-literal:: + # systemctl disable NetworkManager; systemctl stop NetworkManager # systemctl enable network - - # systemctl restart network - -Note that if you were connected through SSH, you will be temporarily (~5 seconds depending on hardware) disconnected. If the disconnection lasts, there was an error in configuration. - - + # reboot + .. _conf-hostname: Hostname ^^^^^^^^ -CloudStack requires that the hostname be properly set. If you used the default +CloudStack requires that the hostname is properly set. If you used the default options in the installation, then your hostname is currently set to localhost.localdomain. To test this we will run: @@ -191,7 +198,8 @@ At this point it will likely return: localhost To rectify this situation - we'll set the hostname by editing the /etc/hosts -file so that it follows a similar format to this example: +file so that it follows a similar format to this example (remember to replace +the IP with your IP which might be e.g. 192.168.1.2): .. parsed-literal:: @@ -205,8 +213,13 @@ After you've modified that file, go ahead and restart the network using: # systemctl restart network -Now recheck with the hostname --fqdn command and ensure that it returns a FQDN -response +Now recheck with the + +.. parsed-literal:: + + # hostname --fqdn + +and ensure that it returns a FQDN response .. _conf-selinux: @@ -215,7 +228,7 @@ SELinux ^^^^^^^ At the moment, for CloudStack to work properly SELinux must be set to -permissive. We want to both configure this for future boots and modify it in +permissive or disabled. We want to both configure this for future boots and modify it in the current running system. To configure SELinux to be permissive in the running system we need to run the @@ -303,8 +316,7 @@ start out by installing nfs-utils. # yum -y install nfs-utils We now need to configure NFS to serve up two different shares. This is handled -comparatively easily in the /etc/exports file. You should ensure that it has -the following content: +in the /etc/exports file. You should ensure that it has the following content: .. parsed-literal:: @@ -323,7 +335,9 @@ appropriately on them with the following commands: CentOS 7.x releases use NFSv4 by default. NFSv4 requires that domain setting matches on all clients. In our case, the domain is cloud.priv, so ensure that the domain setting in /etc/idmapd.conf is uncommented and set as follows: -Domain = cloud.priv + +.. parsed-literal:: + Domain = cloud.priv Now you'll need to add the configuration values at the bottom in the file /etc/sysconfig/nfs (or merely uncomment and set them) @@ -337,7 +351,7 @@ Now you'll need to add the configuration values at the bottom in the file STATD_PORT=662 STATD_OUTGOING_PORT=2020 -Now we need to disable the firewall, so that it will not block connections. +For simplicity, we need to disable the firewall, so that it will not block connections. .. note:: @@ -378,6 +392,7 @@ First, as CentOS 7 no longer provides the MySQL binaries, we need to add a MySQL that will provide MySQL Server (and the Python MySQL connector later) : .. parsed-literal:: + # yum -y install wget # wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm # rpm -ivh mysql-community-release-el7-5.noarch.rpm @@ -387,6 +402,7 @@ Install by running the following command: # yum -y install mysql-server +This should install MySQL 5.x, as of the time of writing this guide. With MySQL now installed we need to make a few configuration changes to /etc/my.cnf. Specifically we need to add the following options to the [mysqld] section: @@ -431,7 +447,7 @@ Install Python MySQL connector from the MySQL community repository (which we've # yum -y install mysql-connector-python Please note that the previously required ``mysql-connector-java`` library is now bundled with CloudStack -Management server and is no more required to be installed separately. +Management server and is no longer required to be installed separately. Installation ~~~~~~~~~~~~ @@ -444,14 +460,14 @@ following command: # yum -y install cloudstack-management CloudStack |version| requires Java 11 JRE. Installing the management server -will automatically install Java 11, but it's good to explicitly confirm that the Java 11 +will automatically install Java 11, but it's good to explicitly confirm that Java 11 is the selected/active one (in case you had a previous Java version already installed): .. parsed-literal:: $ alternatives --config java -Make sure that Java 11 is the chosen one. +Make sure that Java 11 is selected. With the application itself installed we can now setup the database, we'll do that with the following command and options: @@ -470,20 +486,20 @@ up the management server by issuing the following command: # cloudstack-setup-management -If the servlet container is Tomcat7 the argument --tomcat7 must be used. - System Template Setup ~~~~~~~~~~~~~~~~~~~~~ CloudStack uses a number of system VMs to provide functionality for accessing -the console of virtual machines, providing various networking services, and -managing various aspects of storage. This step will acquire those system -images ready for deployment when we bootstrap your cloud. +the console of Instances, providing various networking services, and +managing various aspects of storage. + +We need to download the systemVM Template and deploy that to the secondary storage. +We will use the local path (/export/secondary) since we are already on the NFS server itself, +but otherwise you would need to mount your Secondary Storage to a temporary mount point, and use +that mount point instead of the /export/secondary path. -Now we need to download the system VM template and deploy that to the share we -just mounted. The management server includes a script to properly manipulate -the system VMs images. +Execute the following script: .. parsed-literal:: @@ -500,16 +516,10 @@ CloudStack, but we will do that after we get our hypervisor set up. KVM Setup and Installation -------------------------- -KVM is the hypervisor we'll be using - we will recover the initial setup which -has already been done on the hypervisor host and cover installation of the -agent software, you can use the same steps to add additional KVM nodes to your -CloudStack environment. - - Prerequisites ~~~~~~~~~~~~~ -We explicitly are using the management server as a compute node as well, which +We are using the management server as a compute node as well, which means that we have already performed many of the prerequisite steps when setting up the management server, but we will list them here for clarity. Those steps are: @@ -524,15 +534,14 @@ Those steps are: :ref:`qigconf-pkg-repo` -You shouldn't need to do that for the management server, of course, but any -additional hosts will need for you to complete the above steps. +You don't need to do that for the management server now as we've already done that. Installation ~~~~~~~~~~~~ Installation of the KVM agent is trivial with just a single command, but -afterwards we'll need to configure a few things. +afterwards we'll need to configure a few things. We need to install the EPEL repository also. .. parsed-literal:: @@ -549,9 +558,8 @@ We have two different parts of KVM to configure, libvirt, and QEMU. QEMU Configuration ^^^^^^^^^^^^^^^^^^^ -KVM configuration is relatively simple at only a single item. We need to edit -the QEMU VNC configuration. This is done by editing /etc/libvirt/qemu.conf and -ensuring the following line is present and uncommented. +We need to edit the QEMU VNC configuration. This is done by editing /etc/libvirt/qemu.conf +and ensuring the following line is present and uncommented. :: @@ -561,11 +569,13 @@ ensuring the following line is present and uncommented. Libvirt Configuration ^^^^^^^^^^^^^^^^^^^^^^^ -CloudStack uses libvirt for managing virtual machines. Therefore it is vital +CloudStack uses libvirt for managing Instances. Therefore it is vital that libvirt is configured correctly. Libvirt is a dependency of cloud-agent and should already be installed. -#. In order to have live migration working libvirt has to listen for unsecured +#. Even though we are using a single host, the following steps are recommended + to get faimilar with the general requirements. + In order to have live migration working libvirt has to listen for unsecured TCP connections. We also need to turn off libvirts attempt to use Multicast DNS advertising. Both of these settings are in /etc/libvirt/libvirtd.conf @@ -597,7 +607,9 @@ and should already be installed. KVM configuration complete ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -For the sake of completeness you should check if KVM is running OK on your machine: +For the sake of completeness, you should check if KVM is running OK on your +machine (you should see kvm_intel or kvm_amd modules shown as loaded): + .. parsed-literal:: # lsmod | grep kvm @@ -612,123 +624,194 @@ to using the CloudStack UI for the actual configuration of our cloud. Configuration ------------- -As we noted before we will be using security groups to provide isolation and -by default that implies that we'll be using a flat layer-2 network. It also -means that the simplicity of our setup means that we can use the quick -installer. - - UI Access ~~~~~~~~~ To get access to CloudStack's web interface, merely point your browser to -http://172.16.10.2:8080/client The default username is 'admin', and the -default password is 'password'. You should see a splash screen that allows you -to choose several options for setting up CloudStack. You should choose the -Continue with Basic Setup option. +the IP address of your machine e.g. http://172.16.10.2:8080/client +The default username is 'admin', and the default password is 'password'. -You should now see a prompt requiring you to change the password for the admin -user. Please do so. +Setting up a Zone +----------------- +Zone Type +~~~~~~~~~ -Setting up a Zone -~~~~~~~~~~~~~~~~~ +A zone is the largest organization entity in CloudStack - and we'll be +creating one. -A zone is the largest organization entity in CloudStack - and we'll be -creating one, this should be the screen that you see in front of you now. And -for us there are 5 pieces of information that we need. +.. warning:: + We will be configuring an Advanced Zone in a way that will allow us to access both + the "Management" network of the cloud as well as the "Public" network - we will do so + by using the same CIDR (but different part of it, i.e. different IP ranges) for both + "Management" (Pod) and "Public" networks - which is something your would NEVER do + in a production - this is done strictly for testing purposes only in this guide! + +Click "Continue with Installation" to continue - you will be offered to change your +root admin password - please do so, and click on OK. + +A new Zone wizard will pop-up. Please chose Advanced (don't tick the "Security Groups") and click on Next. + +Zone Details +~~~~~~~~~~~~ + +On this page, we enter where our DNS servers are located. +CloudStack distinguishes between internal and public DNS. Internal DNS is +assumed to be capable of resolving internal-only hostnames, such as your +NFS server’s DNS name. Public DNS is provided to the guest Instances to resolve +public IP addresses. You can enter the same DNS server for both types, but +if you do so, you must make sure that both internal and public IP addresses +can route to the DNS server. In our specific case we will not use any names +for resources internally, and we will indeed set them to look to the same +external resource so as to not add a nameserver setup to our list of +requirements. #. Name - we will set this to the ever-descriptive 'Zone1' for our cloud. -#. Public DNS 1 - we will set this to ``8.8.8.8`` for our cloud. +#. IPv4 DNS 1 - we will set this to ``8.8.8.8`` for our cloud. -#. Public DNS 2 - we will set this to ``8.8.4.4`` for our cloud. +#. IPV4 DNS 2 - we will set this to ``8.8.4.4`` for our cloud. #. Internal DNS1 - we will also set this to ``8.8.8.8`` for our cloud. -#. Internal DNS2 - we will also set this to ``8.8.4.4`` for our cloud. +#. Internal DNS2 - we will also set this to ``8.8.4.4`` for our cloud. -.. note:: - CloudStack distinguishes between internal and public DNS. Internal DNS is - assumed to be capable of resolving internal-only hostnames, such as your - NFS server’s DNS name. Public DNS is provided to the guest VMs to resolve - public IP addresses. You can enter the same DNS server for both types, but - if you do so, you must make sure that both internal and public IP addresses - can route to the DNS server. In our specific case we will not use any names - for resources internally, and we have indeed them set to look to the same - external resource so as to not add a namerserver setup to our list of - requirements. +#. Hypervisor - this will be the primary hypervisor used in this zone. In our + case, we will select KVM. + +Click "Next" to continue. + +Physical Network +~~~~~~~~~~~~~~~~ +There are various network isolation methods supported by Cloudstack. The +default VLAN option will be sufficient for our purposes. For improved +performance and/or security, Cloudstack allows different traffic types to run +over specifically dedicated network interface cards attached to hypervisors. +We will not be making any changes here, the default settings are fine +for this demo installation of Cloudstack. + +Click "Next" to continue. + + +Public Traffic +~~~~~~~~~~~~~~ +Publicly-accessible IPs must be allocated for this purpose in normal/public cloud installations, +but since we are deploying merely a demo/test env, we will use a PART of our local network (e.g. from .11 to .20 or other free range) + +#. Gateway - We'll use ``172.16.10.1`` #or whatever is your physical gateway e.g. 192.168.1.1 + +#. Netmask - We'll use ``255.255.255.0`` +#. VLAN/VNI - We'll leave this one empty + +#. Start IP - We'll use ``172.16.10.11`` # (or e.g. 192.168.1.11) + +#. End IP - We'll use ``172.16.10.20`` # (or e.g. 192.168.1.20) + +Click "Add" to add the range. + +Click "Next" to continue. Pod Configuration ~~~~~~~~~~~~~~~~~ -Now that we've added a Zone, the next step that comes up is a prompt for -information regading a pod. Which is looking for several items. +Here we will configure a range for Cloudstack's internal management traffic - CloudStack +will assign IPs from this range to system VMs. This will also be part of our local network +(i.e. different part of your local home network, from .21 to .30), with the rest of the IP parameters +(netmaks/gateway) being the same as used for the Public Traffic. -#. Name - We'll use ``Pod1`` for our cloud. +#. Pod Name - We'll use ``Pod1`` for our cloud. -#. Gateway - We'll use ``172.16.10.1`` as our gateway +#. Reserved system gateway - we'll use ``172.16.10.1`` # (or whatever is your physical gateway e.g. 192.168.1.1) -#. Netmask - We'll use ``255.255.255.0`` +#. Reserved system netmask - we'll use ``255.255.255.0`` + +#. Start reserved system IPs - we will use ``172.16.10.21`` # (or e.g. 192.168.1.21) -#. VLAN/VNI Range : ``2-3900`` +#. End Reserved system IP - we will use ``172.16.10.30`` # (or e.g. 192.168.1.30) -#. Start/end reserved system IPs - we will use ``172.16.10.10-172.16.10.20`` +Click "Next" to continue. -#. Guest gateway - We'll use ``172.16.10.1`` +Guest Traffic +~~~~~~~~~~~~~ -#. Guest netmask - We'll use ``255.255.255.0`` +Next we will configure a range of VLAN IDs for our Guest Instances. -#. Guest start/end IP - We'll use ``172.16.10.30-172.16.10.200`` +A range of ``100`` - ``200`` would suffice. +Click "Next" to continue. Cluster ~~~~~~~ -Now that we've added a Zone, we need only add a few more items for configuring -the cluster. +Multiple clusters can belong to a pod and multiple hosts can belong to a +cluster. We will have one cluster and we have to give our cluster a name. -#. Name - We'll use ``Cluster1`` +Enter ``Cluster1`` -#. Hypervisor - Choose ``KVM`` +Click "Next" to continue. -You should be prompted to add the first host to your cluster at this point. -Only a few bits of information are needed. +Host +~~~~ +This is where we specify the details of our hypervisor host. In our case, +we are running the management server on the same machine that we will be using +as a hypervisor. -#. Hostname - we'll use the IP address ``172.16.10.2`` since we didn't set up a - DNS server. +#. Hostname - we'll use the IP address ``172.16.10.2`` since we didn't set up a + DNS server for name resolution. (this is your local server, so swap with the correct IP) #. Username - we'll use ``root`` #. Password - enter the operating system password for the root user +Click "Next" to continue. Primary Storage ^^^^^^^^^^^^^^^ With your cluster now setup - you should be prompted for primary storage -information. Choose NFS as the storage type and then enter the following -values in the fields: +information. Enter the following values in the fields: #. Name - We'll use ``Primary1`` -#. Server - We'll be using the IP address ``172.16.10.2`` +#. Scope - We'll use ``Cluster`` even though either is fine in this case. With + "Zone" scope, all hosts in all clusters would have access to this storage + pool. + +#. Protocol - We'll use ``NFS`` + +#. Server - We'll be using the IP address ``172.16.10.2`` (this is your local server, so swap with the correct IP) #. Path - Well define ``/export/primary`` as the path we are using +Click "Next" to continue. Secondary Storage ^^^^^^^^^^^^^^^^^ -If this is a new zone, you'll be prompted for secondary storage information - -populate it as follows: +You'll be prompted for secondary storage information - populate it as follows: + +#. Provider - Choose ``NFS`` -#. NFS server - We'll use the IP address ``172.16.10.2`` +#. Name - ``Secondary1`` + +#. NFS server - We'll use the IP address ``172.16.10.2`` (this is your local server, so swap with the correct IP) #. Path - We'll use ``/export/secondary`` -Now, click Launch and your cloud should begin setup - it may take several -minutes depending on your internet connection speed for setup to finalize. +Click "Next" to continue. + +Now, click "Launch Zone" and your cloud should begin setup - it may take +several minutes for setup to finalize. + +When done, click on "Enable Zone" and your zone will be ready. + +That's it, you are done with installation of your Apache CloudStack demo cloud. + +To check the health of your CloudStack installation, go to Infrastructure --> System VMs and refresh +the UI from time to time - you should see “S-1-VM” and “V-2-VM” system VMs (SSVM and CPVM) in State=Running and Agent State=Up +After that you can go to Images --> Templates, click on the built-in Template named "CentOS 5.5(64-bit) no GUI (KVM)", +then click on "Zones" tab - and observe how the Status is moving from a few percents downloaded up to fully downloaded, +after which the Status will show as "Download Complete" and "Ready" column will say "Yes". +After this is done, you will be able to deploy an Instance from this Template. -That's it, you are done with installation of your Apache CloudStack cloud. diff --git a/source/releasenotes/about.rst b/source/releasenotes/about.rst index 5c8e83355e..ac950b142c 100644 --- a/source/releasenotes/about.rst +++ b/source/releasenotes/about.rst @@ -17,91 +17,79 @@ What's New in |release| ======================= -Apache CloudStack 4.15.1.0 is a 4.15 LTS release with over 350 enhancements and -fixes since 4.15.0.0. Highlights include: - -• Support for XCP-ng 8.2 -• Support for VMware 7.0 -• Several VMware improvements such as vSphere datastore cluster synchronisation, deploy-as-is OVA template support and VM migration -• Several VR fixes and improvements, support for IKEv2 VPN option -• Several UI fixes and improvements, support for UI customisation and updated localisation - -What's New in 4.15.0.0 +Apache CloudStack |release| is a 4.18 LTS minor release with 196 fixes +since the 4.18.0.0 release. Some of the highlights include: + +• Support Managed User Data in AutoScale VM groups +• Support CKS (CloudStack Kubernetes Cluster) in VPC tiers +• Support for VMware 8.0.0.x +• Several Hypervisor (VMware, KVM, XenServer) fixes and improvements +• Several UI fixes and improvements +• Several Network (L2, VXLAN, etc) fixes and improvements +• Several System VM (CPVM, SSVM) fixes and improvements +• Improve Solidfire storage plugin integration on VMware +• Support volume migration in ScaleIO/PowerFlex within and across ScaleIO/PowerFlex storage clusters +• Volume encryption support for StorPool +• Fix CloudStack upgrade with some MySQL versions +• Fix guest OSes and guest OS mappings in CloudStack database + +The full list of fixes and improvements can be found in the project release notes at +https://docs.cloudstack.apache.org/en/4.18.1.0/releasenotes/changes.html + +What's in since 4.18.0.0 ====================== -Apache CloudStack 4.15.0.0 is a 4.15 LTS release with over 15 major new -features, and over 250 enhancements and fixes since 4.14. Highlights include: - -• New modern UI (GA release) -• Support for CentOS8 and Ubuntu 20.04 for management server and KVM hosts (note: CentOS 8 will EOL in Dec 2021) -• Support for XCP-ng 8.1 -• Support for MySQL 8 -• NoVNC console integration -• Unmanaging guest VMs -• VMware advanced storage capabilities (vSAN, vVols, VMFS6, datastore clusters) -• VMware full OVF properties support -• Secondary Storage usage improvements -• PVLAN support for L2 networks -• Role-based users in Projects -• Dynamic roles improvements -• Boot into BIOS on VMware -• Redfish OOBM Support -• Human readable sizes in logs +Apache CloudStack 4.18.0.0 is the initial 4.18 LTS release with 300+ new +features, improvements and bug fixes since 4.17, including 19 major +new features. Some of the highlights include: + +• Edge Zones +• Autoscaling +• Managed User Data +• Two-Factor Authentication Framework +• Support for Time-based OTP (TOTP) Authenticator +• Volume Encryption +• SDN Integration – Tungsten Fabric +• Ceph Multi Monitor Support +• API-Driven Console Access +• Console Access Security Improvements +• New Global settings UI +• Configurable MTU for VR +• Adaptative Affinity Groups +• Custom DNS Servers for Networks +• Improved Guest OS Support Framework +• Support for Enterprise Linux 9 +• Networker Backup Plugin for KVM Hypervisor +• Custom Quota Tariffs +• Secure VNC for KVM The full list of new features can be found in the project release notes at -http://docs.cloudstack.apache.org/en/4.15.0.0/releasenotes/changes.html - -.. important:: - This version of CloudStack allows control over the visibility of the DNS services provided - by the Virtual Router in Shared networks. By default CloudStack allows DNS queries via the - Guest interface from any IP address. This allows for the DNS resolution of guest VMs on the - Shared network by services outside of the shared network. While this can be useful, it can - also be an issue on Shared Networks which are using Internet routable/public (i.e. non-RFC1918) - IP addresses, as the DNS service is then queriable from the public internet at large. A new - global setting "expose.dns.externally" has been added (with a default value of "true" in - order to keep backward compatibility) which controls whether the source of DNS queries - should be limited to only hosts on the Shared Network guest subnet or not. If you wish - to disable 'outside' access to the DNS services running on Virtual Routers; set the value - to "false" and recreate the related Virtual Routers. - -Apache CloudStack powers numerous elastic Cloud computing services, including solutions that have -ranked as Gartner Magic Quadrant leaders. Highlighted in the Forrester Q4 2017 Enterprise Open Source -Cloud Adoption report, Apache CloudStack "sits beneath hundreds of service provider clouds", including -Fortune 5 multinational corporations. A list of known Apache CloudStack users are available -at http://cloudstack.apache.org/users.html - -Libvirt Python Dependency on KVM and CentOS -=========================================== - -For CentOS users using the security groups feature on KVM it is needed to install the epel-release and python36-libvirt packages. - -Workaround for adding newer KVM hosts -===================================== - -Newer GNU/Linux distributions with latest OpenSSH package disables some older -SSH algorithms and ciphers and newer algorithms are not supported by trilead-ssh -library used by CloudStack to SSH into KVM hosts during the host-add operation. -Until the dependency library can support that users can use the following -workaround in their KVM host's /etc/ssh/sshd_config and restart ssh server -before adding the KVM host in CloudStack: - - PubkeyAcceptedKeyTypes=+ssh-dss - - HostKeyAlgorithms=+ssh-dss - - KexAlgorithms=+diffie-hellman-group1-sha1 - -New UI GA and Legacy UI Deprecation and Removal Notice -======================================================= - -Cloudstack 4.15 ships with the GA release of a new and modern User Interface as -the default UI which deprecates the current legacy UI. With version 4.15, the -existing legacy UI (deprecated) along with the new UI are the supported UI for -production environments. - -The default URL :8080/client will serve the new UI and -:8080/client/legacy will serve the deprecated legacy UI. - -In the next release (4.16), the Apache Cloudstack community will remove the legacy -UI. Users are encouraged to implement a migration path towards deprecating the -legacy UI in their production environments. +https://docs.cloudstack.apache.org/en/4.18.0.0/releasenotes/changes.html + +.. _guestosids + +Possible Issue with Guest OS IDs +================================ + +It has been noticed during upgrade testing that some environment, where +custom guest OSses where added and mapping for those OSses where added, +problems may occur during upgrade. Part of the mitigation is to make sure +OSses that are newly mapped but should have already been in the guest_os +table are there. Make sure you apply those before you start the new 4.18 +management server. + +first check which of the guest_os entries you miss: + +.. parsed-literal:: + + SELECT * FROM cloud.guest_os WHERE display_name IN (´CentOS 8´, ´Debian GNU/Linux 10 (32-bit)´, ´Debian GNU/Linux 10 (64-bit)´, ´SUSE Linux Enterprise Server 15 (64-bit)´, ´Windows Server 2019 (64-bit)´) + +Then apply any of the following lines that you might need. + +.. parsed-literal:: + + INSERT INTO cloud.guest_os (uuid, category_id, display_name, created, is_user_defined) VALUES (UUID(), '1', 'CentOS 8', now(), '0'); + INSERT INTO cloud.guest_os (uuid, category_id, display_name, created, is_user_defined) VALUES (UUID(), '2', 'Debian GNU/Linux 10 (32-bit)', now(), '0'); + INSERT INTO cloud.guest_os (uuid, category_id, display_name, created, is_user_defined) VALUES (UUID(), '2', 'Debian GNU/Linux 10 (64-bit)', now(), '0'); + INSERT INTO cloud.guest_os (uuid, category_id, display_name, created, is_user_defined) VALUES (UUID(), '5', 'SUSE Linux Enterprise Server 15 (64-bit)', now(), '0'); + INSERT INTO cloud.guest_os (uuid, category_id, display_name, created, is_user_defined) VALUES (UUID(), '6', 'Windows Server 2019 (64-bit)', now(), '0'); diff --git a/source/releasenotes/api-changes.rst b/source/releasenotes/api-changes.rst index 437d7eba4c..501aa0e94e 100644 --- a/source/releasenotes/api-changes.rst +++ b/source/releasenotes/api-changes.rst @@ -13,7 +13,103 @@ specific language governing permissions and limitations under the License. -API Changes Introduced in 4.15.0.0 +API Changes in |release| since 4.18.0.0 +=================================== +For the complete list of API commands and params consult the `CloudStack Apidocs`_. + +Parameters Changed in API Commands +------------------------------- + +.. cssclass:: table-striped table-bordered table-hover + ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| Name | Description | ++============================================================+================================================================================+ +| ``listStoragePools`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``status`` (optional) | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``startVirtualMachine`` | **Request:** | +| | | +| | *Changed Parameters:* | +| | | +| | - ``considerLastHost`` was available for Users but now only for ROOT admins | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``addGuestOs`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``display`` (optional) | +| | | +| | *Changed Parameters:* | +| | | +| | - ``details`` was 'required' and is now 'optional' | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateGuestOs`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``display`` (optional) | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listOsTypes`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``display`` (optional) | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createAutoScaleVmProfile`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` (optional) | +| | - ``userdatadetails`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | - ``userdatadetails`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateAutoScaleVmProfile`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` (optional) | +| | - ``userdatadetails`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | - ``userdatadetails`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listAutoScaleVmProfiles`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | - ``userdatadetails`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ + +API Changes Introduced in 4.18.0.0 =================================== For the complete list of API commands and params consult the `CloudStack Apidocs`_. @@ -22,1354 +118,1807 @@ New API Commands .. cssclass:: table-striped table-bordered table-hover -+---------------------------------------------+--------------------------------------------------------------------------------+ -| Name | Description | -+=============================================+================================================================================+ -| ``listVsphereStoragePolicyCompatiblePools`` | List storage pools compatible with a vSphere storage policy | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listProjectRolePermissions`` | Lists a project's project role permissions | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``importVsphereStoragePolicies`` | Import vSphere storage policies | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``migrateSecondaryStorageData`` | migrates data objects from one secondary storage to destination image store(s) | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``unmanageVirtualMachine`` | Unmanage a guest virtual machine. | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateImageStore`` | Updates image store read-only status | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``deleteProjectRole`` | Delete Project roles in CloudStack | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``deleteUserFromProject`` | Deletes user from the project | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listProjectRoles`` | Lists Project roles in CloudStack | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createProjectRole`` | Creates a Project role | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateProjectRole`` | Creates a Project role | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listVsphereStoragePolicies`` | List vSphere storage policies | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createProjectRolePermission`` | Adds API permissions to a project role | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateProjectRolePermission`` | Updates a project role permission and/or order | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``addUserToProject`` | Adds user to a project | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``importRole`` | Imports a role based on provided map of rule permissions | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``deleteProjectRolePermission`` | Deletes a project role permission in the project | -+---------------------------------------------+--------------------------------------------------------------------------------+ - ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| Name | Description | ++============================================================+================================================================================+ +| ``listTungstenFabricTag`` | Lists Tungsten-Fabric tags | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricLBHealthMonitor`` | list Tungsten-Fabric LB health monitor | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``getLoadBalancerSslCertificate`` | get load balancer certificate | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricApplicationPolicySet`` | list Tungsten-Fabric application policy set | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listUserData`` | List registered userdatas | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``applyTungstenFabricTag`` | apply Tungsten-Fabric tag | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricFirewallPolicy`` | create Tungsten-Fabric firewall policy | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricPolicy`` | create Tungsten-Fabric policy | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``removeTungstenFabricPolicyRule`` | remove Tungsten-Fabric policy | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricProvider`` | Create Tungsten-Fabric provider in cloudstack | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricLogicalRouter`` | list Tungsten-Fabric logical router | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteTungstenFabricAddressGroup`` | delete Tungsten-Fabric address group | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteTungstenFabricLogicalRouter`` | delete Tungsten-Fabric logical router | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricLogicalRouter`` | create Tungsten-Fabric logical router | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricFirewallRule`` | create Tungsten-Fabric firewall | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricManagementNetwork`` | create Tungsten-Fabric management Network | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricFirewallRule`` | list Tungsten-Fabric firewall rule | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricAddressGroup`` | list Tungsten-Fabric address group | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricServiceGroup`` | list Tungsten-Fabric service group | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``isAccountAllowedToCreateOfferingsWithTags`` | Return true if the specified account is allowed to create offerings with tags. | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricTagType`` | create Tungsten-Fabric tag type | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``assignVolume`` | Changes ownership of a Volume from one account to another. | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteUserData`` | Deletes a userdata | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``quotaTariffDelete`` | Marks a quota tariff as removed. | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteTungstenFabricServiceGroup`` | delete Tungsten-Fabric service group | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``validateUserTwoFactorAuthenticationCode`` | Checks the 2FA code for the User. | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``synchronizeTungstenFabricData`` | Synchronize Tungsten-Fabric data | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteTungstenFabricPolicy`` | delete Tungsten-Fabric policy | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricPolicyRule`` | list Tungsten-Fabric policy | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``resetUserDataForVirtualMachine`` | Resets the UserData for Instance. The Instance must be in a | +| | "Stopped" state. [async] | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricNetwork`` | list Tungsten-Fabric Network | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``setupUserTwoFactorAuthentication`` | Setup the 2FA for the User. | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``linkUserDataToTemplate`` | Link or unlink a userdata to a Template. | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricProviders`` | Lists Tungsten-Fabric providers | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteTungstenFabricTag`` | delete Tungsten-Fabric tag | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricServiceGroup`` | create Tungsten-Fabric service group | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteTungstenFabricApplicationPolicySet`` | delete Tungsten-Fabric application policy set | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``removeTungstenFabricPolicy`` | remove Tungsten-Fabric policy | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``addTungstenFabricNetworkGatewayToLogicalRouter`` | add Tungsten-Fabric Network gateway to logical router | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricNic`` | list Tungsten-Fabric nic | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``applyTungstenFabricPolicy`` | apply Tungsten-Fabric policy | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricPublicNetwork`` | create Tungsten-Fabric public Network | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricFirewallPolicy`` | list Tungsten-Fabric firewall policy | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricApplicationPolicySet`` | create Tungsten-Fabric application policy set | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricAddressGroup`` | create Tungsten-Fabric address group | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listVolumesUsageHistory`` | Lists volume stats | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createConsoleEndpoint`` | Create a console endpoint to connect to an Instance console | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteTungstenFabricFirewallPolicy`` | delete Tungsten-Fabric firewall policy | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateTungstenFabricLBHealthMonitor`` | update Tungsten-Fabric loadbalancer health monitor | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateCondition`` | Updates a condition for Instance auto scaling | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``removeTungstenFabricTag`` | remove Tungsten-Fabric tag | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricPolicy`` | list Tungsten-Fabric policy | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricVm`` | list Tungsten-Fabric Instance | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``addTungstenFabricPolicyRule`` | add Tungsten-Fabric policy rule | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteTungstenFabricTagType`` | delete Tungsten-Fabric tag type | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``removeTungstenFabricNetworkGatewayFromLogicalRouter`` | remove Tungsten-Fabric Network gateway from logical router | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``quotaTariffCreate`` | Creates a quota tariff for a resource. | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTungstenFabricTag`` | create Tungsten-Fabric tag | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteTungstenFabricFirewallRule`` | delete Tungsten-Fabric firewall rule | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listSystemVmsUsageHistory`` | Lists System Instance stats | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``registerUserData`` | Register a new userdata. | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTungstenFabricTagType`` | Lists Tungsten-Fabric tags | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``configTungstenFabricService`` | config Tungsten-Fabric service | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listConfigurationGroups`` | Lists all configuration groups (primarily used for UI). | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listUserTwoFactorAuthenticatorProviders`` | Lists User two factor authenticator providers | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +' Removed API Commands -------------------- .. cssclass:: table-striped table-bordered table-hover -+---------------------------------------------+--------------------------------------------------------------------------------+ -| Name | Description | -+=============================================+================================================================================+ -| ``listTemplateOvfProperties`` | List template OVF properties if available. | -+---------------------------------------------+--------------------------------------------------------------------------------+ - ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| Name | Description | ++============================================================+================================================================================+ +| ``addExternalFirewall`` | Adds an external firewall appliance | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listSrxFirewalls`` | lists SRX firewall devices in a physical Network | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteExternalFirewall`` | Deletes an external firewall appliance. | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``addSrxFirewall`` | Adds a SRX firewall device | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteSrxFirewall`` | delete a SRX firewall device | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listExternalFirewalls`` | List external firewall appliances. | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listSrxFirewallNetworks`` | lists Network that are using SRX firewall device | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``configureSrxFirewall`` | Configures a SRX firewall device | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +' Parameters Changed API Commands ------------------------------- .. cssclass:: table-striped table-bordered table-hover -+---------------------------------------------+--------------------------------------------------------------------------------+ -| Name | Description | -+=============================================+================================================================================+ -| ``copyIso`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``deployasis`` | -| | - ``deployasisdetails`` | -| | - ``downloaddetails`` | -| | - ``url`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listVirtualMachinesMetrics`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``haenable`` (optional) | -| | - ``securitygroupid`` (optional) | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listHosts`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``cpuallocatedpercentage`` | -| | - ``cpuallocatedvalue`` | -| | - ``cpuallocatedwithoverprovisioning`` | -| | - ``memoryallocatedbytes`` | -| | - ``memoryallocatedpercentage`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateStoragePool`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``name`` (optional) | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``rebootSystemVm`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listNetworks`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``networkofferingid`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``restoreVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateHost`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``name`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``cpuallocatedpercentage`` | -| | - ``cpuallocatedvalue`` | -| | - ``cpuallocatedwithoverprovisioning`` | -| | - ``memoryallocatedbytes`` | -| | - ``memoryallocatedpercentage`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``destroySystemVm`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``addSwift`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``disksizetotal`` | -| | - ``disksizeused`` | -| | - ``readonly`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``scaleSystemVm`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``stopRouter`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listProjectInvitations`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``userid`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``userid`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listLdapConfigurations`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``listall`` (optional) | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listSecondaryStagingStores`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``disksizetotal`` | -| | - ``disksizeused`` | -| | - ``readonly`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``startRouter`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``changeServiceForVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listTemplates`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``details`` (optional) | -| | - ``showunique`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``deployasis`` | -| | - ``deployasisdetails`` | -| | - ``downloaddetails`` | -| | - ``url`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listPhysicalNetworks`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``zonename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createSecondaryStagingStore`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``disksizetotal`` | -| | - ``disksizeused`` | -| | - ``readonly`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``rebootVirtualMachine`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``bootintosetup`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateVPC`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``vpcofferingname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``stopSystemVm`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listPrivateGateways`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateVmNicIp`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``startInternalLoadBalancerVM`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateDiskOffering`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``bytesreadrate`` (optional) | -| | - ``bytesreadratemax`` (optional) | -| | - ``bytesreadratemaxlength`` (optional) | -| | - ``byteswriterate`` (optional) | -| | - ``byteswriteratemax`` (optional) | -| | - ``byteswriteratemaxlength`` (optional) | -| | - ``cachemode`` (optional) | -| | - ``iopsreadrate`` (optional) | -| | - ``iopsreadratemax`` (optional) | -| | - ``iopsreadratemaxlength`` (optional) | -| | - ``iopswriterate`` (optional) | -| | - ``iopswriteratemax`` (optional) | -| | - ``iopswriteratemaxlength`` (optional) | -| | - ``tags`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``vspherestoragepolicy`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``addAccountToProject`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``projectroleid`` (optional) | -| | - ``roletype`` (optional) | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listKubernetesClusters`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``ipaddress`` | -| | - ``ipaddressid`` | -| | - ``virtualmachines`` | -| | | -| | *Removed Parameters:* | -| | | -| | - ``virtualmachineids`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``scaleKubernetesCluster`` | **Request:** | -| | | -| | *Changed Parameters:* | -| | | -| | - ``id`` was 'optional' and is now 'required' | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``ipaddress`` | -| | - ``ipaddressid`` | -| | - ``virtualmachines`` | -| | | -| | *Removed Parameters:* | -| | | -| | - ``virtualmachineids`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``stopNetScalerVpx`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updatePhysicalNetwork`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``zonename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createRolePermission`` | **Response:** | -| | | -| | *Removed Parameters:* | -| | | -| | - ``description`` | -| | - ``permission`` | -| | - ``rule`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listSystemVms`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createProject`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``accountid`` (optional) | -| | - ``userid`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``owner`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``changeServiceForSystemVm`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``rebootRouter`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``findHostsForMigration`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``cpuallocatedpercentage`` | -| | - ``cpuallocatedvalue`` | -| | - ``cpuallocatedwithoverprovisioning`` | -| | - ``memoryallocatedbytes`` | -| | - ``memoryallocatedpercentage`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``addNicToVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listStaticRoutes`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``state`` (optional) | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listPublicIpAddresses`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``networkname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateIso`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``deployasis`` | -| | - ``deployasisdetails`` | -| | - ``downloaddetails`` | -| | - ``url`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listExternalLoadBalancers`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``cpuallocatedpercentage`` | -| | - ``cpuallocatedvalue`` | -| | - ``cpuallocatedwithoverprovisioning`` | -| | - ``memoryallocatedbytes`` | -| | - ``memoryallocatedpercentage`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateDefaultNicForVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``prepareTemplate`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``deployasis`` | -| | - ``deployasisdetails`` | -| | - ``downloaddetails`` | -| | - ``url`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``stopInternalLoadBalancerVM`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``restartNetwork`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``networkname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``addImageStore`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``disksizetotal`` | -| | - ``disksizeused`` | -| | - ``readonly`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listRolePermissions`` | **Response:** | -| | | -| | *Removed Parameters:* | -| | | -| | - ``description`` | -| | - ``permission`` | -| | - ``rule`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listNetworkACLs`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``copyTemplate`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``deployasis`` | -| | - ``deployasisdetails`` | -| | - ``downloaddetails`` | -| | - ``url`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createServiceOffering`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``rootdisksize`` (optional) | -| | - ``storagepolicy`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``rootdisksize`` | -| | - ``vspherestoragepolicy`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listNiciraNvpDeviceNetworks`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``assignVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateTemplate`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``templatetype`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``deployasis`` | -| | - ``deployasisdetails`` | -| | - ``downloaddetails`` | -| | - ``url`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listPaloAltoFirewallNetworks`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``changeServiceForRouter`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``addSecondaryStorage`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``disksizetotal`` | -| | - ``disksizeused`` | -| | - ``readonly`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateNetwork`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateVpnGateway`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``migrateVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createTemplate`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``deployasis`` | -| | - ``deployasisdetails`` | -| | - ``downloaddetails`` | -| | - ``url`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``resetPasswordForVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``associateIpAddress`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``networkname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createNetworkACL`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``resetSSHKeyForVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createVPC`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``vpcofferingname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listInternalLoadBalancerVMs`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listSrxFirewallNetworks`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``detachIso`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createRole`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``roleid`` (optional) | -| | | -| | *Changed Parameters:* | -| | | -| | - ``type`` was 'required' and is now 'optional' | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``isdefault`` | -| | | -| | *Removed Parameters:* | -| | | -| | - ``id`` | -| | - ``description`` | -| | - ``name`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``prepareHostForMaintenance`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``cpuallocatedpercentage`` | -| | - ``cpuallocatedvalue`` | -| | - ``cpuallocatedwithoverprovisioning`` | -| | - ``memoryallocatedbytes`` | -| | - ``memoryallocatedpercentage`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listVirtualMachines`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``haenable`` (optional) | -| | - ``securitygroupid`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listDiskOfferings`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``vspherestoragepolicy`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``upgradeKubernetesCluster`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``ipaddress`` | -| | - ``ipaddressid`` | -| | - ``virtualmachines`` | -| | | -| | *Removed Parameters:* | -| | | -| | - ``virtualmachineids`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listProjects`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``username`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``owner`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``revertToVMSnapshot`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``registerIso`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``deployasis`` | -| | - ``deployasisdetails`` | -| | - ``downloaddetails`` | -| | - ``url`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``deployVirtualMachine`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``bootintosetup`` (optional) | -| | - ``nicnetworklist`` (optional) | -| | - ``properties`` (optional) | -| | | -| | *Removed Parameters:* | -| | | -| | - ``ovfproperties`` | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``cancelHostMaintenance`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``cpuallocatedpercentage`` | -| | - ``cpuallocatedvalue`` | -| | - ``cpuallocatedwithoverprovisioning`` | -| | - ``memoryallocatedbytes`` | -| | - ``memoryallocatedpercentage`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listProjectAccounts`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``projectroleid`` (optional) | -| | - ``userid`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``owner`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createDiskOffering`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``storagepolicy`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``vspherestoragepolicy`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createNetwork`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listVPCs`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``vpcofferingname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``migrateVirtualMachineWithVolume`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``restartVPC`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``vpcofferingname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``addHost`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``cpuallocatedpercentage`` | -| | - ``cpuallocatedvalue`` | -| | - ``cpuallocatedwithoverprovisioning`` | -| | - ``memoryallocatedbytes`` | -| | - ``memoryallocatedpercentage`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateProject`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``roletype`` (optional) | -| | - ``swapowner`` (optional) | -| | - ``userid`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``owner`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listIsos`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``showunique`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``deployasis`` | -| | - ``deployasisdetails`` | -| | - ``downloaddetails`` | -| | - ``url`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateCloudToUseObjectStore`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``disksizetotal`` | -| | - ``disksizeused`` | -| | - ``readonly`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateRole`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``isdefault`` | -| | | -| | *Removed Parameters:* | -| | | -| | - ``id`` | -| | - ``description`` | -| | - ``name`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listNetscalerLoadBalancerNetworks`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``startSystemVm`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createKubernetesCluster`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``ipaddress`` | -| | - ``ipaddressid`` | -| | - ``virtualmachines`` | -| | | -| | *Removed Parameters:* | -| | | -| | - ``virtualmachineids`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateVMAffinityGroup`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``migrateVPC`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``vpcofferingname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``recoverVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``getUploadParamsForTemplate`` | **Request:** | -| | | -| | *Changed Parameters:* | -| | | -| | - ``ostypeid`` was 'required' and is now 'optional' | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateProjectInvitation`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``userid`` (optional) | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``migrateSystemVm`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listVpnGateways`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listRoles`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``isdefault`` | -| | | -| | *Removed Parameters:* | -| | | -| | - ``id`` | -| | - ``description`` | -| | - ``name`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateNetworkACLItem`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listRouters`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listBrocadeVcsDeviceNetworks`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listSwifts`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``disksizetotal`` | -| | - ``disksizeused`` | -| | - ``readonly`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listUsageRecords`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``ostypeid`` | -| | - ``vpcid`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``suspendProject`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``owner`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateIpAddress`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``networkname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``migrateNetwork`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``registerTemplate`` | **Request:** | -| | | -| | *Changed Parameters:* | -| | | -| | - ``ostypeid`` was 'required' and is now 'optional' | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``deployasis`` | -| | - ``deployasisdetails`` | -| | - ``downloaddetails`` | -| | - ``url`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``importUnmanagedInstance`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``forced`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``addImageStoreS3`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``disksizetotal`` | -| | - ``disksizeused`` | -| | - ``readonly`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createPhysicalNetwork`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``zonename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listF5LoadBalancerNetworks`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listVMSnapshot`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``hypervisor`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``moveNetworkAclItem`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``attachIso`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createVpnGateway`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createVMSnapshot`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``hypervisor`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``destroyRouter`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``podname`` | -| | - ``templatename`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listImageStores`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``readonly`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``disksizetotal`` | -| | - ``disksizeused`` | -| | - ``readonly`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``removeNicFromVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``activateProject`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``owner`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``reconnectHost`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``cpuallocatedpercentage`` | -| | - ``cpuallocatedvalue`` | -| | - ``cpuallocatedwithoverprovisioning`` | -| | - ``memoryallocatedbytes`` | -| | - ``memoryallocatedpercentage`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``startKubernetesCluster`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``ipaddress`` | -| | - ``ipaddressid`` | -| | - ``virtualmachines`` | -| | | -| | *Removed Parameters:* | -| | | -| | - ``virtualmachineids`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``createPrivateGateway`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``aclname`` | -| | - ``vpcname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``uploadSslCert`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``enabledrevocationcheck`` (optional) | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``addBaremetalHost`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``cpuallocatedpercentage`` | -| | - ``cpuallocatedvalue`` | -| | - ``cpuallocatedwithoverprovisioning`` | -| | - ``memoryallocatedbytes`` | -| | - ``memoryallocatedpercentage`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``destroyVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``listServiceOfferings`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``cpunumber`` (optional) | -| | - ``cpuspeed`` (optional) | -| | - ``memory`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``rootdisksize`` | -| | - ``vspherestoragepolicy`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``startVirtualMachine`` | **Request:** | -| | | -| | *New Parameters:* | -| | | -| | - ``bootintosetup`` (optional) | -| | | -| | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``updateServiceOffering`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``rootdisksize`` | -| | - ``vspherestoragepolicy`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ -| ``stopVirtualMachine`` | **Response:** | -| | | -| | *New Parameters:* | -| | | -| | - ``osdisplayname`` | -| | | -+---------------------------------------------+--------------------------------------------------------------------------------+ - ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| Name | Description | ++============================================================+================================================================================+ +| ``createPod`` | **Request:** | +| | | +| | *Changed Parameters:* | +| | | +| | - ``startip`` was 'required' and is now 'optional' | +| | - ``netmask`` was 'required' and is now 'optional' | +| | - ``gateway`` was 'required' and is now 'optional' | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``copyIso`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdataparams`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listVirtualMachinesMetrics`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` (optional) | +| | - ``clusterid`` (optional) | +| | - ``hostid`` (optional) | +| | - ``podid`` (optional) | +| | - ``storageid`` (optional) | +| | - ``userdata`` (optional) | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listHosts`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptionsupported`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``rebootSystemVm`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listNetworks`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``privatemtu`` | +| | - ``publicmtu`` | +| | - ``supportsvmautoscaling`` | +| | - ``tungstenvirtualrouteruuid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``registerSSHKeyPair`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``project`` | +| | - ``projectid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``restoreVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateHost`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptionsupported`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listVPCOfferings`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``domainid`` (optional) | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``uploadVolume`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``vmtype`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``destroySystemVm`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``scaleSystemVm`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``stopRouter`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``changeServiceForVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``startRouter`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listTemplates`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdataparams`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``resetConfiguration`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``component`` | +| | - ``defaultvalue`` | +| | - ``displaytext`` | +| | - ``group`` | +| | - ``options`` | +| | - ``parent`` | +| | - ``subgroup`` | +| | - ``type`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createAutoScalePolicy`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``name`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``name`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``rebootVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateNetworkOffering`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``fortungsten`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateVPC`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``publicmtu`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``dns1`` | +| | - ``dns2`` | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``publicmtu`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``stopSystemVm`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createNetworkOffering`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``fortungsten`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``fortungsten`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listVolumesMetrics`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``listsystemvms`` (optional) | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateVmNicIp`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``startInternalLoadBalancerVM`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateDiskOffering`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``details`` | +| | - ``encrypt`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``quotaTariffList`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``enddate`` (optional) | +| | - ``listall`` (optional) | +| | - ``name`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``activationRule`` | +| | - ``endDate`` | +| | - ``name`` | +| | - ``removed`` | +| | - ``usageTypeDescription`` | +| | - ``uuid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listKubernetesClusters`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``created`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createAutoScaleVmGroup`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``name`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``associatednetworkid`` | +| | - ``associatednetworkname`` | +| | - ``availablevirtualmachinecount`` | +| | - ``created`` | +| | - ``lbprovider`` | +| | - ``name`` | +| | - ``privateport`` | +| | - ``publicip`` | +| | - ``publicipid`` | +| | - ``publicport`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listConfigurations`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``group`` (optional) | +| | - ``parent`` (optional) | +| | - ``subgroup`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``component`` | +| | - ``defaultvalue`` | +| | - ``displaytext`` | +| | - ``group`` | +| | - ``options`` | +| | - ``parent`` | +| | - ``subgroup`` | +| | - ``type`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``quotaTariffUpdate`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``name`` (required) | +| | - ``activationrule`` (optional) | +| | - ``description`` (optional) | +| | - ``enddate`` (optional) | +| | | +| | *Changed Parameters:* | +| | | +| | - ``usagetype`` was 'required' and is now 'optional' | +| | - ``startdate`` was 'required' and is now 'optional' | +| | - ``value`` was 'required' and is now 'optional' | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``activationRule`` | +| | - ``endDate`` | +| | - ``name`` | +| | - ``removed`` | +| | - ``usageTypeDescription`` | +| | - ``uuid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``scaleKubernetesCluster`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``created`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``stopNetScalerVpx`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listCapabilities`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``instancesdisksstatsretentionenabled`` | +| | - ``instancesdisksstatsretentiontime`` | +| | - ``instancesstatsretentiontime`` | +| | - ``instancesstatsuseronly`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listConditions`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``projectid`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``counterid`` | +| | - ``countername`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``destroyVolume`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``vmtype`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``disableAutoScaleVmGroup`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``associatednetworkid`` | +| | - ``associatednetworkname`` | +| | - ``availablevirtualmachinecount`` | +| | - ``created`` | +| | - ``lbprovider`` | +| | - ``name`` | +| | - ``privateport`` | +| | - ``publicip`` | +| | - ``publicipid`` | +| | - ``publicport`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listSystemVms`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``detachVolume`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``vmtype`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``changeServiceForSystemVm`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listNics`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``mtu`` | +| | - ``vpcid`` | +| | - ``vpcname`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``rebootRouter`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``addNicToVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateIso`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdataparams`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateDefaultNicForVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``prepareTemplate`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdataparams`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``stopInternalLoadBalancerVM`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``samlSso`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``is2faenabled`` | +| | - ``is2faverified`` | +| | - ``issuerfor2fa`` | +| | - ``providerfor2fa`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``login`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``is2faenabled`` | +| | - ``is2faverified`` | +| | - ``issuerfor2fa`` | +| | - ``providerfor2fa`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``copyTemplate`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdataparams`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createServiceOffering`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptroot`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptroot`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listNiciraNvpDeviceNetworks`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``privatemtu`` | +| | - ``publicmtu`` | +| | - ``supportsvmautoscaling`` | +| | - ``tungstenvirtualrouteruuid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``assignVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``resizeVolume`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``vmtype`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateTemplate`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdataparams`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listPaloAltoFirewallNetworks`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``privatemtu`` | +| | - ``publicmtu`` | +| | - ``supportsvmautoscaling`` | +| | - ``tungstenvirtualrouteruuid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``changeOfferingForVolume`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``vmtype`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``changeServiceForRouter`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateVolume`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``vmtype`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateVirtualMachine`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdatadetails`` (optional) | +| | - ``userdataid`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateNetwork`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``dns1`` (optional) | +| | - ``dns2`` (optional) | +| | - ``ip6dns1`` (optional) | +| | - ``ip6dns2`` (optional) | +| | - ``privatemtu`` (optional) | +| | - ``publicmtu`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``privatemtu`` | +| | - ``publicmtu`` | +| | - ``supportsvmautoscaling`` | +| | - ``tungstenvirtualrouteruuid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``migrateVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createTemplate`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdataparams`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``resetPasswordForVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``resetSSHKeyForVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``addKubernetesSupportedVersion`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``created`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createVPC`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``dns1`` (optional) | +| | - ``dns2`` (optional) | +| | - ``ip6dns1`` (optional) | +| | - ``ip6dns2`` (optional) | +| | - ``publicmtu`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``dns1`` | +| | - ``dns2`` | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``publicmtu`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listInternalLoadBalancerVMs`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateKubernetesSupportedVersion`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``created`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``detachIso`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``prepareHostForMaintenance`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptionsupported`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateAutoScaleVmGroup`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``name`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``associatednetworkid`` | +| | - ``associatednetworkname`` | +| | - ``availablevirtualmachinecount`` | +| | - ``created`` | +| | - ``lbprovider`` | +| | - ``name`` | +| | - ``privateport`` | +| | - ``publicip`` | +| | - ``publicipid`` | +| | - ``publicport`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateAutoScaleVmProfile`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``expungevmgraceperiod`` (optional) | +| | - ``otherdeployparams`` (optional) | +| | - ``serviceofferingid`` (optional) | +| | - ``userdata`` (optional) | +| | | +| | *Removed Parameters:* | +| | | +| | - ``destroyvmgraceperiod`` | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``expungevmgraceperiod`` | +| | - ``userdata`` | +| | | +| | *Removed Parameters:* | +| | | +| | - ``destroyvmgraceperiod`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``enableAutoScaleVmGroup`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``associatednetworkid`` | +| | - ``associatednetworkname`` | +| | - ``availablevirtualmachinecount`` | +| | - ``created`` | +| | - ``lbprovider`` | +| | - ``name`` | +| | - ``privateport`` | +| | - ``publicip`` | +| | - ``publicipid`` | +| | - ``publicport`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listVirtualMachines`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` (optional) | +| | - ``userdata`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listDiskOfferings`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encrypt`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``details`` | +| | - ``encrypt`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``upgradeKubernetesCluster`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``created`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createCondition`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``projectid`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``counterid`` | +| | - ``countername`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``revertToVMSnapshot`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``registerIso`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdataparams`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deployVirtualMachine`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``iodriverpolicy`` (optional) | +| | - ``iothreadsenabled`` (optional) | +| | - ``userdatadetails`` (optional) | +| | - ``userdataid`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateZone`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``allowuserspecifyvrmtu`` | +| | - ``routerprivateinterfacemaxmtu`` | +| | - ``routerpublicinterfacemaxmtu`` | +| | - ``type`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``cancelHostMaintenance`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptionsupported`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateAutoScalePolicy`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``name`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``name`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createDiskOffering`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encrypt`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``details`` | +| | - ``encrypt`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listVolumes`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``listsystemvms`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``vmtype`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``lockUser`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``is2faenabled`` | +| | - ``is2famandated`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createNetwork`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``dns1`` (optional) | +| | - ``dns2`` (optional) | +| | - ``ip6dns1`` (optional) | +| | - ``ip6dns2`` (optional) | +| | - ``privatemtu`` (optional) | +| | - ``publicmtu`` (optional) | +| | - ``tungstenvirtualrouteruuid`` (optional) | +| | | +| | *Changed Parameters:* | +| | | +| | - ``displaytext`` was 'required' and is now 'optional' | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``privatemtu`` | +| | - ``publicmtu`` | +| | - ``supportsvmautoscaling`` | +| | - ``tungstenvirtualrouteruuid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listNetworkOfferings`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``fortungsten`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listVPCs`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``dns1`` | +| | - ``dns2`` | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``publicmtu`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``migrateVirtualMachineWithVolume`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateUser`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``mandate2fa`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``is2faenabled`` | +| | - ``is2famandated`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``attachVolume`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``vmtype`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``addHost`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptionsupported`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listUsers`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``is2faenabled`` | +| | - ``is2famandated`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``disableUser`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``is2faenabled`` | +| | - ``is2famandated`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listIsos`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdataparams`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listAutoScalePolicies`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``name`` (optional) | +| | - ``projectid`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``name`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listZones`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``allowuserspecifyvrmtu`` | +| | - ``routerprivateinterfacemaxmtu`` | +| | - ``routerpublicinterfacemaxmtu`` | +| | - ``type`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listNetscalerLoadBalancerNetworks`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``privatemtu`` | +| | - ``publicmtu`` | +| | - ``supportsvmautoscaling`` | +| | - ``tungstenvirtualrouteruuid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``startSystemVm`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createKubernetesCluster`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``created`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``declareHostAsDegraded`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptionsupported`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``migrateVolume`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``vmtype`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateVMAffinityGroup`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``migrateVPC`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``dns1`` | +| | - ``dns2`` | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``publicmtu`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateConfiguration`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``component`` | +| | - ``defaultvalue`` | +| | - ``displaytext`` | +| | - ``group`` | +| | - ``options`` | +| | - ``parent`` | +| | - ``subgroup`` | +| | - ``type`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``recoverVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listCounters`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``provider`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``provider`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``migrateSystemVm`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listAutoScaleVmProfiles`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``expungevmgraceperiod`` | +| | - ``userdata`` | +| | | +| | *Removed Parameters:* | +| | | +| | - ``destroyvmgraceperiod`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``cancelHostAsDegraded`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptionsupported`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listRouters`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listBrocadeVcsDeviceNetworks`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``privatemtu`` | +| | - ``publicmtu`` | +| | - ``supportsvmautoscaling`` | +| | - ``tungstenvirtualrouteruuid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listKubernetesSupportedVersions`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``created`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``recoverVolume`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``vmtype`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``enableUser`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``is2faenabled`` | +| | - ``is2famandated`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``migrateNetwork`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``ip6dns1`` | +| | - ``ip6dns2`` | +| | - ``privatemtu`` | +| | - ``publicmtu`` | +| | - ``supportsvmautoscaling`` | +| | - ``tungstenvirtualrouteruuid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``registerTemplate`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdataparams`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createZone`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``isedge`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``allowuserspecifyvrmtu`` | +| | - ``routerprivateinterfacemaxmtu`` | +| | - ``routerpublicinterfacemaxmtu`` | +| | - ``type`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``importUnmanagedInstance`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listAutoScaleVmGroups`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``name`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``associatednetworkid`` | +| | - ``associatednetworkname`` | +| | - ``availablevirtualmachinecount`` | +| | - ``created`` | +| | - ``lbprovider`` | +| | - ``name`` | +| | - ``privateport`` | +| | - ``publicip`` | +| | - ``publicipid`` | +| | - ``publicport`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createVolume`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``vmtype`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``attachIso`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createUser`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``is2faenabled`` | +| | - ``is2famandated`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listSSHKeyPairs`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``project`` | +| | - ``projectid`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``destroyRouter`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``hostcontrolstate`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``quotaSummary`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``quotaenabled`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createCounter`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``provider`` (required) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``provider`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``removeNicFromVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteAutoScaleVmGroup`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``cleanup`` (optional) | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``createAutoScaleVmProfile`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``account`` (optional) | +| | - ``domainid`` (optional) | +| | - ``expungevmgraceperiod`` (optional) | +| | - ``projectid`` (optional) | +| | - ``userdata`` (optional) | +| | | +| | *Removed Parameters:* | +| | | +| | - ``destroyvmgraceperiod`` | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``expungevmgraceperiod`` | +| | - ``userdata`` | +| | | +| | *Removed Parameters:* | +| | | +| | - ``destroyvmgraceperiod`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``reconnectHost`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptionsupported`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``startKubernetesCluster`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``created`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``getUser`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``is2faenabled`` | +| | - ``is2famandated`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``deleteBackup`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``forced`` (optional) | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``addBaremetalHost`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptionsupported`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``destroyVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``listServiceOfferings`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptroot`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptroot`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``startVirtualMachine`` | **Request:** | +| | | +| | *New Parameters:* | +| | | +| | - ``considerlasthost`` (optional) | +| | | +| | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``stopVirtualMachine`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``autoscalevmgroupid`` | +| | - ``autoscalevmgroupname`` | +| | - ``hostcontrolstate`` | +| | - ``userdata`` | +| | - ``userdatadetails`` | +| | - ``userdataid`` | +| | - ``userdataname`` | +| | - ``userdatapolicy`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +| ``updateServiceOffering`` | **Response:** | +| | | +| | *New Parameters:* | +| | | +| | - ``encryptroot`` | +| | | ++------------------------------------------------------------+--------------------------------------------------------------------------------+ +" diff --git a/source/releasenotes/changes.rst b/source/releasenotes/changes.rst index db49a8975c..9c63c8450a 100644 --- a/source/releasenotes/changes.rst +++ b/source/releasenotes/changes.rst @@ -14,1746 +14,1366 @@ under the License. -Changes in |release| since 4.15.0.0 +Changes in |release| since 4.18.0.0 =================================== -Apache CloudStack uses GitHub `_ +Apache CloudStack uses GitHub https://github.com/apache/cloudstack/milestone/27?closed=1 to track its issues. .. cssclass:: table-striped table-bordered table-hover -+-------------------------+----------+------------------------------------------------------------+ -| Version | Github | Description | -+=========================+==========+============================================================+ -| 4.15.1.0 | `#5164`_ | kvm: fix VM HA on zone-wide storage pools | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4843`_ | ui: deployvm - Add option to stay on page | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5148`_ | Bug/false positive success message vm start | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5160`_ | Fix configuration of ntp server list in systemVMs | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5130`_ | Fix of delete of Ceph's snapshots from secondary storage | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5153`_ | ui: Notify users of new VM password on resetting VM's SSH | -| | | key | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5115`_ | packaging: Create cloud user and group if not present | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5123`_ | ui: fix missing component in SearchView | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5132`_ | Change logrotate interval to hourly | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5137`_ | UI: SystemVM - Enabling Quickview for newly resource | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5143`_ | VR: fix source cidr of egress rules are not applied | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5150`_ | UI fix deployVm with rootdisk size wrongly converted | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5129`_ | ui: Notify vm password on reinstall of VM (for password | -| | | enabled templates) | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5105`_ | server: set correct gateway when update vm nic on shared | -| | | networks | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5118`_ | Fix typo in error message on login page | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5113`_ | allow big contents from error output in marvin tests | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5078`_ | vxlan: arp does not work between hosts as multicast group | -| | | is communicated over physical nic instead of linux bridge | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5108`_ | ui: show read from ova only for ova format | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5109`_ | Localization: Hellenic (Greek) Translation | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5095`_ | Failed to scale between Service Offerings with the same | -| | | root disk size | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5098`_ | ui: add action syncStoragePool | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5097`_ | Update chain info of the volumes after migrate operations | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5076`_ | [Vmware] Fix lsilogcsas controller for deploy-as-is | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5039`_ | maven: Use https for jenkins repo, to fix build with newer | -| | | maven | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5089`_ | ui: fix focus in deployvm form | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5072`_ | Fix of some UEFI related issues | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5085`_ | Root disk size should be listed in GB at | -| | | listServiceOffering | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5084`_ | ui: remove redundant columns in list VMs view | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5081`_ | ui: Fix error when no ipv6 address | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5074`_ | Check for VLAN or VXLAN in | -| | | NetworkDaoImpl.listByPhysicalNetworkPvlan | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5063`_ | ui: fix adduser form | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5059`_ | vr: remove old ips with same mac address in dhcpentry | -| | | databag | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5053`_ | xenserver: attempt eject and destroying patch VBD | -| | | separately | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5057`_ | Create fcd folder on local storage in VMware vSphere | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5061`_ | Fix string format error | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5017`_ | Usage: usage generated for destroyed VMs with no backups | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5049`_ | FIX Network with SG Disabled still has security group | -| | | script adding rules on KVM | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5032`_ | [Vmware] Fix worker VM invalid numeric value | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5045`_ | server: fixes NPE on empty vmware.root.disk.controller | -| | | config | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5048`_ | secondary-storage: fix account template directory size | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5050`_ | ui: pass requireshvm param for register/upload template | -| | | API | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5029`_ | Prevent NPE if hypervisor's capabilities are null | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5003`_ | UI: Make 'ACL' field as mandatory and add warning message | -| | | for default_allow and default_deny | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5033`_ | Fixed invalid ostypeid when not using deployasis | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5006`_ | Disk controller vmware deploy as is | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5010`_ | SystemVM: Set agent state to disconnected on Stopping the | -| | | systemVM | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5025`_ | setup: pass password in quotes for | -| | | cloudstack-setup-databases | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5023`_ | Fix in Marvin - migrate_vm_with_volume | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4644`_ | server: destroy ssvm, cpvm on last host maintenance | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4795`_ | api/server: cpu, memory values with overprovisioning in | -| | | metrics response | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4647`_ | forceha: fix two issues when (1)stop vm from inside (2) | -| | | force remove host | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5020`_ | ui: Allow IP range creation for Physical Network - Guest | -| | | Traffic in Basic Zones | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5022`_ | ui: pass podid for basic zone createvlaniprange | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5013`_ | network/VR: fix dhcp/password/metadata issues on shared | -| | | networks with multiple subnets | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5015`_ | Fix deploy-as-is not honoured on upload from local | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5014`_ | ui: prevent same string docHelp override | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5011`_ | ui: Display Zone Name instead of Zone UUID in list view | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4871`_ | VMware Datastore Cluster primary storage pool | -| | | synchronisation | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4842`_ | ui: add tooltips for actions in tab | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#5001`_ | server: NPE may cause management server to not start | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4986`_ | allow zero as cpu speed value in service offerings | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4999`_ | UI: Update treeview when click the refresh button | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4996`_ | Updated since and validations attributes for the | -| | | ikeversion and splitconnections parameters in vpn customer | -| | | gateway cmd(s) | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4953`_ | Adding VPN options for IKE version and IKE split | -| | | connections | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4995`_ | Fixed error when passing shell reserved characters to | -| | | setup databases | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4981`_ | ui: Prevent reset of port-forward rules on cancelling a | -| | | form | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4987`_ | ui: Adding success message for DomainActionForm | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4988`_ | ui: show VR offering when provider is VR | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4989`_ | UI: Prevent listing network offering with external LB for | -| | | VPC tiers if a n/w already exists | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4991`_ | ui: Hide reset password button for a Running VM | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4993`_ | ui: Close Create network form from Zones -> Physical | -| | | Network (Guest) -> Traffic Type view | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4979`_ | ui: show domain paths for offering domain selection | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4980`_ | ui: rename acl reason to description | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4970`_ | CentOS 8: Install libgcrypt v1.8.5 required by libvirt 6.0 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4915`_ | Allow to upgrade service offerings from local <> shared | -| | | storage pools | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4967`_ | Increase max length for VMInstanceVO.backupVolumes | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4964`_ | ui: Fix Settings Tab view | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4901`_ | [Vmware] Make deploy-as-is optional | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4957`_ | vmware cks: Guard k8s cluster root disk resize if no root | -| | | disk size passed | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4924`_ | protect against stray snapshot-details without snapshot | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4971`_ | ui: Display 'Add LDAP Account' button when LDAP | -| | | configuration is added | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4907`_ | vmware: Add force parameter to iso attach/detach | -| | | operations | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4962`_ | UI: Save the tab and re-activate it after submitting the | -| | | form. | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4946`_ | api: fix disk/service offering volume response keys | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4948`_ | UI: Show IPv6 address of Instance | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4929`_ | marvin: fix test_scale_vm for xenserver/Xcp-ng | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4951`_ | Adding net tools as a dependency | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4952`_ | ui: Show traffic type in physical networks tab | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4859`_ | CLOUDSTACK-10434:Some APIs should have access check | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4949`_ | ui: Show domain path instead of name | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4950`_ | ui: Fix error in adduser | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4944`_ | Fix NPE on template garbage collection on primary storage | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4758`_ | vmware: fix stopped VM volume migration | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4934`_ | Fix volume state on migrate with | -| | | migrateVirtualMachineWithVolume API call | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4909`_ | ui: fix autogen form exec with action mapping options | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4938`_ | cloudian: Set cloudian.connector.enabled as not dynamic | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4926`_ | Add UnavailableCommandException at ExceptionErrorCodeMap | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4918`_ | Stat collector solidfire capacity fix | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4933`_ | UI: Disabled root disk size customization if Service | -| | | Offering has a fixed size | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4927`_ | debian: remove duplicate agent jar copy | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4923`_ | Support to update disk/network offering tags from UI | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4912`_ | ui: Show diskoffering for create volume from ROOT volume | -| | | snaps | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4300`_ | engine: add support for VMware 7.0 dependency and | -| | | hypervisor capability | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4920`_ | UI: Fixes security group egressrule and ingressrule | -| | | mistake | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4913`_ | test: reduce vr traceroute hops | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4493`_ | Recover VM not able to attach the data disks which were | -| | | attached before destroy | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4917`_ | UI: Search view - Fixes the color style of the filter icon | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4916`_ | Localization: Korean language support for all features of | -| | | the new CloudStack UI. | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4910`_ | UI: fix login on UI | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4738`_ | Fix VMware OVF properties copy from template | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4898`_ | VM Snapshot: Prevent vm snapshots being indefinitely stuck | -| | | in Expunging state on deletion failure | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4638`_ | server: fix root disk size on vm reset | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4899`_ | Fix orphan entry on ldap trust map after account removal | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4895`_ | vmware: fix inter-cluster stopped vm and volume migration | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4847`_ | Restricting http access on VR to internal network | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4717`_ | Added recursive fetch of child domains for | -| | | listUsageRecords API call | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4801`_ | skip livemigration for centos | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4672`_ | hypervisor: XCP-ng 8.2 support | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4884`_ | host-allocator: check capacity for suitable hosts | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4896`_ | marvin - Fix k8s test failures on VMware | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4679`_ | Disable shrinking QCOW2 volumes | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4099`_ | using forked version of trilead-ssh2 (from org.jenkins-ci) | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4892`_ | UI: Physical Network Setup in Zone Wizard | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4851`_ | [Vmware] Fix worker VMs hardware version small bug | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4802`_ | wiremock version 2.11 is incompatible with java 11 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4773`_ | Fix deploy VM from ISOs with UEFI | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4794`_ | server: filter null details during volume to template | -| | | creation | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4666`_ | Fix bug in creating shared network | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4769`_ | UI: Save and auto-expand list domain when reloading | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4775`_ | [Backport] #4698 Fix npe when migrating vm with volume | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4894`_ | travis: fix component test failure - persistent networks | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4816`_ | xenserver: retrieve correct name-label for presetup store | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4811`_ | UI: Moves fetchdata() to the created() | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4676`_ | Display public ip addresses for shared network | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4873`_ | Fix no "data-server" DNS record for VPC router | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4888`_ | Disable VR health check for VPC without tiers | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4893`_ | Remove .env.local | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4870`_ | kvm: remove unnecessary new String | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4882`_ | UI: Restored the Basic Networking | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4869`_ | VR: fix rsyslog compresses log files but not release disk | -| | | space in VR | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4745`_ | ui: allow docHelp override using config.json | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4872`_ | systemvm: remove logrotate config for wtmp and btmp | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#3944`_ | vpc/server: Fix network statistics for vpc | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4675`_ | Bug fix in displaying public IP address of shared networks | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4789`_ | api/server: fix hahost value in listHosts | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4804`_ | server: allow copy cross-zone templates to other zone | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4862`_ | ui: Display root disk size in Compute offering details | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4867`_ | ui: assignVM: Set isrecursive to false when fetching | -| | | accounts | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4764`_ | UI: Fix create zone wizard on mobile view | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4571`_ | uservmjoindaoimpl: Set free memory to zero if greater than | -| | | total memory | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4864`_ | Add 'break' at RedifshClient request re-try loop (fixed | -| | | issue from 4846) | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4840`_ | Remove the rule(s) validation with api names while | -| | | importing a role | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4805`_ | server: create DB entry for storage pool capacity when | -| | | create storage pool | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4765`_ | UI: Fixes page size changer doesn't show up on mobile mode | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4763`_ | UI: Add cancel button missing on dialog | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4762`_ | UI: Auto-focus input, form | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4829`_ | volume resize: Fix issue with volume resize on VMWare | -| | | (deploy as-is templates) | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4866`_ | tests: Extend wait time after interrupt (#4815) | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4800`_ | kvm: Do not set backing file format of DATADISK in vm | -| | | start/migration | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4793`_ | systemvmtemplate: new template for 4.15.1 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4744`_ | UI: Fix update template permission with different domain | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4861`_ | Revert "Add 'break' at RedifshClient request re-try loop" | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4748`_ | Template cleanup : Update vm_template table to set | -| | | template as removed on deletion | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4846`_ | Add 'break' at RedifshClient request re-try loop | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4857`_ | ui: Disable login button until redirected | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4777`_ | Load modules to support NAT traversal in VR | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4806`_ | vpc: dnsmasq is not started if use.external.dns is true | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4850`_ | ui: Consider overprovisioning when displaying allocated | -| | | progress | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4856`_ | UI: Fix the style action button | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4855`_ | UI: Fill out the search filter form field after performing | -| | | a filter | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4841`_ | ui: fix add cluster form for vmware | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4845`_ | ui: Fix add primary store during Zone Deployment for | -| | | PreSetup protocol | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4815`_ | tests: Extend wait time after interrupt | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4767`_ | UI: Fix list view router-link goto account info instead of | -| | | list account | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4820`_ | UI: Edit instance - offer existing Groups | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4831`_ | UI: Network offering selection - Show display text instead | -| | | of the name | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4836`_ | Added info / tooltip for add role and import role dialogs | -| | | in the UI | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4839`_ | ui: Fix route to ISO From VM's Info Card / Detail View | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4821`_ | ui: Show vm name along with password | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4783`_ | novnc: Hide fullscreen button when not connected | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4779`_ | Fix NPE while cloudstack agent failed to connect to mgt | -| | | server | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4833`_ | novnc: Fix vm console is not working on firefox if | -| | | language is not English | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4824`_ | ui: Fixes for action messages and forms | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4823`_ | ui: Show label for view console action | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4822`_ | listprojects: Maintain order of project owners added to a | -| | | project | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4812`_ | ui: change createAccount to use post | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4832`_ | ui - Project Role Permission: Change default permission | -| | | type to 'Deny' | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4574`_ | db-schema update 4.15.0 to 4.15.1: correct some guest-os | -| | | namings | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4670`_ | ui: fix update vm details wrt backend changes | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4691`_ | server: delete template on storage over capacity threshold | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4755`_ | usage: return guest OS type UUID instead of internal DB ID | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4756`_ | Mask libvirtd sockets which prevents cloudstack-agent from | -| | | being setup | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4772`_ | server: use network details from nic network | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4784`_ | ui: Show memory allocated percentage when migrating vm | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4785`_ | test: fix listVolumes call for detach volume migration | -| | | check | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4786`_ | ui: Show vm name in info card in deployvm | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4787`_ | ui: Show displayname in compute list view | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4788`_ | ui: Fix breadcrumb discrepancy | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4759`_ | UI: German translation corrections | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4761`_ | UI: Fix upload SSL certificate failed in the project view | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4746`_ | ui: FIX error in "Port forward" and "Load Balancing" | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4743`_ | api: remove account from listProjects API response | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4736`_ | novnc: Add source IP check | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4626`_ | server: fix failed to remove template/iso if upload from | -| | | local fails | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4531`_ | novnc: Accept new novnc client and disconnect old session | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4751`_ | build: deprecate and remove md5 from releases | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4747`_ | cks: fix token TTL, set it to never expire | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4740`_ | get_bridge_physdev returns "device:" instead of "device" | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4639`_ | cks: use HttpsURLConnection for checking api server | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4668`_ | Adjust tests to fix a problem with the container builders | -| | | (https://github.com/khos2ow/cloudstack-deb-builder) | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4693`_ | server: fix finding pools for volume migration | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4032`_ | Suspending the VM prior to deleting snapshots to avoid | -| | | corruption, th… | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4047`_ | Look for active templates for VR deployment | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4663`_ | ui: fix add Vmware cluster | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4716`_ | ui: Add guest IP ranges | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4728`_ | UI: add component was missing | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4725`_ | packaging: update Requirements in README | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4713`_ | API: Increase leniency to list templates on secondary | -| | | stores that have been marked deleted by updating the db | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4615`_ | Secondary storage: Allow store deletion after successful | -| | | data migration | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4582`_ | Upgrade: check systemvm template before db changes | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4718`_ | UI test: Fix UI test failures in 4.15 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4684`_ | cks: fix CNI release url returning 404 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4688`_ | format of checksum files convenient for automated checking | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4683`_ | ui: fix systevmtype for create service offering form | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4604`_ | api: add zone, vm name params in listVmSnapshot response | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4562`_ | Prevent KVM from performing volume migrations of running | -| | | instances | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4667`_ | Display account name only if its not null | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4656`_ | Ubuntu 20.04: set Backing Format of qcow2 images in vm | -| | | start and migration | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4396`_ | Show network name in exception message | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4451`_ | loop optimisation in bash | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4609`_ | API discovery: Prevent overwrite of API parameters in | -| | | cases where API names are same | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4445`_ | Cleanup domain details when domain is deleted | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4665`_ | ui: fix tags selection for add disk offering | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4651`_ | marvin: fix test failures when changing service offering | -| | | of a VM | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4627`_ | VR: fix expunging vm will remove dhcp entries of another | -| | | vm in VR | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4650`_ | test: hardware required for changeserviceoffering | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4653`_ | Update cloud-setup-databases.in - help message fix | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4655`_ | test: fix checksums for test template | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4601`_ | server: Get vm network/disk statistics and update database | -| | | per host | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4623`_ | server: Fix update capacity for hosts take long time if | -| | | there are many service offerings | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4629`_ | server: prevent update vm read-only details | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4591`_ | server: select root disk based on user input during vm | -| | | import | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4576`_ | Fix: Use Q35 chipset for UEFI x86_64 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4624`_ | server: fix wrong error message when create isolated | -| | | network without SourceNat | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4622`_ | server: add possibility to scale vm to current custom | -| | | offerings on UI | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4602`_ | server: keep networks order and ips while move a vm with | -| | | multiple networks | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4625`_ | server: throw exception when update vm nic on L2 network | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4633`_ | doc: fix typo in install notes | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4605`_ | packaging: build and bundle UI using npm in deb and rpm | -| | | packages | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4620`_ | Fix screenshot path on README of /ui directory | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4600`_ | server: fix cannot create vm if another vm with same name | -| | | has been added and removed on the network | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4491`_ | fix on changeServiceForVirtualMachine when updating | -| | | read/write rate | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4621`_ | Fixed typo | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4614`_ | vmsnapshot: Add quickview to the list of VM Snapshot | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.1.0 | `#4611`_ | UI Storage Pool Tags: unable to delete last tag | -+-------------------------+----------+------------------------------------------------------------+ ++-------------------------+----------+--------------------------------------------------------------+ +| Version | Github | Description | ++=========================+==========+==============================================================+ +| 4.18.1.0 | `#7933`_ | server: fix dualstack ipv6 networks for vxlan | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7945`_ | kvm: fix live vm migration between local storage pools | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7947`_ | ui: don't skip if dataview has multiple items in response | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7932`_ | Fix direct download https compressed qcow2 template checker | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7924`_ | PowerFlex: Handle missing volumes gracefully during delete | +| | | volume | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7922`_ | db: Add index on cluster_details.name for FirstFitPlanner | +| | | speedup | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7887`_ | xen/xcpng: set vmr.VCPUsMax to minimum of global setting and | +| | | host cpu cores | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7913`_ | server: throw new exception when rootdisksize is required | +| | | but not set | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7874`_ | systemvm: update size and state of systemvm template during | +| | | registration | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7867`_ | UI: Infer template settings in the deploy VM wizard | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7911`_ | ui: speed up compute instance listing | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7846`_ | ui: Fix refresh and re-route behaviour | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7877`_ | server: try with all supported hypervisors (ordered, no | +| | | duplications) when deploy a virtual router | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7144`_ | server: fix cannot get systemvm ips in dedicated ranges | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7909`_ | server: fix global setting | +| | | system.vm.public.ip.reservation.mode.strictness is not | +| | | really dynamic | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7761`_ | vmware: improve solidfire storage plugin integration and fix | +| | | cases | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7898`_ | server: allow user to list available IPs on shared networks | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7609`_ | ui: fix notification list reordering intermittently | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7880`_ | server Don't allow inadvertent deletion of hidden details | +| | | via API | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7900`_ | UI: Add central project store and watch functionality | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7894`_ | ui: bump UI pkg version to match CloudStacks | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7897`_ | ui: make it clear that deletion of a volume will not delete | +| | | any snapshots | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7896`_ | UI: update ip ranges of shared networks | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7799`_ | engine/schema: fix duplicated guest OSes in 4.18.0.0 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7893`_ | ui: Fix project theme on reload or refresh | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7886`_ | server: check hostId when attach disk to a Stopped vm with | +| | | local storage | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7801`_ | ui: fix creating zone with vxlan if Guest physical network | +| | | is not the last | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7769`_ | AutoScaling: support Managed User Data | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7882`_ | UI: Fix hide delete button for templates that are in | +| | | Installing template state | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7888`_ | Support GNU sed apidoc for MacOS build | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7870`_ | server: Allow admins to disable the 2FA of users in | +| | | subdomains | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7879`_ | UI: Add missing tooltips to Register/Upload Templates/ISOs | +| | | views | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7876`_ | Api: update command domainId/account descriptions | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7826`_ | cpvm: Fix CPVM not releasing CPU after closing console | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7293`_ | security group: replace vm.getPrivateMacAddress() with | +| | | nic.getMacAddress() | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7853`_ | Fix role escalation prevention | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7875`_ | packaging: install tzdata-java or timezone-java | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7848`_ | server: get only Ready ISO to mount | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7380`_ | VMware: add support for 8.0b (8.0.0.2), 8.0c (8.0.0.3) | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7844`_ | server: Replace Hashtable with LinkedHashMap in | +| | | createIsoResponse | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7866`_ | api: Force-stop descriptions | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7869`_ | UI: Show iso urls | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7862`_ | test: skip live storage migration on CentOS 7 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#6970`_ | CPVM: fix cpu usage for console vm when using vnc over | +| | | websockets | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7832`_ | server: Fix allocation of more public IPs than the account's | +| | | limit | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7831`_ | VMware: Fix casting exception during backup NIC | +| | | synchronization | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7854`_ | CKS: check access when get kubernetescluster config | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7833`_ | ui: assorted improvements | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7828`_ | cloudstack: bump to use 4.18.1.0 systemvmtemplate | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7845`_ | storpool: fix pom.xml which caused docker image build | +| | | failures | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7777`_ | server: remove registered userdata when cleanup an account | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7441`_ | server: Use max secondary storage defined on the account | +| | | during upload | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7685`_ | test: upgrade kubernetes versions to 1.25.0/1.26.0 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7836`_ | kvm: Added VNI Devices as normal bridge slave devs | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7694`_ | noVNC: fix JP keyboard on vmware7+ which uses websocket URL | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7629`_ | Prometheus exporter fix cpu/memory usage labels | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7775`_ | server: clean network offerings for domain on remove | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7808`_ | engine/schema: fix CPU cap limitation for upgraded | +| | | environment | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7760`_ | VM.CREATE/VOLUME.DELETE/VOLUME.DESTROY not being emitted | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7810`_ | Allow KVM overcommit to work without reducing minimum VM | +| | | memory when vm ballooning is disabled | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7812`_ | make details optional for addGuestOs API | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7809`_ | Remove nic allocation txn during Vm deploy. | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7667`_ | include all VMs when projects selected not just for admins | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7793`_ | UI: allow new keys for VM details | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7392`_ | Refactoring StorPool's smoke tests | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7796`_ | UI: decode userdata in EditVM dialog | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7722`_ | packaging: unalias cp before package upgrade | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7564`_ | make NoopDbUpgrade do a systemvm template check | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7792`_ | UI unit test: fix expected values | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7739`_ | UI: Filter templates by zone and hypervisor type when | +| | | reinstall a VM | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7663`_ | KVM: fix SSVM starting when overprovisioning memory | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7706`_ | pom.xml: add property project.systemvm.template.location | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7779`_ | cloudutils: fix adding rocky9 host failure due to missing | +| | | /etc/sysconfig/libvirtd | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7785`_ | server: get id from persisted object ReservationVO | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7766`_ | search in (too) large result sets | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7772`_ | ui: fix 404 error when list volumes of system vms | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7768`_ | packaging: install tzdata-java on centos7/centos8 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7750`_ | add remove tag to remove acl item method | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7758`_ | UI: fix userdataid or userdata content is passed when | +| | | userdata append/override is unchecked | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7765`_ | Fix NPE in management server logs due to /proc/cpuinfo | +| | | output | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7764`_ | UI: add step to create bearer token for kubernetes dashboard | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7735`_ | Set encrypted PowerFlex disk format correctly | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7708`_ | utils: fix RBD URI if credentials contains slash | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7749`_ | ui: fix userdata base64 encoding | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7757`_ | Allow encrypted volume migration for PowerFlex volumes | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7724`_ | server: clear resource reservation and increment resource | +| | | count in a transaction | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7288`_ | SSVM: 'allow from' private IP in other SSVMs if the public | +| | | IP is in allowed internal sites cidrs | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7754`_ | eof added to StorPoolStatsCollector | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7404`_ | Storage and volumes statistics tasks for StorPool primary | +| | | storage | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#6797`_ | proper storage construction | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7634`_ | guarantee MAC uniqueness | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7656`_ | server: allow migration of all VMs with local storage on KVM | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7719`_ | Add L2 networks to Zones with SG | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7641`_ | vmware: fix unmanaged instance listing when different name & | +| | | internal CS name | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7580`_ | agent: get the right controll cidr | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7732`_ | Sync precommit config from main | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7695`_ | server,engine-orchestration: allocate vm without transaction | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7693`_ | Fix direct download URL checks | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7713`_ | use `Files.createTempDirectory()` instead of `new File()` | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7691`_ | NPE guard | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7381`_ | Fix foreign key constraints and the mysql procedure that is | +| | | used | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7707`_ | UI: fix wrong vpcid when create network in VPC | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7630`_ | cleanup removal of physical network | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7237`_ | console proxy: use AeadBase64Encryptor instead of | +| | | AES/CBC/PKCS5Padding | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7607`_ | server: do not check zone imagestores for directdownload | +| | | template delete | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7588`_ | UI: Zone wizard fix | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7666`_ | engine-orchestration: fix volume size resource count | +| | | mismatch | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7689`_ | scaleio: Avoid race condition while handling host disconnect | +| | | and connect scenarios | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7687`_ | api: correct error on resize volume resource allocation | +| | | failure | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7583`_ | marvin: fix smoke test failures if mgmt server is Ubuntu | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7628`_ | ui: fix vm import for L2 n/w in Setup state | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7511`_ | Tungsten: change conserve_mode of default network offering | +| | | to 0 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7539`_ | Volume encryption support for StorPool plug-in | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7594`_ | Fix: Volumes on lost local storage cannot be removed | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7584`_ | server: Add check on host's status while deleting config | +| | | drive on host cache | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7664`_ | [4.18] Bump the version to 4.18.1.0-SNAPSHOT | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7408`_ | Allow volume migrations in ScaleIO within and across ScaleIO | +| | | storage clusters | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7444`_ | engine-orchestration,vmware: hypervisor migration during | +| | | start vm migration | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7636`_ | utils: fix check for mrtalink url | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7620`_ | accept first word from host os string for backwards | +| | | compatibility | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7597`_ | consider last host only for root-admin | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7410`_ | ssvm: pass all accessible secondary storage to ssvm | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7570`_ | interpret /etc/redhet-release better | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7602`_ | marvin: fix test_data for parsing failure | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7592`_ | .github: Use parallel builds for github actions | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#6512`_ | Refactor test and change IP range | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7313`_ | server: improve storage GC to skip expunging possible | +| | | duplicate volumes | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7160`_ | vmware: do not create vm datastore when attach an existing | +| | | volume on solidfire | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7524`_ | secondary-storage: delete backedup snapshot dir on delete | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7479`_ | cks: k8s cluster on vpc tier | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7508`_ | guestos: add Windows Server 2022 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7452`_ | test: reduce PowerMock usage for code coverage | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7475`_ | cks,ui: allow changing stopped cluster offering, | +| | | improvements | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7559`_ | Create user 'cloud' in cloudstack-usage postinstall | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7526`_ | server: fix volume detach operation when no vm host | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7557`_ | ui: show zones and offerings to users | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7455`_ | Fix Tungsten Fabric errors on adding a new zone due to | +| | | duplicated entries on ntwk_service_map | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7527`_ | ui: fix infocard tempalte, iso fields | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7485`_ | engine-storage: fix errored template becomes active | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7424`_ | ui: fix tags for security group rules | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7521`_ | Marvin: Fix deployDataCenter's cleanup | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7522`_ | github-actions: fix ui build workflow | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7506`_ | increase log detail for limit checking, fix | +| | | getDomainReservation() | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7421`_ | api,server: fix VM.CREATE events on vm deploy without start | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7265`_ | router: do not restart conntrackd if no guest networks | +| | | (issue 6702) | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7448`_ | server: add config SSVM capacity scan | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7264`_ | ssvm: continue with other secondary storages if fails to | +| | | program a secondary storage | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7513`_ | ui: set default cpu, memory value for k8s version | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7512`_ | ui: fix sourceIP is not passed when create internal LB | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7499`_ | ui: fix action notifications | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7163`_ | fix tools/build/setnextversion.sh: do not update | +| | | tools/apidoc/pom.xml | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7027`_ | marvin: replace encodestring for encodebytes | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7478`_ | addAnnotation: added the various entity type supported by | +| | | the api call | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7494`_ | server: Fix DirectDownload certificate check initial delay | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7498`_ | server: fix null pointer on powerflex attach volume edge | +| | | case | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7482`_ | Qemu migration hook: check for source length before using | +| | | element 0 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7477`_ | novnc: Send console text slower to avoid overloading remote | +| | | keyboard buffer | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7453`_ | Support local storage live migration for direct download | +| | | templates | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7423`_ | ui: fix custom offering cpuspeed during vm import | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7415`_ | server: validate ip address value on update config | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7445`_ | ssvm: fix post request header case mismatch | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7439`_ | refactor: delete unsed serviceoffering classes in quota | +| | | module | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7368`_ | ui: Add filtering by state in account, systemvms, router and | +| | | storagepool | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7215`_ | server: dedicate vxlan range to account | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7373`_ | ui: Allow admin/user to filter by state for Pods, Clusters | +| | | and Hosts | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7269`_ | debian/control: build packages on ubuntu 22.04 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7398`_ | server,engine-schema: fix listing service offering for vm | +| | | scale | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7360`_ | Set hypervisor hostname via userdata only when the global | +| | | settings are allowed | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7407`_ | server: rephrase error message for iso vm reinstall | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7400`_ | Fix for direct download templates with multiple bypassed | +| | | references | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7384`_ | server: Roles search by keyword | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7385`_ | vmware: Datastore cluster synchronization should check if | +| | | the child datastores are in UP state or not | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7393`_ | ui: CreateNetwork isolated/L2 form, added accounts list | +| | | under selected domain | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7276`_ | ui: allow clearing dns during zone update | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7411`_ | ui: show only advanced zones for vmautoscale form | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7277`_ | ui: show vpn users tab in networks section | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7406`_ | server: list vm search vm ip using keyword | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7394`_ | ui: allow creating account networkdomain | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7388`_ | pom.xml: bump only required dependencies | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7402`_ | ui: Fixed the Description coloumn in the UI for Quota | +| | | traffic page | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7359`_ | Fix ScaleVM to consider resize volume in any type of service | +| | | offering | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7281`_ | Console: upgrade noVNC from v1.2.0 to v1.4.0 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7328`_ | server: fix userdatadetails parsing | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7395`_ | ui: show static-nat tag for public ip | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7387`_ | Added details about account/domain to which network will be | +| | | assigned during creation | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7268`_ | saml: Add EncryptedElementType key resolver to SAML plugin | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7332`_ | test: add smoke test for user role for userdata crud api | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7327`_ | orchestration: fix error on deleted template vm start | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7382`_ | fixed L2 network creation for particular account | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7200`_ | Added upper case JPEG extension for icon upload | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7343`_ | UI: fix templates/offerings are not listed in autoscale vm | +| | | profile when login as user | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7372`_ | Fixed avoid set variables which is causing deployment | +| | | failures | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7374`_ | Add service ip to listManagementServers API response | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7367`_ | UI: fix default network is not passed to deployvm API | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7361`_ | ui: Added UEFI support flag in host details view | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.1.0 | `#7140`_ | Fix PR 7131 bugs and vulnerabilities | ++-------------------------+----------+--------------------------------------------------------------+ -255 Issues listed +196 Issues listed -.. _`#5164`: https://github.com/apache/cloudstack/pull/5164 -.. _`#4843`: https://github.com/apache/cloudstack/pull/4843 -.. _`#5148`: https://github.com/apache/cloudstack/pull/5148 -.. _`#5160`: https://github.com/apache/cloudstack/pull/5160 -.. _`#5130`: https://github.com/apache/cloudstack/pull/5130 -.. _`#5153`: https://github.com/apache/cloudstack/pull/5153 -.. _`#5115`: https://github.com/apache/cloudstack/pull/5115 -.. _`#5123`: https://github.com/apache/cloudstack/pull/5123 -.. _`#5132`: https://github.com/apache/cloudstack/pull/5132 -.. _`#5137`: https://github.com/apache/cloudstack/pull/5137 -.. _`#5143`: https://github.com/apache/cloudstack/pull/5143 -.. _`#5150`: https://github.com/apache/cloudstack/pull/5150 -.. _`#5129`: https://github.com/apache/cloudstack/pull/5129 -.. _`#5105`: https://github.com/apache/cloudstack/pull/5105 -.. _`#5118`: https://github.com/apache/cloudstack/pull/5118 -.. _`#5113`: https://github.com/apache/cloudstack/pull/5113 -.. _`#5078`: https://github.com/apache/cloudstack/pull/5078 -.. _`#5108`: https://github.com/apache/cloudstack/pull/5108 -.. _`#5109`: https://github.com/apache/cloudstack/pull/5109 -.. _`#5095`: https://github.com/apache/cloudstack/pull/5095 -.. _`#5098`: https://github.com/apache/cloudstack/pull/5098 -.. _`#5097`: https://github.com/apache/cloudstack/pull/5097 -.. _`#5076`: https://github.com/apache/cloudstack/pull/5076 -.. _`#5039`: https://github.com/apache/cloudstack/pull/5039 -.. _`#5089`: https://github.com/apache/cloudstack/pull/5089 -.. _`#5072`: https://github.com/apache/cloudstack/pull/5072 -.. _`#5085`: https://github.com/apache/cloudstack/pull/5085 -.. _`#5084`: https://github.com/apache/cloudstack/pull/5084 -.. _`#5081`: https://github.com/apache/cloudstack/pull/5081 -.. _`#5074`: https://github.com/apache/cloudstack/pull/5074 -.. _`#5063`: https://github.com/apache/cloudstack/pull/5063 -.. _`#5059`: https://github.com/apache/cloudstack/pull/5059 -.. _`#5053`: https://github.com/apache/cloudstack/pull/5053 -.. _`#5057`: https://github.com/apache/cloudstack/pull/5057 -.. _`#5061`: https://github.com/apache/cloudstack/pull/5061 -.. _`#5017`: https://github.com/apache/cloudstack/pull/5017 -.. _`#5049`: https://github.com/apache/cloudstack/pull/5049 -.. _`#5032`: https://github.com/apache/cloudstack/pull/5032 -.. _`#5045`: https://github.com/apache/cloudstack/pull/5045 -.. _`#5048`: https://github.com/apache/cloudstack/pull/5048 -.. _`#5050`: https://github.com/apache/cloudstack/pull/5050 -.. _`#5029`: https://github.com/apache/cloudstack/pull/5029 -.. _`#5003`: https://github.com/apache/cloudstack/pull/5003 -.. _`#5033`: https://github.com/apache/cloudstack/pull/5033 -.. _`#5006`: https://github.com/apache/cloudstack/pull/5006 -.. _`#5010`: https://github.com/apache/cloudstack/pull/5010 -.. _`#5025`: https://github.com/apache/cloudstack/pull/5025 -.. _`#5023`: https://github.com/apache/cloudstack/pull/5023 -.. _`#4644`: https://github.com/apache/cloudstack/pull/4644 -.. _`#4795`: https://github.com/apache/cloudstack/pull/4795 -.. _`#4647`: https://github.com/apache/cloudstack/pull/4647 -.. _`#5020`: https://github.com/apache/cloudstack/pull/5020 -.. _`#5022`: https://github.com/apache/cloudstack/pull/5022 -.. _`#5013`: https://github.com/apache/cloudstack/pull/5013 -.. _`#5015`: https://github.com/apache/cloudstack/pull/5015 -.. _`#5014`: https://github.com/apache/cloudstack/pull/5014 -.. _`#5011`: https://github.com/apache/cloudstack/pull/5011 -.. _`#4871`: https://github.com/apache/cloudstack/pull/4871 -.. _`#4842`: https://github.com/apache/cloudstack/pull/4842 -.. _`#5001`: https://github.com/apache/cloudstack/pull/5001 -.. _`#4986`: https://github.com/apache/cloudstack/pull/4986 -.. _`#4999`: https://github.com/apache/cloudstack/pull/4999 -.. _`#4996`: https://github.com/apache/cloudstack/pull/4996 -.. _`#4953`: https://github.com/apache/cloudstack/pull/4953 -.. _`#4995`: https://github.com/apache/cloudstack/pull/4995 -.. _`#4981`: https://github.com/apache/cloudstack/pull/4981 -.. _`#4987`: https://github.com/apache/cloudstack/pull/4987 -.. _`#4988`: https://github.com/apache/cloudstack/pull/4988 -.. _`#4989`: https://github.com/apache/cloudstack/pull/4989 -.. _`#4991`: https://github.com/apache/cloudstack/pull/4991 -.. _`#4993`: https://github.com/apache/cloudstack/pull/4993 -.. _`#4979`: https://github.com/apache/cloudstack/pull/4979 -.. _`#4980`: https://github.com/apache/cloudstack/pull/4980 -.. _`#4970`: https://github.com/apache/cloudstack/pull/4970 -.. _`#4915`: https://github.com/apache/cloudstack/pull/4915 -.. _`#4967`: https://github.com/apache/cloudstack/pull/4967 -.. _`#4964`: https://github.com/apache/cloudstack/pull/4964 -.. _`#4901`: https://github.com/apache/cloudstack/pull/4901 -.. _`#4957`: https://github.com/apache/cloudstack/pull/4957 -.. _`#4924`: https://github.com/apache/cloudstack/pull/4924 -.. _`#4971`: https://github.com/apache/cloudstack/pull/4971 -.. _`#4907`: https://github.com/apache/cloudstack/pull/4907 -.. _`#4962`: https://github.com/apache/cloudstack/pull/4962 -.. _`#4946`: https://github.com/apache/cloudstack/pull/4946 -.. _`#4948`: https://github.com/apache/cloudstack/pull/4948 -.. _`#4929`: https://github.com/apache/cloudstack/pull/4929 -.. _`#4951`: https://github.com/apache/cloudstack/pull/4951 -.. _`#4952`: https://github.com/apache/cloudstack/pull/4952 -.. _`#4859`: https://github.com/apache/cloudstack/pull/4859 -.. _`#4949`: https://github.com/apache/cloudstack/pull/4949 -.. _`#4950`: https://github.com/apache/cloudstack/pull/4950 -.. _`#4944`: https://github.com/apache/cloudstack/pull/4944 -.. _`#4758`: https://github.com/apache/cloudstack/pull/4758 -.. _`#4934`: https://github.com/apache/cloudstack/pull/4934 -.. _`#4909`: https://github.com/apache/cloudstack/pull/4909 -.. _`#4938`: https://github.com/apache/cloudstack/pull/4938 -.. _`#4926`: https://github.com/apache/cloudstack/pull/4926 -.. _`#4918`: https://github.com/apache/cloudstack/pull/4918 -.. _`#4933`: https://github.com/apache/cloudstack/pull/4933 -.. _`#4927`: https://github.com/apache/cloudstack/pull/4927 -.. _`#4923`: https://github.com/apache/cloudstack/pull/4923 -.. _`#4912`: https://github.com/apache/cloudstack/pull/4912 -.. _`#4300`: https://github.com/apache/cloudstack/pull/4300 -.. _`#4920`: https://github.com/apache/cloudstack/pull/4920 -.. _`#4913`: https://github.com/apache/cloudstack/pull/4913 -.. _`#4493`: https://github.com/apache/cloudstack/pull/4493 -.. _`#4917`: https://github.com/apache/cloudstack/pull/4917 -.. _`#4916`: https://github.com/apache/cloudstack/pull/4916 -.. _`#4910`: https://github.com/apache/cloudstack/pull/4910 -.. _`#4738`: https://github.com/apache/cloudstack/pull/4738 -.. _`#4898`: https://github.com/apache/cloudstack/pull/4898 -.. _`#4638`: https://github.com/apache/cloudstack/pull/4638 -.. _`#4899`: https://github.com/apache/cloudstack/pull/4899 -.. _`#4895`: https://github.com/apache/cloudstack/pull/4895 -.. _`#4847`: https://github.com/apache/cloudstack/pull/4847 -.. _`#4717`: https://github.com/apache/cloudstack/pull/4717 -.. _`#4801`: https://github.com/apache/cloudstack/pull/4801 -.. _`#4672`: https://github.com/apache/cloudstack/pull/4672 -.. _`#4884`: https://github.com/apache/cloudstack/pull/4884 -.. _`#4896`: https://github.com/apache/cloudstack/pull/4896 -.. _`#4679`: https://github.com/apache/cloudstack/pull/4679 -.. _`#4099`: https://github.com/apache/cloudstack/pull/4099 -.. _`#4892`: https://github.com/apache/cloudstack/pull/4892 -.. _`#4851`: https://github.com/apache/cloudstack/pull/4851 -.. _`#4802`: https://github.com/apache/cloudstack/pull/4802 -.. _`#4773`: https://github.com/apache/cloudstack/pull/4773 -.. _`#4794`: https://github.com/apache/cloudstack/pull/4794 -.. _`#4666`: https://github.com/apache/cloudstack/pull/4666 -.. _`#4769`: https://github.com/apache/cloudstack/pull/4769 -.. _`#4775`: https://github.com/apache/cloudstack/pull/4775 -.. _`#4894`: https://github.com/apache/cloudstack/pull/4894 -.. _`#4816`: https://github.com/apache/cloudstack/pull/4816 -.. _`#4811`: https://github.com/apache/cloudstack/pull/4811 -.. _`#4676`: https://github.com/apache/cloudstack/pull/4676 -.. _`#4873`: https://github.com/apache/cloudstack/pull/4873 -.. _`#4888`: https://github.com/apache/cloudstack/pull/4888 -.. _`#4893`: https://github.com/apache/cloudstack/pull/4893 -.. _`#4870`: https://github.com/apache/cloudstack/pull/4870 -.. _`#4882`: https://github.com/apache/cloudstack/pull/4882 -.. _`#4869`: https://github.com/apache/cloudstack/pull/4869 -.. _`#4745`: https://github.com/apache/cloudstack/pull/4745 -.. _`#4872`: https://github.com/apache/cloudstack/pull/4872 -.. _`#3944`: https://github.com/apache/cloudstack/pull/3944 -.. _`#4675`: https://github.com/apache/cloudstack/pull/4675 -.. _`#4789`: https://github.com/apache/cloudstack/pull/4789 -.. _`#4804`: https://github.com/apache/cloudstack/pull/4804 -.. _`#4862`: https://github.com/apache/cloudstack/pull/4862 -.. _`#4867`: https://github.com/apache/cloudstack/pull/4867 -.. _`#4764`: https://github.com/apache/cloudstack/pull/4764 -.. _`#4571`: https://github.com/apache/cloudstack/pull/4571 -.. _`#4864`: https://github.com/apache/cloudstack/pull/4864 -.. _`#4840`: https://github.com/apache/cloudstack/pull/4840 -.. _`#4805`: https://github.com/apache/cloudstack/pull/4805 -.. _`#4765`: https://github.com/apache/cloudstack/pull/4765 -.. _`#4763`: https://github.com/apache/cloudstack/pull/4763 -.. _`#4762`: https://github.com/apache/cloudstack/pull/4762 -.. _`#4829`: https://github.com/apache/cloudstack/pull/4829 -.. _`#4866`: https://github.com/apache/cloudstack/pull/4866 -.. _`#4800`: https://github.com/apache/cloudstack/pull/4800 -.. _`#4793`: https://github.com/apache/cloudstack/pull/4793 -.. _`#4744`: https://github.com/apache/cloudstack/pull/4744 -.. _`#4861`: https://github.com/apache/cloudstack/pull/4861 -.. _`#4748`: https://github.com/apache/cloudstack/pull/4748 -.. _`#4846`: https://github.com/apache/cloudstack/pull/4846 -.. _`#4857`: https://github.com/apache/cloudstack/pull/4857 -.. _`#4777`: https://github.com/apache/cloudstack/pull/4777 -.. _`#4806`: https://github.com/apache/cloudstack/pull/4806 -.. _`#4850`: https://github.com/apache/cloudstack/pull/4850 -.. _`#4856`: https://github.com/apache/cloudstack/pull/4856 -.. _`#4855`: https://github.com/apache/cloudstack/pull/4855 -.. _`#4841`: https://github.com/apache/cloudstack/pull/4841 -.. _`#4845`: https://github.com/apache/cloudstack/pull/4845 -.. _`#4815`: https://github.com/apache/cloudstack/pull/4815 -.. _`#4767`: https://github.com/apache/cloudstack/pull/4767 -.. _`#4820`: https://github.com/apache/cloudstack/pull/4820 -.. _`#4831`: https://github.com/apache/cloudstack/pull/4831 -.. _`#4836`: https://github.com/apache/cloudstack/pull/4836 -.. _`#4839`: https://github.com/apache/cloudstack/pull/4839 -.. _`#4821`: https://github.com/apache/cloudstack/pull/4821 -.. _`#4783`: https://github.com/apache/cloudstack/pull/4783 -.. _`#4779`: https://github.com/apache/cloudstack/pull/4779 -.. _`#4833`: https://github.com/apache/cloudstack/pull/4833 -.. _`#4824`: https://github.com/apache/cloudstack/pull/4824 -.. _`#4823`: https://github.com/apache/cloudstack/pull/4823 -.. _`#4822`: https://github.com/apache/cloudstack/pull/4822 -.. _`#4812`: https://github.com/apache/cloudstack/pull/4812 -.. _`#4832`: https://github.com/apache/cloudstack/pull/4832 -.. _`#4574`: https://github.com/apache/cloudstack/pull/4574 -.. _`#4670`: https://github.com/apache/cloudstack/pull/4670 -.. _`#4691`: https://github.com/apache/cloudstack/pull/4691 -.. _`#4755`: https://github.com/apache/cloudstack/pull/4755 -.. _`#4756`: https://github.com/apache/cloudstack/pull/4756 -.. _`#4772`: https://github.com/apache/cloudstack/pull/4772 -.. _`#4784`: https://github.com/apache/cloudstack/pull/4784 -.. _`#4785`: https://github.com/apache/cloudstack/pull/4785 -.. _`#4786`: https://github.com/apache/cloudstack/pull/4786 -.. _`#4787`: https://github.com/apache/cloudstack/pull/4787 -.. _`#4788`: https://github.com/apache/cloudstack/pull/4788 -.. _`#4759`: https://github.com/apache/cloudstack/pull/4759 -.. _`#4761`: https://github.com/apache/cloudstack/pull/4761 -.. _`#4746`: https://github.com/apache/cloudstack/pull/4746 -.. _`#4743`: https://github.com/apache/cloudstack/pull/4743 -.. _`#4736`: https://github.com/apache/cloudstack/pull/4736 -.. _`#4626`: https://github.com/apache/cloudstack/pull/4626 -.. _`#4531`: https://github.com/apache/cloudstack/pull/4531 -.. _`#4751`: https://github.com/apache/cloudstack/pull/4751 -.. _`#4747`: https://github.com/apache/cloudstack/pull/4747 -.. _`#4740`: https://github.com/apache/cloudstack/pull/4740 -.. _`#4639`: https://github.com/apache/cloudstack/pull/4639 -.. _`#4668`: https://github.com/apache/cloudstack/pull/4668 -.. _`#4693`: https://github.com/apache/cloudstack/pull/4693 -.. _`#4032`: https://github.com/apache/cloudstack/pull/4032 -.. _`#4047`: https://github.com/apache/cloudstack/pull/4047 -.. _`#4663`: https://github.com/apache/cloudstack/pull/4663 -.. _`#4716`: https://github.com/apache/cloudstack/pull/4716 -.. _`#4728`: https://github.com/apache/cloudstack/pull/4728 -.. _`#4725`: https://github.com/apache/cloudstack/pull/4725 -.. _`#4713`: https://github.com/apache/cloudstack/pull/4713 -.. _`#4615`: https://github.com/apache/cloudstack/pull/4615 -.. _`#4582`: https://github.com/apache/cloudstack/pull/4582 -.. _`#4718`: https://github.com/apache/cloudstack/pull/4718 -.. _`#4684`: https://github.com/apache/cloudstack/pull/4684 -.. _`#4688`: https://github.com/apache/cloudstack/pull/4688 -.. _`#4683`: https://github.com/apache/cloudstack/pull/4683 -.. _`#4604`: https://github.com/apache/cloudstack/pull/4604 -.. _`#4562`: https://github.com/apache/cloudstack/pull/4562 -.. _`#4667`: https://github.com/apache/cloudstack/pull/4667 -.. _`#4656`: https://github.com/apache/cloudstack/pull/4656 -.. _`#4396`: https://github.com/apache/cloudstack/pull/4396 -.. _`#4451`: https://github.com/apache/cloudstack/pull/4451 -.. _`#4609`: https://github.com/apache/cloudstack/pull/4609 -.. _`#4445`: https://github.com/apache/cloudstack/pull/4445 -.. _`#4665`: https://github.com/apache/cloudstack/pull/4665 -.. _`#4651`: https://github.com/apache/cloudstack/pull/4651 -.. _`#4627`: https://github.com/apache/cloudstack/pull/4627 -.. _`#4650`: https://github.com/apache/cloudstack/pull/4650 -.. _`#4653`: https://github.com/apache/cloudstack/pull/4653 -.. _`#4655`: https://github.com/apache/cloudstack/pull/4655 -.. _`#4601`: https://github.com/apache/cloudstack/pull/4601 -.. _`#4623`: https://github.com/apache/cloudstack/pull/4623 -.. _`#4629`: https://github.com/apache/cloudstack/pull/4629 -.. _`#4591`: https://github.com/apache/cloudstack/pull/4591 -.. _`#4576`: https://github.com/apache/cloudstack/pull/4576 -.. _`#4624`: https://github.com/apache/cloudstack/pull/4624 -.. _`#4622`: https://github.com/apache/cloudstack/pull/4622 -.. _`#4602`: https://github.com/apache/cloudstack/pull/4602 -.. _`#4625`: https://github.com/apache/cloudstack/pull/4625 -.. _`#4633`: https://github.com/apache/cloudstack/pull/4633 -.. _`#4605`: https://github.com/apache/cloudstack/pull/4605 -.. _`#4620`: https://github.com/apache/cloudstack/pull/4620 -.. _`#4600`: https://github.com/apache/cloudstack/pull/4600 -.. _`#4491`: https://github.com/apache/cloudstack/pull/4491 -.. _`#4621`: https://github.com/apache/cloudstack/pull/4621 -.. _`#4614`: https://github.com/apache/cloudstack/pull/4614 -.. _`#4611`: https://github.com/apache/cloudstack/pull/4611 -Changes in 4.15.0.0 since 4.14 -============================== +Changes in 4.18.0.0 since 4.17.x +=================================== -Apache CloudStack uses GitHub `_ +Apache CloudStack uses GitHub https://github.com/apache/cloudstack/milestone/23?closed=1 to track its issues. .. cssclass:: table-striped table-bordered table-hover -+-------------------------+----------+------------------------------------------------------------+ -| Version | Github | Description | -+=========================+==========+============================================================+ -| 4.15.0.0 | `#4568`_ | kvm: Fix double-escape issue while creating rbd disk | -| | | options | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4559`_ | networkorchestrator: Fix typo in exception message | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4553`_ | Fix for mapping guest OS type read from OVF to existing | -| | | guest OS in C… | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4555`_ | VMware: Fix template upload from local | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4540`_ | Bug/unmanaged ingest exceptions #4539 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4529`_ | vr: Ensuring dnsmasq.leases file is populated | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4522`_ | template: Ensuring template is cross zone if type changed | -| | | to system | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4516`_ | Fix hypervisor type cast to string | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4533`_ | db upgrade: use "create or replace view" instead of "alter | -| | | view" | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4536`_ | CLOUDSTACK-10423:Potential sensitive information | -| | | disclosure | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4538`_ | CLOUDSTACK-10425:Potential sensitive information | -| | | disclosure | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4511`_ | listphysicalnetworks: Honouring keyword parameter | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4530`_ | extract volume: Fix NPE when Volume exists on secondary | -| | | store but doesn't have a download URL | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4532`_ | apidoc issue | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4526`_ | db: Fix description of volume.stats.interval which is in | -| | | milliseconds… | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4527`_ | kvm: set cpu topology only if cpucore per socket is set | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4525`_ | xenserver: check and eject patch vbd for systemvms | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4523`_ | Fix warning when setup cloudstack-common | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4497`_ | kvm: FIX cpucorespersocket is not working on KVM | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4521`_ | change debug to warn for unknown exceptions | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4507`_ | Fix failure in validating IP address in case of multiple | -| | | Management Servers | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4515`_ | Update log output for FirstFitPlanner | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4518`_ | ui: deprecate old UI and move to legacy to be served at | -| | | /client/legacy | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4510`_ | Adding zone name to physicalnetworkresponse | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4501`_ | Disallowing udp for lb rules for haproxy | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4505`_ | Make global setting "secstorage.max.migrate.sessions" | -| | | non-dynamic | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4499`_ | Adding cpuallocated percentage and value to host and | -| | | hostsformigrationresponse | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4496`_ | kvm: fix router.aggregation.command.each.timeout is reset | -| | | to 600 when update other kvm configs | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4495`_ | fix failures with test_multiple_nic_support.py | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4500`_ | Fix hosts for migration count | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4494`_ | sql: Fix Zones are returned in a random order (#3934) | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4489`_ | vr: fix python exception when configure VRs | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4361`_ | Add vpcid in usage network response | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4486`_ | Add event for VM recovery operation | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4483`_ | Display VPC name to which the network belongs to | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4425`_ | Setting snapshot removed on timeout | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4392`_ | Fixed double slash in secret breaking db insert | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4467`_ | vpc: fix ips on wrong interfaces after rebooting vpc vrs | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4480`_ | Fix migrateVMwithVolumes API in case of multiple volumes | -| | | on VMware | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4478`_ | Adding memoryallocatedpercentage & memoryallocatedbytes to | -| | | HostsResponse & HostsForMigrationResponse | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4466`_ | VR: fix logging is not working and logs are not appended | -| | | to /var/log/cloud.log | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4458`_ | Fix k8s cluster upgrade in shared networks | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4487`_ | accountresponse: Fix domainpath description | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4459`_ | createkubertetesbinariesiso: Saving images in network and | -| | | dashboard yaml | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4485`_ | Fixing misleading HostMetricsResponse param description | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4461`_ | Fix destroying k8s cluster on shared networks | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4476`_ | Removed sensitive info from UI when volume attach/detach | -| | | fails | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4078`_ | Cleanup download urls when SSVM destroyed | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4428`_ | Moved dedicated hosts to the end of the resultset when | -| | | selecting an e… | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4475`_ | Fix: Data migration | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4452`_ | Consider other conditions while listing templates with id | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4446`_ | Check all mgt server connectivity | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4469`_ | Fix: Listing projects comprising of only the user's on | -| | | listAll=true | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4464`_ | Fix IndexOutOfBoundsException when creating basic network | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4289`_ | default teardown methods with reversed() handling | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4465`_ | fix login issue post upgrade | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4456`_ | Returning nic details in KubernetesClusterResponse | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4418`_ | Create Event in case of OOBM failure | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4327`_ | Re-enable IP address usage hiding | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4437`_ | [Bug fix] VMware: Fix for SSVM recreation on deployasis | -| | | systemVM templates | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4442`_ | Preventing port 53 being added as lb rule when dns service | -| | | is availab… | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4439`_ | Added compress option to dnsmasq log files | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4430`_ | FIX issue in VR if remote access vpn is enabled | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4440`_ | fix pbm url download | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4408`_ | Hiding system reserved IP addresses | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4341`_ | Allow to configure root disk size via Service Offering | -| | | (diskoffering of type Service). | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4388`_ | fix NPE in volumes statistics | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4435`_ | server: fix format error with memorywithoverprovisioning | -| | | in list hosts response | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4177`_ | Prevent deploying IPv6 network if Zone has no IPv6 DNS | -| | | configured | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4429`_ | FIX s2svpn connection stuck on Pending state | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4359`_ | Failed to update host password if username/password is not | -| | | saved in db | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4426`_ | DB: fix wrong category id of guest os 'Other PV | -| | | Virtio-SCSI (64-bit)' | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4432`_ | Unable to create snapshot from vm snapshot | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4144`_ | Fix Usage failed to get pid | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3945`_ | server: update template to another template type | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4363`_ | Ability to put a server in Down state to maintenance | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4417`_ | Modify alter view to drop/create view | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4414`_ | Adding public ip to listKubernetesClusterResponse | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4367`_ | Remove cpu core from op_host_capacity when host is deleted | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4427`_ | packaging/deb: Include cloudstack-guest-tool into | -| | | cloudstack-agent DEB package | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4420`_ | Including instance details in KubernetesClusterResponse | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4415`_ | CKS : More log changes from uuid to name | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4307`_ | [VMware] vSphere advanced capabilities and Full OVF | -| | | properties support | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4375`_ | Fixing count for findHostsForMigration | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#2206`_ | [CLOUDSTACK-10020] Changes to make marvin work with | -| | | projects and VPCs | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4409`_ | Enhance UpdateDiskOfferingCmd | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4413`_ | systemvm: fix proc.find in CsProcess.py | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4360`_ | server: Update use_bytes of storage pools | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4193`_ | Fix usage record count | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4411`_ | Display Kubernetes cluster name instead of uuid | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4412`_ | Validating type parameter and including all types | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#67`_ | CLOUDSTACK-8157: Add absolute schema references to support | -| | | MySQL 5.6 better | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3946`_ | server: add global configuration for default router | -| | | service offering | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4387`_ | Fix JsonSyntaxException when creating API command response | -| | | #4355 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4407`_ | packaging: enable Parallel Collector GC for management | -| | | server | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4395`_ | support for data migration of incremental snaps on xen | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4194`_ | enable update tags on disk offerings | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4251`_ | Handle with VM snapshot events | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4405`_ | Re-add affinity group | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4377`_ | server: fix issue that vm guest os type is reset after | -| | | updatetemplate | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4381`_ | kvm: fix wrong VM CPU usage | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4228`_ | Dont add host back after agent service restart | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4348`_ | vmware: use hotPlugMemoryIncrementSize only for valid | -| | | value | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4404`_ | scalekubernetesclustercmd: Making id a required field [NPE | -| | | Fix] | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4383`_ | Host is counted twice if it has multiple host tags in | -| | | Prometheus exporter | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4382`_ | debian/control: add uuid-runtime to cloudstack-common, | -| | | ufw/apparmor to cloudstack-agent | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4379`_ | Add global configuration for max cpu/ram in service | -| | | offerings | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4373`_ | Handles creation /var/run/cloud folder for creation of | -| | | lock file while modifyvxlan.sh script is run | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4366`_ | Consider maintenance mode as offline for prometheus stats | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4365`_ | Export dedicated host stats to prometheus | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4397`_ | List VMs by Security Group & HA | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4376`_ | server: Fix some cpuspeed issues while create service | -| | | offering | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4374`_ | Fixing searchAndCount searchAndDistinctCount when sc is | -| | | null | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4389`_ | Fixed vm-templates not being removed from primary storage | -| | | with storag… | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4271`_ | hypervisor: Add Citrix Hypervisor 8x product name support | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4321`_ | VMware: match hardware version for worker VM when taking a | -| | | snapshot | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4354`_ | createaccountcmd: Improving account param description | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4352`_ | Retry redfish requests | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4269`_ | cks: assorted fixes, test refactoring | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4338`_ | server: check guest os preference of last host when start | -| | | a vm | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4345`_ | Binding listening socket to all address for remote debug | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4340`_ | Changing test_pvlan vlan id to prevent conflict with smoke | -| | | tests env config | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4190`_ | Broadcast URI not set to vxlan, but vlan (Fix #3040) | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4328`_ | vmware: search unmanaged instances using hypervisor name | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4336`_ | vmware: while plugging in nics get existing sorted nic | -| | | devices | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4305`_ | Changing dependency from python3-distutils to | -| | | python3-distutils-extra | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4335`_ | agent: Compare indirect agent lb algorithm when cloudstack | -| | | agent conn… | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4319`_ | Fix "data-server" dns entry in /etc/hosts after a new | -| | | deployment | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4303`_ | Ubuntu 20.04: Fix systemvm cannot start up | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4239`_ | Disabling managing firewall - cloudstack-setup-management | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4323`_ | systemvm: Update novnc | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4319`_ | Fix "data-server" dns entry in /etc/hosts after a new | -| | | deployment | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4331`_ | change upgrade path to 4.14 (from 4.13) and intensify | -| | | check | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4333`_ | Minor message update | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4294`_ | Create template from detached data-disks on VMWare | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4316`_ | Handle listProjects API to list projects with user as | -| | | members when listAll=true | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4309`_ | cks: fix logging exception on create cluster | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4326`_ | ui: call logout before login to clear old sessionkey | -| | | cookies | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4315`_ | Adding acl name to listNetworkAcl, listNetwork, | -| | | listPrivateGateway, listVpcs responses | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4053`_ | Secondary Storage Usage Improvements | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4312`_ | Increase wait time before running the ssvm health check | -| | | script on SSVM reboot | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4320`_ | Change Global setting type for allow.user.create.projects | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4317`_ | Display acl name in listNetworks response | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4297`_ | Incorrect md5sums for systemVM templates results in | -| | | failure to download templates to other image stores | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4306`_ | Ubuntu 20.04: Fix issue while build package on ubuntu | -| | | 20.04 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4301`_ | Ubuntu 20.04: restart libvirtd instead of libvirt-bin | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4291`_ | Manage influxDB Batches avoiding OutOfMemory Exception | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4284`_ | Fixed delayed power state update after vm shutdown | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4279`_ | Avoid Null pointer at DomainChecker and enhance | -| | | AssignVMCmd | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4020`_ | server: move UpdateDefaultNic to vm work job queue | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4258`_ | List networks using networkofferingid | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3996`_ | UI: Hide cpuspeed for custom constrained offering | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3902`_ | vrouter: Save PlaceHolder nic for VR if network does not | -| | | have source nat | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4288`_ | client: explicitly define SslContextFactory::Server for | -| | | https | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4287`_ | Update Java Rados from v0.5.0 to v0.6.0 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4266`_ | Adding os type id to the usage record response for virtual | -| | | machines | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4264`_ | Changed test failure to warning | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4272`_ | Fixed rolling restart on VPC network | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4274`_ | engine: honour bypass VLAN id/range for L2 networks | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4278`_ | Usage-server update message improvement | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4219`_ | iscsi session cleanup now configurable, filters iscsi | -| | | partitions | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4040`_ | [KVM] Enable PVLAN support on L2 networks | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4275`_ | Display hypervisor type for VM snapshot | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4180`_ | Added nfs minor version support | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4068`_ | Adding Centos8, Ubuntu 20.04, XCPNG8.1 Support | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4268`_ | Prevent NullPointerException on GenericDaoBase | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4262`_ | fix test failure | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4207`_ | Human readable sizes in logs | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4254`_ | Name public network appropriately to avoid conflicts | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4128`_ | Role based users in Projects | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4213`_ | Search vm snapshots using tags | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4255`_ | Prevent null pointer on listPublicIpAddress cmd | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4256`_ | Fix comparison using nullable objects | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4260`_ | cks: fix for null hypervisor type | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4016`_ | Fixed private gateway can't be deleted | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4253`_ | Fix sed command failure in Mac OS. | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4249`_ | Host SSVM Debian ISO on download.cloudstack.org | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4243`_ | Update SystemVM debian iso from 10.4.0 to 10.5.0 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4019`_ | server: Move restoreVM to vm work job queue | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4165`_ | Allow renaming cluster, host, and storage | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4220`_ | Fix cpuallocated value in findHostsForMIgration api | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4225`_ | vmware: volume utilisation is always zero | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4000`_ | vm: Reset deviceId to fix missing nic with vm | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4231`_ | kvm/ceph: Only if a port number has been specified define | -| | | in the XML | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4116`_ | cks: fix template, deployment issues | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3952`_ | vrouter: remove a POSTROUTING rule for port forwarding in | -| | | VPC router | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4175`_ | Redfish Client & Redfish OOBM Driver | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4035`_ | Document how to pass CIDRs lists API calls | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4214`_ | Bug fixes for primate | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4226`_ | Removed check on SSLEngine client mode | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4188`_ | Fix snapshots garbage collection | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4138`_ | Fixed incorrect error message on invalid template type | -| | | download | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4156`_ | Fixed removal of hosts from certsmap when running | -| | | certificate auto-renew | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4172`_ | [VMware] Support to attach more than 15 data disks in | -| | | VMware VM | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4196`_ | VMware: Guest OS Mappings fix | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4176`_ | server: Purge all cookies on logout, set /client path on | -| | | login | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4202`_ | server: don't export B&R APIs if feature is not enabled | -| | | globally | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3979`_ | Limit API from trying to start a VM that is already | -| | | running | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4174`_ | Set prometheus.exporter.enable as not dynamic | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4117`_ | [VMware] Explicitly controlling VM hardware version | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4071`_ | Dynamic roles improvements | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4186`_ | Adding pagination for quotaSummary and quotaTariffList | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4001`_ | server: Dedicated hosts should be 'Not Suitable' while | -| | | find host for m migration | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3976`_ | Enable sending hypervior host name via metadata - VR and | -| | | Config Drive | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4103`_ | [VMware] Enable unmanaging guest VMs | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4148`_ | server: Do not resize volume of running vm on KVM host if | -| | | host is not Up or not Enabled | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4171`_ | vr: fix backup router health check | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4167`_ | Adding missing fields to API responses | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4164`_ | Adding listall to listLdapConfigurations | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4154`_ | server: fix for wrong affinity group count | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4004`_ | Fixed null pointer and deployment issue on Xenserver with | -| | | L2 Guest network with configDrive | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4162`_ | Exception Message rephrasing | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4132`_ | Fix delete network with no services | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4145`_ | Fixing listVirtualMachinesMetrics to extend ListVMsCmd | -| | | instead of ListVMsCmdByAdmin | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3998`_ | NPE when VM is planned to migrate to other host during | -| | | dynamic scaling | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4085`_ | Fix duplicate user entries for vpn usage | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4140`_ | Adding showunique parameter to list templates and isos | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4007`_ | Restarting all networks that needs a restart in a VPC | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4003`_ | Logging framework to use only log4j | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4121`_ | server: fix TransactionLegacy DB connection leaks due to | -| | | DB switching by B&R thread | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3991`_ | Multiple dynamic VM Scaling APIs can create duplicate | -| | | usage events for the same time | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4070`_ | Update cloud-set-guest-password.in | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4130`_ | Fixed null pointer after deleting snapshot, GC and cross | -| | | cluster vm migration on XCP-NG | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4122`_ | Maximum data volumes limit is picked from "default" | -| | | version of hypervisor, instead of actual hypervisor | -| | | version | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3982`_ | Updated 3 error messages to replace the word 'matches' | -| | | with 'match' | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4073`_ | Display network name for IP in shared networks | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4075`_ | Search VR using redundant state | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3949`_ | Fix: catch CloudRuntimeException in | -| | | LibvirtGetVolumeStatsCommandWrapper.java | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3955`_ | docker: upgrade to ubuntu 18.04 and fix some issues | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3980`_ | Fix String.format unused/misused arguments | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4048`_ | Update DpdkDriverImpl.java to support DPDK trunk | -| | | interfaces | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4083`_ | Allow set IPv6 when deploying advanced network Zone with | -| | | SG via UI | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4142`_ | Invalid character encountered in file ui/l10n/pt_BR.js at | -| | | line 1134 for encoding UTF-8. | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4109`_ | add support for XCP-ng 7/8 to create it's heartbeat LVM | -| | | properly | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4077`_ | Disable searching by instance name for customers | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4021`_ | Boot into hardware setup menu on Vmware | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3965`_ | server: Honor vm.destroy.forcestop when expunge a vm | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4104`_ | Debian10 support | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4017`_ | [UI] Update ISO permissions | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4079`_ | Fixed HA migrated storage error | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4046`_ | Display image store disk size used and total disk size | -| | | stats | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4013`_ | Allow IMG extension for QCOW2 format | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4062`_ | [VMware] Cannot migrate VM on PVLAN shared network | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4119`_ | kvm: bump jna version to latest | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4126`_ | Enhance KVM running VM snapshot exception log | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4123`_ | Improved kvmvmactivitycheck.sh output | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4065`_ | Enable revocation checking for uploaded certificates | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4124`_ | Missing python3 libvirt bindings | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3794`_ | create Volume Access Groups per cluster instead of | -| | | CloudStack-RandomUUID() | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4100`_ | RabbitMQ log enhancement | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3921`_ | Updated vmware virtual hardware version in | -| | | systemvmtemplate build script | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4110`_ | cleanup of redundant check for sameOwner | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4092`_ | engine/schema: add empty DB upgrade path from 4.14.0.0 to | -| | | 4.15.0.0 | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4097`_ | Adding novnc license exclusion | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#3967`_ | noVNC console integration | -+-------------------------+----------+------------------------------------------------------------+ -| 4.15.0.0 | `#4087`_ | python format | -+-------------------------+----------+------------------------------------------------------------+ ++-------------------------+----------+--------------------------------------------------------------+ +| Version | Github | Description | ++=========================+==========+==============================================================+ +| 4.18.0.0 | `#7304`_ | Fix VNC TLS for non-root linux users on the QEMU | +| | | configuration | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7229`_ | [Usage] Fix wrong usage_type | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7302`_ | Move PassphraseVO to use String instead of byte[] to support | +| | | Encrypt annotation | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7291`_ | Don't log VNC password in VirtualMachineTO | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7286`_ | UI: fix error message when create load balancer as a normal | +| | | user | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7287`_ | Fix VNC SecurityType None on RFB v3.8 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7257`_ | Fix Quota plugin state on QuotaSummaryResponse | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7205`_ | SQL: Remove snapshot references if primary storage pool has | +| | | been removed | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7270`_ | cleanup: remove testing logs | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7267`_ | packaging: fix centos8/el8 upgrade | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7256`_ | Fix select default host option on deployment wizard | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7233`_ | .github: use ref name as docker image name if ref type is | +| | | tag | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7255`_ | Userdata MySQL changes to use procedures to avoid duplicates | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7230`_ | UI: Fix keyboard options regression | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7261`_ | UI: Fix domain admins cannot create service offerings | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7231`_ | UI missing changes | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7252`_ | engine/schema: fix IDEMPOTENT_ADD_FOREIGN_KEY procedure does | +| | | not work on mysql8 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7243`_ | Fix console access on XCPng/Xen | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7190`_ | integration test fixes for 4.18 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7198`_ | UI: fix 'Next' button is stuck if no public ip range | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7201`_ | ui: fix add zone dialog for fix errors | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7199`_ | .github: disable Sonar check on forks as it requires | +| | | crendential | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7177`_ | Skip Coverage Check when forks are updated | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7173`_ | Tungsten: fix functional issues | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6924`_ | User two factor authentication | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7197`_ | Fix login issue after logout from Configuration page | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7179`_ | scripts: fix kvm host undefined version | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7169`_ | server: fix exception while list users with keyword | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7192`_ | Added steps to get the offical docker image for cloudstack | +| | | simulator | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7166`_ | UI: Integrate Tungsten Fabric | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7183`_ | smoke test: fix test_vm_deployment_planner | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7164`_ | UI: fix security group lists in project view | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7112`_ | Make displayText in createNetwork optional | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7063`_ | server: do not deploy or upgrade vm with inactive service | +| | | offering | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7059`_ | guestos: add el9 distros | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7152`_ | Quota VM_DISK tariff calculation | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7003`_ | utils,framework/db: Introduce new database encryption cipher | +| | | based on AesGcmJce | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7157`_ | ui: fix build issue on arm/Mac | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6900`_ | Fix ping NFS server on ssvm-check.sh | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7132`_ | Add console session cleanup task | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7146`_ | Adjusts/fixes in quota tariff APIs | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7158`_ | Removed duplicate labels | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7156`_ | Fix UI not loading after merge conflict issue | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7147`_ | cks: Fix provider deployment when cluster is in a project | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7145`_ | server: add/update user vm details for new root disk size | +| | | (issue 7139) | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7151`_ | UI: fix missing networkid and zoneid when add instance from | +| | | vpc network | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7065`_ | Tungsten integration | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#5797`_ | Improve global settings UI to be more intuitive/logical | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6840`_ | infra: edge zones | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6957`_ | Allow VPC offering creation only with active VR service | +| | | offerings | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6803`_ | ui,server,api: resource metrics improvements | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7136`_ | Fix: memory leak on volume allocation | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7015`_ | Secure KVM VNC Console Access Using the CA Framework | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6938`_ | Create API to reassign volume | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7125`_ | Use long instead of int in DB statistics for Queries and | +| | | Uptime. | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6909`_ | KVM support of iothreads and IO driver policy | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7103`_ | VR: fix public-key is missing in VR after acquiring public | +| | | IP | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7119`_ | vmware: support vsphere 8 specific version | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7113`_ | Adds tar as dependency used for VMware to seed | +| | | systemvmtemplate on mgmt server | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7118`_ | CKS: fix upgrade of HA cluster | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7120`_ | marvin: newer python setuptools doesn't like -SNAPSHOT in | +| | | marvin version | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7114`_ | cloudstack-setup-agent: mask libvirt non-monolithic services | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7111`_ | marvin: install mysql-connector-python version 8.0.31 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7124`_ | vpc/network: set mtu of networks/vpcs/nics during 4.18 | +| | | upgrade | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6748`_ | server: fix listnetworkofferings with domain, refactor | +| | | listvpofferings | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7050`_ | VR: fix warning Expected X answers while executing | +| | | SetXXXCommand but Y | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6581`_ | [Veeam] enable volume attach/detach in VMs with Backup | +| | | Offerings | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7095`_ | fix guestOsMapper and move mapping code to latest upgrade | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7092`_ | api: fix new password is applied on host when update host | +| | | password with update_passwd_on_host=false | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7104`_ | CKS: remove details when delete a cks cluster | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7094`_ | Handle console session in multiple management servers | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7100`_ | api/server: add project id/name in ssh keypair response | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7046`_ | Add support for vSphere 8.0 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7090`_ | KVM: revert libvirtd config and retry if fail to add a host | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7075`_ | UI: add filter user/all to list user/all volumes | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7106`_ | UI: display cpu cores and speed instead of cputotal by | +| | | default | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7067`_ | UI: Enable shared network with scope option in advanced zone | +| | | with SG | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7073`_ | storage: validate disk size range of custom disk offering | +| | | when resize volume | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7091`_ | .github: run all gha on ubuntu latest | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6386`_ | [VMWare] Limit IOPS in Compute/Disk Offerings | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7097`_ | CKS: do not save cks username/password which are useless | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7045`_ | kvm: get vm disk stats for ceph disks | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7084`_ | kvm: make UEFI host check to support both Ubuntu and EL | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7087`_ | Fix spelling | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7080`_ | updates roles read-only | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7086`_ | server: allow expunging VMs in Expunging state | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7076`_ | UI: do not show FW/LB/PF tabs for CKS cluster in advanced | +| | | network with SG | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6989`_ | vmware: encode disk path for URL based access | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7072`_ | UI: fix diskofferingstrictness is not passed when create | +| | | compute offering | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6242`_ | Search for resource type efficiently | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6978`_ | simulator: use ubuntu 22.04 in Dockerfile | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7040`_ | assess prerequisite before doing the actual test | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7068`_ | update owasp dep checker for 'column width bug' | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7057`_ | server/UI: fix some issues with network offering details | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6273`_ | Add `pre-commit` workflow with 3 Git hooks | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6942`_ | ssvm: synchorise when adding iptables and routing rules | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7023`_ | delete F5 and SRX plugins | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6661`_ | Enable live volume migration for StorPool and small fixes | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7052`_ | Allow domain admins to inform tags when creating offerings | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7069`_ | escapes for injection protection | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7054`_ | UI: support serviceofferingid when create vpc offering | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7058`_ | UI: fix cannot list lb rules if cidr_list is NULL | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7032`_ | Allow users to inform timezones on APIs that have the date | +| | | parameter | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6550`_ | Emc networker b&r | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7066`_ | UI: remove max value (8) of maxsnaps because it might be | +| | | greater than 8 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7047`_ | fix merge diff display | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7024`_ | server: correctly list suitable hosts for migration with | +| | | uefi capability | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7049`_ | test: fix NetworkOrchestrator unit test failure | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7008`_ | utils: fix human-readable parsing failures | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7044`_ | alter ordering of backup offerings | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7039`_ | Allow download of System VM templates through the UI | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6426`_ | Configurable MTU for VR | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7037`_ | Fix volume snapshot in a VM with an ISO attached | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7028`_ | add index to speed up querying IPs in the network-tab | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7038`_ | UI: user must specify the start of guest vlan range for | +| | | advanced zone | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7022`_ | Cleanup APIs getCommandName | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7011`_ | Update usage when scaling vms | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7033`_ | revert cleanup of test_acl_sharenetworks | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7034`_ | engine/orchestration: enable unit tests and fix errors | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7035`_ | local npm run failing with error | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7026`_ | utils: fix NetUtils method to retrieve all IPs for a CIDR | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7030`_ | UI: fix ui test errors | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7007`_ | Ensure Prometheus doesn't return values when the | +| | | capacity_state is disabled | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6844`_ | packaging: support Rocky9 (EL9) as KVM and management server | +| | | host | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6995`_ | Packages consolidation: merge suse15 to el8 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7016`_ | ui: fix suitable shared network not showing while import | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7013`_ | systemvmtemplate: update Debian ISO URL and checksum | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7018`_ | server: fix broken unit test in configurationManagerImplTest | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6808`_ | Allow privateips on console proxy | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6505`_ | Gives the possibility to redirect to external links when the | +| | | property is defined | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6348`_ | Improving code related to the Agent properties | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7002`_ | Fix spelling | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6825`_ | resolve sanity check last id file acces problems | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7005`_ | gha(linters): enable 7 more Python `flake8` checks | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6956`_ | Migrate Travis to Github Actions: Simulator based CI | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6977`_ | AutoScaling: update smoke test and consider db upgrade from | +| | | a fork | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#7001`_ | checksums for new macchinina ova template | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6994`_ | ui: persist networks config in deploy vm form | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6845`_ | new plugins: Add non-strict affinity groups | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6869`_ | Support for parameter `cidrlist` added to the UI | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6959`_ | Metrics plugin: expose full domain path instead of name | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6832`_ | Allow root admin to deploy in VPCs in child domains | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6574`_ | scripts: parametrize systemvm, router restart | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6870`_ | kvm: correctly set vm cpu topology | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6783`_ | Fixes script that perform change password on hosts | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6876`_ | Update en.json | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6508`_ | Inserts timer in check detach volume | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6984`_ | make api rate limit test a little more robust | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6784`_ | Improves CPU usage info | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6910`_ | delete configuration `task.cleanup.retry.interval` | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6961`_ | git-pr py3 compatible | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6864`_ | Allow ssvm agent certs to contain host IP for NAT situations | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6902`_ | fix of removing the Iops limits on StorPool volumes | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6911`_ | Fix ServiceOfferingDao duplication | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6930`_ | debian build: add python3-setuptools to dependencies | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6943`_ | [Veeam] Fix escape powershell comand when listing Veeam | +| | | repository names | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6967`_ | Fixed flaky test in ResetVMUserDataCmdTest.java | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6927`_ | Fix migration path of PR #5909 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6965`_ | schema: Add upgrade path from 4.17.2.0 same as 4.17.1.0 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6822`_ | Fixed the management server setup line | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6917`_ | Improvements and cleanup on the javadocs of QemuImg | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6868`_ | Set root volume as destroyed when destroying a VM | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6905`_ | Fix flaky tests in NeutronNetworkAdapterTest.java, | +| | | NeutronNodeAdapterTest.java and NeutronPortAdapterTest.java | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6358`_ | Fix memory stats for KVM | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6875`_ | Fix flaky tests in SMTPMailSenderTest.java and | +| | | ReflectionToStringBuilderUtilsTest.java | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6846`_ | add ip rule for VPC extra IPs | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6854`_ | Changed userdata names on Add instance page | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6838`_ | Set network state to implemented when no services | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6792`_ | Support multiple ceph monitors | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6775`_ | EL8 uses rng-tools for entropy, not haveged | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6811`_ | Improve description of `secstorage.encrypt.copy` | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6772`_ | Fix to make recovered volumes be accounted for by Usage | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6751`_ | Refactor SnapshotDataStoreDaoImpl | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6733`_ | Refactor TestHttp.testHttpclient to avoid the Exception | +| | | Suppression | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6684`_ | Add message upon network offering creation to warn user of | +| | | VR creation | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6771`_ | Return object name in the listHypervisorCapabilities API | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6638`_ | Fix: rpm dependencies: which and file | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6681`_ | change-diskoffer: iops settings from new disk-offer should | +| | | always used | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6682`_ | plugin-storage-volume-linstor: support QoS(IOPs) and small | +| | | improvements | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6806`_ | Improves email configurations descriptions | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6790`_ | kvm: fix backup volume snapshot fails on RBD storage | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6750`_ | Allow download of system vm templates | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6802`_ | [StepSecurity] ci: Harden GitHub Actions | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6742`_ | Ignore calls to PowerFlex for host revocation when host is | +| | | null | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6776`_ | Don't allow service offering change if encryption value | +| | | would change | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6202`_ | UserData as first class resource | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6799`_ | server: fix exception in DeploymentPlanningManagerImplTest | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#4438`_ | Prometheus exporter enhancement | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6769`_ | Show name instead of description in the infocards and | +| | | breadcrumbs | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6224`_ | Fix migrate volume permissions | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6522`_ | Volume encryption feature | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6694`_ | Resource reservation framework | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6741`_ | UI: fixes errors in the Console.vue | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6712`_ | UI: Build Dockerfile with Node v14 | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6577`_ | Console access enhancements | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6686`_ | Remove unsupported params from API calls on the UI | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6653`_ | Chinese language pack | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6640`_ | Add usermode interface option to Libvirt Domain XML builder | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6587`_ | Updated resource counter to include correct size after | +| | | volume creation/resize and other improvements | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6555`_ | Fixed Veeam listing restore points | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6556`_ | Update API documentation for resizing | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6557`_ | Scope setting changes in ldap and utils pom.xml files | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6504`_ | Changes logo when resizes the page | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6521`_ | Create event TEMPLATE_UPDATE for virtual machine image | +| | | update calls. | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6510`_ | Fix API deleteTrafficType not filtering physical network | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6331`_ | [KVM improve logs in migrate VM process | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6474`_ | Allow for arbitrary disk offering details to be | +| | | saved/displayed | ++-------------------------+----------+--------------------------------------------------------------+ +| 4.18.0.0 | `#6326`_ | Removed unused labels | ++-------------------------+----------+--------------------------------------------------------------+ -256 Issues listed +308 Issues listed -.. _`#4568`: https://github.com/apache/cloudstack/pull/4568 -.. _`#4559`: https://github.com/apache/cloudstack/pull/4559 -.. _`#4553`: https://github.com/apache/cloudstack/pull/4553 -.. _`#4555`: https://github.com/apache/cloudstack/pull/4555 -.. _`#4540`: https://github.com/apache/cloudstack/pull/4540 -.. _`#4529`: https://github.com/apache/cloudstack/pull/4529 -.. _`#4522`: https://github.com/apache/cloudstack/pull/4522 -.. _`#4516`: https://github.com/apache/cloudstack/pull/4516 -.. _`#4533`: https://github.com/apache/cloudstack/pull/4533 -.. _`#4536`: https://github.com/apache/cloudstack/pull/4536 -.. _`#4538`: https://github.com/apache/cloudstack/pull/4538 -.. _`#4511`: https://github.com/apache/cloudstack/pull/4511 -.. _`#4530`: https://github.com/apache/cloudstack/pull/4530 -.. _`#4532`: https://github.com/apache/cloudstack/pull/4532 -.. _`#4526`: https://github.com/apache/cloudstack/pull/4526 -.. _`#4527`: https://github.com/apache/cloudstack/pull/4527 -.. _`#4525`: https://github.com/apache/cloudstack/pull/4525 -.. _`#4523`: https://github.com/apache/cloudstack/pull/4523 -.. _`#4497`: https://github.com/apache/cloudstack/pull/4497 -.. _`#4521`: https://github.com/apache/cloudstack/pull/4521 -.. _`#4507`: https://github.com/apache/cloudstack/pull/4507 -.. _`#4515`: https://github.com/apache/cloudstack/pull/4515 -.. _`#4518`: https://github.com/apache/cloudstack/pull/4518 -.. _`#4510`: https://github.com/apache/cloudstack/pull/4510 -.. _`#4501`: https://github.com/apache/cloudstack/pull/4501 -.. _`#4505`: https://github.com/apache/cloudstack/pull/4505 -.. _`#4499`: https://github.com/apache/cloudstack/pull/4499 -.. _`#4496`: https://github.com/apache/cloudstack/pull/4496 -.. _`#4495`: https://github.com/apache/cloudstack/pull/4495 -.. _`#4500`: https://github.com/apache/cloudstack/pull/4500 -.. _`#4494`: https://github.com/apache/cloudstack/pull/4494 -.. _`#4489`: https://github.com/apache/cloudstack/pull/4489 -.. _`#4361`: https://github.com/apache/cloudstack/pull/4361 -.. _`#4486`: https://github.com/apache/cloudstack/pull/4486 -.. _`#4483`: https://github.com/apache/cloudstack/pull/4483 -.. _`#4425`: https://github.com/apache/cloudstack/pull/4425 -.. _`#4392`: https://github.com/apache/cloudstack/pull/4392 -.. _`#4467`: https://github.com/apache/cloudstack/pull/4467 -.. _`#4480`: https://github.com/apache/cloudstack/pull/4480 -.. _`#4478`: https://github.com/apache/cloudstack/pull/4478 -.. _`#4466`: https://github.com/apache/cloudstack/pull/4466 -.. _`#4458`: https://github.com/apache/cloudstack/pull/4458 -.. _`#4487`: https://github.com/apache/cloudstack/pull/4487 -.. _`#4459`: https://github.com/apache/cloudstack/pull/4459 -.. _`#4485`: https://github.com/apache/cloudstack/pull/4485 -.. _`#4461`: https://github.com/apache/cloudstack/pull/4461 -.. _`#4476`: https://github.com/apache/cloudstack/pull/4476 -.. _`#4078`: https://github.com/apache/cloudstack/pull/4078 -.. _`#4428`: https://github.com/apache/cloudstack/pull/4428 -.. _`#4475`: https://github.com/apache/cloudstack/pull/4475 -.. _`#4452`: https://github.com/apache/cloudstack/pull/4452 -.. _`#4446`: https://github.com/apache/cloudstack/pull/4446 -.. _`#4469`: https://github.com/apache/cloudstack/pull/4469 -.. _`#4464`: https://github.com/apache/cloudstack/pull/4464 -.. _`#4289`: https://github.com/apache/cloudstack/pull/4289 -.. _`#4465`: https://github.com/apache/cloudstack/pull/4465 -.. _`#4456`: https://github.com/apache/cloudstack/pull/4456 -.. _`#4418`: https://github.com/apache/cloudstack/pull/4418 -.. _`#4327`: https://github.com/apache/cloudstack/pull/4327 -.. _`#4437`: https://github.com/apache/cloudstack/pull/4437 -.. _`#4442`: https://github.com/apache/cloudstack/pull/4442 -.. _`#4439`: https://github.com/apache/cloudstack/pull/4439 -.. _`#4430`: https://github.com/apache/cloudstack/pull/4430 -.. _`#4440`: https://github.com/apache/cloudstack/pull/4440 -.. _`#4408`: https://github.com/apache/cloudstack/pull/4408 -.. _`#4341`: https://github.com/apache/cloudstack/pull/4341 -.. _`#4388`: https://github.com/apache/cloudstack/pull/4388 -.. _`#4435`: https://github.com/apache/cloudstack/pull/4435 -.. _`#4177`: https://github.com/apache/cloudstack/pull/4177 -.. _`#4429`: https://github.com/apache/cloudstack/pull/4429 -.. _`#4359`: https://github.com/apache/cloudstack/pull/4359 -.. _`#4426`: https://github.com/apache/cloudstack/pull/4426 -.. _`#4432`: https://github.com/apache/cloudstack/pull/4432 -.. _`#4144`: https://github.com/apache/cloudstack/pull/4144 -.. _`#3945`: https://github.com/apache/cloudstack/pull/3945 -.. _`#4363`: https://github.com/apache/cloudstack/pull/4363 -.. _`#4417`: https://github.com/apache/cloudstack/pull/4417 -.. _`#4414`: https://github.com/apache/cloudstack/pull/4414 -.. _`#4367`: https://github.com/apache/cloudstack/pull/4367 -.. _`#4427`: https://github.com/apache/cloudstack/pull/4427 -.. _`#4420`: https://github.com/apache/cloudstack/pull/4420 -.. _`#4415`: https://github.com/apache/cloudstack/pull/4415 -.. _`#4307`: https://github.com/apache/cloudstack/pull/4307 -.. _`#4375`: https://github.com/apache/cloudstack/pull/4375 -.. _`#2206`: https://github.com/apache/cloudstack/pull/2206 -.. _`#4409`: https://github.com/apache/cloudstack/pull/4409 -.. _`#4413`: https://github.com/apache/cloudstack/pull/4413 -.. _`#4360`: https://github.com/apache/cloudstack/pull/4360 -.. _`#4193`: https://github.com/apache/cloudstack/pull/4193 -.. _`#4411`: https://github.com/apache/cloudstack/pull/4411 -.. _`#4412`: https://github.com/apache/cloudstack/pull/4412 -.. _`#67`: https://github.com/apache/cloudstack/pull/67 -.. _`#3946`: https://github.com/apache/cloudstack/pull/3946 -.. _`#4387`: https://github.com/apache/cloudstack/pull/4387 -.. _`#4407`: https://github.com/apache/cloudstack/pull/4407 -.. _`#4395`: https://github.com/apache/cloudstack/pull/4395 -.. _`#4194`: https://github.com/apache/cloudstack/pull/4194 -.. _`#4251`: https://github.com/apache/cloudstack/pull/4251 -.. _`#4405`: https://github.com/apache/cloudstack/pull/4405 -.. _`#4377`: https://github.com/apache/cloudstack/pull/4377 -.. _`#4381`: https://github.com/apache/cloudstack/pull/4381 -.. _`#4228`: https://github.com/apache/cloudstack/pull/4228 -.. _`#4348`: https://github.com/apache/cloudstack/pull/4348 -.. _`#4404`: https://github.com/apache/cloudstack/pull/4404 -.. _`#4383`: https://github.com/apache/cloudstack/pull/4383 -.. _`#4382`: https://github.com/apache/cloudstack/pull/4382 -.. _`#4379`: https://github.com/apache/cloudstack/pull/4379 -.. _`#4373`: https://github.com/apache/cloudstack/pull/4373 -.. _`#4366`: https://github.com/apache/cloudstack/pull/4366 -.. _`#4365`: https://github.com/apache/cloudstack/pull/4365 -.. _`#4397`: https://github.com/apache/cloudstack/pull/4397 -.. _`#4376`: https://github.com/apache/cloudstack/pull/4376 -.. _`#4374`: https://github.com/apache/cloudstack/pull/4374 -.. _`#4389`: https://github.com/apache/cloudstack/pull/4389 -.. _`#4271`: https://github.com/apache/cloudstack/pull/4271 -.. _`#4321`: https://github.com/apache/cloudstack/pull/4321 -.. _`#4354`: https://github.com/apache/cloudstack/pull/4354 -.. _`#4352`: https://github.com/apache/cloudstack/pull/4352 -.. _`#4269`: https://github.com/apache/cloudstack/pull/4269 -.. _`#4338`: https://github.com/apache/cloudstack/pull/4338 -.. _`#4345`: https://github.com/apache/cloudstack/pull/4345 -.. _`#4340`: https://github.com/apache/cloudstack/pull/4340 -.. _`#4190`: https://github.com/apache/cloudstack/pull/4190 -.. _`#4328`: https://github.com/apache/cloudstack/pull/4328 -.. _`#4336`: https://github.com/apache/cloudstack/pull/4336 -.. _`#4305`: https://github.com/apache/cloudstack/pull/4305 -.. _`#4335`: https://github.com/apache/cloudstack/pull/4335 -.. _`#4319`: https://github.com/apache/cloudstack/pull/4319 -.. _`#4303`: https://github.com/apache/cloudstack/pull/4303 -.. _`#4239`: https://github.com/apache/cloudstack/pull/4239 -.. _`#4323`: https://github.com/apache/cloudstack/pull/4323 -.. _`#4319`: https://github.com/apache/cloudstack/pull/4319 -.. _`#4331`: https://github.com/apache/cloudstack/pull/4331 -.. _`#4333`: https://github.com/apache/cloudstack/pull/4333 -.. _`#4294`: https://github.com/apache/cloudstack/pull/4294 -.. _`#4316`: https://github.com/apache/cloudstack/pull/4316 -.. _`#4309`: https://github.com/apache/cloudstack/pull/4309 -.. _`#4326`: https://github.com/apache/cloudstack/pull/4326 -.. _`#4315`: https://github.com/apache/cloudstack/pull/4315 -.. _`#4053`: https://github.com/apache/cloudstack/pull/4053 -.. _`#4312`: https://github.com/apache/cloudstack/pull/4312 -.. _`#4320`: https://github.com/apache/cloudstack/pull/4320 -.. _`#4317`: https://github.com/apache/cloudstack/pull/4317 -.. _`#4297`: https://github.com/apache/cloudstack/pull/4297 -.. _`#4306`: https://github.com/apache/cloudstack/pull/4306 -.. _`#4301`: https://github.com/apache/cloudstack/pull/4301 -.. _`#4291`: https://github.com/apache/cloudstack/pull/4291 -.. _`#4284`: https://github.com/apache/cloudstack/pull/4284 -.. _`#4279`: https://github.com/apache/cloudstack/pull/4279 -.. _`#4020`: https://github.com/apache/cloudstack/pull/4020 -.. _`#4258`: https://github.com/apache/cloudstack/pull/4258 -.. _`#3996`: https://github.com/apache/cloudstack/pull/3996 -.. _`#3902`: https://github.com/apache/cloudstack/pull/3902 -.. _`#4288`: https://github.com/apache/cloudstack/pull/4288 -.. _`#4287`: https://github.com/apache/cloudstack/pull/4287 -.. _`#4266`: https://github.com/apache/cloudstack/pull/4266 -.. _`#4264`: https://github.com/apache/cloudstack/pull/4264 -.. _`#4272`: https://github.com/apache/cloudstack/pull/4272 -.. _`#4274`: https://github.com/apache/cloudstack/pull/4274 -.. _`#4278`: https://github.com/apache/cloudstack/pull/4278 -.. _`#4219`: https://github.com/apache/cloudstack/pull/4219 -.. _`#4040`: https://github.com/apache/cloudstack/pull/4040 -.. _`#4275`: https://github.com/apache/cloudstack/pull/4275 -.. _`#4180`: https://github.com/apache/cloudstack/pull/4180 -.. _`#4068`: https://github.com/apache/cloudstack/pull/4068 -.. _`#4268`: https://github.com/apache/cloudstack/pull/4268 -.. _`#4262`: https://github.com/apache/cloudstack/pull/4262 -.. _`#4207`: https://github.com/apache/cloudstack/pull/4207 -.. _`#4254`: https://github.com/apache/cloudstack/pull/4254 -.. _`#4128`: https://github.com/apache/cloudstack/pull/4128 -.. _`#4213`: https://github.com/apache/cloudstack/pull/4213 -.. _`#4255`: https://github.com/apache/cloudstack/pull/4255 -.. _`#4256`: https://github.com/apache/cloudstack/pull/4256 -.. _`#4260`: https://github.com/apache/cloudstack/pull/4260 -.. _`#4016`: https://github.com/apache/cloudstack/pull/4016 -.. _`#4253`: https://github.com/apache/cloudstack/pull/4253 -.. _`#4249`: https://github.com/apache/cloudstack/pull/4249 -.. _`#4243`: https://github.com/apache/cloudstack/pull/4243 -.. _`#4019`: https://github.com/apache/cloudstack/pull/4019 -.. _`#4165`: https://github.com/apache/cloudstack/pull/4165 -.. _`#4220`: https://github.com/apache/cloudstack/pull/4220 -.. _`#4225`: https://github.com/apache/cloudstack/pull/4225 -.. _`#4000`: https://github.com/apache/cloudstack/pull/4000 -.. _`#4231`: https://github.com/apache/cloudstack/pull/4231 -.. _`#4116`: https://github.com/apache/cloudstack/pull/4116 -.. _`#3952`: https://github.com/apache/cloudstack/pull/3952 -.. _`#4175`: https://github.com/apache/cloudstack/pull/4175 -.. _`#4035`: https://github.com/apache/cloudstack/pull/4035 -.. _`#4214`: https://github.com/apache/cloudstack/pull/4214 -.. _`#4226`: https://github.com/apache/cloudstack/pull/4226 -.. _`#4188`: https://github.com/apache/cloudstack/pull/4188 -.. _`#4138`: https://github.com/apache/cloudstack/pull/4138 -.. _`#4156`: https://github.com/apache/cloudstack/pull/4156 -.. _`#4172`: https://github.com/apache/cloudstack/pull/4172 -.. _`#4196`: https://github.com/apache/cloudstack/pull/4196 -.. _`#4176`: https://github.com/apache/cloudstack/pull/4176 -.. _`#4202`: https://github.com/apache/cloudstack/pull/4202 -.. _`#3979`: https://github.com/apache/cloudstack/pull/3979 -.. _`#4174`: https://github.com/apache/cloudstack/pull/4174 -.. _`#4117`: https://github.com/apache/cloudstack/pull/4117 -.. _`#4071`: https://github.com/apache/cloudstack/pull/4071 -.. _`#4186`: https://github.com/apache/cloudstack/pull/4186 -.. _`#4001`: https://github.com/apache/cloudstack/pull/4001 -.. _`#3976`: https://github.com/apache/cloudstack/pull/3976 -.. _`#4103`: https://github.com/apache/cloudstack/pull/4103 -.. _`#4148`: https://github.com/apache/cloudstack/pull/4148 -.. _`#4171`: https://github.com/apache/cloudstack/pull/4171 -.. _`#4167`: https://github.com/apache/cloudstack/pull/4167 -.. _`#4164`: https://github.com/apache/cloudstack/pull/4164 -.. _`#4154`: https://github.com/apache/cloudstack/pull/4154 -.. _`#4004`: https://github.com/apache/cloudstack/pull/4004 -.. _`#4162`: https://github.com/apache/cloudstack/pull/4162 -.. _`#4132`: https://github.com/apache/cloudstack/pull/4132 -.. _`#4145`: https://github.com/apache/cloudstack/pull/4145 -.. _`#3998`: https://github.com/apache/cloudstack/pull/3998 -.. _`#4085`: https://github.com/apache/cloudstack/pull/4085 -.. _`#4140`: https://github.com/apache/cloudstack/pull/4140 -.. _`#4007`: https://github.com/apache/cloudstack/pull/4007 -.. _`#4003`: https://github.com/apache/cloudstack/pull/4003 -.. _`#4121`: https://github.com/apache/cloudstack/pull/4121 -.. _`#3991`: https://github.com/apache/cloudstack/pull/3991 -.. _`#4070`: https://github.com/apache/cloudstack/pull/4070 -.. _`#4130`: https://github.com/apache/cloudstack/pull/4130 -.. _`#4122`: https://github.com/apache/cloudstack/pull/4122 -.. _`#3982`: https://github.com/apache/cloudstack/pull/3982 -.. _`#4073`: https://github.com/apache/cloudstack/pull/4073 -.. _`#4075`: https://github.com/apache/cloudstack/pull/4075 -.. _`#3949`: https://github.com/apache/cloudstack/pull/3949 -.. _`#3955`: https://github.com/apache/cloudstack/pull/3955 -.. _`#3980`: https://github.com/apache/cloudstack/pull/3980 -.. _`#4048`: https://github.com/apache/cloudstack/pull/4048 -.. _`#4083`: https://github.com/apache/cloudstack/pull/4083 -.. _`#4142`: https://github.com/apache/cloudstack/pull/4142 -.. _`#4109`: https://github.com/apache/cloudstack/pull/4109 -.. _`#4077`: https://github.com/apache/cloudstack/pull/4077 -.. _`#4021`: https://github.com/apache/cloudstack/pull/4021 -.. _`#3965`: https://github.com/apache/cloudstack/pull/3965 -.. _`#4104`: https://github.com/apache/cloudstack/pull/4104 -.. _`#4017`: https://github.com/apache/cloudstack/pull/4017 -.. _`#4079`: https://github.com/apache/cloudstack/pull/4079 -.. _`#4046`: https://github.com/apache/cloudstack/pull/4046 -.. _`#4013`: https://github.com/apache/cloudstack/pull/4013 -.. _`#4062`: https://github.com/apache/cloudstack/pull/4062 -.. _`#4119`: https://github.com/apache/cloudstack/pull/4119 -.. _`#4126`: https://github.com/apache/cloudstack/pull/4126 -.. _`#4123`: https://github.com/apache/cloudstack/pull/4123 -.. _`#4065`: https://github.com/apache/cloudstack/pull/4065 -.. _`#4124`: https://github.com/apache/cloudstack/pull/4124 -.. _`#3794`: https://github.com/apache/cloudstack/pull/3794 -.. _`#4100`: https://github.com/apache/cloudstack/pull/4100 -.. _`#3921`: https://github.com/apache/cloudstack/pull/3921 -.. _`#4110`: https://github.com/apache/cloudstack/pull/4110 -.. _`#4092`: https://github.com/apache/cloudstack/pull/4092 -.. _`#4097`: https://github.com/apache/cloudstack/pull/4097 -.. _`#3967`: https://github.com/apache/cloudstack/pull/3967 -.. _`#4087`: https://github.com/apache/cloudstack/pull/4087 +.. _`#7304`: https://github.com/apache/cloudstack/pull/7304 +.. _`#7229`: https://github.com/apache/cloudstack/pull/7229 +.. _`#7302`: https://github.com/apache/cloudstack/pull/7302 +.. _`#7291`: https://github.com/apache/cloudstack/pull/7291 +.. _`#7286`: https://github.com/apache/cloudstack/pull/7286 +.. _`#7287`: https://github.com/apache/cloudstack/pull/7287 +.. _`#7257`: https://github.com/apache/cloudstack/pull/7257 +.. _`#7205`: https://github.com/apache/cloudstack/pull/7205 +.. _`#7270`: https://github.com/apache/cloudstack/pull/7270 +.. _`#7267`: https://github.com/apache/cloudstack/pull/7267 +.. _`#7256`: https://github.com/apache/cloudstack/pull/7256 +.. _`#7233`: https://github.com/apache/cloudstack/pull/7233 +.. _`#7255`: https://github.com/apache/cloudstack/pull/7255 +.. _`#7230`: https://github.com/apache/cloudstack/pull/7230 +.. _`#7261`: https://github.com/apache/cloudstack/pull/7261 +.. _`#7231`: https://github.com/apache/cloudstack/pull/7231 +.. _`#7252`: https://github.com/apache/cloudstack/pull/7252 +.. _`#7243`: https://github.com/apache/cloudstack/pull/7243 +.. _`#7190`: https://github.com/apache/cloudstack/pull/7190 +.. _`#7198`: https://github.com/apache/cloudstack/pull/7198 +.. _`#7201`: https://github.com/apache/cloudstack/pull/7201 +.. _`#7199`: https://github.com/apache/cloudstack/pull/7199 +.. _`#7177`: https://github.com/apache/cloudstack/pull/7177 +.. _`#7173`: https://github.com/apache/cloudstack/pull/7173 +.. _`#6924`: https://github.com/apache/cloudstack/pull/6924 +.. _`#7197`: https://github.com/apache/cloudstack/pull/7197 +.. _`#7179`: https://github.com/apache/cloudstack/pull/7179 +.. _`#7169`: https://github.com/apache/cloudstack/pull/7169 +.. _`#7192`: https://github.com/apache/cloudstack/pull/7192 +.. _`#7166`: https://github.com/apache/cloudstack/pull/7166 +.. _`#7183`: https://github.com/apache/cloudstack/pull/7183 +.. _`#7164`: https://github.com/apache/cloudstack/pull/7164 +.. _`#7112`: https://github.com/apache/cloudstack/pull/7112 +.. _`#7063`: https://github.com/apache/cloudstack/pull/7063 +.. _`#7059`: https://github.com/apache/cloudstack/pull/7059 +.. _`#7152`: https://github.com/apache/cloudstack/pull/7152 +.. _`#7003`: https://github.com/apache/cloudstack/pull/7003 +.. _`#7157`: https://github.com/apache/cloudstack/pull/7157 +.. _`#6900`: https://github.com/apache/cloudstack/pull/6900 +.. _`#7132`: https://github.com/apache/cloudstack/pull/7132 +.. _`#7146`: https://github.com/apache/cloudstack/pull/7146 +.. _`#7158`: https://github.com/apache/cloudstack/pull/7158 +.. _`#7156`: https://github.com/apache/cloudstack/pull/7156 +.. _`#7147`: https://github.com/apache/cloudstack/pull/7147 +.. _`#7145`: https://github.com/apache/cloudstack/pull/7145 +.. _`#7151`: https://github.com/apache/cloudstack/pull/7151 +.. _`#7065`: https://github.com/apache/cloudstack/pull/7065 +.. _`#5797`: https://github.com/apache/cloudstack/pull/5797 +.. _`#6840`: https://github.com/apache/cloudstack/pull/6840 +.. _`#6957`: https://github.com/apache/cloudstack/pull/6957 +.. _`#6803`: https://github.com/apache/cloudstack/pull/6803 +.. _`#7136`: https://github.com/apache/cloudstack/pull/7136 +.. _`#7015`: https://github.com/apache/cloudstack/pull/7015 +.. _`#6938`: https://github.com/apache/cloudstack/pull/6938 +.. _`#7125`: https://github.com/apache/cloudstack/pull/7125 +.. _`#6909`: https://github.com/apache/cloudstack/pull/6909 +.. _`#7103`: https://github.com/apache/cloudstack/pull/7103 +.. _`#7119`: https://github.com/apache/cloudstack/pull/7119 +.. _`#7113`: https://github.com/apache/cloudstack/pull/7113 +.. _`#7118`: https://github.com/apache/cloudstack/pull/7118 +.. _`#7120`: https://github.com/apache/cloudstack/pull/7120 +.. _`#7114`: https://github.com/apache/cloudstack/pull/7114 +.. _`#7111`: https://github.com/apache/cloudstack/pull/7111 +.. _`#7124`: https://github.com/apache/cloudstack/pull/7124 +.. _`#6748`: https://github.com/apache/cloudstack/pull/6748 +.. _`#7050`: https://github.com/apache/cloudstack/pull/7050 +.. _`#6581`: https://github.com/apache/cloudstack/pull/6581 +.. _`#7095`: https://github.com/apache/cloudstack/pull/7095 +.. _`#7092`: https://github.com/apache/cloudstack/pull/7092 +.. _`#7104`: https://github.com/apache/cloudstack/pull/7104 +.. _`#7094`: https://github.com/apache/cloudstack/pull/7094 +.. _`#7100`: https://github.com/apache/cloudstack/pull/7100 +.. _`#7046`: https://github.com/apache/cloudstack/pull/7046 +.. _`#7090`: https://github.com/apache/cloudstack/pull/7090 +.. _`#7075`: https://github.com/apache/cloudstack/pull/7075 +.. _`#7106`: https://github.com/apache/cloudstack/pull/7106 +.. _`#7067`: https://github.com/apache/cloudstack/pull/7067 +.. _`#7073`: https://github.com/apache/cloudstack/pull/7073 +.. _`#7091`: https://github.com/apache/cloudstack/pull/7091 +.. _`#6386`: https://github.com/apache/cloudstack/pull/6386 +.. _`#7097`: https://github.com/apache/cloudstack/pull/7097 +.. _`#7045`: https://github.com/apache/cloudstack/pull/7045 +.. _`#7084`: https://github.com/apache/cloudstack/pull/7084 +.. _`#7087`: https://github.com/apache/cloudstack/pull/7087 +.. _`#7080`: https://github.com/apache/cloudstack/pull/7080 +.. _`#7086`: https://github.com/apache/cloudstack/pull/7086 +.. _`#7076`: https://github.com/apache/cloudstack/pull/7076 +.. _`#6989`: https://github.com/apache/cloudstack/pull/6989 +.. _`#7072`: https://github.com/apache/cloudstack/pull/7072 +.. _`#6242`: https://github.com/apache/cloudstack/pull/6242 +.. _`#6978`: https://github.com/apache/cloudstack/pull/6978 +.. _`#7040`: https://github.com/apache/cloudstack/pull/7040 +.. _`#7068`: https://github.com/apache/cloudstack/pull/7068 +.. _`#7057`: https://github.com/apache/cloudstack/pull/7057 +.. _`#6273`: https://github.com/apache/cloudstack/pull/6273 +.. _`#6942`: https://github.com/apache/cloudstack/pull/6942 +.. _`#7023`: https://github.com/apache/cloudstack/pull/7023 +.. _`#6661`: https://github.com/apache/cloudstack/pull/6661 +.. _`#7052`: https://github.com/apache/cloudstack/pull/7052 +.. _`#7069`: https://github.com/apache/cloudstack/pull/7069 +.. _`#7054`: https://github.com/apache/cloudstack/pull/7054 +.. _`#7058`: https://github.com/apache/cloudstack/pull/7058 +.. _`#7032`: https://github.com/apache/cloudstack/pull/7032 +.. _`#6550`: https://github.com/apache/cloudstack/pull/6550 +.. _`#7066`: https://github.com/apache/cloudstack/pull/7066 +.. _`#7047`: https://github.com/apache/cloudstack/pull/7047 +.. _`#7024`: https://github.com/apache/cloudstack/pull/7024 +.. _`#7049`: https://github.com/apache/cloudstack/pull/7049 +.. _`#7008`: https://github.com/apache/cloudstack/pull/7008 +.. _`#7044`: https://github.com/apache/cloudstack/pull/7044 +.. _`#7039`: https://github.com/apache/cloudstack/pull/7039 +.. _`#6426`: https://github.com/apache/cloudstack/pull/6426 +.. _`#7037`: https://github.com/apache/cloudstack/pull/7037 +.. _`#7028`: https://github.com/apache/cloudstack/pull/7028 +.. _`#7038`: https://github.com/apache/cloudstack/pull/7038 +.. _`#7022`: https://github.com/apache/cloudstack/pull/7022 +.. _`#7011`: https://github.com/apache/cloudstack/pull/7011 +.. _`#7033`: https://github.com/apache/cloudstack/pull/7033 +.. _`#7034`: https://github.com/apache/cloudstack/pull/7034 +.. _`#7035`: https://github.com/apache/cloudstack/pull/7035 +.. _`#7026`: https://github.com/apache/cloudstack/pull/7026 +.. _`#7030`: https://github.com/apache/cloudstack/pull/7030 +.. _`#7007`: https://github.com/apache/cloudstack/pull/7007 +.. _`#6844`: https://github.com/apache/cloudstack/pull/6844 +.. _`#6995`: https://github.com/apache/cloudstack/pull/6995 +.. _`#7016`: https://github.com/apache/cloudstack/pull/7016 +.. _`#7013`: https://github.com/apache/cloudstack/pull/7013 +.. _`#7018`: https://github.com/apache/cloudstack/pull/7018 +.. _`#6808`: https://github.com/apache/cloudstack/pull/6808 +.. _`#6505`: https://github.com/apache/cloudstack/pull/6505 +.. _`#6348`: https://github.com/apache/cloudstack/pull/6348 +.. _`#7002`: https://github.com/apache/cloudstack/pull/7002 +.. _`#6825`: https://github.com/apache/cloudstack/pull/6825 +.. _`#7005`: https://github.com/apache/cloudstack/pull/7005 +.. _`#6956`: https://github.com/apache/cloudstack/pull/6956 +.. _`#6977`: https://github.com/apache/cloudstack/pull/6977 +.. _`#7001`: https://github.com/apache/cloudstack/pull/7001 +.. _`#6994`: https://github.com/apache/cloudstack/pull/6994 +.. _`#6845`: https://github.com/apache/cloudstack/pull/6845 +.. _`#6869`: https://github.com/apache/cloudstack/pull/6869 +.. _`#6959`: https://github.com/apache/cloudstack/pull/6959 +.. _`#6832`: https://github.com/apache/cloudstack/pull/6832 +.. _`#6574`: https://github.com/apache/cloudstack/pull/6574 +.. _`#6870`: https://github.com/apache/cloudstack/pull/6870 +.. _`#6783`: https://github.com/apache/cloudstack/pull/6783 +.. _`#6876`: https://github.com/apache/cloudstack/pull/6876 +.. _`#6508`: https://github.com/apache/cloudstack/pull/6508 +.. _`#6984`: https://github.com/apache/cloudstack/pull/6984 +.. _`#6784`: https://github.com/apache/cloudstack/pull/6784 +.. _`#6910`: https://github.com/apache/cloudstack/pull/6910 +.. _`#6961`: https://github.com/apache/cloudstack/pull/6961 +.. _`#6864`: https://github.com/apache/cloudstack/pull/6864 +.. _`#6902`: https://github.com/apache/cloudstack/pull/6902 +.. _`#6911`: https://github.com/apache/cloudstack/pull/6911 +.. _`#6930`: https://github.com/apache/cloudstack/pull/6930 +.. _`#6943`: https://github.com/apache/cloudstack/pull/6943 +.. _`#6967`: https://github.com/apache/cloudstack/pull/6967 +.. _`#6927`: https://github.com/apache/cloudstack/pull/6927 +.. _`#6965`: https://github.com/apache/cloudstack/pull/6965 +.. _`#6822`: https://github.com/apache/cloudstack/pull/6822 +.. _`#6917`: https://github.com/apache/cloudstack/pull/6917 +.. _`#6868`: https://github.com/apache/cloudstack/pull/6868 +.. _`#6905`: https://github.com/apache/cloudstack/pull/6905 +.. _`#6358`: https://github.com/apache/cloudstack/pull/6358 +.. _`#6875`: https://github.com/apache/cloudstack/pull/6875 +.. _`#6846`: https://github.com/apache/cloudstack/pull/6846 +.. _`#6854`: https://github.com/apache/cloudstack/pull/6854 +.. _`#6838`: https://github.com/apache/cloudstack/pull/6838 +.. _`#6792`: https://github.com/apache/cloudstack/pull/6792 +.. _`#6775`: https://github.com/apache/cloudstack/pull/6775 +.. _`#6811`: https://github.com/apache/cloudstack/pull/6811 +.. _`#6772`: https://github.com/apache/cloudstack/pull/6772 +.. _`#6751`: https://github.com/apache/cloudstack/pull/6751 +.. _`#6733`: https://github.com/apache/cloudstack/pull/6733 +.. _`#6684`: https://github.com/apache/cloudstack/pull/6684 +.. _`#6771`: https://github.com/apache/cloudstack/pull/6771 +.. _`#6638`: https://github.com/apache/cloudstack/pull/6638 +.. _`#6681`: https://github.com/apache/cloudstack/pull/6681 +.. _`#6682`: https://github.com/apache/cloudstack/pull/6682 +.. _`#6806`: https://github.com/apache/cloudstack/pull/6806 +.. _`#6790`: https://github.com/apache/cloudstack/pull/6790 +.. _`#6750`: https://github.com/apache/cloudstack/pull/6750 +.. _`#6802`: https://github.com/apache/cloudstack/pull/6802 +.. _`#6742`: https://github.com/apache/cloudstack/pull/6742 +.. _`#6776`: https://github.com/apache/cloudstack/pull/6776 +.. _`#6202`: https://github.com/apache/cloudstack/pull/6202 +.. _`#6799`: https://github.com/apache/cloudstack/pull/6799 +.. _`#4438`: https://github.com/apache/cloudstack/pull/4438 +.. _`#6769`: https://github.com/apache/cloudstack/pull/6769 +.. _`#6224`: https://github.com/apache/cloudstack/pull/6224 +.. _`#6522`: https://github.com/apache/cloudstack/pull/6522 +.. _`#6694`: https://github.com/apache/cloudstack/pull/6694 +.. _`#6741`: https://github.com/apache/cloudstack/pull/6741 +.. _`#6712`: https://github.com/apache/cloudstack/pull/6712 +.. _`#6577`: https://github.com/apache/cloudstack/pull/6577 +.. _`#6686`: https://github.com/apache/cloudstack/pull/6686 +.. _`#6653`: https://github.com/apache/cloudstack/pull/6653 +.. _`#6640`: https://github.com/apache/cloudstack/pull/6640 +.. _`#6587`: https://github.com/apache/cloudstack/pull/6587 +.. _`#6555`: https://github.com/apache/cloudstack/pull/6555 +.. _`#6556`: https://github.com/apache/cloudstack/pull/6556 +.. _`#6557`: https://github.com/apache/cloudstack/pull/6557 +.. _`#6504`: https://github.com/apache/cloudstack/pull/6504 +.. _`#6521`: https://github.com/apache/cloudstack/pull/6521 +.. _`#6510`: https://github.com/apache/cloudstack/pull/6510 +.. _`#6331`: https://github.com/apache/cloudstack/pull/6331 +.. _`#6474`: https://github.com/apache/cloudstack/pull/6474 +.. _`#6326`: https://github.com/apache/cloudstack/pull/6326 +.. _`#7933`: https://github.com/apache/cloudstack/pull/7933 +.. _`#7945`: https://github.com/apache/cloudstack/pull/7945 +.. _`#7947`: https://github.com/apache/cloudstack/pull/7947 +.. _`#7932`: https://github.com/apache/cloudstack/pull/7932 +.. _`#7924`: https://github.com/apache/cloudstack/pull/7924 +.. _`#7922`: https://github.com/apache/cloudstack/pull/7922 +.. _`#7887`: https://github.com/apache/cloudstack/pull/7887 +.. _`#7913`: https://github.com/apache/cloudstack/pull/7913 +.. _`#7874`: https://github.com/apache/cloudstack/pull/7874 +.. _`#7867`: https://github.com/apache/cloudstack/pull/7867 +.. _`#7911`: https://github.com/apache/cloudstack/pull/7911 +.. _`#7846`: https://github.com/apache/cloudstack/pull/7846 +.. _`#7877`: https://github.com/apache/cloudstack/pull/7877 +.. _`#7144`: https://github.com/apache/cloudstack/pull/7144 +.. _`#7909`: https://github.com/apache/cloudstack/pull/7909 +.. _`#7761`: https://github.com/apache/cloudstack/pull/7761 +.. _`#7898`: https://github.com/apache/cloudstack/pull/7898 +.. _`#7609`: https://github.com/apache/cloudstack/pull/7609 +.. _`#7880`: https://github.com/apache/cloudstack/pull/7880 +.. _`#7900`: https://github.com/apache/cloudstack/pull/7900 +.. _`#7894`: https://github.com/apache/cloudstack/pull/7894 +.. _`#7897`: https://github.com/apache/cloudstack/pull/7897 +.. _`#7896`: https://github.com/apache/cloudstack/pull/7896 +.. _`#7799`: https://github.com/apache/cloudstack/pull/7799 +.. _`#7893`: https://github.com/apache/cloudstack/pull/7893 +.. _`#7886`: https://github.com/apache/cloudstack/pull/7886 +.. _`#7801`: https://github.com/apache/cloudstack/pull/7801 +.. _`#7769`: https://github.com/apache/cloudstack/pull/7769 +.. _`#7882`: https://github.com/apache/cloudstack/pull/7882 +.. _`#7888`: https://github.com/apache/cloudstack/pull/7888 +.. _`#7870`: https://github.com/apache/cloudstack/pull/7870 +.. _`#7879`: https://github.com/apache/cloudstack/pull/7879 +.. _`#7876`: https://github.com/apache/cloudstack/pull/7876 +.. _`#7826`: https://github.com/apache/cloudstack/pull/7826 +.. _`#7293`: https://github.com/apache/cloudstack/pull/7293 +.. _`#7853`: https://github.com/apache/cloudstack/pull/7853 +.. _`#7875`: https://github.com/apache/cloudstack/pull/7875 +.. _`#7848`: https://github.com/apache/cloudstack/pull/7848 +.. _`#7380`: https://github.com/apache/cloudstack/pull/7380 +.. _`#7844`: https://github.com/apache/cloudstack/pull/7844 +.. _`#7866`: https://github.com/apache/cloudstack/pull/7866 +.. _`#7869`: https://github.com/apache/cloudstack/pull/7869 +.. _`#7862`: https://github.com/apache/cloudstack/pull/7862 +.. _`#6970`: https://github.com/apache/cloudstack/pull/6970 +.. _`#7832`: https://github.com/apache/cloudstack/pull/7832 +.. _`#7831`: https://github.com/apache/cloudstack/pull/7831 +.. _`#7854`: https://github.com/apache/cloudstack/pull/7854 +.. _`#7833`: https://github.com/apache/cloudstack/pull/7833 +.. _`#7828`: https://github.com/apache/cloudstack/pull/7828 +.. _`#7845`: https://github.com/apache/cloudstack/pull/7845 +.. _`#7777`: https://github.com/apache/cloudstack/pull/7777 +.. _`#7441`: https://github.com/apache/cloudstack/pull/7441 +.. _`#7685`: https://github.com/apache/cloudstack/pull/7685 +.. _`#7836`: https://github.com/apache/cloudstack/pull/7836 +.. _`#7694`: https://github.com/apache/cloudstack/pull/7694 +.. _`#7629`: https://github.com/apache/cloudstack/pull/7629 +.. _`#7775`: https://github.com/apache/cloudstack/pull/7775 +.. _`#7808`: https://github.com/apache/cloudstack/pull/7808 +.. _`#7760`: https://github.com/apache/cloudstack/pull/7760 +.. _`#7810`: https://github.com/apache/cloudstack/pull/7810 +.. _`#7812`: https://github.com/apache/cloudstack/pull/7812 +.. _`#7809`: https://github.com/apache/cloudstack/pull/7809 +.. _`#7667`: https://github.com/apache/cloudstack/pull/7667 +.. _`#7793`: https://github.com/apache/cloudstack/pull/7793 +.. _`#7392`: https://github.com/apache/cloudstack/pull/7392 +.. _`#7796`: https://github.com/apache/cloudstack/pull/7796 +.. _`#7722`: https://github.com/apache/cloudstack/pull/7722 +.. _`#7564`: https://github.com/apache/cloudstack/pull/7564 +.. _`#7792`: https://github.com/apache/cloudstack/pull/7792 +.. _`#7739`: https://github.com/apache/cloudstack/pull/7739 +.. _`#7663`: https://github.com/apache/cloudstack/pull/7663 +.. _`#7706`: https://github.com/apache/cloudstack/pull/7706 +.. _`#7779`: https://github.com/apache/cloudstack/pull/7779 +.. _`#7785`: https://github.com/apache/cloudstack/pull/7785 +.. _`#7766`: https://github.com/apache/cloudstack/pull/7766 +.. _`#7772`: https://github.com/apache/cloudstack/pull/7772 +.. _`#7768`: https://github.com/apache/cloudstack/pull/7768 +.. _`#7750`: https://github.com/apache/cloudstack/pull/7750 +.. _`#7758`: https://github.com/apache/cloudstack/pull/7758 +.. _`#7765`: https://github.com/apache/cloudstack/pull/7765 +.. _`#7764`: https://github.com/apache/cloudstack/pull/7764 +.. _`#7735`: https://github.com/apache/cloudstack/pull/7735 +.. _`#7708`: https://github.com/apache/cloudstack/pull/7708 +.. _`#7749`: https://github.com/apache/cloudstack/pull/7749 +.. _`#7757`: https://github.com/apache/cloudstack/pull/7757 +.. _`#7724`: https://github.com/apache/cloudstack/pull/7724 +.. _`#7288`: https://github.com/apache/cloudstack/pull/7288 +.. _`#7754`: https://github.com/apache/cloudstack/pull/7754 +.. _`#7404`: https://github.com/apache/cloudstack/pull/7404 +.. _`#6797`: https://github.com/apache/cloudstack/pull/6797 +.. _`#7634`: https://github.com/apache/cloudstack/pull/7634 +.. _`#7656`: https://github.com/apache/cloudstack/pull/7656 +.. _`#7719`: https://github.com/apache/cloudstack/pull/7719 +.. _`#7641`: https://github.com/apache/cloudstack/pull/7641 +.. _`#7580`: https://github.com/apache/cloudstack/pull/7580 +.. _`#7732`: https://github.com/apache/cloudstack/pull/7732 +.. _`#7695`: https://github.com/apache/cloudstack/pull/7695 +.. _`#7693`: https://github.com/apache/cloudstack/pull/7693 +.. _`#7713`: https://github.com/apache/cloudstack/pull/7713 +.. _`#7691`: https://github.com/apache/cloudstack/pull/7691 +.. _`#7381`: https://github.com/apache/cloudstack/pull/7381 +.. _`#7707`: https://github.com/apache/cloudstack/pull/7707 +.. _`#7630`: https://github.com/apache/cloudstack/pull/7630 +.. _`#7237`: https://github.com/apache/cloudstack/pull/7237 +.. _`#7607`: https://github.com/apache/cloudstack/pull/7607 +.. _`#7588`: https://github.com/apache/cloudstack/pull/7588 +.. _`#7666`: https://github.com/apache/cloudstack/pull/7666 +.. _`#7689`: https://github.com/apache/cloudstack/pull/7689 +.. _`#7687`: https://github.com/apache/cloudstack/pull/7687 +.. _`#7583`: https://github.com/apache/cloudstack/pull/7583 +.. _`#7628`: https://github.com/apache/cloudstack/pull/7628 +.. _`#7511`: https://github.com/apache/cloudstack/pull/7511 +.. _`#7539`: https://github.com/apache/cloudstack/pull/7539 +.. _`#7594`: https://github.com/apache/cloudstack/pull/7594 +.. _`#7584`: https://github.com/apache/cloudstack/pull/7584 +.. _`#7664`: https://github.com/apache/cloudstack/pull/7664 +.. _`#7408`: https://github.com/apache/cloudstack/pull/7408 +.. _`#7444`: https://github.com/apache/cloudstack/pull/7444 +.. _`#7636`: https://github.com/apache/cloudstack/pull/7636 +.. _`#7620`: https://github.com/apache/cloudstack/pull/7620 +.. _`#7597`: https://github.com/apache/cloudstack/pull/7597 +.. _`#7410`: https://github.com/apache/cloudstack/pull/7410 +.. _`#7570`: https://github.com/apache/cloudstack/pull/7570 +.. _`#7602`: https://github.com/apache/cloudstack/pull/7602 +.. _`#7592`: https://github.com/apache/cloudstack/pull/7592 +.. _`#6512`: https://github.com/apache/cloudstack/pull/6512 +.. _`#7313`: https://github.com/apache/cloudstack/pull/7313 +.. _`#7160`: https://github.com/apache/cloudstack/pull/7160 +.. _`#7524`: https://github.com/apache/cloudstack/pull/7524 +.. _`#7479`: https://github.com/apache/cloudstack/pull/7479 +.. _`#7508`: https://github.com/apache/cloudstack/pull/7508 +.. _`#7452`: https://github.com/apache/cloudstack/pull/7452 +.. _`#7475`: https://github.com/apache/cloudstack/pull/7475 +.. _`#7559`: https://github.com/apache/cloudstack/pull/7559 +.. _`#7526`: https://github.com/apache/cloudstack/pull/7526 +.. _`#7557`: https://github.com/apache/cloudstack/pull/7557 +.. _`#7455`: https://github.com/apache/cloudstack/pull/7455 +.. _`#7527`: https://github.com/apache/cloudstack/pull/7527 +.. _`#7485`: https://github.com/apache/cloudstack/pull/7485 +.. _`#7424`: https://github.com/apache/cloudstack/pull/7424 +.. _`#7521`: https://github.com/apache/cloudstack/pull/7521 +.. _`#7522`: https://github.com/apache/cloudstack/pull/7522 +.. _`#7506`: https://github.com/apache/cloudstack/pull/7506 +.. _`#7421`: https://github.com/apache/cloudstack/pull/7421 +.. _`#7265`: https://github.com/apache/cloudstack/pull/7265 +.. _`#7448`: https://github.com/apache/cloudstack/pull/7448 +.. _`#7264`: https://github.com/apache/cloudstack/pull/7264 +.. _`#7513`: https://github.com/apache/cloudstack/pull/7513 +.. _`#7512`: https://github.com/apache/cloudstack/pull/7512 +.. _`#7499`: https://github.com/apache/cloudstack/pull/7499 +.. _`#7163`: https://github.com/apache/cloudstack/pull/7163 +.. _`#7027`: https://github.com/apache/cloudstack/pull/7027 +.. _`#7478`: https://github.com/apache/cloudstack/pull/7478 +.. _`#7494`: https://github.com/apache/cloudstack/pull/7494 +.. _`#7498`: https://github.com/apache/cloudstack/pull/7498 +.. _`#7482`: https://github.com/apache/cloudstack/pull/7482 +.. _`#7477`: https://github.com/apache/cloudstack/pull/7477 +.. _`#7453`: https://github.com/apache/cloudstack/pull/7453 +.. _`#7423`: https://github.com/apache/cloudstack/pull/7423 +.. _`#7415`: https://github.com/apache/cloudstack/pull/7415 +.. _`#7445`: https://github.com/apache/cloudstack/pull/7445 +.. _`#7439`: https://github.com/apache/cloudstack/pull/7439 +.. _`#7368`: https://github.com/apache/cloudstack/pull/7368 +.. _`#7215`: https://github.com/apache/cloudstack/pull/7215 +.. _`#7373`: https://github.com/apache/cloudstack/pull/7373 +.. _`#7269`: https://github.com/apache/cloudstack/pull/7269 +.. _`#7398`: https://github.com/apache/cloudstack/pull/7398 +.. _`#7360`: https://github.com/apache/cloudstack/pull/7360 +.. _`#7407`: https://github.com/apache/cloudstack/pull/7407 +.. _`#7400`: https://github.com/apache/cloudstack/pull/7400 +.. _`#7384`: https://github.com/apache/cloudstack/pull/7384 +.. _`#7385`: https://github.com/apache/cloudstack/pull/7385 +.. _`#7393`: https://github.com/apache/cloudstack/pull/7393 +.. _`#7276`: https://github.com/apache/cloudstack/pull/7276 +.. _`#7411`: https://github.com/apache/cloudstack/pull/7411 +.. _`#7277`: https://github.com/apache/cloudstack/pull/7277 +.. _`#7406`: https://github.com/apache/cloudstack/pull/7406 +.. _`#7394`: https://github.com/apache/cloudstack/pull/7394 +.. _`#7388`: https://github.com/apache/cloudstack/pull/7388 +.. _`#7402`: https://github.com/apache/cloudstack/pull/7402 +.. _`#7359`: https://github.com/apache/cloudstack/pull/7359 +.. _`#7281`: https://github.com/apache/cloudstack/pull/7281 +.. _`#7328`: https://github.com/apache/cloudstack/pull/7328 +.. _`#7395`: https://github.com/apache/cloudstack/pull/7395 +.. _`#7387`: https://github.com/apache/cloudstack/pull/7387 +.. _`#7268`: https://github.com/apache/cloudstack/pull/7268 +.. _`#7332`: https://github.com/apache/cloudstack/pull/7332 +.. _`#7327`: https://github.com/apache/cloudstack/pull/7327 +.. _`#7382`: https://github.com/apache/cloudstack/pull/7382 +.. _`#7200`: https://github.com/apache/cloudstack/pull/7200 +.. _`#7343`: https://github.com/apache/cloudstack/pull/7343 +.. _`#7372`: https://github.com/apache/cloudstack/pull/7372 +.. _`#7374`: https://github.com/apache/cloudstack/pull/7374 +.. _`#7367`: https://github.com/apache/cloudstack/pull/7367 +.. _`#7361`: https://github.com/apache/cloudstack/pull/7361 +.. _`#7140`: https://github.com/apache/cloudstack/pull/7140 diff --git a/source/releasenotes/compat.rst b/source/releasenotes/compat.rst index 1aea35cd89..ca03e761cb 100644 --- a/source/releasenotes/compat.rst +++ b/source/releasenotes/compat.rst @@ -12,7 +12,7 @@ KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - + Compatibility Matrix ==================== @@ -22,10 +22,15 @@ Supported OS Versions for Management Server This section lists the operating systems that are supported for running CloudStack Management Server. -- Ubuntu 18.04 LTS, 20.04 LTS -- CentOS versions 7, 8 (note: CentOS 8 will EOL in Dec 2021) -- Rocky Linux 8 -- RHEL versions 7, 8 +- Ubuntu 18.04 LTS, 20.04 LTS, 22.04 LTS +- CentOS versions 7 +- Rocky Linux 8, 9 +- Alma Linux 8, 9 +- RHEL versions 7, 8, 9 +- openSUSE Leap 15 +- SUSE Linux Enterprise Server 15 (not tested, but expected to work same as with openSUSE 15) + + .. note:: There is a known issue with ipmitool with RHEL8 / SUSE, so certain functionality such as out of band management might not work Software Requirements ~~~~~~~~~~~~~~~~~~~~~ @@ -39,39 +44,51 @@ Supported Hypervisor Versions CloudStack supports three hypervisor families, XenServer with XAPI, KVM, and VMware with vSphere. -- Ubuntu 18.04 LTS, 20.04 LTS with KVM -- CentOS 7, 8 with KVM (note: CentOS 8 will EOL in Dec 2021) -- Rocky Linux 8 with KVM -- Red Hat Enterprise Linux 7, 8 with KVM -- XenServer versions 7.1, 7.2, 7.4, 7.5, 8.0 with latest hotfixes, XCP-ng 7.4, 7.6, 8.0, 8.1, 8.2 +- Ubuntu 18.04 LTS, 20.04 LTS, 22.04 LTS with KVM +- CentOS 7 with KVM +- Rocky Linux 8, 9 with KVM +- Red Hat Enterprise Linux 7, 8, 9 with KVM +- Alma Linux 8, 9 +- openSUSE Leap 15 +- SUSE Linux Enterprise Server 15 +- XenServer versions 7.1, 7.2, 7.4, 7.5, 8.0 (8.1 and 8.2 expected to work, but not tested. For 8.2 please check the note below) with latest hotfixes +- XCP-ng 7.4.0, 7.6.0, 8.0.0, 8.1.0, 8.2.0 .. note:: It is now required to enable HA on the XenServer pool in order to recover from a pool-master failure. Please refer to the `XenServer documentation `_. -- VMware versions 6.5, 6.7 and 7.0 + .. note:: For XenServer version 8.2 to work it might be necessary to manually add a custom storage repository with name "XenServer Tools" containing the systemvm.iso file. + +- VMware versions 6.5, 6.7, 7.0 and 8.0.0 + + .. note:: The following VMware minor versions are supported and tested: 6.5, 6.7, 6.7.1, 6.7.2, 6.7.3, 7.0, 7.0.1.0, 7.0.2.0, 7.0.3.0, 8.0, 8.0a (8.0.0.1), 8.0b (8.0.0.2), 8.0c (8.0.0.3). + For any minor versions without hypervisor mappings, all Instances have guest OS identifier "otherGuest64" (x86-64 architecture) or "otherGuest" (other architectures). .. note:: There is a known issue in 6.7 U1 (https://kb.vmware.com/s/article/67315) which blocks some CloudStack cloning operations. The use of linked clones is known to be effected. - .. note:: There is a known issue in 6.7 U3 - 6.7 U3f where a mailformed OVA could crash vCenter services (for more information see `here `_). To avoid the issue, make sure to use 6.7 U3g or later. - -- LXC Host Containers on RHEL 7 -- Windows Server 2012 R2 (with Hyper-V Role enabled) -- Hyper-V 2012 R2 -- Oracle VM 3.0+ + .. note:: There is a known issue in 6.7 U3 - 6.7 U3f where a malformed OVA could crash vCenter services (for more information see `here `_). To avoid the issue, make sure to use 6.7 U3g or later. + + .. note:: There are some known issues with 8.0 U1 (https://github.com/apache/cloudstack/issues/7572). VMware 8.0 U1 (8.0.1.0) is not supported yet. + +- LXC Host Containers on RHEL 7 (not tested to work fine for last many CloudStack releases) +- Windows Server 2012 R2 with Hyper-V Role enabled (not tested to work fine for last many CloudStack releases) +- Hyper-V 2012 R2 (not tested to work fine for last many CloudStack releases) +- Oracle VM 3.0+ (not tested to work fine for last many CloudStack releases) - Bare metal hosts are supported, which have no hypervisor. These hosts can run the following operating systems: - Fedora 17 - Ubuntu 12.04 +(not tested to work fine for last many CloudStack releases) Supported External Devices -------------------------- -- Netscaler VPX and MPX versions 9.3, 10.1e and 10.5 -- Netscaler SDX version 9.3, 10.1e and 10.5 -- SRX (Model srx100b) versions 10.3 to 10.4 R7.5 -- F5 11.X -- Force 10 Switch version S4810 for Baremetal Advanced Networks +- Netscaler VPX and MPX versions 9.3, 10.1e and 10.5 (not tested to work fine for last many CloudStack releases) +- Netscaler SDX version 9.3, 10.1e and 10.5 (not tested to work fine for last many CloudStack releases) +- SRX (Model srx100b) versions 10.3 to 10.4 R7.5 (not tested to work fine for last many CloudStack releases) +- F5 11.X (not tested to work fine for last many CloudStack releases) +- Force 10 Switch version S4810 for Baremetal Advanced Networks (not tested to work fine for last many CloudStack releases) Supported Browsers @@ -101,14 +118,18 @@ The following hypervisors are no longer be supported in this release due to vend - vSphere 5.5 - vSphere 6.0 - CentOS/RHEL (KVM) 6.x +- CentOS (KVM) 8.x - Ubuntu 14.04 - Ubuntu 16.04 The following Management Server Operating Systems are no longer supported in this release due to vendor EOL: - CentOS 6.x +- CentOS 8.x [1]_ - Ubuntu 14.04 - Ubuntu 16.04 -Please see `CloudStack Wiki `_ +.. [1] in spite of mostly being phased out some support is remaining in for now. See the section :ref:`Possible Issue with Guest OS IDs` for details. + +Please see `CloudStack Wiki `_ for details. diff --git a/source/upgrading/index.rst b/source/upgrading/index.rst index abff17cb5c..6d79f6f7e6 100644 --- a/source/upgrading/index.rst +++ b/source/upgrading/index.rst @@ -28,6 +28,12 @@ Upgrading CloudStack This document contains the instructions for upgrading CloudStack from prior releases, to the current release. Please read through all sections carefully before starting. +From ACS 4.16 onwards, seeding of system-VM Template is optional, as this will be taken care of by either the upgrade process or +in case of a fresh deployment, registration of the systemVM Template(s) is handled during the addition of the first image store to a zone. +The `cloudstack-management` package will now include the systemVM Templates for KVM, XenServer and VMWare. In case Templates aren't already registered +either prior upgrade or during fresh installation, ACS will handle the Template registration automatically, by mounting the secondary store onto the +management server, copying the respective Templates to the store and then creating the `template.properties` file. + .. note:: For information on the API changes and issues fixed in this release, please see the Release Notes section of the documentation @@ -38,6 +44,9 @@ Contents: upgrade/mysql upgrade/valid_source + upgrade/upgrade-4.18 + upgrade/upgrade-4.17 + upgrade/upgrade-4.16 upgrade/upgrade-4.15 upgrade/upgrade-4.14 upgrade/upgrade-4.13 diff --git a/source/upgrading/upgrade/_no-sysvm_templates.rst b/source/upgrading/upgrade/_no-sysvm_templates.rst index dcfb81dc03..2034502345 100644 --- a/source/upgrading/upgrade/_no-sysvm_templates.rst +++ b/source/upgrading/upgrade/_no-sysvm_templates.rst @@ -15,7 +15,7 @@ .. sub-section included in upgrade notes. -Update System-VM templates +Update System VM Templates -------------------------- Upgrade from |version_to_upgrade| to |version| does not require new systemvm-templates. diff --git a/source/upgrading/upgrade/_sysvm_manual_hotfix.rst b/source/upgrading/upgrade/_sysvm_manual_hotfix.rst index 90a7d56fc3..c01eb1ccbb 100644 --- a/source/upgrading/upgrade/_sysvm_manual_hotfix.rst +++ b/source/upgrading/upgrade/_sysvm_manual_hotfix.rst @@ -13,7 +13,7 @@ specific language governing permissions and limitations under the License. -.. sub-section optinaly included in upgrade notes. +.. sub-section optionally included in upgrade notes. .. Add following to file when including this manual hotfix .. _manual_hofix: @@ -26,13 +26,13 @@ Some manual steps are required to upgrade of SystemVMs and Virtual Routers. -Following MySQL commands will update the template ID used by Console Proxy VMs (CPVM) -and Secondary Storage VMs (SSVM). It will also change the default template for -Virtual Router to *systemvm--4.4* templates. +Following MySQL commands will update the Template ID used by Console Proxy VMs (CPVM) +and Secondary Storage VMs (SSVM). It will also change the default Template for +Virtual Router to *systemvm--4.4* Templates. -XenServer SystemVMs -^^^^^^^^^^^^^^^^^^^ +XenServer System VMs +^^^^^^^^^^^^^^^^^^^^ Execute following MySQL queries in MySQL. Please note ```` from the first command @@ -43,7 +43,7 @@ XenServer SystemVMs mysql -h localhost -u root -p cloud - #. get the id of the new template: + #. Get the id of the new Template: .. code-block:: mysql @@ -71,7 +71,7 @@ KVM SystemVMs mysql -h localhost -u root -p cloud - #. get the id of the new template: + #. Get the id of the new Template: .. code-block:: mysql @@ -99,7 +99,7 @@ VMware SystemVMs mysql -h localhost -u root -p cloud - #. get the id of the new template: + #. Get the id of the new Template: .. code-block:: mysql diff --git a/source/upgrading/upgrade/_sysvm_restart.rst b/source/upgrading/upgrade/_sysvm_restart.rst index 8f01fb2299..30f32282fb 100644 --- a/source/upgrading/upgrade/_sysvm_restart.rst +++ b/source/upgrading/upgrade/_sysvm_restart.rst @@ -15,9 +15,67 @@ .. sub-section included in upgrade notes. -Once you've upgraded the packages on your management servers, you'll +System VMs and Virtual Routers +------------------------------ + +From Apache CloudStack version 4.17.0 onward, there is support to live patch +System VMs, namely, SSVM, CPVM, Routers. Live patching provides support +for zero-downtime upgrades, wherein, the System VM software is updated to the +latest code version without having to destroy and recreate them / restart them. + +With this feature, users will have a choice wherein they can use the existing System VM Template with the latest +software by using the live patch feature, or can follow the usual workflow of restarting the +system VM to use the latest System VM Template. Live Patching System VMs serves to be especially +useful in cases when the code version has upgraded but the Template hasn't. In such a scenario users +will no longer need to restart the System VMs to use the latest code. + +When one attempts to live-patch the System VMs, it pretty much mimics the patching process +that happens when booting up the System VMs but without having to shut down the System VMs. +This will update the software packages, which were previously bundled in the systemvm.iso i.e., +agent.zip and cloud-scripts.tgz and restart the services that are present in the /var/cache/cloud/enabled_svcs file +in the System VMs. + +.. note:: + + The following services will be restarted once a system VM is live patched: + + +---------------------+-------------------------------+ + | **System VM** | **Services** | + +---------------------+-------------------------------+ + | SSVM | cloud, apache2, portmap | + +---------------------+-------------------------------+ + | CPVM | cloud | + +---------------------+-------------------------------+ + | VRs | haproxy, apache2, dnsmasq | + +---------------------+-------------------------------+ + + With respect to VRs, a Network restart without cleanup is initiated to during live patching to ensure all rules + are re-applied. + + **NOTE:** In cases where upgrading the system VM Template is necessary due to availability of security patches + or updated packages in the Template, or in case live-patch fails for system VMs and virtual routers due + to any issues or limitations (such as VPC Networks without any Network tiers) then please follow the + traditional method of upgrading system VMs and virtual routers by restarting or recreating the system VMs + and virtual routers (including restarting the Network with/without cleanup as required), which could mean + some downtime. + +Following matrix lists the versions of CloudStack that support live patching. + + +---------------------+-------------------------+--------------------------------+------------------------------------------+ + | **ACS Version** | **Upgrade Version** | **Live Patching Support** | **Reason / Comment** | + +---------------------+-------------------------+--------------------------------+------------------------------------------+ + | <=4.13 | 4.17+ | No | Update in the openJDK version | + +---------------------+-------------------------+--------------------------------+------------------------------------------+ + | 4.14 | 4.17+ |Yes | May notice some issue with remove access | + | | | | VPN due to older version of Strongswan | + +---------------------+-------------------------+--------------------------------+------------------------------------------+ + | >=4.15 | 4.17+ |Yes | N/A | + +---------------------+-------------------------+--------------------------------+------------------------------------------+ + +In addition to the support for live patching, users still have the facility to follow the legacy workflow +of restarting the system VMs once the packages on the management servers have been upgraded. Here you'll need to restart the system VMs in order for those VMs to be rebuilt -from the new systemVM template version. +from the new system VM Template version. .. note:: diff --git a/source/upgrading/upgrade/_sysvm_templates.rst b/source/upgrading/upgrade/_sysvm_templates.rst index 6503568e61..980d5f48a9 100644 --- a/source/upgrading/upgrade/_sysvm_templates.rst +++ b/source/upgrading/upgrade/_sysvm_templates.rst @@ -15,9 +15,14 @@ .. sub-section included in upgrade notes. -Update System-VM templates +Update System VM Templates -------------------------- +.. note:: + From ACS 4.16 onwards, CloudStack will support automatic registration of System VM + Templates (when using noredist packages), if not done prior initiating upgrade. However, the usual upgrade process + continues to be supported. + #. While running the existing |version_to_upgrade| system, log in to the UI as the root administrator. @@ -25,10 +30,12 @@ Update System-VM templates #. In Select view, click Templates. -#. Click Register template. - The Register template dialog box is displayed. +#. Click Register Template. + The Register Template dialog box is displayed. + +#. To register the System VM Template do the following: -#. In the Register template dialog box, specify the following values + In the Register Template dialog box, specify the following values (do not change these): .. cssclass:: table-striped table-bordered table-hover @@ -137,6 +144,6 @@ Update System-VM templates | | Routing: no | +------------+------------------------------------------------------------+ -#. Watch the screen to be sure that the template downloads successfully and +#. Watch the screen to be sure that the Template downloads successfully and enters the **READY** state. Do not proceed until this is successful. diff --git a/source/upgrading/upgrade/_sysvm_templates_pre45.rst b/source/upgrading/upgrade/_sysvm_templates_pre45.rst index 8f3ddfc093..9f3cb7fa02 100644 --- a/source/upgrading/upgrade/_sysvm_templates_pre45.rst +++ b/source/upgrading/upgrade/_sysvm_templates_pre45.rst @@ -15,11 +15,11 @@ .. sub-section included in upgrade notes. -Update System-VM templates +Update System-VM Templates -------------------------- .. warning:: - Upgrading from 4.4 or older to 4.6.0 require 2 systemvm templates to be + Upgrading from 4.4 or older to 4.6.0 require 2 systemvm Templates to be downloaded, for 4.5 and 4.6. #. While running the existing |version_to_upgrade| system, log in to the UI as @@ -29,13 +29,13 @@ Update System-VM templates #. In Select view, click Templates. -#. Register 4.5 systemvm template: +#. Register 4.5 systemvm Template: - #. Click Register template. + #. Click Register Template. - The Register template dialog box is displayed. + The Register Template dialog box is displayed. - #. In the Register template dialog box, specify the following values + #. In the Register Template dialog box, specify the following values (do not change these): .. cssclass:: table-striped table-bordered table-hover @@ -122,13 +122,13 @@ Update System-VM templates | | Routing: no | +------------+------------------------------------------------------------+ -#. Register |release| systemvm template: +#. Register |release| System VM Template: - #. Click Register template. + #. Click Register Template. - The Register template dialog box is displayed. + The Register Template dialog box is displayed. - #. In the Register template dialog box, specify the following values + #. In the Register Template dialog box, specify the following values (do not change these): .. cssclass:: table-striped table-bordered table-hover @@ -215,5 +215,5 @@ Update System-VM templates | | Routing: no | +------------+------------------------------------------------------------+ -#. Watch the screen to be sure that the template downloads successfully and +#. Watch the screen to be sure that the Template downloads successfully and enters the **READY** state. Do not proceed until this is successful. diff --git a/source/upgrading/upgrade/_xenserver_upg.rst b/source/upgrading/upgrade/_xenserver_upg.rst index 0440cfbff2..dc3a5a59a5 100644 --- a/source/upgrading/upgrade/_xenserver_upg.rst +++ b/source/upgrading/upgrade/_xenserver_upg.rst @@ -20,9 +20,9 @@ XenServer HA As of Apache CloudStack 4.4, CloudStack is not responsible to promote a new pool master on a Citrix XenServer pool. In case of failure of the pool master host, -the responsability of electing a new pool master as been delegated back to the +the responsibility of electing a new pool master as been delegated back to the HA feature of XenServer. CloudStack remain responsible to honored HA capability -for Compute Offerings of instances. The XenServer HA feature must be enabled +for Compute Offerings of Instances. The XenServer HA feature must be enabled only for the pool master, not for virtual-machines. diff --git a/source/upgrading/upgrade/mysql.rst b/source/upgrading/upgrade/mysql.rst index bbbc2d1ef6..ea9e88497a 100644 --- a/source/upgrading/upgrade/mysql.rst +++ b/source/upgrading/upgrade/mysql.rst @@ -18,7 +18,7 @@ MySQL upgrade problems With certain MySQL versions (see below), issues have been seen with "cloud.nics" table's column type (which was not updated properly during CloudStack upgrades, due to MySQL limitations), -which eventually may lead to exception seen in the management server logs, causing users to +which eventually may lead to exception seen in the management server logs, causing Users to not be able to start any VM. The following SQL statement needs to be manually executed in order to fix such issue: diff --git a/source/upgrading/upgrade/upgrade-4.10.rst b/source/upgrading/upgrade/upgrade-4.10.rst index a0070cd36f..4bdd1801e2 100644 --- a/source/upgrading/upgrade/upgrade-4.10.rst +++ b/source/upgrading/upgrade/upgrade-4.10.rst @@ -36,7 +36,7 @@ Overview of Upgrade Steps: ---------------------------- #. Check any customisations and integrations -#. Upload the |sysvm64-version| System VM template if not already using it. +#. Upload the |sysvm64-version| System VM Template if not already using it. #. Stop all running management servers #. Backup CloudStack database (MySQL) #. Upgrade 1st CloudStack management server @@ -53,8 +53,8 @@ http://markmail.org/message/f42kqr3mx4r4hgih .. include:: _customisation_warnings.rst .. warning:: - If you are not already using the |sysvm64-version| System VM template you will need to - upgrade your System VM template prior to performing the upgrade of the + If you are not already using the |sysvm64-version| System VM Template you will need to + upgrade your System VM Template prior to performing the upgrade of the CloudStack packages. .. include:: _sysvm_templates.rst @@ -104,8 +104,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p -R cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p -R cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu410: @@ -422,8 +422,6 @@ Restart management services .. parsed-literal:: $ sudo service cloudstack-usage start - -System-VMs and Virtual-Routers ------------------------------- + .. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.11.rst b/source/upgrading/upgrade/upgrade-4.11.rst index c3d920e6c3..e405623bc4 100644 --- a/source/upgrading/upgrade/upgrade-4.11.rst +++ b/source/upgrading/upgrade/upgrade-4.11.rst @@ -36,7 +36,7 @@ Overview of Upgrade Steps: ---------------------------- #. Check any customisations and integrations -#. Upload the |sysvm64-version| System VM template if not already using it. +#. Upload the |sysvm64-version| System VM Template if not already using it. #. Stop all running management servers #. Backup CloudStack database (MySQL) #. Upgrade 1st CloudStack management server @@ -50,8 +50,8 @@ Overview of Upgrade Steps: .. include:: _customisation_warnings.rst .. warning:: - If you are not already using the |sysvm64-version| System VM template you will need to - upgrade your System VM template prior to performing the upgrade of the + If you are not already using the |sysvm64-version| System VM Template you will need to + upgrade your System VM Template prior to performing the upgrade of the CloudStack packages. .. include:: _sysvm_templates.rst @@ -100,8 +100,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p -R cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p -R cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu411: @@ -256,7 +256,7 @@ Hypervisor: VMware build using "noredist". Refer to :ref:`building-noredist`. -No additional steps are requried for the VMware Hypervisor for this upgrade. +No additional steps are required for the VMware Hypervisor for this upgrade. .. _kvm411: @@ -303,7 +303,6 @@ For KVM hosts, upgrade the ``cloudstack-agent`` package .. parsed-literal:: $ sudo yum install -y epel-release - $ sudo yum install -y python36-libvirt $ sudo yum upgrade cloudstack-agent #. Restart the agent: @@ -329,7 +328,5 @@ Restart management services $ sudo service cloudstack-usage start -System-VMs and Virtual-Routers ------------------------------- .. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.12.rst b/source/upgrading/upgrade/upgrade-4.12.rst index e66b42faf6..fcffe76595 100644 --- a/source/upgrading/upgrade/upgrade-4.12.rst +++ b/source/upgrading/upgrade/upgrade-4.12.rst @@ -35,7 +35,7 @@ Overview of Upgrade Steps: ---------------------------- #. Check any customisations and integrations -#. Upload the |sysvm64-version| System VM template if not already using it. +#. Upload the |sysvm64-version| System VM Template if not already using it. #. Stop all running management servers #. Backup CloudStack database (MySQL) #. Upgrade 1st CloudStack management server @@ -48,8 +48,8 @@ Overview of Upgrade Steps: .. include:: _customisation_warnings.rst .. warning:: - If you are not already using the |sysvm64-version| System VM template you will need to - upgrade your System VM template prior to performing the upgrade of the + If you are not already using the |sysvm64-version| System VM Template you will need to + upgrade your System VM Template prior to performing the upgrade of the CloudStack packages. .. include:: _sysvm_templates.rst @@ -98,8 +98,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p -R cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p -R cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu412: @@ -257,7 +257,7 @@ Hypervisor: VMware build using "noredist". Refer to :ref:`building-noredist`. -No additional steps are requried for the VMware Hypervisor for this upgrade. +No additional steps are required for the VMware Hypervisor for this upgrade. .. _kvm412: @@ -328,7 +328,5 @@ Restart management services $ sudo service cloudstack-usage start -System-VMs and Virtual-Routers ------------------------------- .. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.13.rst b/source/upgrading/upgrade/upgrade-4.13.rst index 753afe2e57..04ff1317dd 100644 --- a/source/upgrading/upgrade/upgrade-4.13.rst +++ b/source/upgrading/upgrade/upgrade-4.13.rst @@ -36,7 +36,7 @@ Overview of Upgrade Steps: ---------------------------- #. Check any customisations and integrations -#. Upload the |sysvm64-version| System VM template if not already using it. +#. Upload the |sysvm64-version| System VM Template if not already using it. #. Confirm Java 11 is the default Java version #. Stop all running management servers #. Backup CloudStack database (MySQL) @@ -51,8 +51,8 @@ Overview of Upgrade Steps: .. include:: _customisation_warnings.rst .. warning:: - If you are not already using the |sysvm64-version| System VM template you will need to - upgrade your System VM template prior to performing the upgrade of the + If you are not already using the |sysvm64-version| System VM Template you will need to + upgrade your System VM Template prior to performing the upgrade of the CloudStack packages. .. include:: _sysvm_templates.rst @@ -101,8 +101,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p -R cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p -R cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu413: @@ -235,7 +235,7 @@ Hypervisor: VMware built using "noredist". Refer to :ref:`building-noredist`. -No additional steps are requried for the VMware Hypervisor for this upgrade. +No additional steps are required for the VMware Hypervisor for this upgrade. .. _kvm413: @@ -282,7 +282,6 @@ For KVM hosts, upgrade the ``cloudstack-agent`` package .. parsed-literal:: $ sudo yum install -y epel-release - $ sudo yum install -y python36-libvirt $ sudo yum upgrade cloudstack-agent #. Restart the agent: @@ -308,7 +307,5 @@ Restart management services $ sudo service cloudstack-usage start -System-VMs and Virtual-Routers ------------------------------- .. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.14.rst b/source/upgrading/upgrade/upgrade-4.14.rst index 701877ecad..fb7ada60b2 100644 --- a/source/upgrading/upgrade/upgrade-4.14.rst +++ b/source/upgrading/upgrade/upgrade-4.14.rst @@ -36,7 +36,7 @@ Overview of Upgrade Steps: ---------------------------- #. Check any customisations and integrations -#. Upload the |sysvm64-version| System VM template if not already using it. +#. Upload the |sysvm64-version| System VM Template if not already using it. #. Stop all running management servers #. Backup CloudStack database (MySQL) #. Upgrade 1st CloudStack management server @@ -49,8 +49,8 @@ Overview of Upgrade Steps: .. include:: _customisation_warnings.rst .. warning:: - If you are not already using the |sysvm64-version| System VM template you will need to - upgrade your System VM template prior to performing the upgrade of the + If you are not already using the |sysvm64-version| System VM Template you will need to + upgrade your System VM Template prior to performing the upgrade of the CloudStack packages. .. include:: _sysvm_templates.rst @@ -97,8 +97,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p -R cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p -R cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu414: @@ -229,7 +229,7 @@ Hypervisor: VMware built using "noredist". Refer to :ref:`building-noredist`. -No additional steps are requried for the VMware Hypervisor for this upgrade. +No additional steps are required for the VMware Hypervisor for this upgrade. .. _kvm414: @@ -276,7 +276,6 @@ For KVM hosts, upgrade the ``cloudstack-agent`` package .. parsed-literal:: $ sudo yum install -y epel-release - $ sudo yum install -y python36-libvirt $ sudo yum upgrade cloudstack-agent #. Restart the agent: @@ -302,7 +301,5 @@ Restart management services $ sudo service cloudstack-usage start -System-VMs and Virtual-Routers ------------------------------- .. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.15.rst b/source/upgrading/upgrade/upgrade-4.15.rst index 277415798f..f6f9e45e2d 100644 --- a/source/upgrading/upgrade/upgrade-4.15.rst +++ b/source/upgrading/upgrade/upgrade-4.15.rst @@ -36,7 +36,7 @@ Overview of Upgrade Steps: ---------------------------- #. Check any customisations and integrations -#. Upload the |sysvm64-version| System VM template if not already using it. +#. Upload the |sysvm64-version| System VM Template if not already using it. #. Stop all running management servers #. Backup CloudStack database (MySQL) #. Upgrade 1st CloudStack management server @@ -49,8 +49,8 @@ Overview of Upgrade Steps: .. include:: _customisation_warnings.rst .. warning:: - If you are not already using the |sysvm64-version| System VM template you will need to - upgrade your System VM template prior to performing the upgrade of the + If you are not already using the |sysvm64-version| System VM Template you will need to + upgrade your System VM Template prior to performing the upgrade of the CloudStack packages. .. include:: _sysvm_templates.rst @@ -98,8 +98,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p -R cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p -R cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu414: @@ -230,7 +230,7 @@ Hypervisor: VMware built using "noredist". Refer to :ref:`building-noredist`. -No additional steps are requried for the VMware Hypervisor for this upgrade. +No additional steps are required for the VMware Hypervisor for this upgrade. .. _kvm414: @@ -277,7 +277,6 @@ For KVM hosts, upgrade the ``cloudstack-agent`` package .. parsed-literal:: $ sudo yum install -y epel-release - $ sudo yum install -y python36-libvirt $ sudo yum upgrade cloudstack-agent #. Restart the agent: @@ -303,7 +302,5 @@ Restart management services $ sudo service cloudstack-usage start -System-VMs and Virtual-Routers ------------------------------- .. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.16.rst b/source/upgrading/upgrade/upgrade-4.16.rst new file mode 100644 index 0000000000..0ee69601a7 --- /dev/null +++ b/source/upgrading/upgrade/upgrade-4.16.rst @@ -0,0 +1,306 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + +.. |version_to_upgrade| replace:: 4.16.x + +Upgrade Instruction from |version_to_upgrade| +============================================= + + +This section will show you how to upgrade from CloudStack |version_to_upgrade| to latest +CloudStack |release|. + +Any steps that are hypervisor-specific will be called out with a note. + +We recommend reading through this section once or twice before beginning +your upgrade procedure, and working through it on a test system before +working on a production system. + +.. note:: + The following upgrade instructions should be performed regardless of + hypervisor type. + +Overview of Upgrade Steps: +---------------------------- + +#. Check any customisations and integrations +#. Upload the |sysvm64-version| System VM Template if not already using it. +#. Stop all running management servers +#. Backup CloudStack database (MySQL) +#. Upgrade 1st CloudStack management server +#. Update hypervisors specific dependencies +#. Restart 1st management server +#. Check that your upgraded environment works as expected +#. Upgrade and restart the remaining management servers + + +.. include:: _customisation_warnings.rst + +.. warning:: + If you are not already using the |sysvm64-version| System VM Template you will need to + upgrade your System VM Template prior to performing the upgrade of the + CloudStack packages. + +.. include:: _sysvm_templates.rst + + +Packages repository +------------------- + +Most users of CloudStack manage the installation and upgrades of +CloudStack with one of Linux's predominant package systems, RPM or +APT. This guide assumes you'll be using RPM and Yum (for Red Hat +Enterprise Linux or CentOS), or APT and Debian packages (for Ubuntu). + +Create RPM or Debian packages (as appropriate) and a repository from +the |release| source, or check the Apache CloudStack downloads page at +http://cloudstack.apache.org/downloads.html +for package repositories supplied by community members. You will need +them for :ref:`ubuntu414` or :ref:`kvm414` hosts upgrade. + +Instructions for creating packages from the CloudStack source are in the +`CloudStack Installation Guide`_. + +Database Preparation +-------------------- + +Backup current database + +#. Stop your management server or servers. Run this on all management + server hosts: + + .. parsed-literal:: + + $ sudo service cloudstack-management stop + +#. If you are running a usage server or usage servers, stop those as well: + + .. parsed-literal:: + + $ sudo service cloudstack-usage stop + +#. Make a backup of your MySQL database. If you run into any issues or + need to roll back the upgrade, this will assist in debugging or + restoring your existing environment. You'll be prompted for your + password. + + .. parsed-literal:: + + $ mysqldump -u root -p -R cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) + + +.. _ubuntu414: +.. _apt-repo414: + +Management Server +----------------- + +Ubuntu +###### + +If you are using Ubuntu, follow this procedure to upgrade your packages. If +not, skip to step :ref:`rhel414`. + +.. note:: + **Community Packages:** This section assumes you're using the community + supplied packages for CloudStack. If you've created your own packages and + APT repository, substitute your own URL for the ones used in these examples. + +The first order of business will be to change the sources list for +each system with CloudStack packages. This means all management +servers, and any hosts that have the KVM agent (no changes should +be necessary for hosts that are running VMware or Xen.) + +Edit your ``/etc/apt/sources.list.d/cloudstack.list`` file on +any systems that have CloudStack packages installed to points to version |version| + +This file should have one line, which contains: + +.. parsed-literal:: + + deb http://download.cloudstack.org/ubuntu bionic |version| + +Setup the public key for the above repository: + +.. parsed-literal:: + + wget -qO - http://download.cloudstack.org/release.asc | sudo apt-key add - + +#. Now update your apt package list: + + .. parsed-literal:: + + $ sudo apt-get update + +#. Now that you have the repository configured, it's time to upgrade + the ``cloudstack-management`` package. + + .. parsed-literal:: + + $ sudo apt-get upgrade cloudstack-management + +#. If you use CloudStack usage server + + .. parsed-literal:: + + $ sudo apt-get upgrade cloudstack-usage + + +.. _rhel414: +.. _rpm-repo414: + +CentOS/RHEL +############## + +If you are using CentOS or RHEL, follow this procedure to upgrade your +packages. If not, skip to hypervisors section :ref:`upg_hyp_414`. + +.. note:: + **Community Packages:** This section assumes you're using the community + supplied packages for CloudStack. If you've created your own packages and + yum repository, substitute your own URL for the ones used in these examples. + +The first order of business will be to change the yum repository +for each system with CloudStack packages. This means all +management servers, and any hosts that have the KVM agent (no changes +should be necessary for hosts that are running VMware or Xen.) + +Change your ``/etc/yum.repos.d/cloudstack.repo`` file on +any systems that have CloudStack packages installed to points to version |version|. + +This file should have content similar to the following: + +.. parsed-literal:: + + [apache-cloudstack] + name=Apache CloudStack + baseurl=http://download.cloudstack.org/centos/$releasever/|version|/ + enabled=1 + gpgcheck=0 + +Setup the GPG public key if you wish to enable ``gpgcheck=1``: + +.. parsed-literal:: + + rpm --import http://download.cloudstack.org/RPM-GPG-KEY + +#. Now that you have the repository configured, it's time to upgrade the + ``cloudstack-management``. + + .. parsed-literal:: + + $ sudo yum upgrade cloudstack-management + +#. If you use CloudStack usage server + + .. parsed-literal:: + + $ sudo yum upgrade cloudstack-usage + +.. _upg_hyp_414: + +Upgrade Hypervisors +------------------- + +Hypervisor: XenServer +##################### + + +No additional steps are required for XenServer Hypervisor for this upgrade. + + +Hypervisor: VMware +################### + +.. warning:: + For VMware hypervisor, CloudStack management server packages must be + built using "noredist". Refer to :ref:`building-noredist`. + + +No additional steps are required for the VMware Hypervisor for this upgrade. + + +.. _kvm414: + +Hypervisor: KVM +################# + +KVM on Ubuntu +"""""""""""""" + +(KVM only) Additional steps are required for each KVM host. These +steps will not affect running guests in the cloud. These steps are +required only for clouds using KVM as hosts and only on the KVM +hosts. + +#. Configure the :ref:`APT repo ` as detailed above. + +#. Stop the running agent. + + .. parsed-literal:: + + $ sudo service cloudstack-agent stop + +#. Update the agent software. + + .. parsed-literal:: + + $ sudo apt-get upgrade cloudstack-agent + +#. Start the agent. + + .. parsed-literal:: + + $ sudo service cloudstack-agent start + + +KVM on CentOS/RHEL +""""""""""""""""""" + +For KVM hosts, upgrade the ``cloudstack-agent`` package + +#. Configure the :ref:`rpm-repo414` as detailed above. + + .. parsed-literal:: + + $ sudo yum install -y epel-release + $ sudo yum upgrade cloudstack-agent + +#. Restart the agent: + + .. parsed-literal:: + + $ sudo service cloudstack-agent stop + $ sudo service cloudstack-agent start + + +Restart management services +--------------------------- + +#. Now it's time to start the management server + + .. parsed-literal:: + + $ sudo service cloudstack-management start + +#. If you use it, start the usage server + + .. parsed-literal:: + + $ sudo service cloudstack-usage start + + +.. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.17.rst b/source/upgrading/upgrade/upgrade-4.17.rst new file mode 100644 index 0000000000..bb3726fcb6 --- /dev/null +++ b/source/upgrading/upgrade/upgrade-4.17.rst @@ -0,0 +1,301 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + +.. |version_to_upgrade| replace:: 4.17.x + +Upgrade Instruction from |version_to_upgrade| +============================================= + + +This section will show you how to upgrade from CloudStack |version_to_upgrade| to latest +CloudStack |release|. + +Any steps that are hypervisor-specific will be called out with a note. + +We recommend reading through this section once or twice before beginning +your upgrade procedure, and working through it on a test system before +working on a production system. + +.. note:: + The following upgrade instructions should be performed regardless of + hypervisor type. + +Overview of Upgrade Steps: +---------------------------- + +#. Check any customisations and integrations +#. Upload the |sysvm64-version| System VM Template if not already using it. +#. Stop all running management servers +#. Backup CloudStack database (MySQL) +#. Upgrade 1st CloudStack management server +#. Update hypervisors specific dependencies +#. Restart 1st management server +#. Check that your upgraded environment works as expected +#. Upgrade and restart the remaining management servers + + +.. include:: _customisation_warnings.rst + +.. include:: _sysvm_templates.rst + + +Packages repository +------------------- + +Most users of CloudStack manage the installation and upgrades of +CloudStack with one of Linux's predominant package systems, RPM or +APT. This guide assumes you'll be using RPM and Yum (for Red Hat +Enterprise Linux or CentOS), or APT and Debian packages (for Ubuntu). + +Create RPM or Debian packages (as appropriate) and a repository from +the |release| source, or check the Apache CloudStack downloads page at +http://cloudstack.apache.org/downloads.html +for package repositories supplied by community members. You will need +them for :ref:`ubuntu414` or :ref:`kvm414` hosts upgrade. + +Instructions for creating packages from the CloudStack source are in the +`CloudStack Installation Guide`_. + +Database Preparation +-------------------- + +Backup current database + +#. Stop your management server or servers. Run this on all management + server hosts: + + .. parsed-literal:: + + $ sudo service cloudstack-management stop + +#. If you are running a usage server or usage servers, stop those as well: + + .. parsed-literal:: + + $ sudo service cloudstack-usage stop + +#. Make a backup of your MySQL database. If you run into any issues or + need to roll back the upgrade, this will assist in debugging or + restoring your existing environment. You'll be prompted for your + password. + + .. parsed-literal:: + + $ mysqldump -u root -p -R cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) + + +.. _ubuntu414: +.. _apt-repo414: + +Management Server +----------------- + +Ubuntu +###### + +If you are using Ubuntu, follow this procedure to upgrade your packages. If +not, skip to step :ref:`rhel414`. + +.. note:: + **Community Packages:** This section assumes you're using the community + supplied packages for CloudStack. If you've created your own packages and + APT repository, substitute your own URL for the ones used in these examples. + +The first order of business will be to change the sources list for +each system with CloudStack packages. This means all management +servers, and any hosts that have the KVM agent (no changes should +be necessary for hosts that are running VMware or Xen.) + +Edit your ``/etc/apt/sources.list.d/cloudstack.list`` file on +any systems that have CloudStack packages installed to points to version |version| + +This file should have one line, which contains: + +.. parsed-literal:: + + deb http://download.cloudstack.org/ubuntu bionic |version| + +Setup the public key for the above repository: + +.. parsed-literal:: + + wget -qO - http://download.cloudstack.org/release.asc | sudo apt-key add - + +#. Now update your apt package list: + + .. parsed-literal:: + + $ sudo apt-get update + +#. Now that you have the repository configured, it's time to upgrade + the ``cloudstack-management`` package. + + .. parsed-literal:: + + $ sudo apt-get upgrade cloudstack-management + +#. If you use CloudStack usage server + + .. parsed-literal:: + + $ sudo apt-get upgrade cloudstack-usage + + +.. _rhel414: +.. _rpm-repo414: + +CentOS/RHEL +############## + +If you are using CentOS or RHEL, follow this procedure to upgrade your +packages. If not, skip to hypervisors section :ref:`upg_hyp_414`. + +.. note:: + **Community Packages:** This section assumes you're using the community + supplied packages for CloudStack. If you've created your own packages and + yum repository, substitute your own URL for the ones used in these examples. + +The first order of business will be to change the yum repository +for each system with CloudStack packages. This means all +management servers, and any hosts that have the KVM agent (no changes +should be necessary for hosts that are running VMware or Xen.) + +Change your ``/etc/yum.repos.d/cloudstack.repo`` file on +any systems that have CloudStack packages installed to points to version |version|. + +This file should have content similar to the following: + +.. parsed-literal:: + + [apache-cloudstack] + name=Apache CloudStack + baseurl=http://download.cloudstack.org/centos/$releasever/|version|/ + enabled=1 + gpgcheck=0 + +Setup the GPG public key if you wish to enable ``gpgcheck=1``: + +.. parsed-literal:: + + rpm --import http://download.cloudstack.org/RPM-GPG-KEY + +#. Now that you have the repository configured, it's time to upgrade the + ``cloudstack-management``. + + .. parsed-literal:: + + $ sudo yum upgrade cloudstack-management + +#. If you use CloudStack usage server + + .. parsed-literal:: + + $ sudo yum upgrade cloudstack-usage + +.. _upg_hyp_414: + +Upgrade Hypervisors +------------------- + +Hypervisor: XenServer +##################### + + +No additional steps are required for XenServer Hypervisor for this upgrade. + + +Hypervisor: VMware +################### + +.. warning:: + For VMware hypervisor, CloudStack management server packages must be + built using "noredist". Refer to :ref:`building-noredist`. + + +No additional steps are required for the VMware Hypervisor for this upgrade. + + +.. _kvm414: + +Hypervisor: KVM +################# + +KVM on Ubuntu +"""""""""""""" + +(KVM only) Additional steps are required for each KVM host. These +steps will not affect running guests in the cloud. These steps are +required only for clouds using KVM as hosts and only on the KVM +hosts. + +#. Configure the :ref:`APT repo ` as detailed above. + +#. Stop the running agent. + + .. parsed-literal:: + + $ sudo service cloudstack-agent stop + +#. Update the agent software. + + .. parsed-literal:: + + $ sudo apt-get upgrade cloudstack-agent + +#. Start the agent. + + .. parsed-literal:: + + $ sudo service cloudstack-agent start + + +KVM on CentOS/RHEL +""""""""""""""""""" + +For KVM hosts, upgrade the ``cloudstack-agent`` package + +#. Configure the :ref:`rpm-repo414` as detailed above. + + .. parsed-literal:: + + $ sudo yum install -y epel-release + $ sudo yum upgrade cloudstack-agent + +#. Restart the agent: + + .. parsed-literal:: + + $ sudo service cloudstack-agent stop + $ sudo service cloudstack-agent start + + +Restart management services +--------------------------- + +#. Now it's time to start the management server + + .. parsed-literal:: + + $ sudo service cloudstack-management start + +#. If you use it, start the usage server + + .. parsed-literal:: + + $ sudo service cloudstack-usage start + + +.. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.18.rst b/source/upgrading/upgrade/upgrade-4.18.rst new file mode 100644 index 0000000000..655befe736 --- /dev/null +++ b/source/upgrading/upgrade/upgrade-4.18.rst @@ -0,0 +1,301 @@ +.. Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information# + regarding copyright ownership. The ASF licenses this file + to you 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. + +.. |version_to_upgrade| replace:: 4.18.x + +Upgrade Instruction from |version_to_upgrade| +============================================= + + +This section will show you how to upgrade from CloudStack |version_to_upgrade| to latest +CloudStack |release|. + +Any steps that are hypervisor-specific will be called out with a note. + +We recommend reading through this section once or twice before beginning +your upgrade procedure, and working through it on a test system before +working on a production system. + +.. note:: + The following upgrade instructions should be performed regardless of + hypervisor type. + +Overview of Upgrade Steps: +---------------------------- + +#. Check any customisations and integrations +#. Upload the |sysvm64-version| System VM template if not already using it. +#. Stop all running management servers +#. Backup CloudStack database (MySQL) +#. Upgrade 1st CloudStack management server +#. Update hypervisors specific dependencies +#. Restart 1st management server +#. Check that your upgraded environment works as expected +#. Upgrade and restart the remaining management servers + + +.. include:: _customisation_warnings.rst + +.. include:: _sysvm_templates.rst + + +Packages repository +------------------- + +Most users of CloudStack manage the installation and upgrades of +CloudStack with one of Linux's predominant package systems, RPM or +APT. This guide assumes you'll be using RPM and Yum (for Red Hat +Enterprise Linux or CentOS), or APT and Debian packages (for Ubuntu). + +Create RPM or Debian packages (as appropriate) and a repository from +the |release| source, or check the Apache CloudStack downloads page at +http://cloudstack.apache.org/downloads.html +for package repositories supplied by community members. You will need +them for :ref:`ubuntu414` or :ref:`kvm414` hosts upgrade. + +Instructions for creating packages from the CloudStack source are in the +`CloudStack Installation Guide`_. + +Database Preparation +-------------------- + +Backup current database + +#. Stop your management server or servers. Run this on all management + server hosts: + + .. parsed-literal:: + + $ sudo service cloudstack-management stop + +#. If you are running a usage server or usage servers, stop those as well: + + .. parsed-literal:: + + $ sudo service cloudstack-usage stop + +#. Make a backup of your MySQL database. If you run into any issues or + need to roll back the upgrade, this will assist in debugging or + restoring your existing environment. You'll be prompted for your + password. + + .. parsed-literal:: + + $ mysqldump -u root -p -R cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) + + +.. _ubuntu414: +.. _apt-repo414: + +Management Server +----------------- + +Ubuntu +###### + +If you are using Ubuntu, follow this procedure to upgrade your packages. If +not, skip to step :ref:`rhel414`. + +.. note:: + **Community Packages:** This section assumes you're using the community + supplied packages for CloudStack. If you've created your own packages and + APT repository, substitute your own URL for the ones used in these examples. + +The first order of business will be to change the sources list for +each system with CloudStack packages. This means all management +servers, and any hosts that have the KVM agent (no changes should +be necessary for hosts that are running VMware or Xen.) + +Edit your ``/etc/apt/sources.list.d/cloudstack.list`` file on +any systems that have CloudStack packages installed to points to version |version| + +This file should have one line, which contains: + +.. parsed-literal:: + + deb http://download.cloudstack.org/ubuntu bionic |version| + +Setup the public key for the above repository: + +.. parsed-literal:: + + wget -qO - http://download.cloudstack.org/release.asc | sudo apt-key add - + +#. Now update your apt package list: + + .. parsed-literal:: + + $ sudo apt-get update + +#. Now that you have the repository configured, it's time to upgrade + the ``cloudstack-management`` package. + + .. parsed-literal:: + + $ sudo apt-get upgrade cloudstack-management + +#. If you use CloudStack usage server + + .. parsed-literal:: + + $ sudo apt-get upgrade cloudstack-usage + + +.. _rhel414: +.. _rpm-repo414: + +CentOS/RHEL +############## + +If you are using CentOS or RHEL, follow this procedure to upgrade your +packages. If not, skip to hypervisors section :ref:`upg_hyp_414`. + +.. note:: + **Community Packages:** This section assumes you're using the community + supplied packages for CloudStack. If you've created your own packages and + yum repository, substitute your own URL for the ones used in these examples. + +The first order of business will be to change the yum repository +for each system with CloudStack packages. This means all +management servers, and any hosts that have the KVM agent (no changes +should be necessary for hosts that are running VMware or Xen.) + +Change your ``/etc/yum.repos.d/cloudstack.repo`` file on +any systems that have CloudStack packages installed to points to version |version|. + +This file should have content similar to the following: + +.. parsed-literal:: + + [apache-cloudstack] + name=Apache CloudStack + baseurl=http://download.cloudstack.org/centos/$releasever/|version|/ + enabled=1 + gpgcheck=0 + +Setup the GPG public key if you wish to enable ``gpgcheck=1``: + +.. parsed-literal:: + + rpm --import http://download.cloudstack.org/RPM-GPG-KEY + +#. Now that you have the repository configured, it's time to upgrade the + ``cloudstack-management``. + + .. parsed-literal:: + + $ sudo yum upgrade cloudstack-management + +#. If you use CloudStack usage server + + .. parsed-literal:: + + $ sudo yum upgrade cloudstack-usage + +.. _upg_hyp_414: + +Upgrade Hypervisors +------------------- + +Hypervisor: XenServer +##################### + + +No additional steps are required for XenServer Hypervisor for this upgrade. + + +Hypervisor: VMware +################### + +.. warning:: + For VMware hypervisor, CloudStack management server packages must be + built using "noredist". Refer to :ref:`building-noredist`. + + +No additional steps are requried for the VMware Hypervisor for this upgrade. + + +.. _kvm414: + +Hypervisor: KVM +################# + +KVM on Ubuntu +"""""""""""""" + +(KVM only) Additional steps are required for each KVM host. These +steps will not affect running guests in the cloud. These steps are +required only for clouds using KVM as hosts and only on the KVM +hosts. + +#. Configure the :ref:`APT repo ` as detailed above. + +#. Stop the running agent. + + .. parsed-literal:: + + $ sudo service cloudstack-agent stop + +#. Update the agent software. + + .. parsed-literal:: + + $ sudo apt-get upgrade cloudstack-agent + +#. Start the agent. + + .. parsed-literal:: + + $ sudo service cloudstack-agent start + + +KVM on CentOS/RHEL +""""""""""""""""""" + +For KVM hosts, upgrade the ``cloudstack-agent`` package + +#. Configure the :ref:`rpm-repo414` as detailed above. + + .. parsed-literal:: + + $ sudo yum install -y epel-release + $ sudo yum upgrade cloudstack-agent + +#. Restart the agent: + + .. parsed-literal:: + + $ sudo service cloudstack-agent stop + $ sudo service cloudstack-agent start + + +Restart management services +--------------------------- + +#. Now it's time to start the management server + + .. parsed-literal:: + + $ sudo service cloudstack-management start + +#. If you use it, start the usage server + + .. parsed-literal:: + + $ sudo service cloudstack-usage start + + +.. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.2.rst b/source/upgrading/upgrade/upgrade-4.2.rst index 596245faef..8256f3eabf 100644 --- a/source/upgrading/upgrade/upgrade-4.2.rst +++ b/source/upgrading/upgrade/upgrade-4.2.rst @@ -26,7 +26,7 @@ This section will guide you from CloudStack |version_to_upgrade| to CloudStack Upgrade Steps: -#. Install new System-VM templates +#. Install new System-VM Templates #. Backup CloudStack database (MySQL) @@ -84,8 +84,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu42: @@ -422,7 +422,4 @@ values for ``mem.overporvisioning.factor`` and ``cpu.overporvisioning.factor``. .. _upg-sysvm42: -System-VMs and Virtual-Routers ------------------------------- - .. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.3.rst b/source/upgrading/upgrade/upgrade-4.3.rst index 4c7e79afe1..6a42465c17 100644 --- a/source/upgrading/upgrade/upgrade-4.3.rst +++ b/source/upgrading/upgrade/upgrade-4.3.rst @@ -35,7 +35,7 @@ working on a production system. Upgrade Steps: #. Backup CloudStack database (MySQL) -#. Install new systemvm template +#. Install new systemvm Template #. Add package repository for MySQL connector #. Upgrade CloudStack management server(s) #. Update hypervisors specific dependencies @@ -88,8 +88,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu43: @@ -412,7 +412,4 @@ Restart management services .. _upg-sysvm43: -System-VMs and Virtual-Routers ------------------------------- - .. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.4.rst b/source/upgrading/upgrade/upgrade-4.4.rst index 0be2e863b3..66b628aec4 100644 --- a/source/upgrading/upgrade/upgrade-4.4.rst +++ b/source/upgrading/upgrade/upgrade-4.4.rst @@ -35,7 +35,7 @@ working on a production system. Upgrade Steps: #. Backup CloudStack database (MySQL) -#. Install new systemvm template +#. Install new systemvm Template #. Add package repository for MySQL connector #. Upgrade CloudStack management server(s) #. Update hypervisors specific dependencies @@ -88,8 +88,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu44: @@ -425,7 +425,4 @@ Restart management services .. _upg-sysvm44: -System-VMs and Virtual-Routers ------------------------------- - .. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.5.rst b/source/upgrading/upgrade/upgrade-4.5.rst index da6102b15f..34c6346869 100644 --- a/source/upgrading/upgrade/upgrade-4.5.rst +++ b/source/upgrading/upgrade/upgrade-4.5.rst @@ -35,7 +35,7 @@ working on a production system. Upgrade Steps: #. Check any customisations and integrations -#. Upload the |sysvm64-version| System VM template if not already using it. +#. Upload the |sysvm64-version| System VM Template if not already using it. #. Stop all running management servers #. Backup CloudStack database (MySQL) #. Add package repository for MySQL connector @@ -47,8 +47,8 @@ Upgrade Steps: .. include:: _customisation_warnings.rst .. warning:: - If you are not already using the |sysvm64-version| System VM template you will need to - upgrade your System VM template prior to performing the upgrade of the + If you are not already using the |sysvm64-version| System VM Template you will need to + upgrade your System VM Template prior to performing the upgrade of the CloudStack packages. .. include:: _sysvm_templates.rst @@ -97,8 +97,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu45: @@ -425,8 +425,6 @@ Restart management services .. _upg-sysvm45: -System-VMs and Virtual-Routers ------------------------------- .. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade-4.6.rst b/source/upgrading/upgrade/upgrade-4.6.rst index eca297b99d..b7f951f8e0 100644 --- a/source/upgrading/upgrade/upgrade-4.6.rst +++ b/source/upgrading/upgrade/upgrade-4.6.rst @@ -86,8 +86,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu46: diff --git a/source/upgrading/upgrade/upgrade-4.7.rst b/source/upgrading/upgrade/upgrade-4.7.rst index 6cec9d88d6..c108e4792c 100644 --- a/source/upgrading/upgrade/upgrade-4.7.rst +++ b/source/upgrading/upgrade/upgrade-4.7.rst @@ -85,8 +85,8 @@ Backup current database .. parsed-literal:: - $ mysqldump -u root -p cloud > cloud-backup_`date '+%Y-%m-%d'`.sql - $ mysqldump -u root -p cloud_usage > cloud_usage-backup_`date '+%Y-%m-%d'`.sql + $ mysqldump -u root -p cloud > cloud-backup_$(date +%Y-%m-%d-%H%M%S) + $ mysqldump -u root -p cloud_usage > cloud_usage-backup_$(date +%Y-%m-%d-%H%M%S) .. _ubuntu47: diff --git a/source/upgrading/upgrade/upgrade-4.9.rst b/source/upgrading/upgrade/upgrade-4.9.rst index eda121aceb..a0577cd291 100644 --- a/source/upgrading/upgrade/upgrade-4.9.rst +++ b/source/upgrading/upgrade/upgrade-4.9.rst @@ -36,12 +36,12 @@ Overview of Upgrade Steps: ---------------------------- #. Check any customisations and integrations -#. Upload the |sysvm64-version| System VM template if not already using it. +#. Upload the |sysvm64-version| System VM Template if not already using it. #. Stop all running management servers #. Backup CloudStack database (MySQL) #. Upgrade 1st CloudStack management server #. Update hypervisors specific dependencies -#. Restart 1st management sserver +#. Restart 1st management server #. Check that your upgraded environment works as expected #. Upgrade and restart the remaining management servers @@ -50,8 +50,8 @@ Overview of Upgrade Steps: .. include:: _customisation_warnings.rst .. warning:: - If you are not already using the |sysvm64-version| System VM template you will need to - upgrade your System VM template prior to performing the upgrade of the + If you are not already using the |sysvm64-version| System VM Template you will need to + upgrade your System VM Template prior to performing the upgrade of the CloudStack packages. .. include:: _sysvm_templates.rst @@ -384,7 +384,6 @@ For KVM hosts, upgrade the ``cloudstack-agent`` package .. parsed-literal:: $ sudo yum install -y epel-release - $ sudo yum install -y python36-libvirt $ sudo yum upgrade cloudstack-agent #. Verify that the file ``/etc/cloudstack/agent/environment.properties`` has a @@ -420,7 +419,4 @@ Restart management services $ sudo service cloudstack-usage start -System-VMs and Virtual-Routers ------------------------------- - .. include:: _sysvm_restart.rst diff --git a/source/upgrading/upgrade/upgrade_notes.rst b/source/upgrading/upgrade/upgrade_notes.rst index 55a628871f..b27186ae0f 100644 --- a/source/upgrading/upgrade/upgrade_notes.rst +++ b/source/upgrading/upgrade/upgrade_notes.rst @@ -38,7 +38,7 @@ Migrating to dynamic roles feature ---------------------------------- As of Apache CloudStack 4.9, dynamic roles feature can be enabled after an -upgrade. Dyanamic roles feature is enabled by default on new installations. +upgrade. Dynamic roles feature is enabled by default on new installations. Please read more about :ref:`using-dynamics-roles` feature and process of migrating to using this after an upgrade. @@ -65,13 +65,13 @@ A critical functionality issue came out with `CLOUDSTACK-6779 set global sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE, + "> ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"; + Query OK, 0 rows affected (0.00 sec) + + mysql> set sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE, + "> ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"; + Query OK, 0 rows affected (0.00 sec) \ No newline at end of file