Ni hao ma ?

Aller au contenu | Aller au menu | Aller à la recherche

lundi 14 novembre 2016

PYTHON - Générer un fichier host pour ansible depuis l'inventaire spacewalk

L'idée de ce script est de générer à la demande un fichier hosts pouvant être utilisé par Ansible contenant l'inventaire des serveurs gérés par spacewalk.

create_ansible_list.py :

#!/usr/bin/python

from __future__ import with_statement

import xmlrpclib
import getpass
import os
import fnmatch
import datetime
import time
import sys
import random
import ConfigParser
import base64
import logging

__author__ = "Sebastien Simonek"
__version__ = "1"
__maintainer__ = "Sebastien Simonek"
__email__ = "sebastien.simonek@coface.com"

"""
    create_ansible_list
    This script creates a list of groups with attached servers for ansible use.
    For question about api params, please connect to https://spacewalk/rhn/apidoc
"""


# Retrieve connection information from file
config = ConfigParser.ConfigParser()
config.read("/usr/local/etc/spacewalk-api.conf")
SATELLITE_URL = config.get("main", "SATELLITE_URL")
SATELLITE_LOGIN = config.get("main", "SATELLITE_LOGIN")
SATELLITE_PASSWORD = base64.b64decode(config.get("main", "SATELLITE_PASSWORD"))


# login to spacewalk, key is used by each api call (ie session)
client = xmlrpclib.Server(SATELLITE_URL, verbose=0)
key = client.auth.login(SATELLITE_LOGIN, SATELLITE_PASSWORD)


def get_servers_in_group(key, group):
    """
        Return an array of servers that belong on the specified group.
    """
    try:
        servers = client.systemgroup.listSystems(key, group)
        return servers
    except Exception as e:
        logging.error(traceback.format_exc())


def get_groups(key):
    """
        Return an array of spacewalk groups.
    """
    try:
        groups = client.systemgroup.listAllGroups(key)
        return groups
    except Exception as e:
        logging.error(traceback.format_exc())


try :
    #List groups defined in spacewalk
    groups = get_groups(key)

    # for each group, list servers and generate the hosts file
    try:
       # create a new file
       host_file = open('/etc/ansible/hosts', 'w+')
       host_file.write("### DON'T EDIT THIS FILE, IT IS AUTOMATICALY CREATED BY SPACEWALK ###\n")
       for group in groups:
           servers = get_servers_in_group(key, group['name'])
           host_file.write("[%s]\n" % group['name'])
           for server in servers:
               host_file.write("%s\n" % server['hostname'])
           host_file.write("\n")
    except IOError :
        logging.error(traceback.format_exc())
    finally:
        host_file.close()
finally:
        client.auth.logout(key)

Le fichier de config :

/usr/local/etc/spacewalk-api.conf

[main]
SATELLITE_URL = http://spacewalk/rpc/api
SATELLITE_LOGIN = user
SATELLITE_PASSWORD = cGFzc3dvcmQ=


Vous pouvez cronner la génération du fichier pour avoir un inventaire à jour.

Il est alors possible de lancer des commandes ansibles sur les groupes spacewalk.

Exemple:

uptime des serveurs RHEL7 de dev :

root@ansible-server: (~)# ansible "RHEL7:&DEV" -a uptime

Et voilà ;)

lundi 14 décembre 2015

RHEL6 - Activer les cores dump

On m'a demandé d'activer les cores dump sur un serveur RHEL 6 pour analyser le plantage d'un logiciel d’ordonnancement.

Voici donc une petite procédure :

  1. /etc/sysctl.conf

    kernel.core_pattern = /tmp/core-%e-%s-%u-%g-%p-%t fs.suid_dumpable = 2

  2. /etc/security/limits.conf

    * soft core unlimited

    Les variables sont :

    %e = nom du fichier
    %g = gid du propriétaire du processus
    %u = uid du propriétaire
    %p = pid du processus
    %s = numéro du signal renvoyé au moment du crash
    %t = time

  3. /etc/sysconfig/init

    DAEMON_COREFILE_LIMIT='unlimited'


Pour activer le paramètrage entrez la commande ou redémarrer le serveur :

# sysctl -p


Relancer le programme qui plante et voilà ;)


mardi 2 septembre 2014

RHEL 7 - Renommer l'interface en ethX

