177 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
defaults = {
 | 
						|
    'apt': {
 | 
						|
        'packages': {
 | 
						|
            'apt-listchanges': {
 | 
						|
                'installed': False,
 | 
						|
            },
 | 
						|
        },
 | 
						|
        'config': {
 | 
						|
            'DPkg': {
 | 
						|
                'Pre-Install-Pkgs': {
 | 
						|
                    '/usr/sbin/dpkg-preconfigure --apt || true',
 | 
						|
                },
 | 
						|
                'Post-Invoke': {
 | 
						|
                    # keep package cache empty
 | 
						|
                    '/bin/rm -f /var/cache/apt/archives/*.deb || true',
 | 
						|
                },
 | 
						|
                'Options': {
 | 
						|
                    # https://unix.stackexchange.com/a/642541/357916
 | 
						|
                    '--force-confold',
 | 
						|
                    '--force-confdef',
 | 
						|
                },
 | 
						|
            },
 | 
						|
            'APT': {
 | 
						|
                'NeverAutoRemove': {
 | 
						|
                    '^firmware-linux.*',
 | 
						|
                    '^linux-firmware$',
 | 
						|
                    '^linux-image-[a-z0-9]*$',
 | 
						|
                    '^linux-image-[a-z0-9]*-[a-z0-9]*$',
 | 
						|
                },
 | 
						|
                'VersionedKernelPackages': {
 | 
						|
                    # kernels
 | 
						|
                    'linux-.*',
 | 
						|
                    'kfreebsd-.*',
 | 
						|
                    'gnumach-.*',
 | 
						|
                    # (out-of-tree) modules
 | 
						|
                    '.*-modules',
 | 
						|
                    '.*-kernel',
 | 
						|
                },
 | 
						|
                'Never-MarkAuto-Sections': {
 | 
						|
                    'metapackages',
 | 
						|
                    'tasks',
 | 
						|
                },
 | 
						|
                'Move-Autobit-Sections': {
 | 
						|
                    'oldlibs',
 | 
						|
                },
 | 
						|
                'Update': {
 | 
						|
                    # https://unix.stackexchange.com/a/653377/357916
 | 
						|
                    'Error-Mode': 'any',
 | 
						|
                },
 | 
						|
            },
 | 
						|
        },
 | 
						|
        'sources': {},
 | 
						|
    },
 | 
						|
    'monitoring': {
 | 
						|
        'services': {
 | 
						|
            'apt upgradable': {
 | 
						|
                'vars.command': '/usr/lib/nagios/plugins/check_apt_upgradable',
 | 
						|
                'vars.sudo': True,
 | 
						|
                'check_interval': '1h',
 | 
						|
            },
 | 
						|
            'current kernel': {
 | 
						|
                'vars.command': 'ls /boot/vmlinuz-* | sort -V | tail -n 1 | xargs -n1 basename | cut -d "-" -f 2- | grep -q "^$(uname -r)$"',
 | 
						|
                'check_interval': '1h',
 | 
						|
            },
 | 
						|
            'apt reboot-required': {
 | 
						|
                'vars.command': 'ls /var/run/reboot-required 2> /dev/null && exit 1 || exit 0',
 | 
						|
                'check_interval': '1h',
 | 
						|
            },
 | 
						|
        },
 | 
						|
    },
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
@metadata_reactor.provides(
 | 
						|
    'apt/sources',
 | 
						|
)
 | 
						|
def key(metadata):
 | 
						|
    return {
 | 
						|
        'apt': {
 | 
						|
            'sources': {
 | 
						|
                source_name: {
 | 
						|
                    'key': source_name,
 | 
						|
                }
 | 
						|
                    for source_name, source_config in metadata.get('apt/sources').items()
 | 
						|
                    if 'key' not in source_config
 | 
						|
            },
 | 
						|
        },
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
@metadata_reactor.provides(
 | 
						|
    'apt/sources',
 | 
						|
)
 | 
						|
def signed_by(metadata):
 | 
						|
    return {
 | 
						|
        'apt': {
 | 
						|
            'sources': {
 | 
						|
                source_name: {
 | 
						|
                    'options': {
 | 
						|
                        'Signed-By': '/etc/apt/keyrings/' + metadata.get(f'apt/sources/{source_name}/key') + '.' + repo.libs.apt.find_keyfile_extension(node, metadata.get(f'apt/sources/{source_name}/key')),
 | 
						|
                    },
 | 
						|
                }
 | 
						|
                    for source_name in metadata.get('apt/sources')
 | 
						|
            },
 | 
						|
        },
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
@metadata_reactor.provides(
 | 
						|
    'apt/config',
 | 
						|
    'apt/packages',
 | 
						|
)
 | 
						|
def unattended_upgrades(metadata):
 | 
						|
    return {
 | 
						|
        'apt': {
 | 
						|
            'config': {
 | 
						|
                'APT': {
 | 
						|
                    'Periodic': {
 | 
						|
                        'Update-Package-Lists': '1',
 | 
						|
                        'Unattended-Upgrade': '1',
 | 
						|
                    },
 | 
						|
                },
 | 
						|
                'Unattended-Upgrade': {
 | 
						|
                    'Origins-Pattern': {
 | 
						|
                        "origin=*",
 | 
						|
                    },
 | 
						|
                },
 | 
						|
            },
 | 
						|
            'packages': {
 | 
						|
                'unattended-upgrades': {},
 | 
						|
            },
 | 
						|
        },
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
# @metadata_reactor.provides(
 | 
						|
#     'apt/config',
 | 
						|
#     'apt/list_changes',
 | 
						|
# )
 | 
						|
# def listchanges(metadata):
 | 
						|
#     return {
 | 
						|
#         'apt': {
 | 
						|
#             'config': {
 | 
						|
#                 'DPkg': {
 | 
						|
#                     'Pre-Install-Pkgs': {
 | 
						|
#                         '/usr/bin/apt-listchanges --apt || test $? -lt 10',
 | 
						|
#                     },
 | 
						|
#                     'Tools': {
 | 
						|
#                         'Options': {
 | 
						|
#                             '/usr/bin/apt-listchanges': {
 | 
						|
#                                 'Version': '2',
 | 
						|
#                                 'InfoFD': '20',
 | 
						|
#                             },
 | 
						|
#                         },
 | 
						|
#                     },
 | 
						|
#                 },
 | 
						|
#                 'Dir': {
 | 
						|
#                     'Etc': {
 | 
						|
#                         'apt-listchanges-main': 'listchanges.conf',
 | 
						|
#                         'apt-listchanges-parts': 'listchanges.conf.d',
 | 
						|
#                     },
 | 
						|
#                 },
 | 
						|
#             },
 | 
						|
#             'list_changes': {
 | 
						|
#                 'apt': {
 | 
						|
#                     'frontend': 'pager',
 | 
						|
#                     'which': 'news',
 | 
						|
#                     'email_address': 'root',
 | 
						|
#                     'email_format': 'text',
 | 
						|
#                     'confirm': 'false',
 | 
						|
#                     'headers': 'false',
 | 
						|
#                     'reverse': 'false',
 | 
						|
#                     'save_seen': '/var/lib/apt/listchanges.db',
 | 
						|
#                 },
 | 
						|
#             },
 | 
						|
#         },
 | 
						|
#     }
 |