GithubHelp home page GithubHelp logo

terraform-awesome's Introduction

Terraform Test Framework

Terraform Test Framework

Unified Test Framework to test Terraform codes and Terraform-provisioned infrastructures.

The new version, v0.2.0 (Freedom) is now available.

GitHub last commit GitHub license GitHub stars GitHub forks GitHub issues


Documentation: https://tf2project.io

Source Code: https://github.com/tf2project/tf2project

Changelog: https://tf2project.io/changelog.html


TF2 is a unified test framework to test Terraform codes and Terraform-provisioned infrastructures. With TF2, you can implement PaC(Policy as Code), Compliance tests and e2e(End to End) tests just in a unified framework.

Requirements

The TF2 core doesn't have any external or third-party requirements, and we will keep this approach as the main development policy to reduce the attack surface. This policy is created because you run the TF2 in your critical environments, CI/CD systems, and cloud/on-premises infrastructures, and we want to keep you completely secure. The TF2 core is just using standard and official Python libraries.

Installation

On production environment:

pip install tf2project

On development environment:

export ENV=development
pip install git+https://github.com/tf2project/tf2project

Docker Image

You can also use our official Docker image to run the framework. The image tf2project/tf2project consists of the latest version of Terraform and the TF2 framework itself.

It's a ready-to-go image to integrate the TF2 within CI/CD pipelines.

docker run tf2project/tf2project:latest

License

This project is licensed under the terms of the Apache 2.0 license.

Copyright © 2022 Saeid Bostandoust

terraform-awesome's People

Contributors

a-malex avatar amirhgh avatar baniasadi-m avatar ehsantux avatar hosein-yousefii avatar imohsen7 avatar m-javadheydarpour avatar madrika avatar majid1400 avatar mamirpanah avatar mehran-torkaman avatar mi-alkhamis avatar mrunix1998 avatar peymansafiri avatar rarmandeh avatar ravanbod avatar saeedhosseini21 avatar saeedya avatar sms-rk avatar ssbostan avatar tfeiz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

terraform-awesome's Issues

Add Kubernetes examples

Hi all contributors,

Here we have a big milestone to cover all Kubernetes resources.

