Skip to content

Commit

Permalink
Proxmox freenas tasks #3
Browse files Browse the repository at this point in the history
  • Loading branch information
aybarsm committed Nov 30, 2024
1 parent f372764 commit b02f066
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 140 deletions.
37 changes: 2 additions & 35 deletions roles/proxmox/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,38 +10,6 @@ proxmox__manage_users: false
proxmox__manage_acls: false

proxmox__remove_subscription_warning: false
proxmox__use_freenas: false

proxmox__freenas:
remote_src: true
git:
repo: https://github.com/TheGrandWazoo/freenas-proxmox
clone: true
file_mgr:
- entry__type: patch
src: pve-manager/js/pvemanagerlib.js.patch
dest: /usr/share/pve-manager/js/pvemanagerlib.js
entry__handlers: restart_pve_services
- entry__type: patch
src: pve-manager/js/pvemanagerlib.js.patch
dest: /usr/share/pve-manager/js/pvemanagerlib.js
entry__handlers: restart_pve_services
- entry__type: patch
src: pve-manager/js/pvemanagerlib.js.patch
dest: /usr/share/pve-manager/js/pvemanagerlib.js
entry__handlers: restart_pve_services
- entry__type: patch
src: pve-manager/js/pvemanagerlib.js.patch
dest: /usr/share/pve-manager/js/pvemanagerlib.js
entry__handlers: restart_pve_services
- entry__type: copy
src: perl5/PVE/Storage/LunCmd/FreeNAS.pm
dest: /usr/share/perl5/PVE/Storage/LunCmd/FreeNAS.pm
entry__handlers: restart_pve_services
- entry__type: handlers
name: restart_pve_services
condition: any
handlers: "{{ {'name': ['pvedaemon', 'pveproxy', 'pvestatd', 'pve-ha-lrm', 'pve-ha-crm']} | aybarsm.helper.to_list_of_dicts({'entry__type': 'service', 'state': 'restarted'}) }}"

proxmox__clusters: {}

Expand Down Expand Up @@ -100,6 +68,5 @@ proxmox__purposes:
packages: ['zfsutils-linux', 'zfs-initramfs', 'zfs-zed']
freenas:
packages: ['librest-client-perl', 'git', 'patch']
params:
task_file: freenas.yml
remote_src: true
task_file: freenas.yml
remote_src: true
161 changes: 67 additions & 94 deletions roles/proxmox/tasks/freenas.yml
Original file line number Diff line number Diff line change
@@ -1,99 +1,72 @@
---
- name: Apply Proxmox Freenas Changes
block:
- name: Set Facts for Proxmox Freenas
ansible.builtin.set_fact:
freenas_remote_src: "{{ proxmox__purposes.freenas.params.remote_src | default(true) }}"
freenas_delegate: "{{ inventory_hostname if freenas_remote_src else 'localhost' }}"
register: proxmox__freenas__set_fact
- name: Set Facts for Proxmox Freenas
ansible.builtin.set_fact:
freenas_remote_src: "{{ freenas_remote_src }}"
freenas_delegate: "{{ inventory_hostname if freenas_remote_src else 'localhost' }}"
vars:
freenas_remote_src: "{{ __proxmox__purposes.freenas.remote_src | default(proxmox__purposes.freenas.remote_src) }}"
register: proxmox__freenas__set_fact

- name: Create Temp Directory for Git Repo
ansible.builtin.tempfile:
state: directory
register: proxmox__freenas__temp_dir
delegate_to: "{{ freenas_delegate }}"

- name: Debug
ansible.builtin.debug:
msg:
proxmox__freenas__temp_dir: "{{ proxmox__freenas__temp_dir }}"
delegate_to: localhost
- name: Create Temp Directory for Git Repo
ansible.builtin.tempfile:
state: directory
register: proxmox__freenas__temp_dir
delegate_to: "{{ freenas_delegate }}"

- name: Include Git Task to Clone Freenas Repo
ansible.builtin.include_role:
name: aybarsm.helper.misc
tasks_from: git.yml
vars:
misc__git:
repo: https://github.com/TheGrandWazoo/freenas-proxmox
clone: true
dest: proxmox__freenas__temp_dir.path
register: proxmox__freenas__git
delegate_to: "{{ freenas_delegate }}"
when: proxmox__freenas__temp_dir.path is defined

