{"id":15292063,"url":"https://github.com/wh1t3fox/tempor","last_synced_at":"2025-04-13T10:42:55.505Z","repository":{"id":52708542,"uuid":"316740039","full_name":"Wh1t3Fox/tempor","owner":"Wh1t3Fox","description":"Ephemeral Infrastructure for Dummies","archived":false,"fork":false,"pushed_at":"2025-04-03T15:37:54.000Z","size":4318,"stargazers_count":9,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-03T16:36:32.924Z","etag":null,"topics":["ansible","aws","azure","bug-bounty","digitalocean","gcp","hacking-tool","linode","pentesting","red-team","tempor","terraform","vps-setup","vultr"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Wh1t3Fox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"ko_fi":"Wh1t3Fox","custom":["https://www.buymeacoffee.com/wh1t3fox"]}},"created_at":"2020-11-28T13:28:56.000Z","updated_at":"2025-04-03T15:37:42.000Z","dependencies_parsed_at":"2024-11-15T03:51:42.326Z","dependency_job_id":"e676968e-a25d-4e7b-8779-9c50527db960","html_url":"https://github.com/Wh1t3Fox/tempor","commit_stats":{"total_commits":249,"total_committers":1,"mean_commits":249.0,"dds":0.0,"last_synced_commit":"f04c005060a037d85726ac0de7bafb4bbdda2470"},"previous_names":[],"tags_count":37,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wh1t3Fox%2Ftempor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wh1t3Fox%2Ftempor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wh1t3Fox%2Ftempor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Wh1t3Fox%2Ftempor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Wh1t3Fox","download_url":"https://codeload.github.com/Wh1t3Fox/tempor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248701975,"owners_count":21148111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","aws","azure","bug-bounty","digitalocean","gcp","hacking-tool","linode","pentesting","red-team","tempor","terraform","vps-setup","vultr"],"created_at":"2024-09-30T16:16:21.763Z","updated_at":"2025-04-13T10:42:55.491Z","avatar_url":"https://github.com/Wh1t3Fox.png","language":"Python","funding_links":["https://ko-fi.com/Wh1t3Fox","https://www.buymeacoffee.com/wh1t3fox"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"imgs/tempor_med-sm.png\" alt=\"tempor\" width=\"250px\" height=\"250px\"\u003e\u003c/a\u003e\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n[![Build Status](https://img.shields.io/travis/com/Wh1t3Fox/tempor?style=for-the-badge)](https://travis-ci.com/Wh1t3Fox/tempor)\n[![Coverage](https://img.shields.io/codecov/c/github/wh1t3fox/tempor?style=for-the-badge)](https://codecov.io/gh/Wh1t3Fox/tempor)\n[![Python Version](https://img.shields.io/pypi/pyversions/tempor?style=for-the-badge)](https://pypi.org/project/tempor)\n[![Pypi Version](https://img.shields.io/pypi/v/tempor?style=for-the-badge)](https://pypi.org/project/tempor)\n[![Pypi Downloads](https://img.shields.io/pypi/dm/tempor?style=for-the-badge)](https://pypi.org/project/tempor)\n[![Twitter](https://img.shields.io/twitter/follow/_wh1t3fox_?style=for-the-badge)](https://twitter.com/_wh1t3fox_)\n\n**tempor** is a tool used for creating ephemeral infrastructure in the cloud. tempor has the ability to create an arbitrary number of servers via Terraform, ideal for penetration testers and bug hunters.\n\nVPS configuration is performed via Ansible roles after creation. Currently the following roles are supported:\n * [dev-sec.os)hardening](https://github.com/dev-sec/ansible-collection-hardening)\n * [dev-sec.ssh_hardening](https://github.com/dev-sec/ansible-collection-hardening)\n * [geerlingguy.docker](https://github.com/geerlingguy/ansible-role-docker)\n * [geerlingguy.pip](https://github.com/geerlingguy/ansible-role-pip)\n   * docker\n   * hashcrack-jtr\n   * impacket\n * IPv4 and IPv6 iptables lockdown\n   * INPUT only allow SSH\n   * OUTUT only allow DNS, HTTP/S, DoT\n * More to come...\n\n\u003cp\u003e\nBare Setup:\n  \n  * IPv4 and IPV6 iptables lock down\n  * ssh_hardening\n  \n\u003c/p\u003e\n\n\u003cp\u003e\nMinimal Setup:\n\n  * Configuration files loaded\n  * IPv4 and IPV6 iptables lock down\n  * ssh_hardening\n\u003c/p\u003e\n\n\u003cp\u003e\nFull Setup:\n    \n  * Install packages\n  * Configuration files loaded\n  * IPv4 and IPV6 iptables lock down\n  * ssh_hardening\n  * os_hardening\n  * Install Docker\n  * Install pip\n\u003c/p\u003e\n\nCustom Ansible playbook supported with all 3 setups using `--custom` flag!\n\n\u003cp\u003e\nSupports most images on AWS, Azure, Digital Ocean, GCP, Linode, and Vultr!  \n\u003c/p\u003e\n  \n\u003cp\u003e\nAWS supports authenticated through ENV variables or API tokens in the config file.\n\u003c/p\u003e\n\n#### Total Setup Times\n```\n# bare setup\ntempor aws -s  10.54s user 1.15s system 26% cpu 44.542 total\n\n# minimal  setup\ntempor aws -s -m  37.36s user 4.22s system 18% cpu 3:42.71 total\n  \n# full setup\ntempor aws -s -f 96.83s user 15.69s system 22% cpu 8:20.32 total\n\n# teardown\ntempor --teardown rzcphs100 8.25s user 1.15s system 23% cpu 39.431 total\n\n```\n  \n### :moneybag: Referrals - Get Free Credit! :moneybag:\n\n[![DigitalOcean Referral Badge](https://web-platforms.sfo2.digitaloceanspaces.com/WWW/Badge%203.svg)](https://www.digitalocean.com/?refcode=01f2b1191a36\u0026utm_campaign=Referral_Invite\u0026utm_medium=Referral_Program\u0026utm_source=badge)\n\n[\u003cimg alt=\"Vultr\" src=\"https://www.vultr.com/media/logo_onwhite.svg\" height=\"65\"/\u003e](https://www.vultr.com/?ref=8742641)  \n[\u003cimg alt=\"Linode\" src=\"https://refermehappy.com/static/img/deals/300x150/linode.png\" height=\"65\" /\u003e](https://www.linode.com/?r=94d58b46cdd9ef8ee607abb44a87eb204fa05940)  \n\n\n###  :heavy_plus_sign: Install :heavy_plus_sign:\n```\npython3 -m pip install --user tempor\n```\n\n#### :wrench: Dependencies :wrench:\n- Python \u003e= 3.11\n- Windows - WSL only\n\n### :gear: Configuration :gear:\n```\n# ~/.config/tempor/config.yml\n\nproviders:\n  -\n    name: digitalocean\n    region: nyc1\n    image: ubuntu-20-04-x64\n    resources: s-1vcpu-1gb\n    api_token:\n  -\n    name: linode\n    region: us-east\n    image: linode/ubuntu20.04\n    resources: g6-standard-1\n    api_token:\n  -\n    name: vultr\n    region: ewr\n    image: 387\n    resources: vc2-1c-1gb\n    api_token:\n  -\n    name: aws\n    region: us-east-1\n    image: ami-04505e74c0741db8d\n    resources: t2.micro\n    api_token:\n      profile:    # Optional\n      access_key: # Optional\n      secret_key: # Optional\n  -\n    name: gcp\n    region: us-east1\n    zone: us-east1-b\n    image: ubuntu-os-cloud/ubuntu-1804-lts\n    resources: f1-micro\n    api_token:\n      auth_file:\n      project:\n  -\n    name: azure\n    region: westus2\n    image: Canonical/UbuntuServer/18_04-lts-gen2\n    resources: Standard_F2\n    api_token:\n      subscription_id:\n      client_id:\n      client_secret:\n      tenant_id:\n\nconfig:\n  none: true\n  bare: false\n  minimal: false\n  full: false\n  custom: /path/to/playbook.yml\n```\n\n### :interrobang: Usage :interrobang:\n```\n❯ tempor --help\nusage: tempor [-h] {digitalocean,linode,vultr,aws,gcp,azure} ...\n\npositional arguments:\n  {digitalocean,linode,vultr,aws,gcp,azure}\n\noptions:\n  -h, --help            show this help message and exit\n  -t TEARDOWN, --teardown TEARDOWN\n                        Name of VPS Image to Tear down\n  -u, --update          Check for Upates\n  --version             Print current version\n\n❯ tempor linode --help\n\nusage: tempor linode [-h] [--image image] [--region region] [-s] [-l] [-b] [-m] [--teardown]\n\noptions:\n  -h, --help            show this help message and exit\n  -c, --count           Number of images to create\n  --image image         Specify the OS Image\n  --region region       Specify the Region to Host the Image\n  --resources resource  Specify the hardware resources for the host image\n  -s, --setup           Create a VPS\n  -l, --list            List Available VPS'\n  -f, --full            Full Configuration with hardening\n  -m, --minimal         Minimal Configuration (just configs)\n  --custom              Specify Ansible playbook for custom configuration (Path to main.yml file)\n  --no-config           Do not run any configuration (except custom)\n\n          Regions\n┏━━━━━━━━━━━━━━┳━━━━━━━━━━┓\n┃ ID           ┃ Location ┃\n┡━━━━━━━━━━━━━━╇━━━━━━━━━━┩\n│ ap-west      │ in       │\n│ ca-central   │ ca       │\n│ ap-southeast │ au       │\n│ us-central   │ us       │\n│ us-west      │ us       │\n│ us-southeast │ us       │\n│ us-east      │ us       │\n│ eu-west      │ uk       │\n│ ap-south     │ sg       │\n│ eu-central   │ de       │\n│ ap-northeast │ jp       │\n└──────────────┴──────────┘\n                           Images x86-64\n┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n┃ ID                            ┃ Name                            ┃\n┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n│ linode/almalinux8             │ AlmaLinux 8                     │\n│ linode/alpine3.12             │ Alpine 3.12                     │\n│ linode/alpine3.13             │ Alpine 3.13                     │\n│ linode/alpine3.14             │ Alpine 3.14                     │\n│ linode/alpine3.15             │ Alpine 3.15                     │\n│ linode/arch                   │ Arch Linux                      │\n│ linode/centos7                │ CentOS 7                        │\n│ linode/centos-stream8         │ CentOS Stream 8                 │\n│ linode/centos-stream9         │ CentOS Stream 9                 │\n│ linode/debian10               │ Debian 10                       │\n│ linode/debian11               │ Debian 11                       │\n│ linode/debian9                │ Debian 9                        │\n│ linode/fedora34               │ Fedora 34                       │\n│ linode/fedora35               │ Fedora 35                       │\n│ linode/gentoo                 │ Gentoo                          │\n│ linode/debian11-kube-v1.20.15 │ Kubernetes 1.20.15 on Debian 11 │\n│ linode/debian9-kube-v1.20.7   │ Kubernetes 1.20.7 on Debian 9   │\n│ linode/debian9-kube-v1.21.1   │ Kubernetes 1.21.1 on Debian 9   │\n│ linode/debian11-kube-v1.21.12 │ Kubernetes 1.21.12 on Debian 11 │\n│ linode/debian11-kube-v1.21.9  │ Kubernetes 1.21.9 on Debian 11  │\n│ linode/debian9-kube-v1.22.2   │ Kubernetes 1.22.2 on Debian 9   │\n│ linode/debian11-kube-v1.22.6  │ Kubernetes 1.22.6 on Debian 11  │\n│ linode/debian11-kube-v1.22.9  │ Kubernetes 1.22.9 on Debian 11  │\n│ linode/debian11-kube-v1.23.4  │ Kubernetes 1.23.4 on Debian 11  │\n│ linode/debian11-kube-v1.23.6  │ Kubernetes 1.23.6 on Debian 11  │\n│ linode/opensuse15.3           │ openSUSE Leap 15.3              │\n│ linode/rocky8                 │ Rocky Linux 8                   │\n│ linode/slackware14.2          │ Slackware 14.2                  │\n│ linode/slackware15.0          │ Slackware 15.0                  │\n│ linode/ubuntu16.04lts         │ Ubuntu 16.04 LTS                │\n│ linode/ubuntu18.04            │ Ubuntu 18.04 LTS                │\n│ linode/ubuntu20.04            │ Ubuntu 20.04 LTS                │\n│ linode/ubuntu21.10            │ Ubuntu 21.10                    │\n│ linode/ubuntu22.04            │ Ubuntu 22.04 LTS                │\n│ linode/alpine3.11             │ Alpine 3.11                     │\n│ linode/centos8                │ CentOS 8                        │\n│ linode/fedora33               │ Fedora 33                       │\n│ linode/opensuse15.2           │ openSUSE Leap 15.2              │\n│ linode/slackware14.1          │ Slackware 14.1                  │\n│ linode/ubuntu21.04            │ Ubuntu 21.04                    │\n└───────────────────────────────┴─────────────────────────────────┘\n                         Hardware Resources\n┏━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n┃ ID               ┃ Price      ┃ Description                      ┃\n┡━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n│ g6-nanode-1      │ $0.0075/hr │ Nanode 1GB                       │\n│ g6-standard-1    │ $0.015/hr  │ Linode 2GB                       │\n│ g6-standard-2    │ $0.03/hr   │ Linode 4GB                       │\n│ g6-standard-4    │ $0.06/hr   │ Linode 8GB                       │\n│ g6-standard-6    │ $0.12/hr   │ Linode 16GB                      │\n│ g6-standard-8    │ $0.24/hr   │ Linode 32GB                      │\n│ g6-standard-16   │ $0.48/hr   │ Linode 64GB                      │\n│ g6-standard-20   │ $0.72/hr   │ Linode 96GB                      │\n│ g6-standard-24   │ $0.96/hr   │ Linode 128GB                     │\n│ g6-standard-32   │ $1.44/hr   │ Linode 192GB                     │\n│ g7-highmem-1     │ $0.09/hr   │ Linode 24GB                      │\n│ g7-highmem-2     │ $0.18/hr   │ Linode 48GB                      │\n│ g7-highmem-4     │ $0.36/hr   │ Linode 90GB                      │\n│ g7-highmem-8     │ $0.72/hr   │ Linode 150GB                     │\n│ g7-highmem-16    │ $1.44/hr   │ Linode 300GB                     │\n│ g6-dedicated-2   │ $0.045/hr  │ Dedicated 4GB                    │\n│ g6-dedicated-4   │ $0.09/hr   │ Dedicated 8GB                    │\n│ g6-dedicated-8   │ $0.18/hr   │ Dedicated 16GB                   │\n│ g6-dedicated-16  │ $0.36/hr   │ Dedicated 32GB                   │\n│ g6-dedicated-32  │ $0.72/hr   │ Dedicated 64GB                   │\n│ g6-dedicated-48  │ $1.08/hr   │ Dedicated 96GB                   │\n│ g6-dedicated-50  │ $1.44/hr   │ Dedicated 128GB                  │\n│ g6-dedicated-56  │ $2.88/hr   │ Dedicated 256GB                  │\n│ g6-dedicated-64  │ $5.76/hr   │ Dedicated 512GB                  │\n│ g1-gpu-rtx6000-1 │ $1.5/hr    │ Dedicated 32GB + RTX6000 GPU x1  │\n│ g1-gpu-rtx6000-2 │ $3.0/hr    │ Dedicated 64GB + RTX6000 GPU x2  │\n│ g1-gpu-rtx6000-3 │ $4.5/hr    │ Dedicated 96GB + RTX6000 GPU x3  │\n│ g1-gpu-rtx6000-4 │ $6.0/hr    │ Dedicated 128GB + RTX6000 GPU x4 │\n└──────────────────┴────────────┴──────────────────────────────────┘\n\n❯ tempor linode -b\nGenerating new key pair...Done.\nPreparing Configuration...Done.\nCreating VPS...Done.\nConfiguring SSH Keys...Done.\n\nVPS' now available!\n\nssh ljtilopnez100\n\n❯ tempor linode --list\n                                  Active VPS'\n┏━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n┃ VPS Name      ┃ IP Address    ┃ Region  ┃ Image              ┃ Hardware      ┃\n┡━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n│ ljtilopnez100 │ 66.228.46.192 │ us-east │ linode/ubuntu20.04 │ g6-standard-1 │\n└───────────────┴───────────────┴─────────┴────────────────────┴───────────────┘\n\n❯ tempor --teardown ljtilopnez100\nTearing down ljtilopnez100...Done.\n\n```\n\n\n\nInspired by [pry0cc/axiom](https://github.com/pry0cc/axiom).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwh1t3fox%2Ftempor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwh1t3fox%2Ftempor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwh1t3fox%2Ftempor/lists"}