add: proxmox project with terraform_user.yml
This commit is contained in:
5
ansible/ansiform/inventories/terraform.yml
Normal file
5
ansible/ansiform/inventories/terraform.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
plugin: cloud.terraform.terraform_provider
|
||||
project_path:
|
||||
- /home/vez/homelab/terraform/projects/terransible
|
||||
state_file: terraform.tfstate.d/lab/terraform.tfstate
|
||||
31
ansible/ansiform/playbooks/deploy_tf.yml
Normal file
31
ansible/ansiform/playbooks/deploy_tf.yml
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
- name: Deploy a Terraform infrastructure
|
||||
hosts: localhost
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- ansible.builtin.import_role:
|
||||
name: terraform_vm
|
||||
vars:
|
||||
terraform_vm_state: "{{ state | default(omit) }}"
|
||||
terraform_vm_project_path: /home/vez/homelab/terraform/projects/terransible
|
||||
terraform_vars_vm_env: "{{ env | default('lab')}}"
|
||||
terraform_vars_vm_tags:
|
||||
- "{{ env | default('lab')}}"
|
||||
terraform_vars_multi_node_deployment: "{{ multi_node_deployment | default(true) }}"
|
||||
terraform_vars_target_node: "{{ target_node | default(omit) }}"
|
||||
terraform_vars_vm_attr: {"master": { "ram": 2048, "cpu": 2, "vlan": 66 }, "worker": { "ram": 1024, "cpu": 1, "vlan": 66 }}
|
||||
|
||||
- name: Ping
|
||||
hosts: all
|
||||
tasks:
|
||||
- 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']
|
||||
35
ansible/ansiform/playbooks/install_nginx.yml
Normal file
35
ansible/ansiform/playbooks/install_nginx.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
- name: Demo Playbook - Install Nginx and Serve Hostname Page
|
||||
hosts: all
|
||||
become: true
|
||||
|
||||
tasks:
|
||||
- name: Ensure apt cache is updated
|
||||
ansible.builtin.apt:
|
||||
update_cache: true
|
||||
cache_valid_time: 3600
|
||||
|
||||
- name: Install nginx
|
||||
ansible.builtin.apt:
|
||||
name: nginx
|
||||
state: present
|
||||
|
||||
- name: Create index.html with hostname
|
||||
ansible.builtin.copy:
|
||||
dest: /var/www/html/index.html
|
||||
content: |
|
||||
<html>
|
||||
<head><title>Demo</title></head>
|
||||
<body>
|
||||
<h1>Hostname: {{ inventory_hostname }}</h1>
|
||||
</body>
|
||||
</html>
|
||||
owner: www-data
|
||||
group: www-data
|
||||
mode: "0644"
|
||||
|
||||
- name: Ensure nginx is running
|
||||
ansible.builtin.service:
|
||||
name: nginx
|
||||
state: started
|
||||
enabled: true
|
||||
3
ansible/ansiform/roles/terraform_vm/defaults/main.yml
Normal file
3
ansible/ansiform/roles/terraform_vm/defaults/main.yml
Normal file
@@ -0,0 +1,3 @@
|
||||
---
|
||||
terraform_ansible_inventory: /home/vez/homelab/ansible/inventories/terraform.yml
|
||||
terraform_vm_state: present
|
||||
25
ansible/ansiform/roles/terraform_vm/tasks/main.yml
Normal file
25
ansible/ansiform/roles/terraform_vm/tasks/main.yml
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
- name: Deploy a Terraform infrastructure
|
||||
delegate_to: localhost
|
||||
cloud.terraform.terraform:
|
||||
project_path: "{{ terraform_vm_project_path }}"
|
||||
state: "{{ terraform_vm_state }}"
|
||||
workspace: "{{ terraform_vars_vm_env | default(omit)}}"
|
||||
parallelism: 3
|
||||
complex_vars: true
|
||||
variables:
|
||||
multi_node_deployment: "{{ terraform_vars_multi_node_deployment | default(omit)}}"
|
||||
target_node: "{{ terraform_vars_target_node | default(omit)}}"
|
||||
vm_attr: "{{ terraform_vars_vm_attr | default(omit)}}"
|
||||
vm_env: "{{ terraform_vars_vm_env | default(omit)}}"
|
||||
vm_tags: "{{ terraform_vars_vm_tags | default(omit)}}"
|
||||
|
||||
- name: Update Terraform workspace path
|
||||
ansible.builtin.lineinfile:
|
||||
path: "{{ terraform_ansible_inventory }}"
|
||||
regexp: '^state_file:.*tfstate$'
|
||||
line: "state_file: terraform.tfstate.d/{{ terraform_vars_vm_env }}/terraform.tfstate"
|
||||
when: terraform_vars_vm_env is defined
|
||||
|
||||
- name: Refresh inventory
|
||||
ansible.builtin.meta: refresh_inventory
|
||||
Reference in New Issue
Block a user