Skip to content

Commit

Permalink
Pre Proxmox finalisation #1
Browse files Browse the repository at this point in the history
  • Loading branch information
aybarsm committed Nov 30, 2024
1 parent b02f066 commit af45913
Show file tree
Hide file tree
Showing 14 changed files with 183 additions and 176 deletions.
10 changes: 5 additions & 5 deletions roles/auth/vars/main.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
auth__all: "{{ {'host': auth__host, 'group': auth__group, 'default': auth__default} | aybarsm.helper.role_items(only=auth__use_only) }}"

auth__users_all: "{{ auth__all | selectattr('entry__type', 'eq', 'user') }}"
auth__users_all: "{{ auth__all | selectattr('_type', 'eq', 'user') }}"

auth__authorized_keys_all: "{{ auth__all | selectattr('entry__type', 'eq', 'authorized_key') }}"
auth__authorized_keys_all: "{{ auth__all | selectattr('_type', 'eq', 'authorized_key') }}"

auth__sshd_config_all: "{{ auth__all | selectattr('entry__type', 'eq', 'sshd_config') |
auth__sshd_config_all: "{{ auth__all | selectattr('_type', 'eq', 'sshd_config') |
sort(attribute='value', reverse=true) | sort(attribute='name', reverse=false) }}"

auth__ssh_config_all: "{{ auth__all | selectattr('entry__type', 'eq', 'ssh_config') |
auth__ssh_config_all: "{{ auth__all | selectattr('_type', 'eq', 'ssh_config') |
sort(attribute='value', reverse=true) | sort(attribute='name', reverse=false) }}"

__auth__key_distribute_query: "*.auth__users_apply.results[*] | [] |
[?contains(not_null(item.entry__distribute_ssh_key,``),`{{ inventory_hostname }}`)].{user: name, key: ssh_public_key}"
[?contains(not_null(item._distribute_ssh_key,``),`{{inventory_hostname }}`)].{user: name, key: ssh_public_key}"
6 changes: 3 additions & 3 deletions roles/network/vars/main.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
network__all: "{{ {'host': network__host, 'group': network__group, 'default': network__default} | aybarsm.helper.role_items(only=network__use_only) }}"

##### BEGIN: network sysctl vars
network__sysctl_all: "{{ network__all | selectattr('entry__type', 'eq', 'sysctl') |
network__sysctl_all: "{{ network__all | selectattr('_type', 'eq', 'sysctl') |
aybarsm.helper.replace_aliases(__ansible.modules.ansible_posix_sysctl.aliases, removeAliases=true) |
community.general.json_query('[?not_null(name) && not_null(value)]') |
unique(attribute='name') }}"
##### END: network sysctl vars

##### BEGIN: network hosts vars
network__hosts_all: "{{ network__all | selectattr('entry__type', 'eq', 'host') |
network__hosts_all: "{{ network__all | selectattr('_type', 'eq', 'host') |
aybarsm.helper.replace_aliases({'fqdn': ['hostname']}) | unique(attribute='ip') }}"

# Sort hosts by hostname to avoid unneccessary changes
Expand All @@ -17,5 +17,5 @@ network__hosts_all_ipv6: "{{ network__hosts_all | selectattr('ip', 'ansible.util
##### END: network hosts vars

##### BEGIN: network iptables vars
network__iptables_all: "{{ network__all | selectattr('entry__type', 'eq', 'iptables') }}"
network__iptables_all: "{{ network__all | selectattr('_type', 'eq', 'iptables') }}"
##### END: network iptables vars
6 changes: 3 additions & 3 deletions roles/pkg_mgr/tasks/apt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
ansible.builtin.include_tasks:
file: apt/repo_keys.yml
vars:
repo_keys: "{{ pkg_mgr__all | selectattr('entry__type', 'eq', 'repo_key') | aybarsm.helper.all_except(['entry__type']) }}"
repo_keys: "{{ pkg_mgr__all | selectattr('_type', 'eq', 'repo_key') | aybarsm.helper.all_except(['_type']) }}"
when:
- pkg_mgr__manage_repo_keys | bool
- repo_keys | length > 0
Expand All @@ -12,7 +12,7 @@
ansible.builtin.include_tasks:
file: apt/repos.yml
vars:
repos: "{{ pkg_mgr__all | selectattr('entry__type', 'eq', 'repo') | aybarsm.helper.all_except(['entry__type']) }}"
repos: "{{ pkg_mgr__all | selectattr('_type', 'eq', 'repo') | aybarsm.helper.all_except(['_type']) }}"
when:
- pkg_mgr__manage_repos | bool
- repos | length > 0
Expand All @@ -22,7 +22,7 @@
ansible.builtin.include_tasks:
file: apt/packages.yml
vars:
packages: "{{ pkg_mgr__all | selectattr('entry__type', 'eq', 'package') | aybarsm.helper.all_except(['entry__type']) }}"
packages: "{{ pkg_mgr__all | selectattr('_type', 'eq', 'package') | aybarsm.helper.all_except(['_type']) }}"
when:
- pkg_mgr__manage_packages | bool
- packages | length > 0
Expand Down
8 changes: 4 additions & 4 deletions roles/pkg_mgr/vars/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ pkg_mgr__all: "{{ {'host': pkg_mgr__host, 'group': pkg_mgr__group, 'default': pk