Our primary work will be:

  • 001 create Pod resource easy-kubernetes-pod-simple
  • 002 create ConfigMap resource easy-kubernetes-config-map
  • 003 create Secret with Base64 data easy-kubernetes-secret
  • 004 create Secret with string data easy-kubernetes-secret-string-data
  • 005 create Service resource easy-kubernetes-service
  • 006 create Endpoints resource easy-kubernetes-endpoints
  • 007 create Namespace resource easy-kubernetes-namespace
  • 008 create LimitRange resource easy-kubernetes-limit-range
  • 009 create ServiceAccount resource easy-kubernetes-service-account
  • 010 create default ServiceAccount in specific namespace easy-namespace-default-service-account
  • 011 create ReplicationController resource easy-kubernetes-replication-controller
  • 012 create ResourceQuota resource easy-kubernetes-resource-quota
  • 013 create Deployment resource easy-kubernetes-deployment
  • 014 create StatefulSet resource easy-kubernetes-statefulset
  • 015 create DaemonSet resource easy-kubernetes-daemonset
  • 016 create StorageClass for NFS easy-kubernetes-storage-class-nfs
  • 017 create StorageClass for GlusterFS easy-kubernetes-storage-class-glusterfs
  • 018 create StorageClass for iSCSI easy-kubernetes-storage-class-iscsi
  • 019 create StorageClass for Longhorn easy-kubernetes-storage-class-longhorn
  • 020 create StorageClass for OpenEBS easy-kubernetes-storage-class-openebs
  • 021 create StorageClass for Cinder easy-kubernetes-storage-class-cinder
  • 022 create StorageClass for Ceph RBD easy-kubernetes-storage-class-ceph-rbd
  • 023 create StorageClass for LocalProvisioner easy-kubernetes-storage-class-local-provisioner
  • 024 create StorageClass for AWS EBS easy-kubernetes-storage-class-aws-ebs
  • 025 create StorageClass for Azure Disk easy-kubernetes-storage-class-azure-disk
  • 026 create StorageClass for CephFS easy-kubernetes-storage-class-cephfs
  • 027 create StorageClass for GCE PersistentDisk easy-kubernetes-storage-class-gce-persistent-disk
  • 028 create StorageClass for vSphere Volume easy-kubernetes-storage-class-vsphere-volume
  • 029 create PersistentVolume for NFS easy-kubernetes-persistent-volume-nfs
  • 030 create PersistentVolume for GlusterFS easy-kubernetes-persistent-volume-glusterfs
  • 031 create PersistentVolume for iSCSI easy-kubernetes-persistent-volume-iscsi
  • 032 create PersistentVolume for Cinder easy-kubernetes-persistent-volume-cinder
  • 033 create PersistentVolume for Ceph RBD easy-kubernetes-persistent-volume-ceph-rbd
  • 034 create PersistentVolume for AWS EBS easy-kubernetes-persistent-volume-aws-ebs
  • 035 create PersistentVolume for Azure Disk easy-kubernetes-persistent-volume-azure-disk
  • 036 create PersistentVolume for CephFS easy-kubernetes-persistent-volume-cephfs
  • 037 create PersistentVolume for GCE PersistentDisk easy-kubernetes-persistent-volume-gce-persistent-disk
  • 038 create PersistentVolume for vSphere Volume easy-kubernetes-persistent-volume-vsphere-volume
  • 039 create PersistentVolume for HostPath easy-kubernetes-persistent-volume-hostpath
  • 040 create HorizontalPodAutoscaler v1 easy-kubernetes-horizontal-pod-autoscaler-v1
  • 041 create HorizontalPodAutoscaler v2 easy-kubernetes-horizontal-pod-autoscaler-v2
  • 042 create Job resource easy-kubernetes-job
  • 043 create CronJob resource easy-kubernetes-cron-job
  • 044 create CertificateSigningRequest easy-kubernetes-certificate-signing-request
  • 045 create Ingress resource easy-kubernetes-ingress
  • 046 create Ingress with HTTPS support easy-kubernetes-ingress-https-support
  • 047 create IngressClass resource easy-kubernetes-ingress-class
  • 048 create PDB resource easy-kubernetes-pod-distruption-budget
  • 049 create PSP resource easy-kubernetes-pod-security-policy
  • 050 create Role resource easy-kubernetes-role
  • 051 create RoleBinding resource easy-kubernetes-role-binding
  • 052 create ClusterRole resource easy-kubernetes-cluster-role
  • 053 create ClusterRoleBinding resource easy-kubernetes-cluster-role-binding
  • 054 create Pod with NFS volume easy-kubernetes-pod-nfs-volume
  • 055 create Pod with GlusterFS volume easy-kubernetes-pod-glusterfs-volume
  • 056 create Pod with Ceph RBD volume easy-kubernetes-pod-ceph-rbd-volume
  • 057 create Pod with CephFS volume easy-kubernetes-pod-cephfs-volume
  • 058 create Pod with iSCSI volume easy-kubernetes-pod-iscsi-volume
  • 059 create Pod with hostPath volume easy-kubernetes-pod-hostpath-volume
  • 060 create Pod with PersistentVolumeClaim volume mount easy-kubernetes-pod-persistent-volume-claim-mount
  • 061 create Pod with ConfigMap volume mount easy-kubernetes-pod-configmap-volume-mount
  • 062 create Pod with Secret volume mount easy-kubernetes-pod-secret-volume-mount
  • 063 create Pod and mount emptyDir volume easy-kubernetes-pod-emptydir-volume
  • 064 create Pod with projected volume mount easy-kubernetes-pod-projected-mount
  • 065 create Pod with nodeAffinity option easy-kubernetes-pod-node-affinity
  • 066 create Pod with podAffinity option easy-kubernetes-pod-pod-affinity
  • 067 create Pod with podAntiAffinity option easy-kubernetes-pod-pod-anti-affinity
  • 068 create Pod with custom DNS servers easy-kubernetes-pod-custom-dns-servers
  • 069 create Pod with private image and set imagePullSecrets moderate-kubernetes-pod-private-registry-pull-image
  • 070 create Pod with using initContainers easy-kubernetes-pod-init-containers
  • 071 create Pod and disable network, ipc and pid namespaces easy-kubernetes-pod-host-namespaces
  • 072 create Pod and add some hostAliases easy-kubernetes-pod-etc-hosts-aliases
  • 073 create Pod and add ephemeralContainers easy-kubernetes-pod-ephemeral-containers
  • 074 create Pod and set os and securityContext options easy-kubernetes-pod-security-context
  • 075 create Pod and mount custom ServiceAccount to it easy-kubernetes-pod-custom-service-account
  • 076 create Pod and add some tolerations easy-kubernetes-pod-tolerations
  • 077 create Pod and customize container command and args easy-kubernetes-pod-container-command-args-override
  • 078 create Pod map direct env variables to container easy-kubernetes-pod-container-direct-env-variables
  • 079 create Pod map env from configmap easy-kubernetes-pod-container-configmap-env-variables
  • 080 create Pod map env from secret easy-kubernetes-pod-container-secret-env-variables
  • 081 create Pod map env from pod fields easy-kubernetes-pod-container-pod-fields-env-variables
  • 082 create Pod map env from resource fields easy-kubernetes-pod-container-resource-fields-env-variables
  • 083 create Pod and specify container resources (RAM, CPU) easy-kubernetes-pod-container-limit-resource
  • 084 create Pod with container poststart handler easy-kubernetes-pod-container-poststart-lifecycle-handler
  • 085 create Pod with container prestop handler easy-kubernetes-pod-container-prestop-lifecycle-handler
  • 086 create Pod with container exec livenessProbe easy-kubernetes-pod-container-exec-liveness-probe
  • 087 create Pod with container httpGet livenessProbe easy-kubernetes-pod-container-httpget-liveness-probe
  • 088 create Pod with container tcpSocket livenessProbe easy-kubernetes-pod-container-tcpsocket-liveness-probe
  • 089 create Pod with container exec readinessProbe easy-kubernetes-pod-container-exec-readiness-probe
  • 090 create Pod with container httpGet readinessProbe easy-kubernetes-pod-container-httpget-readiness-probe
  • 091 create Pod with tcpSocket readinessProbe easy-kubernetes-pod-container-tcpsocket-readiness-probe
  • 092 create Pod with container exec startupProbe easy-kubernetes-pod-container-exec-startup-probe
  • 093 create Pod with container httpGet startupProbe easy-kubernetes-pod-container-httpget-startup-probe
  • 094 create Pod with container tcpSocket startupProbe easy-kubernetes-pod-container-tcpsocket-startup-probe
  • 095 create Pod and customize its security context easy-kubernetes-pod-container-security-context
  • 096 create Pod and config container ports easy-kubernetes-pod-container-ports-expose
  • 097 create Pod and open container stdin and allocate tty to it easy-kubernetes-pod-container-stdin-tty-mode
  • 098 create Pod and customize container working directory easy-kubernetes-pod-container-working-dir-change
  • 099 create Deployment with Recreate strategy easy-kubernetes-deployment-recreate-strategy
  • 100 create Deployment with custom rolling update strategy easy-kubernetes-rolling-update-strategy