- name: Include File Manager Role to Apply Changes
ansible.builtin.include_role:
name: aybarsm.helper.file_mgr
vars:
file_mgr__role_enabled: true
file_mgr__no_log: false
file_mgr__use_only: ['host']
file_mgr__host:
- entry__type: patch
src: "{{ proxmox__freenas__temp_dir.path }}/pve-manager/js/pvemanagerlib.js.patch"
# dest: /usr/share/pve-manager/js/pvemanagerlib.js
dest: /root/pve_freenas/pvemanagerlib.js
backup: true
remote_src: "{{ freenas_remote_src }}"
entry__handlers: restart_pve_services
- entry__type: patch
src: "{{ proxmox__freenas__temp_dir.path }}/perl5/PVE/Storage/ZFSPlugin.pm.patch"
dest: /root/pve_freenas/ZFSasdsadsaPlugin.pm
# dest: /root/pve_freenas/ZFSPlugin.pm
# dest: /usr/share/perl5/PVE/Storage/ZFSPlugin.pm
backup: true
remote_src: "{{ freenas_remote_src }}"
entry__handlers: restart_pve_services
- entry__type: patch
src: "{{ proxmox__freenas__temp_dir.path }}/pve-docs/api-viewer/apidoc.js.patch"
# dest: /usr/share/pve-docs/api-viewer/apidoc.js
dest: /root/pve_freenas/apidoc.js
backup: true
remote_src: "{{ freenas_remote_src }}"
entry__handlers: restart_pve_services
- entry__type: copy
src: "{{ proxmox__freenas__temp_dir.path }}/perl5/PVE/Storage/LunCmd/FreeNAS.pm"
# dest: /usr/share/perl5/PVE/Storage/LunCmd/FreeNAS.pm
dest: /root/pve_freenas/FreeNAS.pm
backup: true
remote_src: "{{ freenas_remote_src }}"
entry__handlers: restart_pve_services
- entry__type: handlers
name: restart_pve_services
condition: any
handlers: "{{ {'name': ['pvedaemon', 'pveproxy', 'pvestatd', 'pve-ha-lrm', 'pve-ha-crm']} |
aybarsm.helper.to_list_of_dicts({'entry__type': 'service', 'state': 'restarted'}) }}"
register: proxmox__freenas__patch
when: proxmox__freenas__temp_dir.path is defined

rescue:
- name: Restate Backup Files on Error
ansible.builtin.file:
src: "{{ item.entry__task.backup_file }}"
dest: "{{ item.entry__task.dest }}"
loop: "{{ backup_files }}"
vars:
backup_files: "{{ file_mgr__items | selectattr('entry__task.backup_file', 'defined') }}"
when: backup_files | length > 0
register: proxmox__freenas__restore
- name: Include Git Task to Clone Freenas Repo
ansible.builtin.include_role:
name: aybarsm.helper.misc
tasks_from: ansible/builtin/git.yml
vars:
misc__item:
repo: https://github.com/TheGrandWazoo/freenas-proxmox
clone: true
dest: "{{ proxmox__freenas__temp_dir.path }}"
__module:
delegate_to: "{{ freenas_delegate }}"
register: proxmox__freenas__git
when: proxmox__freenas__temp_dir.path is defined

always:
- name: Remove Temp Directory
ansible.builtin.file:
path: "{{ proxmox__freenas__temp_dir.path }}"
state: absent
delegate_to: "{{ freenas_delegate }}"
when: proxmox__freenas__temp_dir.path is defined

