Mostrando postagens com marcador TFS. Mostrar todas as postagens
Mostrando postagens com marcador TFS. Mostrar todas as postagens

7 de set. de 2011

Manipulando IIS com Powershell

image

Ultimamente tenho trabalhado bastante com Powerhell Powershell devido a uma consultoria no módulo de Build do TFS. O legal desse módulo é que você pode interagir com scripts Powershell e variáveis do Work Flow que o TFS utiliza durante um build.

O Powershell é muito poderoso, isso se deve ao fato dele usufruir das classes .NET, utilizar o Windows Remote Management (WinRM) para execução remota de scripts, e comandos nativos das versões mais atuais do prompt, como o ROBOCOPY.

image

Assim como no .NET, nós podemos instalar módulos adicionais, e até mesmo importar os já instalados. No caso do IIS devemos importar o módulo “WebAdministration” . Então segue alguns scripts para manipulação do IIS.

Import-Module WebAdministration;

#region Manipulação do IIS
       
    function PararPool([string] $poolName)
    {
        Stop-WebAppPool -Name $poolName;
    }
       
    function IniciarPool([string] $poolName)
    {
        Start-WebAppPool -Name $poolName;
    }
       
    function PararSite([string] $siteName)
    {
        $site = GetSite $siteName;
        $site.Stop();
    }
       
    function IniciarSite([string] $siteName)
    {
        $site = GetSite $siteName;
        $site.Start();
    }
       
    function GetSite($siteName)
    {   
        $site = Get-Item IIS://Sites/$siteName -ErrorAction SilentlyContinue;
        return $site;
    }
       
    function GetDirectorySite($site)
    {
        (Get-Item IIS://Sites/$site).PhysicalPath;
    }
       
    function GetPoolSite($site)
    {
        $objSite = Get-Item IIS://Sites/$site;
        return $objSite.ApplicationPool;
    }
       
    function CriarSite([string] $siteName, [string] $caminho)
    {
        New-Item IIS:\AppPools\$siteName;
        New-Item IIS:\Sites\$siteName -bindings @{protocol="http";bindingInformation=":80:$siteName"} -physicalPath $caminho;
        Set-ItemProperty IIS:\Sites\$siteName -name applicationPool -value $siteName;
    }
       
#endregion

Os scripts foram testados no IIS 7 e 7.5.

image

É lógico que existem mil e uma maneiras de preparar neston atingir um objetivo.

image

É possível utilizar o Active Directory Service Interfaces (ADSI), ou até mesmo o Windows Management Instrumentation (WMI). Acompanhe como reciclaríamos um determinado pool do IIS com o ADSI:

function ReciclarPool([string] $server, [string] $poolName)
{           
    ([adsi]"IIS://$server/W3SVC/AppPools/$poolName").Recycle();
}

Uma última dica por hora, para editar e depurar scripts powershell, estou usando o programa PowerGUI.

image

É isso daí pessoal. Por hora é só, espero que tenham gostado! Smile

25 de jul. de 2011

Auditoria no TFS - PT II

Antes de continuar com as dicas de auditoria, gostaria de ratificar que a dica prestada no post "Auditoria no TFS - PT I" só é possível usando o TFS Power Tools, um conjunto de ferramentas que aprimoram a experiência e interação com o TFS. Valeu @wsilva81 por ter me lembrado desse detalhe.

E aqui vai mais uma dica de outra ferramenta que auxilia na auditoria do TFS. É o TFS Membership Visualizer. Ele monta um gráfico, baseado no gráfico de dependência do Visual Studio 2010, com informações de Team Projects de uma collection. É possível adicionar o plug-in no Visual Studio como nas imagens abaixo:

10

11

Após instalado, siga os seguintes passos para gerar o gráfico:

1

2

3

4

Assim obtemos o seguinte resultado:

5

Quem merece atenção no gráfico são as imagens roxas, que indicam os logins e grupos que tem acesso aos Team Projects. Mas também auxiliam em outras situações para visualização da collection, team projects, source controls etc.

#FicaDica Smiley piscando

20 de jul. de 2011

Gerenciando Workspaces no TFS

Pessoal, estou aproveitando essa minha volta ao blog para torná-lo mais constante, com mais postagens. Para fazer isso estou escrevendo dicas sobre o trabalho que executo como arquiteto de software na área de ALM com a plataforma do Microsoft Visual Studio Team Foundation (TFS). E estou escrevendo essas dicas de uma forma mais objetiva e resumida, com textos mais curtos e focados.

Antes a perfeição pelos textos longos e complexos abatia meu entusiasmo, e como dizem: o perfeito é inimigo do bom. Agora que superei isso, lá vai:

Workspace, como o nome já diz, são espaços de trabalho que o Version Control vincula a um usuário e máquina. Assim quando o usuário "empresa\Astoufo" baixa um código fonte no computador com nome "EstacaoTrabalho22", será criado esse workspace: "EstacaoTrabalho22;empresa\Astoufo". É possível que um usuário tenha vários workspaces:

workspacedropdown_sce_thumb

edit_publiclimited_thumb

Assim, toda vez que for necessário baixar um código do Source Control para uma máquina diferente, é criado esse espaço de mapeamento local, onde os arquivos estarão disponíveis para o trabalho, e depois de tudo pronto, as alterações serão sincronizadas com o servidor (check-in). Esse local é um workspace.

Hoje no trabalho, um colaborador da equipe de desenvolvimento me procurou. Ele me relatou que estava assumindo uma antiga máquina, de um desenvolvedor que já havia se desligado, e ao tentar baixar o código fonte do projeto para a máquina, houve um conflito de workspace, pois o workspace do antigo funcionário estava vinculado para aquela máquina. Algo como isso:

clip_image001_2

Nessa hora entra em ação esses dois comandos do TFS:

  • tf workspaces: mostra informações dos workspaces.
  • tf workspace: manipula workspaces (cria, apaga etc.).

É necessário estar no prompt do Visual Studio para executar esses comandos, onde são carregados funcionalidades inerentes ao TFS.

image

Então executamos o seguinte comando para listar os workspaces de um determinado login:

tf workspaces /owner:domínio\usuário

Após analisar a lista, exclua os workspaces necessários com esse comando:

tf workspace /delete /collection:http://servidordotfs:8080/tfs/defaultcollection NOME_DO_COMPUTADOR;domínio\usuário

Assim temos um usuário satisfeito, nesse caso o desenvolvedor, e a limpa do(s) workspace(s) necessário(s), como mostrado na próxima imagem:

20-07-2011 16-13-22

Repare pela seta na parte inferior da imagem, que é possível verificar se há pendencias (arquivos que ainda estão em "check-out"). Nesse caso não havia, mas caso houvesse é possível "liberar" as pendências… Mas isso fica para um futuro post Alegre

18 de jul. de 2011

Auditoria no TFS - PT I

Um dos recursos e premissas mais interessantes do TFS é sua auditoria, pois maioria das operações sobre a plataforma são salvas e versionadas.

O Version Control é o pilar do TFS responsável pelo controle, versionamento e distribuição dos arquivos, principalmente códigos, dos projetos de software.

Durante o dia-a-dia de administração de servidores TFS, as pessoas me abordam com perguntas similares a estas:

  • Quais são os arquivos que estão alocados/bloqueados de um projeto?
  • Quais arquivos estão alocados/bloqueados para um determinado usuário?

Geralmente para responder essas perguntas eu sigo os passos a seguir:

Abrir o Source Control do projeto, pela janela do Team Explorer.

1

Após encontrar a pasta do projeto, clico com o botão direito na mesma clico em "Find in Source Control" > "Status".

2

As duas opções acima (Status e Wildcard) remetem a mesma tela.
Para exibir todos os arquivos que estão alocados para algum usuário, configuro a opção "Display all checked out".

3

O resultado aponta cinco arquivos com dois usuários. Todas as informações necessárias para "destravar" os arquivos, caso necessário, estão disponíveis no resultado dessa busca.

4

Para encontrar os arquivos alocados para um determinado usuário, e que contenha a sequencia de letras "pro" em seu nome, configure a tela de acordo com a figura a seguir. Observe que o usuário deve ser informado com o domínio.

5

E novamente temos o resultado filtrado.

6

Quando se administra um ambiente de desenvolvimento sobre o TFS é importante ter respostas para as perguntas acima, e espero ter explorado algumas formas de respondê-las.

Até a próxima. Alegre