ec2: Add tasks for EC2 tuning

Snatched from PR #256 by @JamesBromberger
This commit is contained in:
Anders Ingemann 2016-06-04 21:56:08 +02:00
parent c14687a171
commit 98de220f78
4 changed files with 63 additions and 0 deletions

View file

@ -8,6 +8,7 @@ import tasks.filesystem
import tasks.boot import tasks.boot
import tasks.network import tasks.network
import tasks.initd import tasks.initd
import tasks.tuning
from bootstrapvz.common.tasks import volume from bootstrapvz.common.tasks import volume
from bootstrapvz.common.tasks import filesystem from bootstrapvz.common.tasks import filesystem
from bootstrapvz.common.tasks import boot from bootstrapvz.common.tasks import boot
@ -15,6 +16,7 @@ from bootstrapvz.common.tasks import grub
from bootstrapvz.common.tasks import initd from bootstrapvz.common.tasks import initd
from bootstrapvz.common.tasks import loopback from bootstrapvz.common.tasks import loopback
from bootstrapvz.common.tasks import kernel from bootstrapvz.common.tasks import kernel
from bootstrapvz.common.tasks import apt
def validate_manifest(data, validator, error): def validate_manifest(data, validator, error):
@ -65,6 +67,8 @@ def resolve_tasks(taskset, manifest):
tasks.ami.AMIName, tasks.ami.AMIName,
tasks.connection.Connect, tasks.connection.Connect,
tasks.tuning.TuneSystem,
tasks.tuning.BlackListModules,
boot.BlackListModules, boot.BlackListModules,
boot.DisableGetTTYs, boot.DisableGetTTYs,
initd.AddExpandRoot, initd.AddExpandRoot,
@ -82,6 +86,8 @@ def resolve_tasks(taskset, manifest):
taskset.add(tasks.network.EnableDHCPCDDNS) taskset.add(tasks.network.EnableDHCPCDDNS)
if manifest.release >= jessie: if manifest.release >= jessie:
taskset.add(apt.AddBackports)
taskset.add(tasks.tuning.SetCloudInitMountOptions)
taskset.add(tasks.packages.AddWorkaroundGrowpart) taskset.add(tasks.packages.AddWorkaroundGrowpart)
taskset.add(initd.AdjustGrowpartWorkaround) taskset.add(initd.AdjustGrowpartWorkaround)
taskset.add(grub.EnableSystemd) taskset.add(grub.EnableSystemd)

View file

@ -0,0 +1 @@
mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]

View file

@ -0,0 +1,15 @@
vm.swappiness = 0
vm.dirty_ratio = 80
vm.dirty_background_ratio = 5
vm.dirty_expire_centisecs = 12000
net.core.somaxconn = 1000
net.core.netdev_max_backlog = 5000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_wmem = 4096 12582912 16777216
net.ipv4.tcp_rmem = 4096 12582912 16777216
net.ipv4.tcp_max_syn_backlog = 8096
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535
kernel.sysrq = 0

View file

@ -0,0 +1,41 @@
from bootstrapvz.base import Task
from bootstrapvz.common import phases
from . import assets
from shutil import copy
import os
class TuneSystem(Task):
description = 'Tuning system for EC2'
phase = phases.system_modification
@classmethod
def run(cls, info):
sysctl_src = os.path.join(assets, 'sysctl.d/tuning.conf')
sysctl_dst = os.path.join(info.root, 'etc/sysctl.d/01_ec2.conf')
copy(sysctl_src, sysctl_dst)
os.chmod(sysctl_dst, 0644)
class SetCloudInitMountOptions(Task):
description = 'Setting cloud-init default mount options'
phase = phases.system_modification
@classmethod
def run(cls, info):
cloud_init_src = os.path.join(assets, 'cloud-init/debian_cloud.conf')
cloud_init_dst = os.path.join(info.root, 'etc/cloud/cloud.cfg.d/01_debian_cloud.conf')
copy(cloud_init_src, cloud_init_dst)
os.chmod(cloud_init_dst, 0644)
class BlackListModules(Task):
description = 'Blacklisting unused kernel modules'
phase = phases.system_modification
@classmethod
def run(cls, info):
blacklist_path = os.path.join(info.root, 'etc/modprobe.d/blacklist.conf')
with open(blacklist_path, 'a') as blacklist:
blacklist.write(('blacklist i2c_piix4\n'
'blacklist psmouse\n'))