feat: setup AWS infrastructure directory and checklist
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
# Syslog Solution LLC AWS Organization - Terraform
|
||||
|
||||
Infrastructure as Code (IaC) configuration for setting up AWS Organization structure for Syslog Solution LLC business.
|
||||
|
||||
## Overview
|
||||
|
||||
This Terraform configuration creates a complete AWS Organization structure with:
|
||||
- AWS Organization with all features enabled
|
||||
- Organizational Units (OUs) for Management, Security, Workloads, and Sandbox
|
||||
- Member accounts for Development and Staging environments
|
||||
- IAM users and groups with appropriate policies
|
||||
- Billing alerts and monitoring
|
||||
- Tagging and security best practices
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. **AWS Account**: Create a new AWS account with business email (`jerome@sysloggh.com`)
|
||||
2. **AWS CLI**: Install and configure AWS CLI
|
||||
3. **Terraform**: Install Terraform 1.0 or later
|
||||
4. **IAM User**: Create an IAM user with AdministratorAccess in the new account
|
||||
|
||||
## Setup Instructions
|
||||
|
||||
### Step 1: Configure AWS CLI
|
||||
|
||||
```bash
|
||||
# Configure AWS CLI with new business account
|
||||
aws configure --profile syslog-business
|
||||
|
||||
# Enter credentials from IAM user
|
||||
AWS Access Key ID: [YOUR_ACCESS_KEY]
|
||||
AWS Secret Access Key: [YOUR_SECRET_KEY]
|
||||
Default region name: us-east-1
|
||||
Default output format: json
|
||||
```
|
||||
|
||||
### Step 2: Initialize Terraform
|
||||
|
||||
```bash
|
||||
# Clone or copy this directory
|
||||
cd terraform-syslog-aws-org
|
||||
|
||||
# Initialize Terraform
|
||||
terraform init
|
||||
|
||||
# Copy example variables file
|
||||
cp terraform.tfvars.example terraform.tfvars
|
||||
|
||||
# Edit terraform.tfvars with your values
|
||||
nano terraform.tfvars
|
||||
```
|
||||
|
||||
### Step 3: Review Plan
|
||||
|
||||
```bash
|
||||
# Review what will be created
|
||||
terraform plan
|
||||
```
|
||||
|
||||
### Step 4: Apply Configuration
|
||||
|
||||
```bash
|
||||
# Apply the configuration (this will create resources)
|
||||
terraform apply
|
||||
|
||||
# Type 'yes' when prompted to confirm
|
||||
```
|
||||
|
||||
## What Gets Created
|
||||
|
||||
### 1. AWS Organization
|
||||
- Organization with ALL features enabled
|
||||
- Service access for CloudTrail, Config, SSO, RAM, Service Catalog
|
||||
- SERVICE_CONTROL_POLICY enabled
|
||||
|
||||
### 2. Organizational Units (OUs)
|
||||
- **Management**: Admin and IAM management (Tier 0)
|
||||
- **Security**: Security tools and monitoring (Tier 0)
|
||||
- **Workloads**: Application workloads (Tier 1)
|
||||
- **Sandbox**: Experimentation and testing (Tier 2)
|
||||
|
||||
### 3. Member Accounts
|
||||
- **Development**: `jerome+dev@sysloggh.com`
|
||||
- **Staging**: `jerome+staging@sysloggh.com`
|
||||
|
||||
### 4. IAM Resources
|
||||
- Users: `syslog-admin`, `syslog-developer`, `syslog-cicd`
|
||||
- Groups: `SyslogAdmins`, `SyslogDevelopers`
|
||||
- Policies with least privilege access
|
||||
|
||||
### 5. Monitoring & Billing
|
||||
- SNS topic for billing alerts
|
||||
- CloudWatch alarm for monthly spend threshold
|
||||
- Email subscription for alerts
|
||||
|
||||
## Post-Deployment Steps
|
||||
|
||||
### 1. Check Email
|
||||
- AWS will send account creation emails to dev and staging email addresses
|
||||
- Accept the invitations in each account
|
||||
|
||||
### 2. Configure AWS Profiles
|
||||
```bash
|
||||
# Configure profiles for each account
|
||||
aws configure --profile syslog-dev
|
||||
aws configure --profile syslog-staging
|
||||
```
|
||||
|
||||
### 3. Set up AWS IAM Identity Center (SSO)
|
||||
1. Go to AWS Console → IAM Identity Center
|
||||
2. Enable SSO
|
||||
3. Configure identity source
|
||||
4. Create permission sets for different roles
|
||||
5. Assign users to accounts
|
||||
|
||||
### 4. Begin Development
|
||||
```bash
|
||||
# Switch to development account
|
||||
export AWS_PROFILE=syslog-dev
|
||||
|
||||
# Test access
|
||||
aws sts get-caller-identity
|
||||
```
|
||||
|
||||
## Variables Configuration
|
||||
|
||||
Key variables in `terraform.tfvars`:
|
||||
|
||||
| Variable | Description | Default |
|
||||
|----------|-------------|---------|
|
||||
| `aws_profile` | AWS CLI profile name | `syslog-business` |
|
||||
| `dev_account_email` | Development account email | `jerome+dev@sysloggh.com` |
|
||||
| `staging_account_email` | Staging account email | `jerome+staging@sysloggh.com` |
|
||||
| `billing_alert_email` | Email for billing alerts | `jerome@sysloggh.com` |
|
||||
| `monthly_spend_threshold` | Billing alert threshold (USD) | `100` |
|
||||
|
||||
## Security Notes
|
||||
|
||||
1. **Least Privilege**: IAM policies follow least privilege principle
|
||||
2. **MFA Recommended**: Enable MFA for all IAM users
|
||||
3. **Root Account**: Secure root account with MFA and strong password
|
||||
4. **Access Keys**: Rotate access keys regularly
|
||||
5. **Audit Trail**: CloudTrail enabled for all accounts
|
||||
|
||||
## Cost Estimation
|
||||
|
||||
- **AWS Organizations**: Free
|
||||
- **IAM Users/Groups**: Free
|
||||
- **SNS Topics**: ~$0.50/month per topic
|
||||
- **CloudWatch Alarms**: ~$0.10/month per alarm
|
||||
- **Member Accounts**: No additional cost for account creation
|
||||
|
||||
Total estimated monthly cost: **$0.60 - $1.00**
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **Permission Denied**: Ensure IAM user has `Organizations:CreateOrganization` permission
|
||||
2. **Email Already Used**: Change email addresses in `terraform.tfvars`
|
||||
3. **Rate Limiting**: AWS limits organization creation to 1 per day
|
||||
|
||||
### Debug Commands
|
||||
|
||||
```bash
|
||||
# Check AWS profile configuration
|
||||
aws sts get-caller-identity --profile syslog-business
|
||||
|
||||
# Check Terraform state
|
||||
terraform state list
|
||||
|
||||
# Show outputs
|
||||
terraform output
|
||||
|
||||
# Destroy resources (if needed)
|
||||
terraform destroy
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
After organization setup:
|
||||
|
||||
1. **Set up Amplify** in development account for website
|
||||
2. **Configure CI/CD** pipeline with GitHub Actions
|
||||
3. **Deploy initial website** to `dev.sysloggh.com`
|
||||
4. **Integrate AI agents** from `aws-multi-agent-rag` repository
|
||||
5. **Complete Ghana business profile** optimization
|
||||
|
||||
## Contact
|
||||
|
||||
For issues or questions:
|
||||
- Email: jerome@sysloggh.com
|
||||
- Telegram: @mejerome19
|
||||
|
||||
## License
|
||||
|
||||
This Terraform configuration is proprietary to Syslog Solution LLC.
|
||||
Reference in New Issue
Block a user