Skip to content

Commit 4f0873d

Browse files
committed
Merge branch 'main' into instanceLease
2 parents 06350e0 + e8b7bf7 commit 4f0873d

File tree

153 files changed

+3650
-4168
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

153 files changed

+3650
-4168
lines changed

.readthedocs.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
version: 2
22

3+
sphinx:
4+
configuration: source/conf.py
5+
36
build:
47
os: "ubuntu-22.04"
58
tools:

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ On your computer, follow these steps to setup a local repository for working on
9090
.. code:: bash
9191
9292
$ git clone https://github.com/YOUR_ACCOUNT/cloudstack-documentation.git
93-
$ cd cloudstack-docs-install
93+
$ cd cloudstack-documentation
9494
$ git remote add upstream https://github.com/apache/cloudstack-documentation.git
9595
$ git checkout main
9696
$ git fetch upstream

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ docutils==0.20.1
22
Sphinx==7.2.6
33
sphinx-rtd-theme==2.0.0
44
readthedocs-sphinx-ext==2.2.5
5-
Jinja2==3.1.3
5+
Jinja2==3.1.5

source/_global.rst

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,19 @@
2525

2626
.. Latest version systemvm template name
2727
28-
.. |sysvm64-version| replace:: 4.19.1
29-
.. |sysvm64-name-xen| replace:: systemvm-xenserver-4.19.1
30-
.. |sysvm64-name-kvm| replace:: systemvm-kvm-4.19.1
31-
.. |sysvm64-name-vmware| replace:: systemvm-vmware-4.19.1
32-
.. |sysvm64-name-hyperv| replace:: systemvm-hyperv-4.19.1
33-
.. |sysvm64-name-ovm| replace:: systemvm-ovm-4.19.1
28+
.. |sysvm64-version| replace:: 4.20.0
29+
.. |sysvm64-name-xen| replace:: systemvm-xenserver-4.20.0-x86_64
30+
.. |sysvm64-name-kvm| replace:: systemvm-kvm-4.20.0-x86_64
31+
.. |sysvm64-name-vmware| replace:: systemvm-vmware-4.20.0-x86_64
32+
.. |sysvm64-name-hyperv| replace:: systemvm-hyperv-4.20.0-x86_64
33+
.. |sysvm64-name-ovm| replace:: systemvm-ovm-4.20.0-x86_64
3434

3535
.. Latest version systemvm template URL
36-
.. |sysvm64-url-xen| replace:: http://download.cloudstack.org/systemvm/4.19/systemvmtemplate-4.19.1-xen.vhd.bz2
37-
.. |sysvm64-url-kvm| replace:: http://download.cloudstack.org/systemvm/4.19/systemvmtemplate-4.19.1-kvm.qcow2.bz2
38-
.. |sysvm64-url-vmware| replace:: http://download.cloudstack.org/systemvm/4.19/systemvmtemplate-4.19.1-vmware.ova
39-
.. |sysvm64-url-hyperv| replace:: http://download.cloudstack.org/systemvm/4.19/systemvmtemplate-4.19.1-hyperv.vhd.zip
40-
.. |sysvm64-url-ovm| replace:: http://download.cloudstack.org/systemvm/4.19/systemvmtemplate-4.19.1-ovm.raw.bz2
36+
.. |sysvm64-url-xen| replace:: http://download.cloudstack.org/systemvm/4.20/systemvmtemplate-4.20.0-x86_64-xen.vhd.bz2
37+
.. |sysvm64-url-kvm| replace:: http://download.cloudstack.org/systemvm/4.20/systemvmtemplate-4.20.0-x86_64-kvm.qcow2.bz2
38+
.. |sysvm64-url-vmware| replace:: http://download.cloudstack.org/systemvm/4.20/systemvmtemplate-4.20.0-x86_64-vmware.ova
39+
.. |sysvm64-url-hyperv| replace:: http://download.cloudstack.org/systemvm/4.20/systemvmtemplate-4.20.0-x86_64-hyperv.vhd.zip
40+
.. |sysvm64-url-ovm| replace:: http://download.cloudstack.org/systemvm/4.20/systemvmtemplate-4.20.0-x86_64-ovm.raw.bz2
4141

