| name | Develop in Linux on AWS EC2 (Ephemeral, Persistent Home) | ||
|---|---|---|---|
| description | Get started with Linux development on AWS EC2. | ||
| tags |
|
||
| icon | /icon/aws.png |
This template gives developers ephemeral AWS instances. When a workspace is restarted, all data is lost except files in /home/coder/ which is persisted by a seperate EBS volume.
To add software (e.g. Java), you have a few options:
- Template authors can install software in the startup_script
- Template authors can build custom AMIs which include all packages. New template versions can reference the new AMI, even in build pipelines.
- Developers can add an executable
personalizescript in their home directory to install unique software.
This template assumes that coderd is run in an environment that is authenticated
with AWS. For example, run aws configure import to import credentials on the
system and user running coderd. For other ways to authenticate consult the
Terraform docs.
The following sample policy allows Coder to create EC2 instances and modify instances provisioned by Coder:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:GetDefaultCreditSpecification",
"ec2:DescribeIamInstanceProfileAssociations",
"ec2:DescribeTags",
"ec2:CreateTags",
"ec2:RunInstances",
"ec2:DescribeInstanceCreditSpecifications",
"ec2:DescribeImages",
"ec2:ModifyDefaultCreditSpecification",
"ec2:DescribeVolumes"
],
"Resource": "*"
},
{
"Sid": "CoderResources",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeInstanceAttribute",
"ec2:UnmonitorInstances",
"ec2:TerminateInstances",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:DeleteTags",
"ec2:MonitorInstances",
"ec2:CreateTags",
"ec2:RunInstances",
"ec2:ModifyInstanceAttribute",
"ec2:ModifyInstanceCreditSpecification"
],
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/Coder_Provisioned": "true"
}
}
}
]
}code-server is installed via the startup_script argument in the coder_agent
resource block. The coder_app resource is defined to access code-server through
the dashboard UI over localhost:13337.