Como mudar o horário de máquinas virtuais de Azure PaaS Cloud Services usando Startup Tasks.


Por: Leonardo Villar
Todas as maquinas virtuais em Azure PaaS Cloud Services, trabalham com o horário local UTC (ou GMT) por padrão, e existem alguns casos onde o cliente por vários motivos necessitam que os servidores trabalhem no seu horário local, no caso do Brasil, UTC-3.
A forma mais simples que pensamos para resolver esse problema seria de acessar o Servidor via RDP e mudar o horário manualmente, porém, isso irá funcionar apenas por um algum tempo pois devemos lembrar que maquinas virtuais PaaS, são “Stateless” ou seja, não mantém alterações manuais. Então, a solução seria a utilização de uma Startup Task e o comando “tzutil” para fazermos a mudança de Time Zone por linha de comando.
 
Passos:

1)      Primeiro, precisamos montar o comando “tzutil”. Esse é o comando:

 

tzutil /s  "Identificador do Horário"

 

Exemplo:

Comando para mudar o horário para “Pacific Standard Time” (PST):

tzutil /s "Pacific Standard Time"

 

Comando para mudar o horário para “South America Standard Time” (Horário de Brasília)

tzutil /s " E. South America Standard Time” (Esse é o comando que vamos utilizar)

 
Nota 1: Você pode encontrar o horário que você está utilizando na sua máquina usando o seguinte comando:
tzutil /g
Exemplo:
c:\>tzutil /g
Pacific Standard Time
c:\>
Nota 2: Você pode encontrar uma lista com todos os horários utilizando o comando ‘tzutil /l
 

2)     Crie um arquivo chamado “timechange.cmd” e insira o comando que acabamos de montar:

tzutil /s " E. South America Standard Time”

 

 

3)    Para a Worker Role (Se você for aplicar o procedimento em uma Web Role, *** para o passo 4):

a)      Na Solution Explorer, abaixo de Roles no seu projeto Cloud Services, clique com o botão direito na role e selecione Add>New Folder. Crie uma pasta chamada Startup

b)     Clique com o botão direito na pasta Startup e selecione Add>Existing Item. Selecione o arquivo timechange.cmd o adicione na pasta Startup

 

clip_image002

 

 

4)     Agora, você terá que criar a startup task propriamente dita, para isso, você precisará adicionar as seguintes linhas no arquivo de configuração ServiceDefinition.csdef abaixo de WebRole ou WorkerRole. Para mais informações sobre Startup Tasks, veja: Run Startup Tasks in Azure.

 
            <Startup>
                        <Task commandLine="Startup\timechange.cmd" executionContext="elevated" taskType="simple" />
            </Startup>
 
Nota: As configurações acima irão executar o arquivo timechange.cmd que irá fazer a alteração do horário da forma que você configurou. Essa operação sempre acontece antes da sua aplicação ser configurada e uma falha nesse processo irá impedir que a Role seja iniciada.
 

5)     Para Web Role:

a)      Na Solution Explorer, clique com o botão direito no projeto da sua Web Role, e selecione Add>Existing Item. Selecione o arquivo timechange.cmd (O arquivo ficará no mesmo nível que o web.config).

b)     Vá nas propriedades do arquivo recém adicionado e mude a propriedade “Copy to Output Directory” para “Copy Aways”

clip_image004
 

6)     Agora, você terá que criar a startup task, para isso, você precisará adicionar as seguintes linhas no arquivo de configuração ServiceDefinition.csdef abaixo de WebRole ou WorkerRole. Para mais informações sobre Startup Tasks, veja: Run Startup Tasks in Azure.

 
            <Startup>
                        <Task commandLine="timechange.cmd" executionContext="elevated" taskType="simple" />
            </Startup>
 

7)      Faça um novo Deploy.

 

 

 

 

Comments (0)

Skip to main content