A Python Demo
Project description
PieTerraform
This is a wrapper for terraform to facilitate python developer to call terraform. It is designed to invoke terraform commands in "Functional Chaining" style
Note: Only python>=3.7 is supported.
Features
- Builder pattern. One line code can call multiple terraform commands
- Terraform commands' arguments are encapsulated as functions so code completion supported
- No need to worry about the sequence of arguments
Usage
Make sure have terraform in $PATH
terraform version
Install
pip install pieterraform
Quick start
from pieterraform import Terraform
# suppose you have terraform files in ./tf
Terraform().workdir('./tf')
.init().run() # 'terraform init'
.plan().run() # 'terraform plan'
.apply().run() # 'terraform apply'
# suppose you have terraform files in ./tf/prod
Terraform().workdir('./tf')
.init().dir('prod').run()
.plan().dir('prod').run()
.apply().dir('prod').run()
# suppose you have terraform files in ./tf/prod
Terraform().workdir()
.init().dir('tf/prod').run()
.plan().dir('tf/prod').run()
.apply().dir('tf/prod').run()
Just ONE LINE code!
With Paramers
from pieterraform import Terraform
# suppose you have terraform files in ./tf
Terraform().workdir('./tf')
# 'terraform init -no-color -upgrade=false'
.init().no_upgrade().no_color().run()
# 'terraform plan -state mystate.json -no-color'
.plan().state_file('mystate.json').no_color().out('myplan').run()
# 'terraform apply myplan'
.apply().use_plan('myplan').run()
# 'terraform destroy -auto-approve -state mystate.json'
.destroy().auto_approve().state('mystate.json').run()
With Custome Log
By default it prints log in screen. But you can cusomize it to use any logger
import logging
from pieterraform import Terraform
# output log to file
logFormatter = logging.Formatter('%(asctime)s [%(levelname)-5.5s] %(message)s')
log_file = 'log.txt'
f_handler = logging.FileHandler(log_file)
f_handler.setFormatter(logFormatter)
f_handler.setLevel(logging.DEBUG)
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
logger.addHandler(f_handler)
# suppose you have terraform files in ./tf
Terraform(logger=logger) # this will output log to file 'log.txt'
.workdir('./tf')
.init().run()
.plan().run()
.apply().run()
Traditional calls rather than functions chain
from pieterraform import Terraform
tf = Terraform().workdir('./tf')
initer = tf.init()
initer.no_upgrade()
initer.no_color().run()
planer = tf.plan()
planer.state_file('mystate.json')
planer.no_color()
planer.out('myplan').run()
applyer = tf.apply()
applyer.use_plan('myplan')
applyer.run()
Check result
from pieterraform import Terraform
a_run = Terraform().workdir('./tf')
.init().run()
.plan().run()
.apply().run()
for r in a_run.results:
print(r.output)
print(r.command)
Source Code
This project is fully using docker as dev environment.
Prerequisition
- docker: ">= 17.06"
- docker-compose: ">= 1.26"
No python needed.
Build
make
Install to local
make install
Run test
make test
Distribution
make dist
Development
Start dev docker
make docker-dev
this will start a container named pieterraform-devenv
Use VSCode
Open your vscode, attach to above container to do remote development
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pieterraform-0.0.1a15.tar.gz.
File metadata
- Download URL: pieterraform-0.0.1a15.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d6f7870332c3f09682a2d7fa5f88fa69d989fb89d1a61dfc05565a23192197a
|
|
| MD5 |
cff886ac1d0a95afbbfda009926dcc3a
|
|
| BLAKE2b-256 |
19045c1d01d55cb2770d746c6af61eaca8b22cc66010667cd8614dc881af5ac3
|
File details
Details for the file pieterraform-0.0.1a15-py3-none-any.whl.
File metadata
- Download URL: pieterraform-0.0.1a15-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccf30ea85f07a71cb0fc969a0e897028e237c899135e09b60136bf8fc7d73b42
|
|
| MD5 |
6afc9fc79f969c22bb79bf7140690a9e
|
|
| BLAKE2b-256 |
2616f488c95e17ee6aeb0b36b0153cef91e9da5df5ef30ff51d84ad0e37207fd
|