{"id":44306737,"url":"https://github.com/mksha/proffer","last_synced_at":"2026-02-11T03:16:49.247Z","repository":{"id":40286653,"uuid":"258764386","full_name":"mksha/proffer","owner":"mksha","description":"Proffer is a cross-platform tool to distribute cloud images between diff accounts and regions.","archived":false,"fork":false,"pushed_at":"2023-02-25T06:02:16.000Z","size":4165,"stargazers_count":3,"open_issues_count":8,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-06-21T03:18:14.181Z","etag":null,"topics":["cloud-images","cloud-providers","cmdtool","golang","yaml-configuration"],"latest_commit_sha":null,"homepage":"https://mksha.github.io/proffer/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mksha.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-25T11:58:01.000Z","updated_at":"2023-09-27T16:03:05.000Z","dependencies_parsed_at":"2024-06-21T02:10:32.844Z","dependency_job_id":"51cd0e0c-43d2-4dcf-9730-a7d30768391d","html_url":"https://github.com/mksha/proffer","commit_stats":{"total_commits":143,"total_committers":3,"mean_commits":"47.666666666666664","dds":0.07692307692307687,"last_synced_commit":"d20d6d95be75ffad4bd3f10cad286af3b11650a1"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/mksha/proffer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mksha%2Fproffer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mksha%2Fproffer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mksha%2Fproffer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mksha%2Fproffer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mksha","download_url":"https://codeload.github.com/mksha/proffer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mksha%2Fproffer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29326097,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T02:08:56.257Z","status":"ssl_error","status_checked_at":"2026-02-11T02:08:51.338Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cloud-images","cloud-providers","cmdtool","golang","yaml-configuration"],"created_at":"2026-02-11T03:16:49.076Z","updated_at":"2026-02-11T03:16:49.232Z","avatar_url":"https://github.com/mksha.png","language":"Go","readme":"# Proffer\n\n[![release](https://img.shields.io/github/v/release/mohit-kumar-sharma/proffer?include_prereleases\u0026sort=semver)](https://github.com/mohit-kumar-sharma/proffer/releases)\n[![codecov](https://codecov.io/gh/mohit-kumar-sharma/proffer/branch/master/graph/badge.svg?token=YFU0AS3HEJ)](https://codecov.io/gh/mohit-kumar-sharma/proffer)\n![Tests](https://github.com/mohit-kumar-sharma/proffer/workflows/Tests/badge.svg)\n![License](https://img.shields.io/badge/license-Apache--2.0-brightgreen.svg)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white)](https://github.com/pre-commit/pre-commit)\n[![Go Report Card](https://goreportcard.com/badge/github.com/mohit-kumar-sharma/proffer)](https://goreportcard.com/report/github.com/mohit-kumar-sharma/proffer)\n\n## Introduction:\n\nProffer is a cross platform command line tool to copy and share the cloud images across multiple regions and accounts. It is a lightweight tool that can be used on any major platform.\n\n## Use Case:\n\nThere can be use-case where we are building cloud images and we don't want to distribute them until we are confident enough that the new image does not contains any vulnerabilities and it works as expected. So in those cases after confirming that we have a cloud image that can be consumed by different environments, we need some tool or custom scripts to copy and share these cloud images from CI account (source account) to target accounts (consumer accounts like, dev, pre-prod, and prod.).\n\nHaving custom scripts can be painful, because we need to maintain a separate set of things to just distribute the ami and its also not flexible and easy to use for everyone unless they know that process already. So to solve this problem, we have created a tool called `Proffer` that can solve these kinds of problem for any cloud provider. But currently it only support AWS, but support for other cloud providers can be added easily using resource plugin.\n\nSome features of proffer:\n\n* It uses a yml config file called proffer.yml, so its easy to define what we want.\n* It is very fast and easy to use.\n* In build bash and zsh completion.\n* In build validation for yml config file.\n* It allows to use dynamic and default variables in template file.\n* It has lots of advanced features, like copy the tags across regions and accounts, share different kins of ami permission for target accounts, adding extra tags.\n* It generates proffer inventory report on successful execution.\n\n## Supported Cloud Providers:\n\n* AWS\n* Azure(coming soon)\n\nSupport for the other cloud providers can be added via resource plugin.\n\n## How Proffer works:\n\nProffer command takes a template called `proffer.yml` written in yaml format and apply the resources defined in template. Each proffer template has a top-level section called `resources` that is list of proffer resources.\nEach resource then have their own properties like type, keys and etc. To find all available proffer resources, visit [Available Proffer Resources](resources/README.md) page.\n\nIn addition, proffer also allows us to use the dynamic and default variables defined at different places. To process dynamic variable's values in proffer template, we need to pass the variable file to proffer command using `--var-file` flag.\n\n![](images/proffer-workflow.png)\n\n## Quick Start:\n\nTo quickly start with proffer , you can follow the [quick-start-guide](quickstart-guide/main.md).\n\n## Resources Available In Proffer:\n\nResource is a component in proffer. Each resources is responsible to perform a particular set of operations. Proffer has different kinds of resources. For more details, check [Available Proffer Resources](resources/README.md).\n\n## Access Environment Variables:\n\nTo access the environment variables within proffer template , we can use below format:\n\n``` Yaml\nHome: {{ env \"HOME\" }}\n```\n\nIf we want to set default value of a environment variable if its not set then we can use below format:\n\n``` Yaml\nHome: {{ env \"HOME\" | default \"default home dir path\" }}\n```\n\n## Define dynamic variables in variables file and default variables in template file:\n\nProffer also allows us to define the dynamic variables in a separate variable file and use them in proffer\ntemplate file. Similarly define default variables and use them in template file. To resolve their values in template file we need to pass this variable file in proffer `validate` and `apply` commands using `--var-file` argument.\n\nFor more details take a look at [How to use variables in template file](quickstart-guide/variables/main.md)\n\n## Inventory Report:\n\nProffer generates an inventory report on the successful execution. This report contains all information about image\ndistribution like where is the source image located ,where are target images created and with which accounts and regions source image was shared.\n\nIf we want to change the name of the inventory file generated, we can use `--inventory` option in `proffer apply command` to pass the custom name for inventory being generated. By default report name is `inventory.yml`.\n\nInventory report sample can be found at [sample-inventory-report](output-samples/example-inventory.yml)\n\n## Command-line documentation:\n\nTo check what are the options are available in each proffer command and sub-command, visit [cli-doc](doc/proffer.md) page.\n\n## License:\n\nProffer is released under the Apache License, Version 2.0.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmksha%2Fproffer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmksha%2Fproffer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmksha%2Fproffer/lists"}