Automação de serviços Glassfish usando Python

Neste projeto, vou explicar a lógica por trás de um script Python que automatiza a configuração e criação de serviços do Glassfish. O script utiliza bibliotecas como tkinter para entrada de dados, subprocess para execução de comandos e OS para manipulação de arquivos e diretórios. Abaixo está uma visão geral das funcionalidades do script.

1. Entrada de Dados via Tkinter
O script começa coletando as informações necessárias do usuário através de uma interface gráfica simples usando o tkinter. O usuário fornece informações como a unidade de instalação do Glassfish, portas de serviços e credenciais. Esses dados são usados posteriormente para configurar o ambiente.

def get_user_input():
    # Coleta as informações do usuário via diálogos Tkinter

2. Criação de Arquivos de Senha
Com base nas informações fornecidas pelo usuário, o script cria dois arquivos importantes: pwdfile e tmpfile. Esses arquivos armazenam senhas temporárias para autenticação no Glassfish durante a criação e configuração do domínio.

pwdfileContent = "AS_ADMIN_PASSWORD=adminadmin"
tmpfileContent = "AS_ADMIN_PASSWORD=\nAS_ADMIN_NEWPASSWORD=adminadmin"

3. Geração e Execução de Scripts .bat
O coração do script está na geração automática de arquivos .bat que contêm os comandos necessários para configurar o Glassfish. São criados scripts para:
Criar o domínio
Iniciar e reiniciar o domínio
Alterar a senha do domínio
Ativar o modo seguro
Criar o serviço Glassfish no Windows
Cada script é executado sequencialmente com intervalos de tempo entre as execuções para garantir que todas as operações ocorram de forma síncrona.

scripts = {
    "1_Cria_Dominio.bat": [...],
    "2_Inicia_Dominio.bat": [...]
}
subprocess.run(["1_Cria_Dominio.bat"], shell=True)

4. Cálculo Automático de Portas
O script realiza cálculos automáticos para configurar portas adicionais, como a porta do conector JMX e as portas de listeners IIOP e SSL. Essas portas são ajustadas dinamicamente com base nas entradas fornecidas pelo usuário.

jmxPort = int(data['port_https']) + 505
iioplistener = int(data['port_console']) - 1148

5. Configuração do Arquivo XML do Glassfish
O script também edita o arquivo domain.xml diretamente, substituindo valores de portas para ajustar o serviço JMS. Para isso, ele utiliza a biblioteca re para localizar e substituir o valor da porta dentro do arquivo XML.

config_file_path = os.path.join(gfdirdom, data['name_domain'], 'config', 'domain.xml')
content = re.sub(r'value="7676"', f'value="{new_port}"', content)

6. Criação de Compartilhamento SMB e Aplicação de Permissões
Para garantir que o domínio tenha as permissões corretas no sistema, o script cria um compartilhamento SMB via PowerShell e aplica permissões de acesso completo ao usuário configurado. Isso é feito chamando comandos PowerShell diretamente a partir do Python.

ps_command = f"New-SMBShare -Name '{data['name_domain']}$' ..."
subprocess.run(["powershell", "-Command", ps_command], check=True)

7. Suporte ao Sistema Gestão de Ponto
Se o domínio for usado no sistema Gestão de Ponto, o script oferece uma opção adicional para configurar pools de conexão JDBC e recursos relacionados ao banco de dados (SQL Server ou Oracle). Novamente, são criados scripts .bat para executar os comandos do Glassfish para configurar os recursos JDBC.

if def_domain == "S":
    scripts = {
        "8_Cria_Connection_Pool_GP.bat": [...],
        "9_Cria_Connection_Resource_GP.bat": [...]
    }
    subprocess.run(["8_Cria_Connection_Pool_GP.bat"], shell=True)

Conclusão
Este script proporciona uma automação completa para configuração do Glassfish, desde a criação do domínio até a configuração de serviços e permissões. Ele usa Python para integrar várias ferramentas e tecnologias, como PowerShell, arquivos .bat e manipulação de XML, facilitando o processo de deploy e administração.

URL para download do Glassfish 4 direto no site da Oracle:
Download Glassfish 4

Após download, extrair a pasta e copiá-la para a unidade principal da máquina/servidor.

Renomear a pasta e manter a estrutura no padrão:
C:\glassfish4\

Excluir a pasta do “domain1” que fica dentro de:
glassfish4\glassfish\domains\

Segue o manual em .PDF para auxiliar na execução do aplicativo:
Instrução.pdf

Segue URL para download do executável do projeto:
ServiceGlassfish.zip

Clique aqui para visualizar o código completo.