# cs_snapshot_policy – Manages volume snapshot policies on Apache CloudStack based clouds

- Synopsis
- Requirements
- Parameters
- Notes
- Examples
- Return Values
- Status

## Synopsis

- Create, update and delete volume snapshot policies.

## Requirements

The below requirements are needed on the host that executes this module.

- python >= 2.6
- cs >= 0.6.10

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
account string |  | Account the volume is related to.

api_http_method
string

Choices:
- get
- post

HTTP method used to query the API endpoint.
If not given, the `CLOUDSTACK_METHOD` env variable is considered.
As the last option, the value is taken from the ini config file, also see the notes.
Fallback value is `get` if not specified.

api_key string |  | API key of the CloudStack API. If not given, the `CLOUDSTACK_KEY` env variable is considered. As the last option, the value is taken from the ini config file, also see the notes.
api_region string | Default: "cloudstack" | Name of the ini section in the `cloustack.ini` file. If not given, the `CLOUDSTACK_REGION` env variable is considered.
api_secret string |  | Secret key of the CloudStack API. If not set, the `CLOUDSTACK_SECRET` env variable is considered. As the last option, the value is taken from the ini config file, also see the notes.
api_timeout integer |  | HTTP timeout in seconds. If not given, the `CLOUDSTACK_TIMEOUT` env variable is considered. As the last option, the value is taken from the ini config file, also see the notes. Fallback value is 10 seconds if not specified.
api_url string |  | URL of the CloudStack API e.g. https://cloud.example.com/client/api. If not given, the `CLOUDSTACK_ENDPOINT` env variable is considered. As the last option, the value is taken from the ini config file, also see the notes.
device_id integer |  | ID of the device on a VM the volume is attached to. This will only be considered if VM has multiple DATADISK volumes.
domain string |  | Domain the volume is related to.

interval_type
string

Choices:
- hourly
- daily ←
- weekly
- monthly

Interval of the snapshot.
aliases: interval

max_snaps integer | Default: 8 | Max number of snapshots. aliases: max
project string |  | Name of the project the volume is related to.
schedule string |  | Time the snapshot is scheduled. Required if state=present. Format for interval_type=HOURLY: `MM` Format for interval_type=DAILY: `MM:HH` Format for interval_type=WEEKLY: `MM:HH:DD (1-7`) Format for interval_type=MONTHLY: `MM:HH:DD (1-28`)

state
string

Choices:
- present ←
- absent

State of the snapshot policy.

time_zone string | Default: "UTC" | Specifies a timezone for this command. aliases: timezone
vm string |  | Name of the instance to select the volume from. Use volume_type if VM has a DATADISK and ROOT volume. In case of volume_type=DATADISK, additionally use device_id if VM has more than one DATADISK volume. Either volume or vm is required.
volume string |  | Name of the volume. Either volume or vm is required.

volume_type
string

Choices:
- DATADISK
- ROOT

Type of the volume.

vpc string |  | Name of the vpc the instance is deployed in.

## Notes

Note

- Ansible uses the `cs` library’s configuration method if credentials are not provided by the arguments `api_url`, `api_key`, `api_secret`. Configuration is read from several locations, in the following order. The `CLOUDSTACK_ENDPOINT`, `CLOUDSTACK_KEY`, `CLOUDSTACK_SECRET` and `CLOUDSTACK_METHOD`. `CLOUDSTACK_TIMEOUT` environment variables. A `CLOUDSTACK_CONFIG` environment variable pointing to an `.ini` file. A `cloudstack.ini` file in the current working directory. A `.cloudstack.ini` file in the users home directory. Optionally multiple credentials and endpoints can be specified using ini sections in `cloudstack.ini`. Use the argument `api_region` to select the section name, default section is `cloudstack`. See https://github.com/exoscale/cs for more information.
- A detailed guide about cloudstack modules can be found in the CloudStack Cloud Guide.
- This module supports check mode.

## Examples

    - name: ensure a snapshot policy daily at 1h00 UTC
      cs_snapshot_policy:
        volume: ROOT-478
        schedule: '00:1'
        max_snaps: 3
      delegate_to: localhost

    - name: ensure a snapshot policy daily at 1h00 UTC on the second DATADISK of VM web-01
      cs_snapshot_policy:
        vm: web-01
        volume_type: DATADISK
        device_id: 2
        schedule: '00:1'
        max_snaps: 3
      delegate_to: localhost

    - name: ensure a snapshot policy hourly at minute 5 UTC
      cs_snapshot_policy:
        volume: ROOT-478
        schedule: '5'
        interval_type: hourly
        max_snaps: 1
      delegate_to: localhost

    - name: ensure a snapshot policy weekly on Sunday at 05h00, TZ Europe/Zurich
      cs_snapshot_policy:
        volume: ROOT-478
        schedule: '00:5:1'
        interval_type: weekly
        max_snaps: 1
        time_zone: 'Europe/Zurich'
      delegate_to: localhost

    - name: ensure a snapshot policy is absent
      cs_snapshot_policy:
        volume: ROOT-478
        interval_type: hourly
        state: absent
      delegate_to: localhost

## Return Values

Common return values are documented here, the following are the fields unique to this module:

Key | Returned | Description
--- | --- | ---
account string | success | Account the volume is related to. Sample: example account
domain string | success | Domain the volume is related to. Sample: example domain
id string | success | UUID of the snapshot policy. Sample: a6f7a5fc-43f8-11e5-a151-feff819cdc9f
interval_type string | success | interval type of the snapshot policy. Sample: daily
max_snaps integer | success | maximum number of snapshots retained. Sample: 10
project string | success | Name of project the volume is related to. Sample: Production
schedule string | success | schedule of the snapshot policy.
time_zone string | success | the time zone of the snapshot policy. Sample: Etc/UTC
volume string | success | the volume of the snapshot policy. Sample: Etc/UTC
zone string | success | Name of zone the volume is related to. Sample: ch-gva-2

## Status

- This module is guaranteed to have backward compatible interface changes going forward. [stableinterface]
- This module is maintained by the Ansible Community. [community]

### Authors

- René Moser (@resmo)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.