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 name: terraform_vm
vars: vars:
terraform_vm_project_path: /home/vez/homelab/terraform/projects/terransible terraform_vm_project_path: /home/vez/homelab/terraform/projects/terransible
terraform_vars_multi_node_deployment: false # terraform_vars_multi_node_deployment: false
terraform_vars_target_node: zenith # terraform_vars_target_node: zenith
# terraform_vars_vm_attr: terraform_vars_vm_attr:
# mast: master:
# ram: 2048 ram: 2048
# cpu: 2 cpu: 2
# vlan: 66 vlan: 66
# work: worker:
# ram: 1024 ram: 1024
# cpu: 1 cpu: 1
# vlan: 66 vlan: 66
- name: Ping - name: Ping
hosts: servers hosts: all
gather_facts: false gather_facts: false
tasks: tasks:
- name: Ping the host group - name: Ping all the hosts
ansible.builtin.ping: 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_cpu = config.cpu
vm_ram = config.ram vm_ram = config.ram
vm_vlan = config.vlan vm_vlan = config.vlan
vm_role = role
} }
] ]
]) : vm.vm_name => vm ]) : vm.vm_name => vm
} }
roles = toset([for vm in local.vm_list : vm.vm_role])
} }
data "proxmox_virtual_environment_nodes" "pve_nodes" {} 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 } value = { for k, v in module.pve_vm : k => v.vm_ip }
} }
resource "ansible_group" "servers" { resource "ansible_group" "vm_groups" {
name = "servers" for_each = local.roles
name = each.key
} }
resource "ansible_host" "vm" { resource "ansible_host" "vm_hosts" {
for_each = module.pve_vm for_each = module.pve_vm
name = each.key name = each.key
variables = { variables = {
ansible_host = each.value.vm_ip ansible_host = each.value.vm_ip
} }
groups = ["servers"] groups = [local.vm_list[each.key].vm_role]
} }