create dynamic ansible group

This commit is contained in:
Vezpi 2025-04-04 22:01:03 +00:00
parent e6d453fce3
commit bc64652310
2 changed files with 31 additions and 18 deletions

View File

@ -7,21 +7,30 @@
name: terraform_vm
vars:
terraform_vm_project_path: /home/vez/homelab/terraform/projects/terransible
terraform_vars_multi_node_deployment: false
terraform_vars_target_node: zenith
# terraform_vars_vm_attr:
# mast:
# ram: 2048
# cpu: 2
# vlan: 66
# work:
# ram: 1024
# cpu: 1
# vlan: 66
# terraform_vars_multi_node_deployment: false
# terraform_vars_target_node: zenith
terraform_vars_vm_attr:
master:
ram: 2048
cpu: 2
vlan: 66
worker:
ram: 1024
cpu: 1
vlan: 66
- name: Ping
hosts: servers
hosts: all
gather_facts: false
tasks:
- name: Ping the host group
ansible.builtin.ping:
- name: Ping all the hosts
ansible.builtin.ping:
delegate_to:
- name: Ping the master
ansible.builtin.ping:
when: inventory_hostname in groups['master']
- name: Ping the worker
ansible.builtin.ping:
when: inventory_hostname in groups['worker']

View File

@ -22,10 +22,13 @@ locals {
vm_cpu = config.cpu
vm_ram = config.ram
vm_vlan = config.vlan
vm_role = role
}
]
]) : vm.vm_name => vm
}
roles = toset([for vm in local.vm_list : vm.vm_role])
}
data "proxmox_virtual_environment_nodes" "pve_nodes" {}
@ -34,14 +37,15 @@ output "vm_ip" {
value = { for k, v in module.pve_vm : k => v.vm_ip }
}
resource "ansible_group" "servers" {
name = "servers"
resource "ansible_group" "vm_groups" {
for_each = local.roles
name = each.key
}
resource "ansible_host" "vm" {
resource "ansible_host" "vm_hosts" {
for_each = module.pve_vm
name = each.key
variables = {
ansible_host = each.value.vm_ip
}
groups = ["servers"]
groups = [local.vm_list[each.key].vm_role]
}