File contents What I do
Provision and manage cloud infrastructure (compute, storage, network)
Configure virtual machines and networking
Set up managed databases and storage services
Implement identity and access management
Configure security groups and firewall rules
Optimize infrastructure costs and performance
When to use me
When you need full control over infrastructure
When migrating legacy applications
When running custom or unsupported workloads
When building lift-and-shift solutions
When requiring dedicated hardware
When implementing custom security requirements
Key Concepts
Virtual Machine Provisioning
# Terraform - AWS EC2
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t3.micro"
subnet_id = aws_subnet.public.id
vpc_security_group_ids = [aws_security_group.web.id]
tags = {
Name = "WebServer"
Environment = "production"
}
root_block_device {
volume_size = 20
volume_type = "gp3"
encrypted = true
}
}
# GCP Compute Engine
resource "google_compute_instance" "web" {
name = "web-server"
machine_type = "e2-medium"
zone = "us-central1-a"
boot_disk {
initialize_params {
image = "debian-11-bullseye-v20220719"
size = 20
}
}
network_interface {
network = "default"
access_config {
// Ephemeral IP
}
}
}
# Azure VM
resource "azurerm_virtual_machine" "web" {
name = "web-server"
location = "eastus"
resource_group_name = azurerm_resource_group.main.name
vm_size = "Standard_B1s"
storage_os_disk {
name = "osdisk"
managed_disk_type = "Standard_LRS"
disk_size_gb = 30
}
os_profile {
computer_name = "webserver"
admin_username = "admin"
}
os_profile_linux_config {
disable_password_authentication = true
}
}
Networking
# VPC with subnets
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
enable_dns_hostnames = true
enable_dns_support = true
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
map_public_ip_on_launch = true
tags = {
Type = "Public"
}
}
resource "aws_subnet" "private" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.2.0/24"
tags = {
Type = "Private"
}
}
# Internet Gateway
resource "aws_internet_gateway" "main" {
vpc_id = aws_vpc.main.id
tags = {
Name = "Main IGW"
}
}
Managed Databases
# RDS PostgreSQL
resource "aws_db_instance" "postgres" {
identifier = "mydb"
engine = "postgres"
engine_version = "15.3"
instance_class = "db.t3.micro"
allocated_storage = 20
max_allocated_storage = 100
db_name = "mydb"
username = "dbadmin"
password = var.db_password
vpc_security_group_ids = [aws_security_group.rds.id]
db_subnet_group_name = aws_db_subnet_group.main.name
backup_retention_period = 7
skip_final_snapshot = false
final_snapshot_identifier = "mydb-final"
enabled_cloudwatch_logs_exports = ["postgresql", "upgrade"]
}
IaaS vs PaaS vs SaaS
Layer
Responsibility
Examples
IaaS
Compute, storage, networking
EC2, GCE, Azure VMs
IaaS
OS, middleware, runtime
App Service, Cloud Run
SaaS
Complete application
Gmail, Office 365
Scaling Options
# Auto Scaling Group
resource "aws_autoscaling_group" "web" {
name = "web-asg"
vpc_zone_identifier = [aws_subnet.public.id]
desired_capacity = 2
max_size = 10
min_size = 2
launch_template {
id = aws_launch_template.web.id
version = "$Latest"
}
tag {
key = "Name"
value = "web-asg"
propagate_at_launch = true
}
}
resource "aws_autoscaling_policy" "scale_up" {
name = "scale-up"
scaling_adjustment = 1
adjustment_type = "ChangeInCapacity"
cooldown = 300
autoscaling_group_name = aws_autoscaling_group.web.name
}
Security Considerations
Use IAM roles, not access keys
Enable encryption at rest
Configure network ACLs
Implement VPC flow logs
Regular patching and updates
Use Bastion hosts for access
1 --- 2 name: iaas 3 description: Infrastructure as a Service cloud computing 4 license: MIT 5 --- 6 7 ## What I do 8 9 - Provision and manage cloud infrastructure (compute, storage, network) 10 - Configure virtual machines and networking 11 - Set up managed databases and storage services 12 - Implement identity and access management 13 - Configure security groups and firewall rules 14 - Optimize infrastructure costs and performance 15 16 ## When to use me 17 18 - When you need full control over infrastructure 19 - When migrating legacy applications 20 - When running custom or unsupported workloads 21 - When building lift-and-shift solutions 22 - When requiring dedicated hardware 23 - When implementing custom security requirements 24 25 ## Key Concepts 26 27 ### Virtual Machine Provisioning 28 29 ```hcl 30 # Terraform - AWS EC2 31 resource "aws_instance" "web" { 32 ami = "ami-0c55b159cbfafe1f0" 33 instance_type = "t3.micro" 34 subnet_id = aws_subnet.public.id 35 36 vpc_security_group_ids = [aws_security_group.web.id] 37 38 tags = { 39 Name = "WebServer" 40 Environment = "production" 41 } 42 43 root_block_device { 44 volume_size = 20 45 volume_type = "gp3" 46 encrypted = true 47 } 48 } 49 50 # GCP Compute Engine 51 resource "google_compute_instance" "web" { 52 name = "web-server" 53 machine_type = "e2-medium" 54 zone = "us-central1-a" 55 56 boot_disk { 57 initialize_params { 58 image = "debian-11-bullseye-v20220719" 59 size = 20 60 } 61 } 62 63 network_interface { 64 network = "default" 65 access_config { 66 // Ephemeral IP 67 } 68 } 69 } 70 71 # Azure VM 72 resource "azurerm_virtual_machine" "web" { 73 name = "web-server" 74 location = "eastus" 75 resource_group_name = azurerm_resource_group.main.name 76 vm_size = "Standard_B1s" 77 78 storage_os_disk { 79 name = "osdisk" 80 managed_disk_type = "Standard_LRS" 81 disk_size_gb = 30 82 } 83 84 os_profile { 85 computer_name = "webserver" 86 admin_username = "admin" 87 } 88 89 os_profile_linux_config { 90 disable_password_authentication = true 91 } 92 } 93 ``` 94 95 ### Networking 96 97 ```hcl 98 # VPC with subnets 99 resource "aws_vpc" "main" { 100 cidr_block = "10.0.0.0/16" 101 enable_dns_hostnames = true 102 enable_dns_support = true 103 } 104 105 resource "aws_subnet" "public" { 106 vpc_id = aws_vpc.main.id 107 cidr_block = "10.0.1.0/24" 108 map_public_ip_on_launch = true 109 110 tags = { 111 Type = "Public" 112 } 113 } 114 115 resource "aws_subnet" "private" { 116 vpc_id = aws_vpc.main.id 117 cidr_block = "10.0.2.0/24" 118 119 tags = { 120 Type = "Private" 121 } 122 } 123 124 # Internet Gateway 125 resource "aws_internet_gateway" "main" { 126 vpc_id = aws_vpc.main.id 127 128 tags = { 129 Name = "Main IGW" 130 } 131 } 132 ``` 133 134 ### Managed Databases 135 136 ```hcl 137 # RDS PostgreSQL 138 resource "aws_db_instance" "postgres" { 139 identifier = "mydb" 140 engine = "postgres" 141 engine_version = "15.3" 142 instance_class = "db.t3.micro" 143 144 allocated_storage = 20 145 max_allocated_storage = 100 146 147 db_name = "mydb" 148 username = "dbadmin" 149 password = var.db_password 150 151 vpc_security_group_ids = [aws_security_group.rds.id] 152 db_subnet_group_name = aws_db_subnet_group.main.name 153 154 backup_retention_period = 7 155 skip_final_snapshot = false 156 final_snapshot_identifier = "mydb-final" 157 158 enabled_cloudwatch_logs_exports = ["postgresql", "upgrade"] 159 } 160 ``` 161 162 ### IaaS vs PaaS vs SaaS 163 164 | Layer | Responsibility | Examples | 165 |-------|---------------|----------| 166 | IaaS | Compute, storage, networking | EC2, GCE, Azure VMs | 167 | IaaS | OS, middleware, runtime | App Service, Cloud Run | 168 | SaaS | Complete application | Gmail, Office 365 | 169 170 ### Scaling Options 171 172 ```hcl 173 # Auto Scaling Group 174 resource "aws_autoscaling_group" "web" { 175 name = "web-asg" 176 vpc_zone_identifier = [aws_subnet.public.id] 177 178 desired_capacity = 2 179 max_size = 10 180 min_size = 2 181 182 launch_template { 183 id = aws_launch_template.web.id 184 version = "$Latest" 185 } 186 187 tag { 188 key = "Name" 189 value = "web-asg" 190 propagate_at_launch = true 191 } 192 } 193 194 resource "aws_autoscaling_policy" "scale_up" { 195 name = "scale-up" 196 scaling_adjustment = 1 197 adjustment_type = "ChangeInCapacity" 198 cooldown = 300 199 autoscaling_group_name = aws_autoscaling_group.web.name 200 } 201 ``` 202 203 ### Security Considerations 204 205 - Use IAM roles, not access keys 206 - Enable encryption at rest 207 - Configure network ACLs 208 - Implement VPC flow logs 209 - Regular patching and updates 210 - Use Bastion hosts for access
ffsshhttiikk/opencode-agents-skills/tree/main/iaas commit 2686d12650
Frequently asked questions How do I install the Iaas skill? Run npx skillmds@latest add ffsshhttiikk/iaas in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Iaas skill do? Infrastructure as a Service cloud computing It is listed under DevOps & Infra on SkillMD.
Is Iaas safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Iaas? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Iaas free to use? Yes. Installing skills from SkillMD is free. This skill is licensed under MIT.
Who published Iaas? ffsshhttiikk (@ffsshhttiikk) published this skill. Their other Agent Skills are listed on their SkillMD profile.