# cs_vpc – Manages VPCs on Apache CloudStack based clouds

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

## Synopsis

- Create, update and delete VPCs.

## 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 VPC 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.
cidr string |  | CIDR of the VPC, e.g. 10.1.0.0/16 All VPC guest networks' CIDRs must be within this CIDR. Required on state=present.

clean_up
boolean
added in 2.5

Choices:
- no
- yes

Whether to redeploy a VPC router or not when state=restarted

display_text string |  | Display text of the VPC. If not set, name will be used for creating.
domain string |  | Domain the VPC is related to.
name string / required |  | Name of the VPC.
network_domain string |  | Network domain for the VPC. All networks inside the VPC will belong to this domain. Only considered while creating the VPC, can not be changed.

poll_async
boolean

Choices:
- no
- yes ←

Poll async jobs until job has finished.

project string |  | Name of the project the VPC is related to.

state
string

Choices:
- present ←
- absent
- stopped
- restarted

State of the VPC.
The state `present` creates a started VPC.
The state `stopped` is only considered while creating the VPC, added in version 2.6.

tags list |  | List of tags. Tags are a list of dictionaries having keys key and value. For deleting all tags, set an empty list e.g. tags: []. aliases: tag
vpc_offering string |  | Name of the VPC offering. If not set, default VPC offering is used.
zone string |  | Name of the zone. If not set, default zone is used.

## 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 VPC is present but not started after creating
      cs_vpc:
        name: my_vpc
        display_text: My example VPC
        cidr: 10.10.0.0/16
        state: stopped
      delegate_to: localhost

    - name: Ensure a VPC is present and started after creating
      cs_vpc:
        name: my_vpc
        display_text: My example VPC
        cidr: 10.10.0.0/16
      delegate_to: localhost

    - name: Ensure a VPC is absent
      cs_vpc:
        name: my_vpc
        state: absent
      delegate_to: localhost

    - name: Ensure a VPC is restarted with clean up
      cs_vpc:
        name: my_vpc
        clean_up: yes
        state: restarted
      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 VPC is related to. Sample: example account
cidr string | success | CIDR of the VPC. Sample: 10.10.0.0/16
display_text string | success | Display text of the VPC. Sample: My example VPC
distributed_vpc_router boolean | success | Whether the VPC uses distributed router or not. Sample: True
domain string | success | Domain the VPC is related to. Sample: example domain
id string | success | UUID of the VPC. Sample: 04589590-ac63-4ffc-93f5-b698b8ac38b6
name string | success | Name of the VPC. Sample: my_vpc
network_domain string | success | Network domain of the VPC. Sample: example.com
project string | success | Name of project the VPC is related to. Sample: Production
redundant_vpc_router boolean | success | Whether the VPC has redundant routers or not. Sample: True
region_level_vpc boolean | success | Whether the VPC is region level or not. Sample: True
restart_required boolean | success | Whether the VPC router needs a restart or not. Sample: True
state string | success | State of the VPC. Sample: Enabled
tags list | success | List of resource tags associated with the VPC. Sample: [ { "key": "foo", "value": "bar" } ]
zone string | success | Name of zone the VPC is in. 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.