4242
.. Images
4343
35.7 KB
Loading
Loading

source/_static/images/add-bucket.png

3.61 KB
Loading
80.6 KB
Loading
58.6 KB
Loading
29.1 KB
Loading

source/_static/images/cks-addnode.png

51.8 KB
Loading
7.64 KB
Loading
124 KB
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
17.4 KB
Loading

source/adminguide/accounts.rst

Lines changed: 133 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -481,36 +481,74 @@ to be applied through the API call described above.
481481
482482
483483
In addition to those shown in the example script above, the following
484-
configuration items can be configured (the default values are for
485-
openldap)
484+
configuration items can be configured on a Global or on a per Domain level (the default values are for
485+
OpenLDAP)
486486

487-
- ``ldap.basedn``: Sets the basedn for LDAP. Ex: **OU=APAC,DC=company,DC=com**
488-
489-
- ``ldap.bind.principal``, ``ldap.bind.password``: DN and password for a User
490-
who can list all the Users in the above basedn. Ex:
491-
**CN=Administrator, OU=APAC, DC=company, DC=com**
487+
.. list-table:: LDAP Settings
488+
:header-rows: 1
492489

493-
- ``ldap.user.object``: object type of Users within LDAP. Defaults value is
494-
**user** for AD and **interorgperson** for openldap.
490+
* - Setting
491+
- OpenLDAP
492+
- Active Directory
493+
- Description
494+
* - ``ldap.basedn``
495+
- `Ex: OU=APAC, DC=company, DC=com`
496+
- `Ex: DC=company, DC=com`
497+
- Sets the basedn for LDAP.
498+
* - ``ldap.search.group.principle``
499+
- `Ex: CN=ACSGroup, DC=company, DC=com`
500+
- `Ex: CN=ACSGroup, CN=Users, DC=company, DC=com`
501+
- (optional) if set only Users from this group are listed.
502+
* - ``ldap.bind.principal``
503+
- `Ex: CN=ACSServiceAccount, OU=APAC, DC=company, DC=com`
504+
- `Ex: CN=ACSServiceAccount, CN=Users, DC=company, DC=com`
505+
- Service account that can list all the Users in the above basedn. Avoid using privileged account such as Administrator.
506+
* - ``ldap.bind.password``
507+
- `******************`
508+
- `******************`
509+
- Password for a DN User. Is entered in plain text but gets stored encrypted.
510+
* - ``ldap.user.object``
511+
- `interorgperson`
512+
- `user`
513+
- Object type of Users within LDAP.
514+
* - ``ldap.email.attribute``
515+
- `mail`
516+
- `mail`
517+
- Email attribute within ldap for a User.
518+
* - ``ldap.firstname.attribute``
519+
- `givenname`
520+
- `givenname`
521+
- firstname attribute within ldap for a User.
522+
* - ``ldap.lastname.attribute``
523+
- `sn`
524+
- `sn`
525+
- lastname attribute within ldap for a User.
526+
* - ``ldap.group.object``
527+
- `groupOfUniqueNames`
528+
- `groupOfUniqueNames`
529+
- Object type of groups within LDAP.
530+
* - ``ldap.group.user.uniquemember``
531+
- `uniquemember`
532+
- `uniquemember`
533+
- Attribute for uniquemembers within a group.
534+
535+
536+
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.
495537

496-
- ``ldap.email.attribute``: email attribute within ldap for a User. Default
497-
value for AD and openldap is **mail**.
538+
.. figure:: /_static/images/CloudStack-ldap-screen1.png
539+
:align: center
498540

499-
- ``ldap.firstname.attribute``: firstname attribute within ldap for a User.
500-
Default value for AD and openldap is **givenname**.
501541

