From bda585fcd583afa8eee59c8357f425fd4f3d5123 Mon Sep 17 00:00:00 2001 From: rblundon Date: Thu, 27 Mar 2025 00:32:02 -0500 Subject: [PATCH] goodnight --- .vault_pass.txt | 1 - 03-infra01-server/install.yml | 30 ++++---- dns-entry.yml | 74 ++++++++++--------- homelab/terraform/dns/ocp-hub.tf | 11 +++ homelab/terraform/dns/pve01.tf | 11 +++ host_vars/infra01/vars | 11 +++ site.yml | 17 +++-- .../dns_provider.tf.j2 | 4 +- test.yml | 30 ++++---- 9 files changed, 116 insertions(+), 73 deletions(-) delete mode 100644 .vault_pass.txt create mode 100644 homelab/terraform/dns/ocp-hub.tf create mode 100644 homelab/terraform/dns/pve01.tf create mode 100644 host_vars/infra01/vars rename terraform/dns/provider.tf => templates/dns_provider.tf.j2 (89%) diff --git a/.vault_pass.txt b/.vault_pass.txt deleted file mode 100644 index add09e1..0000000 --- a/.vault_pass.txt +++ /dev/null @@ -1 +0,0 @@ -H3sVxt9kbuoXGvG diff --git a/03-infra01-server/install.yml b/03-infra01-server/install.yml index 5b084e3..d855c15 100644 --- a/03-infra01-server/install.yml +++ b/03-infra01-server/install.yml @@ -4,9 +4,6 @@ gather_facts: true become: true - collections: - - somaz94.ansible_k8s_iac_tool - tasks: # - Update all packages # - Install ansible-core @@ -26,18 +23,21 @@ state: present become: true - - name: Download terraform - ansible.builtin.get_url: - url: https://releases.hashicorp.com/terraform/terraform_{{ terraform_version }}/terraform_{{ terraform_version }}_{{ ansible_facts.ansible_os_family }}_{{ ansible_facts.ansible_architecture }}.zip - dest: /tmp/terraform.zip - mode: 0755 + - name: Register status of /usr/local/bin/terraform + ansible.builtin.stat: + path: /usr/local/bin/terraform + register: terraform_path - - name: Install terraform - ansible.builtin.package: - name: terraform - state: present - become: true + - name: Download and installt erraform version + when: not terraform_path.stat.exists + block: + - name: Download and install terraform + ansible.builtin.unarchive: + src: "https://releases.hashicorp.com/terraform/{{ terraform_version }}/terraform_{{ terraform_version }}_linux_amd64.zip" + dest: "/usr/local/bin/" + remote_src: true + mode: '0755' + exclude: "LICENSE.txt" roles: - - install_kustomize - + - somaz94.ansible_k8s_iac_tool.install_kustomize diff --git a/dns-entry.yml b/dns-entry.yml index 3377683..3d5860c 100644 --- a/dns-entry.yml +++ b/dns-entry.yml @@ -1,40 +1,46 @@ --- # file: dns-entry.yml -- name: Master playbook for home lab - hosts: all - gather_facts: false - tasks: - - name: Create DNS entry for {{ inventory_hostname }} - when: ip_address is defined - delegate_to: "{{ dns_server }}" - block: - - name: Check if terraform directory exists - ansible.builtin.stat: - path: ~/homelab/terraform/dns - register: terraform_dir +- name: Check if terraform directory exists + ansible.builtin.stat: + path: homelab/terraform/dns + register: terraform_dir - - name: Create Terraform directory for DNS entries - ansible.builtin.file: - path: ~/homelab/terraform/dns - state: directory - mode: '0755' - when: not terraform_dir.stat.exists +- name: Create Terraform directory for DNS entries + ansible.builtin.file: + path: homelab/terraform/dns + state: directory + mode: '0755' + when: not terraform_dir.stat.exists - - name: Create Terraform file for host - ansible.builtin.template: - src: templates/dns.tf.j2 - dest: ~/homelab/terraform/dns/{{ inventory_hostname }}.tf - mode: '0644' +- name: "Create/Update Terraform DNS provider" + ansible.builtin.template: + src: templates/dns_provider.tf.j2 + dest: homelab/terraform/dns/provider.tf + mode: '0644' - handlers: - - name: Update DNS entries via Terraform - delegate_to: "{{ dns_server }}" - community.general.terraform: - project_path: ~/homelab/terraform/dns/ - variables: - freeipa_server: "{{ dns_server }}" - freeipa_admin: "{{ dns_admin }}" - freeipa_password: "{{ vault_freeipa_password }}" - state: present - force_init: true +- name: Show all the hosts in the inventory + when: "{{ hostvars[groups['all'][ {{ item }} ]['ip_address'] }}" is defined + ansible.builtin.debug: + msg: "{{ hostvars[item].ip_address }}" + loop: "{{ query('inventory_hostnames', 'all') }}" + +# - name: Loop through all hosts +# block: +# - name: Create Terraform files for all eligible hosts +# when: "{{hostvars["{{ item }}"].ip_address}}" is defined +# ansible.builtin.template: +# src: templates/dns.tf.j2 +# dest: homelab/terraform/dns/{{ item }}.tf +# mode: '0644' +# loop: "{{ query('inventory_hostnames', 'all') }}" + +# - name: Update DNS entries via Terraform +# community.general.terraform: +# project_path: homelab/terraform/dns/ +# variables: +# freeipa_server: "{{ dns_server }}" +# freeipa_admin: "{{ dns_admin }}" +# freeipa_password: "{{ vault_freeipa_password }}" +# state: present +# force_init: true diff --git a/homelab/terraform/dns/ocp-hub.tf b/homelab/terraform/dns/ocp-hub.tf new file mode 100644 index 0000000..5d21a91 --- /dev/null +++ b/homelab/terraform/dns/ocp-hub.tf @@ -0,0 +1,11 @@ +// Terraform DNS entry template + +resource "freeipa_dns_record" "ocp-hub" { + zone_name = "int.mk-labs.cloud." + name = "ocp-hub" + type = "A" + records = [ + "10.1.71.10", + ] + ttl = 60 +} diff --git a/homelab/terraform/dns/pve01.tf b/homelab/terraform/dns/pve01.tf new file mode 100644 index 0000000..1b76744 --- /dev/null +++ b/homelab/terraform/dns/pve01.tf @@ -0,0 +1,11 @@ +// Terraform DNS entry template + +resource "freeipa_dns_record" "pve01" { + zone_name = "int.mk-labs.cloud." + name = "pve01" + type = "A" + records = [ + "10.1.71.51", + ] + ttl = 60 +} diff --git a/host_vars/infra01/vars b/host_vars/infra01/vars new file mode 100644 index 0000000..be95983 --- /dev/null +++ b/host_vars/infra01/vars @@ -0,0 +1,11 @@ +--- +# file: host_vars/infra01/vars + +# Networking +# primary_interface: "enp1s0f0" +# mac_address: "98:b7:85:1e:c6:f1" +#ip_address: 10.1.71.51 +hostname: "infra01.{{ base_domain }}" + +# Software +terraform_version: "1.11.3" diff --git a/site.yml b/site.yml index 8d63f8b..a134ac5 100644 --- a/site.yml +++ b/site.yml @@ -3,12 +3,13 @@ - name: Master playbook for home lab hosts: all - gather_facts: true - connection: local - # roles: - # - dns-entry + gather_facts: false -# tasks: - -- name: Process DNS entries - ansible.builtin.import_playbook: dns-entry.yml + tasks: + - name: Process DNS entries + when: inventory_hostname == "infra01" + ansible.builtin.import_tasks: + file: dns-entry.yml + tags: + - update-dns + - never diff --git a/terraform/dns/provider.tf b/templates/dns_provider.tf.j2 similarity index 89% rename from terraform/dns/provider.tf rename to templates/dns_provider.tf.j2 index 13f47d0..e137942 100644 --- a/terraform/dns/provider.tf +++ b/templates/dns_provider.tf.j2 @@ -1,7 +1,7 @@ # Configure the DNS Provider provider "freeipa" { - host = "infra01.int.mk-labs.cloud" - username = "admin" + host = var.freeipa_server + username = var.freeipa_admin password = var.freeipa_password insecure = true } diff --git a/test.yml b/test.yml index 7c3f184..2dfe616 100644 --- a/test.yml +++ b/test.yml @@ -1,22 +1,26 @@ --- - name: Run all tasks necessary to configure matchbox to install the cluster - hosts: matchbox - connection: local + hosts: infra01 + #connection: local gather_facts: true tasks: - - name: Print vars for debugging - ansible.builtin.debug: - msg: System {{ hostvars['infra01'].matchbox_assets }} / {{ hostvars['ocp-hub'].cluster_name }} + # - name: Print vars for debugging + # ansible.builtin.debug: + # msg: System {{ hostvars['infra01'].matchbox_assets }} / {{ hostvars['ocp-hub'].cluster_name }} - - name: Print vars for debugging 2 - ansible.builtin.debug: - msg: System {{ groups }} + # - name: Print vars for debugging 2 + # ansible.builtin.debug: + # msg: System {{ groups }} - - name: Print vars for debugging 3 - ansible.builtin.debug: - msg: System {{ groups['hub-cluster'][0] }} + # - name: Print vars for debugging 3 + # ansible.builtin.debug: + # msg: System {{ groups['hub-cluster'][0] }} - - name: Print vars for debugging 4 + # - name: Print vars for debugging 4 + # ansible.builtin.debug: + # msg: System {{ hostvars[groups['hub-cluster'][0]].cluster_name }} + + - name: Print all available facts ansible.builtin.debug: - msg: System {{ hostvars[groups['hub-cluster'][0]].cluster_name }} + var: ansible_facts \ No newline at end of file