mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-22 18:00:35 +00:00
Implemented unattended upgrades plugin
This commit is contained in:
parent
b9081891dd
commit
677ec22a04
3 changed files with 82 additions and 0 deletions
12
plugins/unattended_upgrades/__init__.py
Normal file
12
plugins/unattended_upgrades/__init__.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
|
||||
|
||||
def tasks(tasklist, manifest):
|
||||
import tasks
|
||||
tasklist.add(tasks.AddUnattendedUpgradesPackage())
|
||||
tasklist.add(tasks.EnablePeriodicUpgrades())
|
||||
|
||||
|
||||
def validate_manifest(data, schema_validate):
|
||||
from os import path
|
||||
schema_path = path.normpath(path.join(path.dirname(__file__), 'manifest-schema.json'))
|
||||
schema_validate(data, schema_path)
|
29
plugins/unattended_upgrades/manifest-schema.json
Normal file
29
plugins/unattended_upgrades/manifest-schema.json
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
||||
"title": "Unattended upgrades plugin manifest",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"plugins": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"unattended_upgrades": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"update_interval": {
|
||||
"type": "integer"
|
||||
},
|
||||
"download_interval": {
|
||||
"type": "integer"
|
||||
},
|
||||
"upgrade_interval": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": ["update_interval", "download_interval", "upgrade_interval"]
|
||||
}
|
||||
},
|
||||
"required": ["unattended_upgrades"]
|
||||
}
|
||||
},
|
||||
"required": ["plugins"]
|
||||
}
|
41
plugins/unattended_upgrades/tasks.py
Normal file
41
plugins/unattended_upgrades/tasks.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
from base import Task
|
||||
from common import phases
|
||||
from providers.ec2.tasks.packages import ImagePackages
|
||||
from common.tasks.host import CheckPackages
|
||||
|
||||
|
||||
class AddUnattendedUpgradesPackage(Task):
|
||||
description = 'Adding ``unattended-upgrades\'\' to the image packages'
|
||||
phase = phases.preparation
|
||||
after = [ImagePackages]
|
||||
before = [CheckPackages]
|
||||
|
||||
def run(self, info):
|
||||
info.img_packages[0].add('unattended-upgrades')
|
||||
|
||||
|
||||
class EnablePeriodicUpgrades(Task):
|
||||
description = 'Writing the periodic upgrades apt config file'
|
||||
phase = phases.system_modification
|
||||
|
||||
def run(self, info):
|
||||
import os.path
|
||||
periodic_path = os.path.join(info.root, 'etc/apt/apt.conf.d/02periodic')
|
||||
update_interval = info.manifest.plugins['unattended_upgrades']['update_interval']
|
||||
download_interval = info.manifest.plugins['unattended_upgrades']['download_interval']
|
||||
upgrade_interval = info.manifest.plugins['unattended_upgrades']['upgrade_interval']
|
||||
with open(periodic_path, 'w') as periodic:
|
||||
periodic.write(('// Enable the update/upgrade script (0=disable)\n'
|
||||
'APT::Periodic::Enable "1";\n\n'
|
||||
'// Do "apt-get update" automatically every n-days (0=disable)\n'
|
||||
'APT::Periodic::Update-Package-Lists "{update_interval}";\n\n'
|
||||
'// Do "apt-get upgrade --download-only" every n-days (0=disable)\n'
|
||||
'APT::Periodic::Download-Upgradeable-Packages "{download_interval}";\n\n'
|
||||
'// Run the "unattended-upgrade" security upgrade script\n'
|
||||
'// every n-days (0=disabled)\n'
|
||||
'// Requires the package "unattended-upgrades" and will write\n'
|
||||
'// a log in /var/log/unattended-upgrades\n'
|
||||
'APT::Periodic::Unattended-Upgrade "{upgrade_interval}";\n'
|
||||
.format(update_interval=update_interval,
|
||||
download_interval=download_interval,
|
||||
upgrade_interval=upgrade_interval)))
|
Loading…
Add table
Reference in a new issue