Je décide de regrouper mes 2 problématiques standardisation et automatisation.
Setup serveur initial
Mes 5 min sur un serveur :
- installer fail2ban
- installer cron-apt
- installer logwatch
- Mettre a jour l'environnement (PS1, .vimrc, .bashrc)
- installer shorewall (sans le configurer)
Fabric
Traduit en Fabric ca donne :
from fabric.api import *
from cuisine import *
from fabric.colors import cyan,magenta,red
from fabric.contrib.files import comment, uncomment, contains, exists, append, sed
@task
def PS1_host():
append('/root/.bashrc','export PS1=\'\[\033[01;31m\]\u\[\033[01;33m\]@\[\033[01;36m\]\h \[\033[01;33m\]\w \[\033[01;35m\]\$ \[\033[00m\]\'',use_sudo=False)
@task
def update_upgrade():
run('aptitude update && aptitude full-upgrade')
@task
def vim_color():
append('/root/.vimrc','syntax on')
@task
def cront_apt_setup():
if not package_ensure_apt('cron-apt','update=False')
append('/etc/cron-apt/config','APTCOMMAND=/usr/bin/aptitude')
append('/etc/cron-apt/config','ACTIONDIR="/etc/cron-apt/action.d"')
append('/etc/cron-apt/config','MAILTO="moi@gmail.com"')
append('/etc/cron-apt/config','ERROR="/var/log/cron-apt/error"')
append('/etc/cron-apt/config','LOG="/var/log/cron-apt/log"')
append('/etc/cron-apt/config','LOG="/var/log/cron-apt/log"')
append('/etc/cron-apt/config','MAILON="always"')
append('/etc/cron-apt/config','SYSLOGON="upgrade"')
append('/etc/cron-apt/config','OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/sources.list"')
file_append('/etc/cron-apt/action.d/5-install','autoclean -y\n safe-upgrade -y -o APT::Get::Show-Upgraded=true')
@task
def logwatch():
if not package_ensure_apt('logwatch','update=False'):
run('aptitudsilverstone install -y logwatch')
run('cp -a /usr/share/logwatch/default.conf/* /etc/logwatch/conf/')
run('cp -a /usr/share/logwatch/scripts/* /etc/logwatch/scripts/')
run('mkdir -p /var/cache/logwatch')
sed('/etc/logwatch/conf/logwatch.conf',before='MailTo = root',after='MailTo = moi@gmail.com')
sed('/etc/logwatch/conf/logwatch.conf',before='Detail = Low',after='Detail = Med')
run('logwatch')
@task
def shorewall_install():
if not package_ensure_apt('shorewall','update=False')
print(red("Don't forget to configure SHOREWALL"))
@task
def install_fail2ban():
if not package_ensute_apt('fail2ban','update=False')
sed('/etc/fail2ban/jail.conf',before='destemail = root@localdomain',after='destemail=moi@gmail.com')
run('service fail2ban restart')