Sur RHEL7, le nom de l'interface est généré lors de l'installation. Si vous souhaitez, retrouver les interfaces eth0, eth1, il suffit de procéder comme suit :

  1. Renommer le script de configuration de l'interface

    # mv /etc/sysconfig/netwwork-script/ifcfg-en15465 /etc/sysconfig/network-script/ifcfg-eth0

  2. Modifier le script de configuration de l'interface

    DEVICE="eth0"

  3. Editer le fichier /etc/default/grub, et ajouter ces options à la ligne "GRUB_CMDLINE_LINUX"

    GRUB_CMDLINE_LINUX="vconsole.keymap=fr-latin9 crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv=vg00/lvol00 rd.lvm.lv=vg00/lvol01 rd.lvm.lv=vg00/lvol03 rhgb quiet net.ifnames=0 biosdevname=0"

  4. Recharger la configuration grub

    # grub2-mkconfig -o /boot/grub2/grub.cfg

  5. redémarrer la machine

    # shutdown -r now

Et voilà ;)

RHEL 7 - Désactiver l'IPv6

Pour désactiver la gestion de l'IPv6 pour vos interfaces en RHEL7 :

  1. Créer un fichier /etc/systcl.d/ipv6.conf

    # Desactive la gestion de l'IPv6 pour toutes les cartes
    net.ipv6.conf.all.disable_ipv6 = 1

    # Desactive la gestion de l'IPv6 pour une carte particulière :
    #net.ipv6.conf.<nom_de_l_interface>.disable_ipv6 = 1

  2. Recharger la configuration

    # sysctl -p

Et voilà ;)

jeudi 30 janvier 2014

RHEL - Comment lister et appliquer les patchs de sécurité

Pour ceux qui se demandent comment lister les mises à jour de sécurité sur un système RedHat, il suffit d'installer le plugin yum-security si celui-ci n'est pas déjà installé.

Installation du plugin :

yum install -y yum-security

Pour lister les mises à jour de sécurité disponibles :

yum list-security
ELSA-2013-0245 Critical/Sec.  java-1.6.0-openjdk-1:1.6.0.0-1.54.1.11.6.el6_3.x86_64
ELSA-2013-0273 Critical/Sec.  java-1.6.0-openjdk-1:1.6.0.0-1.56.1.11.8.el6_3.x86_64
ELSA-2013-0605 Critical/Sec.  java-1.6.0-openjdk-1:1.6.0.0-1.57.1.11.9.el6_4.x86_64
ELSA-2013-0770 Important/Sec. java-1.6.0-openjdk-1:1.6.0.0-1.61.1.11.11.el6_4.x86_64
ELSA-2013-1014 Important/Sec. java-1.6.0-openjdk-1:1.6.0.0-1.62.1.11.11.90.el6_4.x86_64
ELBA-2013-1414 bugfix         java-1.6.0-openjdk-1:1.6.0.0-1.65.1.11.13.el6_4.x86_64
ELSA-2013-1505 Important/Sec. java-1.6.0-openjdk-1:1.6.0.0-1.65.1.11.14.el6_4.x86_64
ELBA-2013-1741 bugfix         java-1.6.0-openjdk-1:1.6.0.0-1.66.1.13.0.el6.x86_64
ELSA-2014-0097 Important/Sec. java-1.6.0-openjdk-1:1.6.0.0-3.1.13.1.el6_5.x86_64
ELSA-2013-0247 Important/Sec. java-1.7.0-openjdk-1:1.7.0.9-2.3.5.3.0.1.el6_3.x86_64
ELSA-2013-0275 Important/Sec. java-1.7.0-openjdk-1:1.7.0.9-2.3.7.1.0.2.el6_3.x86_64
ELSA-2013-0602 Critical/Sec.  java-1.7.0-openjdk-1:1.7.0.9-2.3.8.0.0.1.el6_4.x86_64
ELSA-2013-0751 Critical/Sec.  java-1.7.0-openjdk-1:1.7.0.19-2.3.9.1.0.1.el6_4.x86_64
ELSA-2013-0957 Critical/Sec.  java-1.7.0-openjdk-1:1.7.0.25-2.3.10.3.0.1.el6_4.x86_64
ELBA-2013-1004 bugfix         java-1.7.0-openjdk-1:1.7.0.25-2.3.10.4.0.1.el6_4.x86_64
ELSA-2013-1451 Critical/Sec.  java-1.7.0-openjdk-1:1.7.0.45-2.4.3.2.0.1.el6_4.x86_64
ELBA-2013-1611 bugfix         java-1.7.0-openjdk-1:1.7.0.45-2.4.3.3.0.1.el6.x86_64
ELBA-2013-1810 bugfix         java-1.7.0-openjdk-1:1.7.0.45-2.4.3.4.0.1.el6_5.x86_64
ELSA-2014-0026 Critical/Sec.  java-1.7.0-openjdk-1:1.7.0.51-2.4.4.1.0.1.el6_5.x86_64

