Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yakdriver/basic-ami-pipeline
Test AMI pipeline
https://github.com/yakdriver/basic-ami-pipeline
Last synced: 11 days ago
JSON representation
Test AMI pipeline
- Host: GitHub
- URL: https://github.com/yakdriver/basic-ami-pipeline
- Owner: YakDriver
- License: mpl-2.0
- Created: 2020-03-02T18:00:41.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-03-02T19:01:10.000Z (over 4 years ago)
- Last Synced: 2024-10-05T22:21:13.279Z (about 1 month ago)
- Size: 7.81 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# basic-ami-pipeline
Test AMI pipeline## 1. Identify starting AMI (s-ami)
* Automatic lookup?
- Pro: Convenient
- Pro: Automatically up-to-date
- Con: Increased chanced of manual intervention to fix issues with new OS releases
* Manual lookup?
- Pro: Pipeline less likely to fail as time passes
- Con: Falls out of date without manual intervenion depending on OS
- Con: Inconvenient
* Potential solutions for automatic lookup
- AWS CLI
- Hashicorp Terraform## 2. Launch and mod EC2 based on s-ami
* Credentials
- Okta/STS
- Instance role
- Hardcoded
* Platform for launch and mod
- AWS CodeBuild
- Other CI (Travis, Azure Pipelines) - potential for timeout
* Tools for launch and mod
- Hashicorp Terraform
- AWS CloudFormation
* Modifications
- Launch EC2 instance
- Install patches
- Install IT agents
- Apply OS/disk/etc. configurations## 3. Create modified AMI (m-ami)
* Stop EC2
* Create AMI
- Hashicorp Packer
- Hashicorp Terraform
- AWS CLI## 4. Test m-ami
* Provide basic testing only if time runs short
* Launch EC2 instance from m-ami
* Run tests on instance## 5. Publish m-ami
* Extract info used in release (e.g., rpm list) to document
* Copy AMI to supported regions
* Share AMI to supported accounts
* Publish AMI release## 6. Cleanup
* Ensure AWS resources used in pipelines are deleted
* CloudBuild, Terraform, Packer should handle
* Consider error cases where orphan resources might remain