# Getting Started With Tencent Cloud

Tencent Cloud is a secure, reliable and high-performance cloud compute service provided by Tencent. It is the 2nd largest Cloud Provider in China.

## Dependencies

The Tencent Cloud driver for Salt Cloud requires the `tencentcloud-sdk-python` package, which is available at PyPI:

https://pypi.org/project/tencentcloud-sdk-python/

This package can be installed using `pip` or `easy_install`:

    # pip install tencentcloud-sdk-python
    # easy_install tencentcloud-sdk-python

## Provider Configuration

To use this module, set up the cloud configuration at

  `/etc/salt/cloud.providers` or `/etc/salt/cloud.providers.d/*.conf`:

    my-tencentcloud-config:
      driver: tencentcloud
      # Tencent Cloud Secret Id
      id: AKIDA64pOio9BMemkApzevX0HS169S4b750A
      # Tencent Cloud Secret Key
      key: 8r2xmPn0C5FDvRAlmcJimiTZKVRsk260
      # Tencent Cloud Region
      location: ap-guangzhou

### Configuration Parameters

#### driver

Required. `tencentcloud` to use this module.

#### id

Required. Your Tencent Cloud secret id.

#### key

Required. Your Tencent Cloud secret key.

#### location

Optional. If this value is not specified, the default is `ap-guangzhou`. Available locations can be found using the `--list-locations` option:

    # salt-cloud --list-location my-tencentcloud-config

## Profile Configuration

Tencent Cloud profiles require a `provider`, `availability_zone`, `image` and `size`. Set up an initial profile at `/etc/salt/cloud.profiles` or `/etc/salt/cloud.profiles.d/*.conf`:

    tencentcloud-guangzhou-s1sm1:
        provider: my-tencentcloud-config
        availability_zone: ap-guangzhou-3
        image: img-31tjrtph
        size: S1.SMALL1
        allocate_public_ip: True
        internet_max_bandwidth_out: 1
        password: '153e41ec96140152'
        securitygroups:
            - sg-5e90804b

### Configuration Parameters

#### provider

Required. Name of entry in `salt/cloud.providers.d/???` file.

#### availability_zone

Required. The availability zone that the instance is located in. Available zones can be found using the `list_availability_zones` function:

    # salt-cloud -f list_availability_zones my-tencentcloud-config

#### image

Required. The image id to use for the instance. Available images can be found using the `--list-images` option:

    # salt-cloud --list-images my-tencentcloud-config

#### size

Required. Instance type for instance can be found using the `--list-sizes` option.

    # salt-cloud --list-sizes my-tencentcloud-config

#### securitygroups

Optional. A list of security group ids to associate with. Available security group ids can be found using the `list_securitygroups` function:

    # salt-cloud -f list_securitygroups my-tencentcloud-config

Multiple security groups are supported:

    tencentcloud-guangzhou-s1sm1:
        securitygroups:
            - sg-5e90804b
            - sg-8kpynf2t

#### hostname

Optional. The hostname of the instance.

#### instance_charge_type

Optional. The charge type of the instance. Valid values are `PREPAID`, `POSTPAID_BY_HOUR` and `SPOTPAID`. The default is `POSTPAID_BY_HOUR`.

#### instance_charge_type_prepaid_renew_flag

Optional. When enabled, the instance will be renew automatically when it reaches the end of the prepaid tenancy. Valid values are `NOTIFY_AND_AUTO_RENEW`, `NOTIFY_AND_MANUAL_RENEW` and `DISABLE_NOTIFY_AND_MANUAL_RENEW`.

Note

This value is only used when `instance_charge_type` is set to `PREPAID`.

#### instance_charge_type_prepaid_period

Optional. The tenancy time in months of the prepaid instance, Valid values are `1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 24, 36`.

Note

This value is only used when `instance_charge_type` is set to `PREPAID`.

#### allocate_public_ip

Optional. Associate a public ip address with an instance in a VPC or Classic. Boolean value, default is `false`.

#### internet_max_bandwidth_out

Optional. Maximum outgoing bandwidth to the public network, measured in Mbps (Mega bits per second). Value range: `[0, 100]`. If this value is not specified, the default is `0` Mbps.

#### internet_charge_type

Optional. Internet charge type of the instance. Valid values are `BANDWIDTH_PREPAID`, `TRAFFIC_POSTPAID_BY_HOUR`, `BANDWIDTH_POSTPAID_BY_HOUR` and `BANDWIDTH_PACKAGE`. The default is `TRAFFIC_POSTPAID_BY_HOUR`.

#### key_name

Optional. The key pair to use for the instance, for example `skey-16jig7tx`.

#### password

Optional. Login password for the instance.

#### private_ip

Optional. The private ip to be assigned to this instance, must be in the provided subnet and available.

#### project_id

Optional. The project this instance belongs to, defaults to `0`.

#### vpc_id

Optional. The id of a VPC network. If you want to create instances in a VPC network, this parameter must be set.

#### subnet_id

Optional. The id of a VPC subnet. If you want to create instances in VPC network, this parameter must be set.

#### system_disk_size

Optional. Size of the system disk. Value range: `[50, 1000]`, and unit is `GB`. Default is `50` GB.

#### system_disk_type

Optional. Type of the system disk. Valid values are `CLOUD_BASIC`, `CLOUD_SSD` and `CLOUD_PREMIUM`, default value is `CLOUD_BASIC`.

## Actions

The following actions are supported by the Tencent Cloud Salt Cloud driver.

### show_instance

This action is a thin wrapper around `--full-query`, which displays details on a single instance only. In an environment with several machines, this will save a user from having to sort through all instance data, just to examine a single instance.

    $ salt-cloud -a show_instance myinstance

### show_disk

Return disk details about a specific instance.

    $ salt-cloud -a show_disk myinstance

### destroy

Destroy a Tencent Cloud instance.

    $ salt-cloud -a destroy myinstance

### start

Start a Tencent Cloud instance.

    $ salt-cloud -a start myinstance

### stop

Stop a Tencent Cloud instance.

    $ salt-cloud -a stop myinstance

### reboot

Reboot a Tencent Cloud instance.

    $ salt-cloud -a reboot myinstance

## Functions

The following functions are currently supported by the Tencent Cloud Salt Cloud driver.

### list_securitygroups

Lists all Tencent Cloud security groups in current region.

    $ salt-cloud -f list_securitygroups my-tencentcloud-config

### list_availability_zones

Lists all Tencent Cloud availability zones in current region.

    $ salt-cloud -f list_availability_zones my-tencentcloud-config

### list_custom_images

Lists any custom images associated with the account. These images can be used to create a new instance.

    $ salt-cloud -f list_custom_images my-tencentcloud-config

### show_image

Return details about a specific image. This image can be used to create a new instance.

    $ salt-cloud -f show_image tencentcloud image=img-31tjrtph