Pour avoir plus d'information sur un "advisory" :

yum info-security ELSA-2013-1806

===============================================================================
   java-1.7.0-openjdk security update
===============================================================================
  Update ID : ELSA-2013-0602
    Release : Oracle Linux 6
       Type : security
     Status : final
     Issued : 2013-03-06
       CVEs : CVE-2013-0809
        : CVE-2013-1493
Description : [1.7.0.9-2.3.8.0.0.1.el6_4]
            : - Update DISTRO_NAME in specfile
            :
            : [1.7.0.9-2.3.8.0el6]
            : - Revert to rhel 6.3 version of spec file
            : - Revert to icedtea7 2.3.8 forest
            : - Resolves: rhbz#917183
            :
            : [1.7.0.11-2.4.0.pre5.el6]
            : - Update to latest snapshot of icedtea7 2.4 forest
            : - Resolves: rhbz#917183
            :
            : [1.7.0.9-2.4.0.pre4.3.el6]
            : - Updated  to icedtea 2.4.0.pre4,
            : - Rewritten (again) patch3
            :   java-1.7.0-openjdk-java-access-bridge-security.patch
            : - Resolves: rhbz#911530
            :
            : [1.7.0.9-2.4.0.pre3.3.el6]
            : - Updated  to icedtea 2.4.0.pre3, updated!
            : - Rewritten patch3
            :   java-1.7.0-openjdk-java-access-bridge-security.patch
            : - Resolves: rhbz#911530
            :
            : [1.7.0.9-2.4.0.pre2.3.el6]
            : - Removed testing
            :  - mauve was outdated and
            :  - jtreg was icedtea relict
            : - Updated  to icedtea 2.4.0.pre2, updated?
            : - Added java -Xshare:dump to post (see 513605) fo
            :   jitarchs
            : - Resolves: rhbz#911530
            :
            : [1.7.0.11-2.4.0.2.el6]
            : - Unapplied but kept (for 2.3revert) patch110,
            :   java-1.7.0-openjdk-nss-icedtea-e9c857dcb964.patch
            : - Added and applied patch113:
            :   java-1.7.0-openjdk-aes-update_reset.patch
            : - Added and applied patch114:
            :   java-1.7.0-openjdk-nss-tck.patch
            : - Added and applied patch115:
            :   java-1.7.0-openjdk-nss-split_results.patch
            : - NSS enabled by default - enable_nss set to 1
            : - rewritten patch109 -
            :   java-1.7.0-openjdk-nss-config-1.patch
            : - rewritten patch111 -
            :   java-1.7.0-openjdk-nss-config-2.patch
            : - Resolves: rhbz#831734
            :
            : [1.7.0.11-2.4.0.1.el6]
            : - Rewritten patch105:
            :   java-1.7.0-openjdk-disable-system-lcms.patch
            : - Added jxmd and idlj to alternatives
            : - make executed with   DISABLE_INTREE_EC=true and
            :   UNLIMITED_CRYPTO=true
            : - Unapplied patch302 and deleted systemtap.patch
            : - buildver increased to 11
            : - icedtea_version set to 2.4.0
            : - Added and applied patch112
            :   java-1.7.openjdk-doNotUseDisabledEcc.patch
            : - removed tmp-patches source tarball
            : - Added /lib/security/US_export_policy.jar and
            :   lib/security/local_policy.jar
            : - Disabled nss - enable_nss set to 0
            : - Resolves: rhbz#895034
   Severity : Critical
updateinfo info done

Pour vérifier quels packages peuvent être mis à jour :

yum --security check-update
Loaded plugins: rhnplugin, security
This system is receiving updates from ULN.
Limiting package lists to security relevant ones
No packages needed for security; 294 packages available

Enfin pour appliquer un patch précis :

yum --advisory=ELSA-2013-1806 update

Et voilà ;o)

- page 1 de 12