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

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

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)

vendredi 7 octobre 2011

RHEL - Désactiver SELinux depuis le prompt d'installation

Pour désactiver SELinux depuis le prompt d'installation, il suffit d'utiliser l'option

selinux=0

Il est possible de désactiver la fonction une fois le système installé en modifiant le fichier
/etc/selinux/config

et en mettant le mode selinux à  'DISABLED'

et voilà ;-)

lundi 21 mars 2011

Linux - Kernel panic et reboot automatique

Sous Linux, par défaut, un kernel panic ne vous laisse pas d'autre alternative que de faire un hard reboot.

Pour automatiser le redémarrage, il suffit de positionner le nombre de secondes avant le reboot dans le fichier /proc/sys/kernel/panic.

[root@server] cat /proc/sys/kernel/panic
0
[root@server] echo "5" > /proc/sys/kernel/panic



Le système rebootera automatiquement après 5 secondes en cas de kernel panique.

Pour vérifier le paramètre :

[root@server] sysctl -a |grep kernel.panic



Et voilà ;)


- page 1 de 3