502-
- ``ldap.lastname.attribute``: lastname attribute within ldap for a User.
503-
Default value for AD and openldap is **sn**.
542+
You could also use api commands:
543+
``listLdapUsers``, to list Users in LDAP that could or would be imported in CloudStack
544+
``ldapCreateAccount``, to manually create a User in a specific Account
545+
``importLdapUsers``, to batch import Users from LDAP
504546

505-
- ``ldap.username.attribute``: username attribute for a User within LDAP.
506-
Default value is **SAMAccountName** for AD and **uid** for openldap.
547+
Once LDAP is enabled, the Users will not be allowed to changed password
548+
directly in CloudStack.
507549

508550

509-
Restricting LDAP Users to a group:
510-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
511551

512-
- ``ldap.search.group.principle``: this is optional and if set only Users from
513-
this group are listed.
514552

515553

516554
LDAP SSL:
@@ -524,30 +562,6 @@ You will need to know the path to the keystore and the password.
524562
- ``ldap.truststore.password`` : truststore password
525563

526564

527-
LDAP groups:
528-
~~~~~~~~~~~~
529-
530-
- ``ldap.group.object``: object type of groups within LDAP. Default value is
531-
group for AD and **groupOfUniqueNames** for openldap.
532-
533-
- ``ldap.group.user.uniquemember``: attribute for uniquemembers within a group.
534-
Default value is **member** for AD and **uniquemember** for openldap.
535-
536-
Once configured, on Add Account page, you will see an "Add LDAP Account" button
537-
which opens a dialog and the selected Users can be imported.
538-
539-
.. figure:: /_static/images/CloudStack-ldap-screen1.png
540-
:align: center
541-
542-
543-
You could also use api commands:
544-
``listLdapUsers``, to list Users in LDAP that could or would be imported in CloudStack
545-
``ldapCreateAccount``, to manually create a User in a specific Account
546-
``importLdapUsers``, to batch import Users from LDAP
547-
548-
Once LDAP is enabled, the Users will not be allowed to changed password
549-
directly in CloudStack.
550-
551565
.. |button to dedicate a zone, pod,cluster, or host| image:: /_static/images/dedicate-resource-button.png
552566

