This skill guides writing cloud-init configurations for VM provisioning. Use when creating user_data blocks in Terraform/OpenTofu, or cloud-init YAML for AWS, DigitalOcean, GCP, or Azure instances.
View on GitHubmajesticlabs-dev/majestic-marketplace
majestic-devops
plugins/majestic-devops/skills/cloud-init-coder/SKILL.md
January 24, 2026
Select agents to install to:
npx add-skill https://github.com/majesticlabs-dev/majestic-marketplace/blob/main/plugins/majestic-devops/skills/cloud-init-coder/SKILL.md -a claude-code --skill cloud-init-coderInstallation paths:
.claude/skills/cloud-init-coder/# Cloud-Init Coder
## Overview
Cloud-init is the industry standard for cross-platform cloud instance initialization. It runs on first boot to configure users, packages, files, and services before the instance becomes available.
## Core Format
Cloud-init configs start with `#cloud-config`:
```yaml
#cloud-config
package_update: true
packages:
- nginx
- docker.io
```
## User Management
### Create Deploy User
```yaml
#cloud-config
users:
- name: deploy
groups: docker, sudo
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
ssh_authorized_keys:
- ssh-ed25519 AAAA... deploy@example.com
```
### Multiple Users
```yaml
#cloud-config
users:
- default # Keep cloud provider's default user
- name: deploy
groups: docker
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
ssh_authorized_keys:
- ssh-ed25519 AAAA... key1
- name: monitoring
groups: adm
shell: /bin/bash
ssh_authorized_keys:
- ssh-ed25519 AAAA... monitoring-key
```
## Package Installation
### Basic Packages
```yaml
#cloud-config
package_update: true
package_upgrade: true
packages:
- docker.io
- docker-compose-plugin
- nginx
- certbot
- python3-certbot-nginx
- fail2ban
- ufw
```
### From Custom Repositories
```yaml
#cloud-config
apt:
sources:
docker:
source: "deb [arch=amd64] https://download.docker.com/linux/ubuntu $RELEASE stable"
keyid: 9DC858229FC7DD38854AE2D88D81803C0EBFCD88
packages:
- docker-ce
- docker-ce-cli
- containerd.io
```
## SSH Hardening
### Declarative SSH Lockdown
Prefer declarative `ssh_pwauth: false` over runcmd sed commands:
```yaml
#cloud-config
ssh_pwauth: false # Disable password auth at cloud-init level
runcmd:
# Additional hardening via sshd_config
- sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
- systemctl restart sshd
```
### Full SSH Hardening
```yaml
#cloud-config
ssh_pwauth: false # Declarative - cleaner than sed
ru