__pkg_mgr__use_apt: "{{ ansible_os_family | default('') | lower == 'debian' and pkg_mgr__package_module == 'specific' }}"

# pkg_mgr__packages: "{{ pkg_mgr__all | selectattr('entry__type', 'eq', 'package') }}"
# pkg_mgr__repo_keys: "{{ pkg_mgr__all | selectattr('entry__type', 'eq', 'repo_key') }}"
# pkg_mgr__repos: "{{ pkg_mgr__all | selectattr('entry__type', 'eq', 'repo') }}"
# pkg_mgr__repo_lists: "{{ pkg_mgr__all | selectattr('entry__type', 'eq', 'repo_list') }}"
# pkg_mgr__packages: "{{ pkg_mgr__all | selectattr('_type', 'eq', 'package') }}"
# pkg_mgr__repo_keys: "{{ pkg_mgr__all | selectattr('_type', 'eq', 'repo_key') }}"
# pkg_mgr__repos: "{{ pkg_mgr__all | selectattr('_type', 'eq', 'repo') }}"
# pkg_mgr__repo_lists: "{{ pkg_mgr__all | selectattr('_type', 'eq', 'repo_list') }}"
102 changes: 51 additions & 51 deletions roles/proxmox/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,54 +19,54 @@ proxmox__default: []
proxmox__group: []
proxmox__host: []

proxmox__repos:
types:
enterprise:
url: https://enterprise.proxmox.com/debian
no_subscription:
url: http://download.proxmox.com/debian
keys:
bookworm:
url: https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg
keyring: /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
bullseye:
url: https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg
keyring: /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg

proxmox__purposes:
pve:
packages: ['pve-manager']
repo:
file: 'pve-<<REPO_TYPE>>'
suffix: 'pve-<<REPO_TYPE>>'
pbs:
packages: ['proxmox-backup-server']
repo:
file: 'pbs-<<REPO_TYPE>>'
suffix: 'pbs-<<REPO_TYPE>>'
pmg:
packages: ['proxmox-mailgateway']
repo:
file: 'pmg-<<REPO_TYPE>>'
suffix: 'pbs-<<REPO_TYPE>>'
ceph_pacific:
packages: ['ceph', 'ceph-common', 'ceph-mds', 'ceph-fuse']
repo:
file: 'ceph'
suffix: '<<REPO_TYPE>>'
ceph_quincy:
packages: ['ceph', 'ceph-common', 'ceph-mds', 'ceph-fuse']
repo:
file: 'ceph'
suffix: '<<REPO_TYPE>>'
ceph_reef:
packages: ['ceph', 'ceph-common', 'ceph-mds', 'ceph-fuse']
repo:
file: 'ceph'
suffix: '<<REPO_TYPE>>'
zfs:
packages: ['zfsutils-linux', 'zfs-initramfs', 'zfs-zed']
freenas:
packages: ['librest-client-perl', 'git', 'patch']
task_file: freenas.yml
remote_src: true
proxmox__role_config:
repo:
type:
enterprise:
url: https://enterprise.proxmox.com/debian
no_subscription:
url: http://download.proxmox.com/debian
key:
bookworm:
url: https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg
keyring: /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
bullseye:
url: https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg
keyring: /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
purpose:
pve:
packages: ['pve-manager']
repo:
file: 'pve-<<REPO_TYPE>>'
suffix: 'pve-<<REPO_TYPE>>'
pbs:
packages: ['proxmox-backup-server']
repo:
file: 'pbs-<<REPO_TYPE>>'
suffix: 'pbs-<<REPO_TYPE>>'
pmg:
packages: ['proxmox-mailgateway']
repo:
file: 'pmg-<<REPO_TYPE>>'
suffix: 'pbs-<<REPO_TYPE>>'
ceph_pacific:
packages: ['ceph', 'ceph-common', 'ceph-mds', 'ceph-fuse']
repo:
file: 'ceph'
suffix: '<<REPO_TYPE>>'
ceph_quincy:
packages: ['ceph', 'ceph-common', 'ceph-mds', 'ceph-fuse']
repo:
file: 'ceph'
suffix: '<<REPO_TYPE>>'
ceph_reef:
packages: ['ceph', 'ceph-common', 'ceph-mds', 'ceph-fuse']
repo:
file: 'ceph'
suffix: '<<REPO_TYPE>>'
zfs:
packages: ['zfsutils-linux', 'zfs-initramfs', 'zfs-zed']
freenas:
packages: ['librest-client-perl', 'git', 'patch']
task_file: freenas.yml
remote_src: true
10 changes: 5 additions & 5 deletions roles/proxmox/tasks/datacenter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
ansible.builtin.include_tasks:
file: datacenter/pools.yml
vars:
proxmox_datacenter_pools: "{{ proxmox__all | selectattr('entry__type', 'eq', 'pool') }}"
proxmox_datacenter_pools: "{{ proxmox__all | selectattr('_type', 'eq', 'pool') }}"
when:
- proxmox__manage_pools
- proxmox_datacenter_pools | length > 0
Expand All @@ -12,7 +12,7 @@
ansible.builtin.include_tasks:
file: datacenter/roles.yml
vars:
proxmox_datacenter_roles: "{{ proxmox__all | selectattr('entry__type', 'eq', 'role') }}"
proxmox_datacenter_roles: "{{ proxmox__all | selectattr('_type', 'eq', 'role') }}"
when:
- proxmox__manage_roles
- proxmox_datacenter_roles | length > 0
Expand All @@ -21,7 +21,7 @@
ansible.builtin.include_tasks:
file: datacenter/user_groups.yml
vars:
proxmox_datacenter_user_groups: "{{ proxmox__all | selectattr('entry__type', 'eq', 'user_group') }}"
proxmox_datacenter_user_groups: "{{ proxmox__all | selectattr('_type', 'eq', 'user_group') }}"
when:
- proxmox__manage_user_groups
- proxmox_datacenter_user_groups | length > 0
Expand All @@ -30,7 +30,7 @@
ansible.builtin.include_tasks:
file: datacenter/users.yml
vars:
proxmox_datacenter_users: "{{ proxmox__all | selectattr('entry__type', 'eq', 'user') }}"
proxmox_datacenter_users: "{{ proxmox__all | selectattr('_type', 'eq', 'user') }}"
when:
- proxmox__manage_users
- proxmox_datacenter_users | length > 0
Expand All @@ -39,7 +39,7 @@
ansible.builtin.include_tasks:
file: datacenter/acls.yml
vars:
proxmox_datacenter_acls: "{{ proxmox__all | selectattr('entry__type', 'eq', 'acl') }}"
proxmox_datacenter_acls: "{{ proxmox__all | selectattr('_type', 'eq', 'acl') }}"
when:
- proxmox__manage_acls
- proxmox_datacenter_acls | length > 0
133 changes: 64 additions & 69 deletions roles/proxmox/tasks/freenas.yml
Original file line number Diff line number Diff line change
@@ -1,72 +1,67 @@
---
- 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: Apply Freenas
block:
- name: Create Temp Directory for Git Repo
ansible.builtin.tempfile:
state: directory
register: proxmox__freenas__temp_dir
delegate_to: "{{ inventory_hostname if __proxmox__purposes.freenas.remote_src else '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: 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: "{{ inventory_hostname if __proxmox__purposes.freenas.remote_src else 'localhost' }}"
register: proxmox__freenas__git
when: proxmox__freenas__temp_dir.path is defined

- 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

- 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
- 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:
- _type: patch
src: "{{ proxmox__freenas__temp_dir.path }}/pve-manager/js/pvemanagerlib.js.patch"
dest: /usr/share/pve-manager/js/pvemanagerlib.js
remote_src: "{{ __proxmox__purposes.freenas.remote_src }}"
_handler: restart_pve_services
- _type: patch
src: "{{ proxmox__freenas__temp_dir.path }}/perl5/PVE/Storage/ZFSPlugin.pm.patch"
dest: /usr/share/perl5/PVE/Storage/ZFSPlugin.pm
remote_src: "{{ __proxmox__purposes.freenas.remote_src }}"
_handler: restart_pve_services
- _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: "{{ __proxmox__purposes.freenas.remote_src }}"
_handler: restart_pve_services
- _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: "{{ __proxmox__purposes.freenas.remote_src }}"
_handler: restart_pve_services
- _type: handler
_name: restart_pve_services
_when: any
_actions: "{{ {'name': ['pvedaemon', 'pveproxy', 'pvestatd', 'pve-ha-lrm', 'pve-ha-crm']} |
aybarsm.helper.to_list_of_dicts({'_type': 'service', 'state': 'restarted'}) }}"
register: proxmox__freenas__patch
when: proxmox__freenas__temp_dir.path is defined

always:
- name: Remove Git Repo Temp Directory
ansible.builtin.file:
path: "{{ proxmox__freenas__temp_dir.path }}"
state: absent
delegate_to: "{{ inventory_hostname if __proxmox__purposes.freenas.remote_src else 'localhost' }}"
when: proxmox__freenas__temp_dir.path is defined
Loading

0 comments on commit af45913

Please sign in to comment.