Skip to content

Commit 66217a0

Browse files
committed
feat: add Ansible configuration management setup
- Add config/ansible/ directory with complete Ansible setup - Create ansible.cfg with SSH optimizations and lab-friendly settings - Add inventory.yml with detailed OpenTofu integration comments - Implement wait-cloud-init.yml playbook for cloud-init verification - Add comprehensive README.md with machine-readable output examples - Include JSON callback plugin usage for Rust integration - Document complete OpenTofu → cloud-init → Ansible workflow - Update main README.md to explain Ansible integration - Add extensive comments explaining relationships between components This enables automated configuration management on OpenTofu-provisioned VMs with support for programmatic parsing of execution results.
1 parent 8b69c5d commit 66217a0

File tree

6 files changed

+590
-9
lines changed

6 files changed

+590
-9
lines changed

README.md

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,30 @@ Choose your preferred approach:
5353
2. **For CI/CD reliability**: Use [LXD configuration](config/tofu/lxd/README.md)
5454
3. **For testing both**: Try both approaches to compare
5555

56+
## 🎭 **Ansible Configuration Management**
57+
58+
Once VMs are provisioned by OpenTofu, we use **Ansible** to execute tasks and manage configuration on the running instances.
59+
60+
### ⚙️ **Ansible Setup (`config/ansible/`)**
61+
62+
- **Technology**: Agentless configuration management and task automation
63+
- **Purpose**: Execute tasks on OpenTofu-provisioned VMs
64+
- **Features**: Cloud-init verification, system configuration, application deployment
65+
66+
**[📖 See detailed Ansible documentation →](config/ansible/README.md)**
67+
68+
### 🔄 **Infrastructure Workflow**
69+
70+
1. **Provision**: OpenTofu creates and configures VMs with cloud-init
71+
2. **Configure**: Ansible connects to VMs and executes management tasks
72+
3. **Verify**: Automated checks ensure proper setup and functionality
73+
74+
| Phase | Tool | Purpose |
75+
| ------------------ | ------------------ | ------------------------------------------- |
76+
| **Infrastructure** | OpenTofu/Terraform | VM provisioning and cloud-init setup |
77+
| **Configuration** | Ansible | Task execution and configuration management |
78+
| **Verification** | Ansible Playbooks | System checks and validation |
79+
5680
## 🧪 **Testing in GitHub Actions**
5781

5882
Both configurations include GitHub Actions workflows for CI testing:
@@ -68,10 +92,13 @@ Both configurations include GitHub Actions workflows for CI testing:
6892
- [x] LXD container provisioning (local + GitHub Actions)
6993
- [x] Cloud-init support in both approaches
7094
- [x] OpenTofu infrastructure as code
95+
- [x] Ansible configuration management setup
96+
- [x] Basic cloud-init verification playbook
7197
- [x] Automated testing workflows
7298

7399
### 🔄 **In Progress**
74100

101+
- [ ] Extended Ansible playbooks for application deployment
75102
- [ ] Docker Compose integration testing
76103
- [ ] Performance benchmarking
77104
- [ ] Official GitHub Actions nested virtualization clarification
@@ -86,15 +113,20 @@ Both configurations include GitHub Actions workflows for CI testing:
86113

87114
```text
88115
├── config/
89-
│ └── tofu/
90-
│ ├── multipass/
91-
│ │ ├── main.tf # OpenTofu configuration for Multipass VMs
92-
│ │ ├── cloud-init.yml # Cloud-init configuration
93-
│ │ └── README.md # Multipass-specific documentation
94-
│ └── lxd/
95-
│ ├── main.tf # OpenTofu configuration for LXD containers
96-
│ ├── cloud-init.yml # Cloud-init configuration (same as multipass)
97-
│ └── README.md # LXD-specific documentation
116+
│ ├── tofu/
117+
│ │ ├── multipass/
118+
│ │ │ ├── main.tf # OpenTofu configuration for Multipass VMs
119+
│ │ │ ├── cloud-init.yml # Cloud-init configuration
120+
│ │ │ └── README.md # Multipass-specific documentation
121+
│ │ └── lxd/
122+
│ │ ├── main.tf # OpenTofu configuration for LXD containers
123+
│ │ ├── cloud-init.yml # Cloud-init configuration (same as multipass)
124+
│ │ └── README.md # LXD-specific documentation
125+
│ └── ansible/
126+
│ ├── ansible.cfg # Ansible configuration
127+
│ ├── inventory.yml # Host inventory for provisioned VMs
128+
│ ├── wait-cloud-init.yml # Playbook to wait for cloud-init completion
129+
│ └── README.md # Ansible-specific documentation
98130
├── .github/
99131
│ └── workflows/
100132
│ ├── test-multipass-provision.yml # Tests Multipass VMs

0 commit comments

Comments
 (0)