Let's get started.

Thanks.

Add GitHub examples

Hi all contributors,

Thanks for your previous contributions, and in advance for your future ones.

We are going to implement GitHub-related resources with Terraform.

Here are the main tasks:

  • 01 add SSH key to the user account easy-github-user-add-ssh-key
  • 02 add GPG key to the user account easy-github-user-add-gpg-key
  • 03 create a new organization easy-github-organization-create-organization
  • 04 add a webhook to the organization easy-github-organization-add-webhook
  • 05 create new Git repository easy-github-repository-create-repository
  • 06 add a webhook to the repository easy-github-repository-add-webhook
  • 07 add new file to existing repository easy-github-repository-add-new-file
  • 08 create a new pull request for repository easy-github-repository-create-pull-request
  • 09 create a new branch in existing repository easy-github-repository-create-new-branch
  • 10 set the default branch of repository easy-github-repository-set-default-branch
  • 11 create a new issue in for the project easy-github-issue-create-new-issue
  • 12 create a new issue label easy-github-issue-create-issue-label

Thanks all.

Add TLS examples

Hi contributors,

We have a new milestone to develop some examples for the Terraform TLS provider.

The following tasks are our primary goals:

  • 01 create a simple RSA private key easy-simple-rsa-private-key
  • 02 create a simple ED25519 private key easy-simple-ed25519-private-key
  • 03 create a new RSA public/private keys for SSH use easy-ssh-rsa-algorithm
  • 04 create a new ED25519 public/private keys for SSH use easy-ssh-ed25519-algorithm
  • 05 create a new private key and a new CSR file easy-csr-with-new-private-key
  • 06 create a new CSR with an existing private key easy-csr-with-existing-private-key
  • 07 create a new self-signed certificate for website easy-website-https-self-signed-certificate
  • 08 create a new CA with both certificate and its private key easy-create-ca-certificate
  • 09 create a new certificate using CSR and CA files easy-sign-csr-certificate
  • 10 create a new certificate, add DNS name and IP address to its subject easy-dns-ip-subject-certificate

