Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ellerbrock/alibaba-cloud-terraform-github-travis
:coffee: quickstart for alibaba cloud with terraform github and travis
https://github.com/ellerbrock/alibaba-cloud-terraform-github-travis
alibaba alibaba-cloud alibabacloud alicloud alicloud-terraform-provider docker infrastructure-as-code terraform travis travis-ci
Last synced: 8 days ago
JSON representation
:coffee: quickstart for alibaba cloud with terraform github and travis
- Host: GitHub
- URL: https://github.com/ellerbrock/alibaba-cloud-terraform-github-travis
- Owner: ellerbrock
- License: mit
- Created: 2018-01-12T04:17:31.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2018-01-13T12:18:43.000Z (about 7 years ago)
- Last Synced: 2024-11-27T15:41:47.704Z (2 months ago)
- Topics: alibaba, alibaba-cloud, alibabacloud, alicloud, alicloud-terraform-provider, docker, infrastructure-as-code, terraform, travis, travis-ci
- Language: HCL
- Size: 272 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
- awesome-alibaba-cloud - Infrastructure Automation Quickstart for Alibaba Cloud with Github, Travis and Terraform
README
![alibaba cloud terraform github travis](https://upload.wikimedia.org/wikipedia/commons/4/40/Alibaba-cloud-logo-grey-2-01.png)
# Alibaba Cloud Infrastructure as Code Quickstart [![Open Source Love](https://badges.frapsoft.com/os/v1/open-source.svg)](https://github.com/ellerbrock/open-source-badges/) [![Gitter Chat](https://badges.gitter.im/frapsoft/frapsoft.svg)](https://gitter.im/frapsoft/frapsoft/) [![MIT Licence](https://badges.frapsoft.com/os/mit/mit.svg?v=103)](https://opensource.org/licenses/mit-license.php)
## What you need
- [Github Account](https://github.com/join)
- [Travis Account](https://travis-ci.org/) for Continuous Integration and Delivery
- [Terraform](https://www.terraform.io/) installed for local testing## Remote Storage
A first draft from a working but not yet production ready version you can find here:
In this setup we could make a initial bootstraping of the account, setup a Consul Cluster and then import the Remote State to there, even with locking support.
## Configuration
### 1.) Activate Travis for the Repository
![](./img/travis-activate-repo.jpg)
### 2.) Go to Travis Repository Settings
![](./img/travis-settings.jpg)
Under General i have my Settings that:
- ON: Building only if .travis.yml is present
- ON: Build branch updates
- ON: Limit concurrent jobs? 1
- OFF: Build pull request updates### 3.) Add your Credentials to Environment Variables
![](./img/travis-env-vars.jpg)
The Terraform Alicloud Provider Plugin expect the Environment Variables named like these:
- `ALICLOUD_ACCESS_KEY="your-key-here"`
- `ALICLOUD_SECRET_KEY="your-secret-here"`
- `ALICLOUD_REGION="your-region"`Ensure to disable the `Display value in build log`
You can read in more detail about this [here](https://www.terraform.io/docs/providers/alicloud/index.html#argument-reference).
### 4.) Add `.travis.yml` to your Repo
For a clean and isolated work i choose the [Docker service](https://docs.travis-ci.com/user/docker/) for Travis CI.
We run `terraform` with the official lightweight Alpine Linux Image [hashicorp/terraform:light](https://hub.docker.com/r/hashicorp/terraform/) for the provisioning.Ensure to have all your commands which needs access to the encrypted environment variables from travis in the `before_script`, for whatever weird reason after you can't access them anymore e.g. via `script`. I hope this get's updated in the future.
```yml
sudo: requiredlanguage: bash
dist: trusty
group: deprecated-2017Q4
services:
- dockercache:
directories:
- ".terraform"env:
- TRAVIS_SECURE_ENV_VARS=truebefore_script:
- docker pull hashicorp/terraform:light
- docker run -e "ALICLOUD_ACCESS_KEY=${ALICLOUD_ACCESS_KEY}" -e "ALICLOUD_SECRET_KEY=${ALICLOUD_SECRET_KEY}" -e "ALICLOUD_REGION=${ALICLOUD_REGION}" -v $(pwd):/x/ -w /x/ hashicorp/terraform:light init
- docker run -e "ALICLOUD_ACCESS_KEY=${ALICLOUD_ACCESS_KEY}" -e "ALICLOUD_SECRET_KEY=${ALICLOUD_SECRET_KEY}" -e "ALICLOUD_REGION=${ALICLOUD_REGION}" -v $(pwd):/x/ -w /x/ hashicorp/terraform:light validate
- docker run -e "ALICLOUD_ACCESS_KEY=${ALICLOUD_ACCESS_KEY}" -e "ALICLOUD_SECRET_KEY=${ALICLOUD_SECRET_KEY}" -e "ALICLOUD_REGION=${ALICLOUD_REGION}" -v $(pwd):/x/ -w /x/ hashicorp/terraform:light plan
- docker run -e "ALICLOUD_ACCESS_KEY=${ALICLOUD_ACCESS_KEY}" -e "ALICLOUD_SECRET_KEY=${ALICLOUD_SECRET_KEY}" -e "ALICLOUD_REGION=${ALICLOUD_REGION}" -v $(pwd):/x/ -w /x/ hashicorp/terraform:light apply -auto-approvenotifications:
email:
on_success: never
on_failure: always
```### 5.) Add your Terraform Code
In this example i create for the test a VPC.
`main.tf`
```
# Terraform Provider Alicloud expects these Variables:
#
# ALICLOUD_ACCESS_KEY
# ALICLOUD_SECRET_KEY
# ALICLOUD_REGION
#
# Store them as environment variables in Travis for the Repository.provider "alicloud" {
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"
region = "${var.region}"
}resource "alicloud_vpc" "vpc" {
name = "${var.vpc_name}"
cidr_block = "${var.vpc_cidr_block}"
}
```
`variables.tf````
~/d/c/a/alibaba-cloud-terraform-github-travis ❯❯❯ cat variables.tf.old
variable "access_key" {
description = "aws access key"
default = ""
}variable "secret_key" {
description = "aws secret key"
default = ""
}variable "region" {
description = "default region"
default = "eu-central-1"
}variable "vpc_name" {
description = "vpc name"
default = "default"
}variable "vpc_cidr_block" {
description = "default vpc cidr"
default = "192.168.0.0/16"
}
```## Links
- [Terraform Alicloud Provider Docs](https://www.terraform.io/docs/providers/alicloud/index.html)
- [Terraform Registry for Alicloud](https://registry.terraform.io/browse?provider=alicloud)#### Alicloud Terraform Examples
-
-## Support
You can get direct support for my Open Source projects on Alibaba Cloud here
[![gitter](https://github.frapsoft.com/top/gitter-alibabacloudnews.jpg)](https://gitter.im/alibabacloudnews/Lobby)
## Try Alibaba Cloud
[Sign up](http://ow.ly/YKQe30hHgp8) today and get $300 valid for the first 60 days to try Alibaba Cloud.
## Contact
[![Github](https://github.frapsoft.com/social/github.png)](https://github.com/ellerbrock/)[![Docker](https://github.frapsoft.com/social/docker.png)](https://hub.docker.com/u/ellerbrock/)[![npm](https://github.frapsoft.com/social/npm.png)](https://www.npmjs.com/~ellerbrock)[![Twitter](https://github.frapsoft.com/social/twitter.png)](https://twitter.com/frapsoft/)[![Facebook](https://github.frapsoft.com/social/facebook.png)](https://www.facebook.com/frapsoft/)[![Google+](https://github.frapsoft.com/social/google-plus.png)](https://plus.google.com/116540931335841862774)[![Gitter](https://github.frapsoft.com/social/gitter.png)](https://gitter.im/frapsoft/frapsoft/)
## License
[![MIT license](https://badges.frapsoft.com/os/mit/mit-125x28.png?v=103)](https://opensource.org/licenses/mit-license.php)
This work by Maik Ellerbrock is licensed under a Creative Commons Attribution 4.0 International License and the underlying source code is licensed under the MIT license.