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 - 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)

jeudi 8 août 2013

HP - Changer l'adresse IP dans un iLO de blade HP - autre méthode

Si vous intervertissez deux lames dans deux chassis HP différents, il se peut que les lames conservent leur ancienne configuration.
Vous avez peut-être essayer de reconfigurer l'EBIPA depuis l'Onboard Administrator du chassis, mais cela ne semble pas fonctionner...

La console d'administration de la lame ne peut donc pas être utilisée et cela est très contraignant...


La solution consiste à reconfigurer l'iLO en ligne de commande :

1. Se connecter en ssh à l'OA du chassis (ici c'est un C7000)

ssh administrator@BC36mngt1.simonek.fr
-----------------------------------------------------------------------------
WARNING: This is a private system.  Do not attempt to login unless you are an
authorized user.  Any authorized or unauthorized access and use may be moni-
tored and can result in criminal or civil prosecution under applicable law.
-----------------------------------------------------------------------------
Firmware Version: 3.55
Built: 03/20/2012 @ 11:00
OA Bay Number:  1
OA Role:        Active
administrator@BC36mngt1.simonek.fr's password:


HP BladeSystem Onboard Administrator
(C) Copyright 2006-2012 Hewlett-Packard Development Company, L.P.


Type 'HELP' to display a list of valid commands.
Type 'HELP <command>' to display detailed information about a specific command.
Type 'HELP HELP' to display more detailed information about the help system.

2. Se connecter à la lame (ici emplacement 8 du chassis)

bc36mngt1> connect server 8

Connecting to bay 8 ...
User:OAtmp-administrator-5203585A logged-in to bc25r2c36ilo6.simonek.fr(10.81.0.160)
iLO 2 Standard Blade Edition 1.80 at 10:12:14 Oct 30 2009
Server Name: host is unamed
Server Power: On

</>hpiLO->

3. On affiche les valeurs actuelles :

</>hpiLO-> show /map1/enetport1/lanendpt1/ipendpt1
status=0
status_tag=COMMAND COMPLETED

/map1/enetport1/lanendpt1/ipendpt1
  Targets
  Properties
    IPv4Address=10.81.0.160
    SubnetMask=255.255.255.0
    AddressOrigin=Static
  Verbs
    cd version exit show set

</>hpiLO->show gateway1
status=0
status_tag=COMMAND COMPLETED

/map1/gateway1
  Targets
  Properties
    AccessInfo=10.150.240.1
    AccessContext=Default Gateway
  Verbs
    cd version exit show set

4. On modifie ces valeurs (à faire ne deux temps car chaque modification entraine un reset de l'iLO)

L'adresse IP :

</>hpiLO->set /map1/enetport1/lanendpt1/ipendpt1 IPv4Address=10.13.247.222 SubnetMask=255.255.240.0
status=0
status_tag=COMMAND COMPLETED
Network settings change applied, iLO needs to be reset.

CLI session stopped

Connection terminated by server.

La passerelle :

</>hpiLO->set /map1/gateway1 AccessInfo=10.13.240.1
status=0
status_tag=COMMAND COMPLETED
Network settings change applied, iLO needs to be reset.

CLI session stopped

Et Voilà :)

J'avais également écrit un article sur une autre méthode mais cela ne semble plus fonctionner avec les nouvelles versions d'iLO :

http://www.simonek.fr/post/2010/11/15/Divers-Configurer-l-adresse-IP-d-un-HP-iLO-en-ligne-de-commande

- page 1 de 6