diff --git a/doc/source/drivers/ipa.rst b/doc/source/drivers/ipa.rst index 7cbe842abd..aa5ecf7a0e 100644 --- a/doc/source/drivers/ipa.rst +++ b/doc/source/drivers/ipa.rst @@ -43,7 +43,64 @@ image to fit in the node's memory. .. todo: explain configuring swift for temporary URL's Requirements -~~~~~~~~~~~~ +------------ Using IPA requires it to be present and configured on the deploy ramdisk, see :ref:`BuildingDeployRamdisk` for details. + +Using proxies for image download in agent drivers +================================================= + +Overview +-------- + +IPA supports using proxies while downloading the user image. For example, this +could be used to speed up download by using caching proxy. + +Steps to enable proxies +----------------------- + +#. Configure the proxy server of your choice (for example + `Squid `_, + `Apache Traffic Server `_). + This will probably require you to configure the proxy server to cache the + content even if the requested URL contains a query, and to raise the maximum + cached file size as images can be pretty big. If you have HTTPS enabled in + swift (see `swift deployment guide `_), + it is possible to configure the proxy server to talk to swift via HTTPS + to download the image, store it in the cache unencrypted and return it to + the node via HTTPS again. Because the image will be stored unencrypted in + the cache, this approach is recommended for images that do not contain + sensitive information. Refer to your proxy server's documentation to + complete this step. + +#. Set ``[glance]swift_temp_url_cache_enabled`` in the ironic conductor config + file to ``True``. The conductor will reuse the cached swift temporary URLs + instead of generating new ones each time an image is requested, so that the + proxy server does not create new cache entries for the same image, based on + the query part of the URL (as it contains some query parameters that change + each time it is regenerated). + +#. Set ``[glance]swift_temp_url_expected_download_start_delay`` option in the + ironic conductor config file to the value appropriate for your hardware. + This is the delay (in seconds) from the time of the deploy request (when + the swift temporary URL is generated) to when the URL is used for the image + download. You can think of it as roughly the time needed for IPA ramdisk to + startup and begin download. This value is used to check if the swift + temporary URL duration is large enough to let the image download begin. Also + if temporary URL caching is enabled this will determine if a cached entry + will still be valid when the download starts. It is used only if + ``[glance]swift_temp_url_cache_enabled`` is ``True``. + +#. Increase ``[glance]swift_temp_url_duration`` option in the ironic conductor + config file, as only non-expired links to images will be returned from the + swift temporary URLs cache. This means that if + ``swift_temp_url_duration=1200`` then after 20 minutes a new image will be + cached by the proxy server as the query in its URL will change. The value of + this option must be greater than or equal to + ``[glance]swift_temp_url_expected_download_start_delay``. + +#. Add one or more of ``image_http_proxy``, ``image_https_proxy``, + ``image_no_proxy`` to driver_info properties in each node that will use the + proxy. Please refer to ``ironic driver-properties`` output of the + ``agent_*`` driver you're using for descriptions of these properties.