Página 1 de 1

Reiniciar el servicio después de implementar una configuración

Publicado: 20 de julio de 2018 - 16:26
por jlabadie
Buen día,

Para empezar, aquí hay algo de información sobre la infraestructura:

- Versión de WAPT instalada: 1.5
- Sistema operativo del servidor: Linux Debian 9 Stretch
- Sistema operativo de la máquina de administración/creación de paquetes: Windows 7
- Un servidor WAPT externo y dos repositorios locales adicionales en cada sitio


Mi problema:

Actualmente estoy implementando mi configuración wapt-get.ini usando un paquete

Código: Seleccionar todo

# -*- coding: utf-8 -*-
from setuphelpers import *

uninstallkey = []

def install():

    print('Modify max_gpo_script_wait')
    inifile_writestring(WAPT.config_filename,'global','max_gpo_script_wait',180)

    print('Modify Preshutdowntimeout')
    inifile_writestring(WAPT.config_filename,'global','pre_shutdown_timeout',180)

    print('Disable Hyberboot')
    inifile_writestring(WAPT.config_filename,'global','hiberboot_enabled',0)

    print('Disable Notify User')
    inifile_writestring(WAPT.config_filename,'global','notify_user',0)

    print('Verify cert')
    inifile_writestring(WAPT.config_filename,'global','verify_cert',0)

    print('Modify public_certs_dir')
    inifile_writestring(WAPT.config_filename,'global','public_certs_dir','C:\Program Files (x86)\wapt\ssl')

    print('Modify repo_url')
    inifile_writestring(WAPT.config_filename,'global','repo_url','https://repolocal1/wapt')

    print('Create repositories')
    inifile_writestring(WAPT.config_filename,'global','repositories','repo-externe')

    print('Frequence update')
    inifile_writestring(WAPT.config_filename,'global','waptupdate_task_period',300)

    print('Timeout server')
    inifile_writestring(WAPT.config_filename,'global','wapt_server_timeout',300)

    print('Interdire annulation MAJ')
    inifile_writestring(WAPT.config_filename,'global','allow_cancel_upgrade',1)

    print('Enable repositories')
    inifile_writestring(WAPT.config_filename,'repo-externe','repo_url','https://repoexterne/wapt')

    print('Verify cert secondaire')
    inifile_writestring(WAPT.config_filename,'repo-externe','verify_cert',0)
Esto funciona cuando agrego el paquete a una máquina y me permite modificar el repositorio principal para recuperar paquetes futuros del repositorio local.

Sin embargo, después de realizar pruebas, me di cuenta de que era necesario reiniciar el servicio, de lo contrario la recuperación de otros paquetes se realiza en el repositorio del servidor externalizado, por lo tanto, a través de HTTP.
El siguiente comando me permite verificar esto:

Código: Seleccionar todo

wapt-get show "paquet"



Intenté agregar este pequeño fragmento de código a mi paquete:

Código: Seleccionar todo

def service_restart(WAPTService):
    logger.debug(u'Restarting service %s' % WAPTService)
    win32serviceutil.RestartService(WAPTService)
    win32api.Sleep(2000)
    return win32serviceutil.WaitForServiceStatus(WAPTService, win32service.SERVICE_RUNNING, waitSecs=4)


Tengo la impresión de que mi servicio se ha reiniciado pero todavía no estoy recuperando los paquetes en el repositorio local.

Si reinicio manualmente el servicio se soluciona el problema, pero no puedo permitirme ir a cada una de las 200 máquinas.


Perdón por el post tan largo, pero intenté resumir la situación lo mejor que pude.

Gracias de antemano y que tengas un buen fin de semana

Re: Reiniciar el servicio después de implementar una configuración

Publicado: 20 de julio de 2018 - 16:52
por htouvet
Puedes pedirle al servicio que programe un reinicio (en el futuro)
No se recomienda reiniciar el servicio mientras se está instalando un paquete...


Código: Seleccionar todo

import requests
...

def install():
    ....
    requests.get('http://127.0.0.1:8088/waptservicerestart.json')


Re: Reiniciar el servicio después de implementar una configuración

Publicado: 23 de julio de 2018 - 09:09
por jlabadie
Buen día,

Al incluir esa parte de su script, el servicio se reinicia, pero debe esperar un tiempo para que el siguiente comando devuelva la salida correcta del repositorio:

Código: Seleccionar todo

 wapt-get show "paquet" 
Dicho esto, es normal, pero ¿no hay una mejor manera de hacerlo al crear un paquete que modifica wapt-get.ini?

Re: Reiniciar el servicio después de implementar una configuración

Publicado: 23 de julio de 2018 - 15:48
por htouvet
Podría ser algo así:
pero algunos parámetros no se configurarán (hiberboot_enabled, max_gpo_script_wait, pre_shutdown_timeout) porque se configuran cuando se inicia el servicio.

`def install():
....
WAPT.load_config()
WAPT.update(force=True)`

Re: Reiniciar el servicio después de implementar una configuración

Publicado: 24 de julio de 2018 - 10:21
por jlabadie
Bueno gracias, continuaré con mis pruebas