- name: Include File Manager Role to Apply Changes
ansible.builtin.include_role:
name: aybarsm.helper.file_mgr
vars:
file_mgr__role_enabled: true
file_mgr__strict_safe: true
file_mgr__no_log: false
file_mgr__use_only: ['host']
file_mgr__host:
- entry__type: patch
src: "{{ proxmox__freenas__temp_dir.path }}/pve-manager/js/pvemanagerlib.js.patch"
dest: /usr/share/pve-manager/js/pvemanagerlib.js
remote_src: "{{ freenas_remote_src }}"
entry__handlers: restart_pve_services
- entry__type: patch
src: "{{ proxmox__freenas__temp_dir.path }}/perl5/PVE/Storage/ZFSPlugin.pm.patch"
dest: /usr/share/perl5/PVE/Storage/ZFSPlugin.pm
remote_src: "{{ freenas_remote_src }}"
entry__handlers: restart_pve_services
- entry__type: patch
src: "{{ proxmox__freenas__temp_dir.path }}/pve-docs/api-viewer/apidoc.js.patch"
dest: /usr/share/pve-docs/api-viewer/apidoc.js
remote_src: "{{ freenas_remote_src }}"
entry__handlers: restart_pve_services
- entry__type: copy
src: "{{ proxmox__freenas__temp_dir.path }}/perl5/PVE/Storage/LunCmd/FreeNAS.pm"
dest: /usr/share/perl5/PVE/Storage/LunCmd/FreeNAS.pm
remote_src: "{{ freenas_remote_src }}"
entry__handlers: restart_pve_services
- entry__type: handlers
name: restart_pve_services
condition: any
handlers: "{{ {'name': ['pvedaemon', 'pveproxy', 'pvestatd', 'pve-ha-lrm', 'pve-ha-crm']} |
aybarsm.helper.to_list_of_dicts({'entry__type': 'service', 'state': 'restarted'}) }}"
register: proxmox__freenas__patch
when: proxmox__freenas__temp_dir.path is defined

- name: Remove Git Repo Temp Directory
ansible.builtin.file:
path: "{{ proxmox__freenas__temp_dir.path }}"
state: absent
delegate_to: "{{ freenas_delegate }}"
when: proxmox__freenas__temp_dir.path is defined
18 changes: 9 additions & 9 deletions roles/proxmox/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
- name: Include Package Manager Tasks
ansible.builtin.include_tasks:
name: package_manager.yml
when:
- proxmox__role_enabled
- __proxmox__pkg_mgr | length > 0
# - name: Include Package Manager Tasks
# ansible.builtin.include_tasks:
# file: package_manager.yml
# when:
# - proxmox__role_enabled
# - __proxmox__pkg_mgr | length > 0

# - name: Include Datacenter Tasks
# ansible.builtin.include_tasks:
Expand All @@ -23,10 +23,10 @@
# when:
# - proxmox__role_enabled
# - proxmox__remove_subscription_warning | bool

- name: Include Freenas Tasks
ansible.builtin.include_tasks:
file: "{{ proxmox__purposes.freenas.params.task_file }}"
file: "{{ __proxmox__purposes.freenas.task_file | default(proxmox__purposes.freenas.task_file) }}"
when:
- proxmox__role_enabled
- proxmox__all | selectattr('entry__type', 'eq', 'purpose') | selectattr('name', 'eq', 'freenas') | length > 0
- __proxmox__purposes.freenas is defined
2 changes: 0 additions & 2 deletions roles/proxmox/tasks/package_manager.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,5 @@
pkg_mgr__package_module: specific
pkg_mgr__upgrade_strategy: never
pkg_mgr__use_only: ['host']
pkg_mgr__default: []
pkg_mgr__group: []
pkg_mgr__host: "{{ __proxmox__pkg_mgr }}"
register: proxmox__pkg_mgr
4 changes: 4 additions & 0 deletions roles/proxmox/vars/main.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
proxmox__all: "{{ {'host': proxmox__host, 'group': proxmox__group, 'default': proxmox__default} | aybarsm.helper.role_items(only=proxmox__use_only) }}"
__proxmox__purposes: "{{ {
'key': (proxmox__all | selectattr('entry__type', 'eq', 'purpose') | map(attribute='name')),
'value': (proxmox__all | selectattr('entry__type', 'eq', 'purpose') | map('aybarsm.helper.all_except', ['entry__type', 'name']))
} | aybarsm.helper.to_list_of_dicts() | items2dict }}"

__proxmox__cluster_members_query: '*.{
host: inventory_hostname,
Expand Down

0 comments on commit b02f066

Please sign in to comment.