553567
Using a SAML 2.0 Identity Provider for User Authentication
@@ -676,7 +690,7 @@ For GitHub, please follow the instructions mentioned here `"Setting up OAuth 2.0
676690
In any OAuth 2.0 configuration admin has to use the redirect URI "http://<management server IP>:<port>/#/verifyOauth"
677691

678692
.. Note:: [Google OAuth 2.0 redirect URI] :
679-
Google OAuth 2.0 configuration wont accept '#' in the URI, please use "http://<management server Domain>:<port>/?verifyOauth"
693+
Google OAuth 2.0 configuration won't accept '#' in the URI, please use "http://<management server Domain>:<port>/?verifyOauth"
680694
Google does not accept direct IP address in the redirect URI, it must be a domain. As a workaround one can add the management
681695
server IP to host table in the local system and assign a domain, something like "management.cloud". In that redirect URI looks like
682696
"http://management.cloud:8080/?verifyOauth"
@@ -884,3 +898,76 @@ password for a user:
884898

885899
.. figure:: /_static/images/reset-password.png
886900
:align: center
901+
902+
Using API Key and Secret Key based Authentication
903+
-------------------------------------------------
904+
Users can generate API key and Secret key to directly access CloudStack APIs.
905+
This authenctication method is used for programatically calling CloudStack APIs and thus helps in automation.
906+
The API key uniquely identifies the Account, while the Secret key is used to generate a secure singnature.
907+
When making an API call, the API key and signature are included along with the command and other parameters,
908+
and sent to the CloudStack API endpoint. For detailed information, refer to the CloudStack's Programmer Guide.
909+
910+
Disabling Api Key and Secret Key based Access
911+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
912+
Root Administrators may choose to Disable Api key based access for certain Users, Accounts or Domains.
913+
Or the Administrator may choose to Disable Api Key based access globally and allow only for certain users.
914+
This could be particularly useful in cases where external authorization mechanisms like LDAP, SAML or OAuth2 are used,
915+
as then Api key based authorization is the only means for automation.
916+
This gives control to the Admin over who is allowed to run automation.
917+
918+
Api key based access is enabled by default but it can be disabled (or enabled) at different granularities:
919+
920+
1. Users
921+
922+
Setting for a User can be changed through the Api Key Access field in the Edit User form, visible only to the Root Administrator.
923+
Three values are possible: Disable, Enable and Inherit. Inherit means that the User will inherit whatever value is set for the Account.
924+
925+
.. figure:: /_static/images/edit-user-api-key-access.png
926+
:align: center
927+
928+
Admins can also search for Users having the required Api key access value using the User list view search filter.
929+
930+
.. figure:: /_static/images/filter-user-api-key-access.png
931+
:align: center
932+
933+
2. Accounts
934+
935+
Similar to Users, Api Key Access field is present in the Edit Account Form and the Account list view search filter, only for the Root Administrator.
936+
If the value is set to Inherit, it means that Account will inherit whatever value is set for the Domain.
937+
938+
3. Domains
939+
940+
Api Key Access at Domain level is controlled by the Domain level setting "api.key.access". If the Domain level
941+
configuration is not set, then similar to other configurations it will consult the global value.
942+
943+
4. Global
944+
945+
The global value of the configuration setting "api.key.access" is set to 'True' by default. So Api Key Access at
946+
all levels is enabled by default. If the global value is changed to 'False' without setting any of the lower levels,
947+
then Api Key Access will be disabled for all Users.
948+
949+
Order of Precedence
950+
^^^^^^^^^^^^^^^^^^^
951+
The local value always takes precedence over the global value. So if Api key access is disabled for a User but
952+
enabled for an Account, the User authorisation will still fail. Only if the User's Api key access is set to
953+
'Inherit', the Account's Api Key Access value is considered.
954+
Similarly if Account's Api Key Access is set to 'Inherit', only then the Domain level setting is considered,
955+
And only if the Domain level configuration is not set, the Global configuration is considered.
956+
957+
Examples
958+
^^^^^^^^
959+
960+
#. Disallow Api key access for all Accounts and Users in a Domain.
961+
962+
#. Leave all User and Account level Api Key Access values to the default 'Inherit'.
963+
#. Set the Domain level setting "api.key.access" to False only for the required domain.
964+
965+
#. Disallow Api key access for some Users, but allowed globally.
966+
967+
#. Set the User level permission to ‘Disabled’ only for the required Users.
968+
#. All upper level permissions should either be Inherit or Enabled.
969+
970+
#. Allow Api key access to some Users, but disallowed globally.
971+
972+
#. Set User level permission to ‘Enabled’ only for the required Users.
973+
#. All upper level permissions should either be Inherit or Disabled.

source/adminguide/api.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,16 @@ the user data:
6464
#. Run the following command to find the virtual router.
6565

6666
.. code:: bash
67+
6768
# cat /var/lib/dhclient/dhclient-eth0.leases | grep dhcp-server-identifier | tail -1
69+
6870
#. Access user data by running the following command using the result of
6971
the above command
7072

7173
.. code:: bash
74+
7275
# curl http://10.1.1.1/latest/user-data
76+
7377
Meta Data can be accessed similarly, using a URL of the form
7478
http://10.1.1.1/latest/meta-data/{metadata type}. (For backwards
7579
compatibility, the previous URL http://10.1.1.1/latest/{metadata type}

source/adminguide/arch_types.rst

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
.. Licensed to the Apache Software Foundation (ASF) under one
2+
or more contributor license agreements. See the NOTICE file
3+
distributed with this work for additional information#
4+
regarding copyright ownership. The ASF licenses this file
5+
to you under the Apache License, Version 2.0 (the
6+
"License"); you may not use this file except in compliance
7+
with the License. You may obtain a copy of the License at
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
Unless required by applicable law or agreed to in writing,
10+
software distributed under the License is distributed on an
11+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
12+
KIND, either express or implied. See the License for the
13+
specific language governing permissions and limitations
14+
under the License.
15+
16+
17+
Hosts/Cluster Arch Types Allocation
18+
===================================
19+
20+
Since CloudStack 4.20.0, it is possible to add AMD 64 bits and ARM 64 bits clusters (and hosts). A single zone can contain clusters (and hosts) of different arch types (multi-arch zones).
21+
22+
When a multi-arch zone is selected for VM deployment, CloudStack allows the users to filter the templates/ISOs by their arch type.
23+
24+
|deploy-vm-arch-types.png|
25+
26+
Once a template/ISO is selected, only the clusters (and hosts) matching the arch type will be considered for the VM allocation
27+
28+
.. |deploy-vm-arch-types.png| image:: /_static/images/deploy-vm-arch-types.png
29+
:alt: Filtering templates and ISOs by arch types
30+

source/adminguide/backup_and_recovery.rst

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ The following providers are currently supported:
3131
- KVM with NAS B&R Plugin (4.20 onwards)
3232

3333
See the Veeam Backup and Recovery plugin documentation for plugin specific information.
34-
:ref:`Veeam Backup and Recovery Plugin`
34+
:ref:`Veeam Backup and Replication Plugin`
3535

3636
See the DELL EMC Networker Backup and Recovery plugin documentation for plugin specific information.
3737
:ref:`DELL EMC Networker Backup and Recovery Plugin`
@@ -92,7 +92,7 @@ Backup Offerings
9292
------------------
9393

9494
Admins can import an external provider's backup offerings using UI or API for a
95-
particular zone, as well as manage a backup offering's lifecyle. Admins can also
95+
particular zone, as well as manage a backup offering's lifecycle. Admins can also
9696
specify if a backup offering allows user-defined backup schedules and ad-hoc
9797
backups. Users can list and consume the imported backup offerings, only root admins can import or
9898
delete offerings.
@@ -144,12 +144,12 @@ icon.
144144

145145
|B&R-createBackup.png|
146146

147-
To setup a recurring backup schedule, navigate to the Instance and click on the 'Backup Schedule'
147+
To setup a recurring backup schedule, navigate to the Instance and click on the 'Configure Backup Schedule'
148148
icon.
149149

150150
|B&R-BackupSchedule.png|
151151

152-
Then set the time and frequency of the backups, click 'Configure' and then 'Close'
152+
Then set the Interval type, timezone, time of taking the backup and maximum numbers of backups to retain.
153153

154154
|B&R-BackupScheduleEntry.png|
155155

@@ -178,6 +178,21 @@ Supported APIs:
178178
- **restoreVolumeFromBackupAndAttachToVM**: restore and attach a backed-up volume (of an Instance backup) to a specified Instance.
179179

180180

181+
Configuring resource limits on Backups
182+
--------------------------------------
183+
Administrators can enforce limits on the maximum number of backups that can be taken and
184+
the total backup storage size that can be used at an account, domain and project level.
185+
Administrators can do this by going to the configure limits tab in accounts, domains and projects
186+
similar to when enforcing resource limits on volumes, primary storage usage etc.
187+
188+
Unlike other resources like volumes, backup limits take into account the physical used size
189+
and not the allocated size of the backup. This is because the backup once taken can never
190+
grow into the allocated size. At the time of backup creation, Cloudstack doesn't know the
191+
size of the backup that will be taken, so it uses the physical size of the volumes to be
192+
backed up from Volume Stats to calculate the backup size for checking resource limits.
193+
If Volume Stats are not present, then the virtual size of the volumes is used to calculate
194+
the backup size, although the actual backup size may be less than the size use to do resource limit check.
195+
181196
.. |B&R-assignOffering.png| image:: /_static/images/B&R-assignOffering.png
182197
:alt: Assigning an SLA/Policy to an Instance.
183198
:width: 400 px

0 commit comments

Comments
 (0)