Please run terraform fmt before commit.

Please set the comment message like this: add example:tls easy-simple-rsa-private-key

Thanks.

Add Docker examples

Hi contributors,

We have to develop several examples for the Docker provider to complete this milestone.

Please comment on this issue and tell us which do you choose to work on it.

The following are our primary goals:

  • 01 pull an image and deploy a container easy-simple-image-container
  • 02 build image simple code easy-simple-build-image
  • 03 build image with some build args easy-build-image-build-args
  • 04 pull from private registry and deploy the container moderate-pull-private-image-container
  • 05 pull new layers if new version is available on the registry moderate-pull-new-image-layers-container
  • 06 create local volume easy-simple-volume-local
  • 07 create nfs volume moderate-volume-nfs-storage
  • 08 import an existing volume to terraform moderate-import-existing-volume
  • 09 install new docker plugin easy-install-docker-plugin
  • 10 import an existing plugin to terraform moderate-import-existing-docker-plugin
  • 11 create a new network with default driver easy-simple-network-default-driver
  • 12 create a new bridge network with custom IP address moderate-custom-network-bridge-driver
  • 13 import an existing network to terraform moderate-import-existing-network
  • 14 create a new container with limited CPU and RAM resources easy-container-limit-cpu-ram
  • 15 create a new container with some env variables from terraform variables easy-container-env-variables
  • 16 create a new container and upload data to it easy-container-upload-data
  • 17 create a new container and attach a custom network to it easy-container-custom-network
  • 18 create a new container and publish its ports easy-container-publish-ports
  • 19 create a new container and add some new kernel parameters easy-container-kernel-parameter
  • 20 create a new container and add some capabilities easy-container-linux-capabilities
  • 21 create a new container and mount some host directories to it easy-container-mount-host-dir
  • 22 create a new container and mount docker volume to it easy-container-mount-volume
  • 23 import an existing container to terraform moderate-import-existing-container
  • 24 create a new container with some ulimit options easy-container-ulimit-options
  • 25 create a new container with some labels easy-container-with-labels
  • 26 create a new container with some /etc/hosts entries easy-container-add-host
  • 27 create two containers and link them together easy-container-link-together
  • 28 create a new container with healthcheck easy-container-with-healthcheck
  • 29 create a new container in privileged mode easy-container-privileged-mode
  • 30 create a new container and customize its namespaces easy-container-custom-namespace
  • 31 create nginx container with all needed options and publish its port easy-nginx-simple-container
  • 32 create nginx container with all needed options, publish port and mount nginx root dir easy-nginx-with-root-dir
  • 33 create nginx container with self-signed SSL/TLS with terraform moderate-nginx-https-self-signed-certificate
  • 34 create nginx container with letsencrypt SSL/TLS with terraform moderate-nginx-https-letsencrypt-certificate
  • 35 create redis container with all needed options and tmpfs easy-redis-tmpfs-data
  • 36 create redis container with custom config file and publish its port easy-redis-config-mount
  • 37 create MySQL container with all need options and publish it easy-mysql-simple-container
  • 38 create MySQL container with some SQL file for first time initialization moderate-mysql-init-sql-data
  • 39 create MySQL and PhpMyAdmin containers and config them moderate-mysql-phpmyadmin-stack
  • 40 create wordpress stack with wordpress and MySQL and config them moderate-wordpress-stack-production

Feel free and add other docker related codes.

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.