{"id":1455,"date":"2020-06-07T14:28:46","date_gmt":"2020-06-07T17:28:46","guid":{"rendered":"https:\/\/thesqltimes.com\/blog\/?p=1455"},"modified":"2020-06-12T11:49:36","modified_gmt":"2020-06-12T14:49:36","slug":"azure-arm-templates-como-eu-monto-uma-infra-pra-um-alwayson-em-minutos","status":"publish","type":"post","link":"https:\/\/thesqltimes.com\/blog\/2020\/06\/07\/azure-arm-templates-como-eu-monto-uma-infra-pra-um-alwayson-em-minutos\/","title":{"rendered":"Azure ARM Templates: Como eu monto uma infra pra um AlwaysON em minutos?"},"content":{"rendered":"<div class=\"pld-like-dislike-wrap pld-template-1\">\r\n    <div class=\"pld-like-wrap  pld-common-wrap\">\r\n    <a href=\"javascript:void(0)\" class=\"pld-like-trigger pld-like-dislike-trigger  \" title=\"Muito \u00fatil!\" data-post-id=\"1455\" data-trigger-type=\"like\" data-restriction=\"cookie\" data-already-liked=\"0\">\r\n                        <i class=\"fas fa-thumbs-up\"><\/i>\r\n                <\/a>\r\n    <span class=\"pld-like-count-wrap pld-count-wrap\">    <\/span>\r\n<\/div><\/div><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de Leitura:<\/span> <span class=\"rt-time\"> 9<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>\r\n<p>O Azure j\u00e1 est\u00e1 a\u00ed h\u00e1 algum tempo e eu confesso: demorei pra aceitar ele na minha vida. E uma das coisas que me distanciavam dele era criar um ambiente no portal:<\/p>\r\n<ul>\r\n<li>Escolhe m\u00e1quina, escolhe tamanho de m\u00e1quina, escolhe a imagem&#8230;<\/li>\r\n<li>Escolhe virtual network, d\u00e1 nome, define ip define subnet&#8230;<\/li>\r\n<li>Disco, escolhe tamanho, escolhe tipo, etc.<\/li>\r\n<li>Coloca usu\u00e1rio, coloca senha&#8230;<\/li>\r\n<li>Ip p\u00fablico, configura , nome dns&#8230;\u00a0 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah, que saco isso!<br \/>\r\n<figure id=\"attachment_1587\" aria-describedby=\"caption-attachment-1587\" style=\"width: 150px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/bloody_keyboard.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1587 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/bloody_keyboard.gif\" alt=\"http:\/\/www.memes.at\/faces\/bloody_keyboard.gif\" width=\"150\" height=\"107\" \/><\/a><figcaption id=\"caption-attachment-1587\" class=\"wp-caption-text\">eu no portal do azure criando um ambiente pra testar um AlwaysON<\/figcaption><\/figure>\r\n<\/li>\r\n<\/ul>\r\n<p>Olha o tanto de configura\u00e7\u00e3o pra subir 1 m\u00e1quina&#8230; E se eu quiser subir um ambiente em cluster pra testar alwayson? Rapaz&#8230; Imagina&#8230; Faz tudo isso ai pra cada m\u00e1quina que precisa subir (domain controller, nodes, etc.)&#8230; J\u00e1 viu como \u00e9 configurar um dom\u00ednio? Configura o AD, adiciona cada m\u00e1quina&#8230; Brincando, s\u00f3 pra preparar o ambiente pra voc\u00ea conseguir montar um cluster do Windows, voce deve levar umas 4 horas&#8230; S\u00f3 preparar o ambiente&#8230;<\/p>\r\n<p>Ah Rodrigo&#8230; Mas tem o Powershell&#8230;<\/p>\r\n<p>T\u00e1&#8230; \u00c9 at\u00e9 aceit\u00e1vel&#8230; Mas tenho que instalar m\u00f3dulos do Azure toda vez que estiver numa m\u00e1quina nova, logar, etc&#8230; Confesso que gosto dessa ideia: Abre o portal do Azure e escolhe o que voc\u00ea quer&#8230; Mas n\u00e3o precisa escolher tanto n\u00e9&#8230; Que tal somente o b\u00e1sico: usu\u00e1rio, senha, imagem&#8230; O resto, bem que podia ser autom\u00e1tico hein&#8230;<\/p>\r\n<p>\u00c9 ai onde entra o Azure Resource Manager Templates (daqui pra frente chamarei de ARM Templates). A ideia disso \u00e9 que voc\u00ea possa descrever os recursos usando um arquivo de configura\u00e7\u00e3o, que neste caso \u00e9 um JSON com um formato espec\u00edfico. Eu posso parametrizar e executar pelo powershell, pelo portal, e onde mais conseguir interpretar esse JSON! Simplesmente, genial!<\/p>\r\n<p>Se voc\u00ea ficou interessado e quer come\u00e7ar v\u00e1 <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/azure-resource-manager\/templates\/quickstart-create-templates-use-the-portal\">neste link<\/a>. O meu objetivo aqui \u00e9 compartilhar os meus templates e fazer uma r\u00e1pida explica\u00e7\u00e3o de como us\u00e1-los! Tamb\u00e9m mostrarei como voc\u00ea pode usar estes templates no portal.<\/p>\r\n<p>O processo \u00e9 simples:<\/p>\r\n<ul>\r\n<li>Algu\u00e9m escreve um JSON descrevendo os recursos. Por exemplo:\r\n<ul>\r\n<li>Virtual Machines<\/li>\r\n<li>Virtual Network<\/li>\r\n<li>Managed disks<\/li>\r\n<li>E tudo mais de recursos que o Azure te prov\u00ea!<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>Este mesmo algu\u00e9m pode parametrizar&#8230; Por exemplo, ele pode definir um par\u00e2metro que recebe o nome do usu\u00e1rio ou o tamanho da m\u00e1quina.<\/li>\r\n<li>Ent\u00e3o ele disponibiliza esse template em algum lugar para que algu\u00e9m no mundo possa us\u00e1-lo<\/li>\r\n<li>Voc\u00ea pode pegar esse template e usar na sua conta do Azure, cadastrando ele no portal ou fazer o download para sua m\u00e1quina e usar com powershell, por exemplo!\r\n<ul>\r\n<li style=\"list-style-type: none;\">\r\n<ul>\r\n<li>Isso \u00e9 chamado de <strong>Deploy (ou, no bom portugu\u00eas, Implanta\u00e7\u00e3o)<\/strong>.<\/li>\r\n<li>Ou seja, \u00e9 a hora em que voc\u00ea usa o template, especifica os par\u00e2metros conforme sua necessidade e tcharam: O Azure cria tudo pra voc\u00ea!<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<p>Quem escreve e disponibiliza o template tamb\u00e9m disponibiliza a documenta\u00e7\u00e3o (ou, pelo menos, deveria): O qu\u00ea o template faz, explica os par\u00e2metros, etc.! E nada melhor que o github para ajudar a organizar isso! A Microsoft criou um reposit\u00f3rio s\u00f3 para hospedar os mais variados templates criados pela comunidade em <a href=\"https:\/\/github.com\/Azure\/azure-quickstart-templates\">https:\/\/github.com\/Azure\/azure-quickstart-templates<\/a><\/p>\r\n<p>Eu resolvi, por enquanto, manter os meus templates no meu reposit\u00f3rio: <a href=\"https:\/\/github.com\/rrg92\/azure-arm\">https:\/\/github.com\/rrg92\/azure-arm<\/a><\/p>\r\n<p>No pr\u00f3prio reposit\u00f3rio eu explico como ele est\u00e1 organizado (e ainda n\u00e3o est\u00e1 no padr\u00e3o da Microsoft, mas pretendo deixar em breve!)<\/p>\r\n[stextbox id=&#8217;alert&#8217; caption=&#8217;Aten\u00e7\u00e3o aos custos&#8217;]<strong>Aqui vale um alerta:<\/strong> Caso deseje usar um dos templates que eu estou disponibilizando, tenha ci\u00eancia que voc\u00ea ser\u00e1 cobrado pelos recursos que voc\u00ea subir. Recomendo revisar e criar por sua pr\u00f3pria conta e risco.[\/stextbox]\r\n<h2>Como importar os templates no portal do Azure<\/h2>\r\n<p>Voc\u00ea pode deixar os templates de sua prefer\u00eancia criados na sua conta do Azure. Com isso, eles ficam salvos na sua conta e voc\u00ea pode acessar de qualquer lugar, e inclusive, fazer o Deploy deles diretamente do portal. E voc\u00ea n\u00e3o paga nada mais para manter os templates criados l\u00e1. S\u00f3 paga pelos recursos que os templates criam (na hora em que for fazer o Deploy).<\/p>\r\n<ol>\r\n<li>Acesse o <a href=\"https:\/\/portal.azure.com\/\">portal do Azure<\/a><\/li>\r\n<li>Na barra de pesquisa, digite <em>template<\/em> (ou <em>modelos<\/em>, se estiver em portugu\u00eas)<br \/>\r\n<p id=\"HHgGNBv\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61514a53b.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1561 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61514a53b.png\" alt=\"\" width=\"874\" height=\"111\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61514a53b.png 874w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61514a53b-300x38.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61514a53b-768x98.png 768w\" sizes=\"auto, (max-width: 874px) 100vw, 874px\" \/><\/a><\/p>\r\n<\/li>\r\n<li>Voc\u00ea vai cair na tela com a lista de templates que voc\u00ea j\u00e1 importou:<br \/>\r\n<p id=\"CqhXmko\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc6177d13ed.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1562 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc6177d13ed.png\" alt=\"\" width=\"1692\" height=\"356\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc6177d13ed.png 1692w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc6177d13ed-300x63.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc6177d13ed-1024x215.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc6177d13ed-768x162.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc6177d13ed-1536x323.png 1536w\" sizes=\"auto, (max-width: 1692px) 100vw, 1692px\" \/><\/a><\/p>\r\n<\/li>\r\n<li>Clique no bot\u00e3o &#8220;Add&#8221; (Adicionar, em portugu\u00eas). Ent\u00e3o uma tela semelhante a essa ir\u00e1 abrir:<br \/>\r\n<p id=\"VFAnnlz\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61be39800.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1563 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61be39800.png\" alt=\"\" width=\"997\" height=\"504\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61be39800.png 997w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61be39800-300x152.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61be39800-768x388.png 768w\" sizes=\"auto, (max-width: 997px) 100vw, 997px\" \/><\/a><\/p>\r\n<\/li>\r\n<li>Na se\u00e7\u00e3o General\/Geral, preencha o nome e a descri\u00e7\u00e3o do seu template. Coloque algo que facilite seu entendimento sobre o que o template faz:<br \/>\r\n<p id=\"ngfQkoL\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61fc7836f.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1564 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61fc7836f.png\" alt=\"\" width=\"600\" height=\"286\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61fc7836f.png 600w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc61fc7836f-300x143.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\r\n<\/li>\r\n<li>Clique em ok no final e ele vai te levar para a se\u00e7\u00e3o <strong>ARM Template (Modelo ARM)<\/strong>:<br \/>\r\n<p id=\"kQBMLss\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc625924a18.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1565 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc625924a18.png\" alt=\"\" width=\"898\" height=\"478\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc625924a18.png 898w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc625924a18-300x160.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc625924a18-768x409.png 768w\" sizes=\"auto, (max-width: 898px) 100vw, 898px\" \/><\/a><\/p>\r\n<\/li>\r\n<li>Copie e cole o JSON do seu template a\u00ed (pode colar por cima de tudo isso). Esse JSON dever\u00e1 ser disponiblizado pelo autor do template, de alguma maneira. Por exemplo, eu peguei <a href=\"https:\/\/github.com\/rrg92\/azure-arm\/blob\/master\/sql-ad\/azuredeploy.json\">este meu<\/a>.\u00a0<br \/>\r\n<p id=\"rEkQRvK\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc631f729af.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1567 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc631f729af.png\" alt=\"\" width=\"608\" height=\"846\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc631f729af.png 608w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc631f729af-216x300.png 216w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/a><\/p>\r\n<\/li>\r\n<li>Clique em &#8220;OK&#8221; no final dessa coluna e depois em &#8220;Add&#8221;(Adicionar) no final da tela.<br \/>Se o JSON estiver ok ele vai salvar e voltar a lista de templates. Clique no bot\u00e3o de refresh\/atualizar para que ele atualize a lista com o seu novo template.<\/li>\r\n<\/ol>\r\n<h2>Fazendo o Deploy de um Template usando o Portal<\/h2>\r\n<p>Uma vez que voc\u00ea salvou os seus templates fazer o deploy \u00e9 muito simples:<\/p>\r\n<ol>\r\n<li>Acesse o portal, e v\u00e1 para a lista de templates, como fez anteriormente<\/li>\r\n<li>Na lista de templates, escolha o template que deseja fazer o Deploy. No meu caso, vou escolher um chamado<strong><strong> sql-ad<br \/><\/strong><\/strong>\r\n<p id=\"uCmorao\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc64e03aef6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1568 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc64e03aef6.png\" alt=\"\" width=\"757\" height=\"224\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc64e03aef6.png 757w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc64e03aef6-300x89.png 300w\" sizes=\"auto, (max-width: 757px) 100vw, 757px\" \/><\/a><\/p>\r\n<\/li>\r\n<li>\u00a0Na tela que abriu, clique no bot\u00e3o &#8220;Deploy&#8221; (em portugu\u00eas ser\u00e1 <strong>Implantar<\/strong>):<br \/><br \/><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc64fb5625a.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1569 alignnone\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc64fb5625a.png\" alt=\"\" width=\"761\" height=\"422\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc64fb5625a.png 761w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc64fb5625a-300x166.png 300w\" sizes=\"auto, (max-width: 761px) 100vw, 761px\" \/><\/a><\/li>\r\n<li>Ent\u00e3o voc\u00ea ir\u00e1 para a p\u00e1gina onde voc\u00ea configura o deploy. Isto \u00e9, voc\u00ea vai especificar algumas configura\u00e7\u00f5es e os valores dos par\u00e2metros do template:<br \/><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc651453580.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1570 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc651453580.png\" alt=\"\" width=\"909\" height=\"832\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc651453580.png 909w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc651453580-300x275.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc651453580-768x703.png 768w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc651453580-16x16.png 16w\" sizes=\"auto, (max-width: 909px) 100vw, 909px\" \/><\/a><\/li>\r\n<li>A parte &#8220;Basics&#8221; permite que voc\u00ea especifique informa\u00e7\u00f5es padr\u00f5es para qualquer template:\r\n<ol>\r\n<li>A assinatura (subscription)<\/li>\r\n<li>O resource group (voc\u00ea pode criar uma na hora)<br \/>O Resource Group \u00e9 onde ele ir\u00e1 criar por padr\u00e3o&#8230; O autor do template pode escolher usar este resource group ou definir um diretamente para cada servi\u00e7o que ele for criar&#8230; Por isso, e outras quest\u00f5es, voce deve sempre entender o que o template faz e usar autores de sua confian\u00e7a!<\/li>\r\n<li>Localiza\u00e7\u00e3o (regi\u00e3o)<br \/>Do mesmo modo, o autor pode optar criar em regi\u00f5es diferentes, e este par\u00e2metro apenas indica onde o Resource Group ser\u00e1 criado e pode ser usado pelo autor, ou n\u00e3o.<br \/><br \/><\/li>\r\n<\/ol>\r\n<\/li>\r\n<li>A segunda parte \u00e9 a lista de par\u00e2metros definidos no templates. Esta ir\u00e1 variar dependendo de cada template.\r\n<ol>\r\n<li>No meu caso, o meu template tem v\u00e1rios par\u00e2metros j\u00e1 preenchidos, como os IP das m\u00e1quinas envolvidas, quantidade de discos em cada SQL, imagens, etc.<\/li>\r\n<li>Somente tr\u00eas par\u00e2metros s\u00e3o obrigat\u00f3rios: O nome do usu\u00e1rio, senha e nome do dom\u00ednio\u00a0 (o * indica que \u00e9 obrigat\u00f3rio.<br \/>Se clicar no \u00edcone com um &#8220;i&#8221; dentro da bolinha, voc\u00ea pode ter mais detalhes do par\u00e2metro. Essa \u00e9 uma descri\u00e7\u00e3o fornecida pelo autor.<\/li>\r\n<li>E por fim, altere os par\u00e2metros que julgar necess\u00e1rio<\/li>\r\n<li>No meu caso, deixei assim e n\u00e3o alterei o resto dos par\u00e2metros:<br \/>\r\n<p id=\"ottuAqG\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc65ef2fff1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1571 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc65ef2fff1.png\" alt=\"\" width=\"825\" height=\"394\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc65ef2fff1.png 825w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc65ef2fff1-300x143.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc65ef2fff1-768x367.png 768w\" sizes=\"auto, (max-width: 825px) 100vw, 825px\" \/><\/a><\/p>\r\n<\/li>\r\n<\/ol>\r\n<\/li>\r\n<li>Ap\u00f3s revisar tudo, voc\u00ea pode ir para o final da p\u00e1gina, ler, aceitar os termos e clicar no bot\u00e3o para<strong> COMPRAR:<\/strong><br \/>\r\n<p id=\"XirdaBR\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc662acd572.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1572 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc662acd572.png\" alt=\"\" width=\"951\" height=\"311\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc662acd572.png 951w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc662acd572-300x98.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc662acd572-768x251.png 768w\" sizes=\"auto, (max-width: 951px) 100vw, 951px\" \/><\/a><br \/><br \/><span style=\"color: #ff0000;\">[stextbox id=&#8217;alert&#8217;]Aqui vou refor\u00e7ar novamente. Os templates v\u00e3o criar recursos no Azure, igual criaria se voc\u00ea usasse um outro caminho&#8230; Ent\u00e3o, dependendo do que voc\u00ea especificou o azure ir\u00e1 te cobrar conforme os pre\u00e7os do recurso. Garanta que voc\u00ea entendeu tudo o que o template cria e certifique-se de revisar ao final, tudo o que foi criado.[\/stextbox]<strong><br \/><br \/><\/strong><\/span><\/p>\r\n<\/li>\r\n<li>Ao clicar no bot\u00e3o, ele ir\u00e1 fazer algumas valida\u00e7\u00f5es. Dependendo da sua assinatura escolhida, regi\u00e3o, etc., ele pode disparar alguns erros, como impossibilidade de criar um recurso por limita\u00e7\u00f5es da sua conta, etc.\u00a0 Se tudo de certo, ele vai iniciar o deploy e voc\u00ea poder\u00e1 acompanhar, bastando clicar nesse link que ir\u00e1 aparecer na suas notifica\u00e7\u00f5es (\u00edcone da campainha no canto superior direito):<br \/><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc67278a1c1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1574 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc67278a1c1.png\" alt=\"\" width=\"518\" height=\"205\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc67278a1c1.png 518w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc67278a1c1-300x119.png 300w\" sizes=\"auto, (max-width: 518px) 100vw, 518px\" \/><\/a><\/li>\r\n<li>\r\n<p id=\"IYjrAbF\">Nesta tela voc\u00ea poder\u00e1 ver todo o andamento e os recursos no qual ele est\u00e1 trabalhando. No meu caso, o template cria uma s\u00e9rie de recursos, como discos, ip p\u00fablicos, m\u00e1quinas virtuais, scripts, etc:<\/p>\r\n<p id=\"WkUDGTS\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc674f25543.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1575 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc674f25543.png\" alt=\"\" width=\"1486\" height=\"774\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc674f25543.png 1486w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc674f25543-300x156.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc674f25543-1024x533.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc674f25543-768x400.png 768w\" sizes=\"auto, (max-width: 1486px) 100vw, 1486px\" \/><\/a><\/p>\r\n<\/li>\r\n<li>\r\n<p id=\"WkUDGTS\">Ele vai te mostrar cada\u00a0 recurso que est\u00e1 sendo criado e s\u00f3 resta esperar. No caso desse template, ele pode demorar conforme o tamanho dos recursos escolhidos. Com os valores padr\u00f5es, ele demora em m\u00e9dia cerca de 30min.<br \/>Neste momento podem ocorrer erros. Fique de olho sempre. Voc\u00ea tamb\u00e9m pode encontrar os deployments em andamento em um determinado resource group:<\/p>\r\n<p id=\"jsVAcXx\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc697119411.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1577 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc697119411.png\" alt=\"\" width=\"1311\" height=\"272\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc697119411.png 1311w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc697119411-300x62.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc697119411-1024x212.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc697119411-768x159.png 768w\" sizes=\"auto, (max-width: 1311px) 100vw, 1311px\" \/><\/a><\/p>\r\n<\/li>\r\n<\/ol>\r\n<p>A seguir vou fazer uma r\u00e1pida explica\u00e7\u00e3o sobre como utilizo os templates que disponibilizei no meu git!<\/p>\r\n<p>&nbsp;<\/p>\r\n<h3>TEMPLATE X-VM<\/h3>\r\n<p>Este \u00e9 \u00fatil para cria\u00e7\u00e3o r\u00e1pida de v\u00e1rias m\u00e1quinas virtuais, que est\u00e3o na mesma rede. Este template cria uma VIRTUAL NETWORK, as subnets, interfaces e ip p\u00fablicos para cada m\u00e1quina virtual. Voc\u00ea especifica a quantidade de m\u00e1quina virtuais informando o ip de cada um delas no par\u00e2metro &#8220;Ips&#8221;. Os par\u00e2metros obrigat\u00f3rios s\u00e3o o usu\u00e1rio e senha, e todas as m\u00e1quinas criadas usar\u00e3o estes mesmos valores. Por padr\u00e3o ele sobe duas m\u00e1quinas, cada uma com o seu IP privado e p\u00fablico.<\/p>\r\n<p id=\"tmkQPTy\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edd1c1fcbfe7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1582 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edd1c1fcbfe7.png\" alt=\"\" width=\"757\" height=\"556\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edd1c1fcbfe7.png 757w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edd1c1fcbfe7-300x220.png 300w\" sizes=\"auto, (max-width: 757px) 100vw, 757px\" \/><\/a><\/p>\r\n<p>Eu uso ele quando eu quero subir um SQL com uma vers\u00e3o espec\u00edfica ou quando eu preciso de um espa\u00e7o espec\u00edfico para testar algo. Por exemplo, <a href=\"https:\/\/powertuning.com.br\/\">na Power Tuning<\/a>, eu atuei num caso onde um cliente perdeu a m\u00e1quina por causa de um ransomware! Eles resolveram refazer a m\u00e1quina, mas era demorado. At\u00e9 l\u00e1, n\u00f3s precis\u00e1vamos agilizar os testes e descobrir se os backups mais recentes estavam \u00edntegros. Enquanto a equipe preparava a m\u00e1quina principal,\u00a0 eu usei este template para subir um SQL e fazer um restore de teste e confirmar que eles estavam \u00edntegros. Como os backups eram grandes, trazer para a minha m\u00e1quina iria demorar muito eu n\u00e3o teria o espa\u00e7o suficiente! Por\u00e9m, esse template me ajudou a ter rapidamente um ambiente SQL Server na mesma vers\u00e3o onde eu pude testar o backup.<\/p>\r\n<p>Em menos de 5 minutos, eu consegui subir uma m\u00e1quina j\u00e1 com o SQL instalado e a quantidade de discos que eu precisava e pedi que fizessem o upload os arquivos usando o one drive. Ent\u00e3o, rapidamente conseguimos fazer os testes de restore e certificar que o backup estava ok.<\/p>\r\n<p>O objetivo central desse template \u00e9 poder subir quantas m\u00e1quinas voc\u00ea quiser, na mesma rede. Por padr\u00e3o, o template cria duas m\u00e1quinas com imagens de um Windows Server 2019 Datacenter. Cada m\u00e1quina usa a imagem Standard D4S V3 e usa <a href=\"https:\/\/azure.microsoft.com\/en-us\/pricing\/spot\/\">Spot<\/a>.<\/p>\r\n<h3>\u00a0<\/h3>\r\n<h3>TEMPLATE SQL-AD<\/h3>\r\n<p>Esse \u00e9 meu favorito! Uma dos maiores limitadores para se montar um ambiente de alta disponibilidade com SQL Server, \u00e9 ter um dom\u00ednio. Montar um dom\u00ednio profissional com Active Directory n\u00e3o \u00e9 pra qualquer um e requer um amplo conhecimento. Mas, felizmente, quando o assunto \u00e9 estudar e testar, precisamos apenas de um dom\u00ednio b\u00e1sico para construir um cluster, AlwaysOn, etc.<\/p>\r\n<p>Esse template requer que voc\u00ea especifique apenas tr\u00eas informa\u00e7\u00f5es:<\/p>\r\n<ul>\r\n<li>Nome do usu\u00e1rio admin<\/li>\r\n<li>Senha<\/li>\r\n<li>Nome do dom\u00ednio (ex.: thesqltimes.corp)<\/li>\r\n<\/ul>\r\n<p>Ent\u00e3o, magicamente, por padr\u00e3o, ele constr\u00f3i uma infraestrutura completa com tr\u00eas m\u00e1quinas:<\/p>\r\n<ul>\r\n<li>1 m\u00e1quina, que ser\u00e1 o domain controller (por padr\u00e3o \u00e9 um Windows core para que se usa uma m\u00e1quina muito pequena)\r\n<ul>\r\n<li>Ap\u00f3s subir a m\u00e1quina ele transforma ela em Domain Controller com base no dom\u00ednio que voc\u00ea especificou no par\u00e2metro<\/li>\r\n<\/ul>\r\n<\/li>\r\n<li>2 m\u00e1quinas com SQL instalado\r\n<ul>\r\n<li>Voc\u00ea pode ainda especificar a imagem SQL que voc\u00ea quiser (vers\u00e3o e edi\u00e7\u00e3o)<\/li>\r\n<li>E tamb\u00e9m, se tiver recurso na sua conta, pode subir quantos m\u00e1quinas SQL voce puder<\/li>\r\n<\/ul>\r\n<\/li>\r\n<\/ul>\r\n<p>Imagina fazer tudo isso na m\u00e3o? Imagina configurar tr\u00eas m\u00e1quinas, tr\u00eas ip p\u00fablicos, tr\u00eas interfaces&#8230; Todo esse processo, com os par\u00e2metros default do template, leva em m\u00e9dia, uns 30 minutos, dependendo das configura\u00e7\u00f5es da m\u00e1quina. Subir as m\u00e1quinas \u00e9 relativamente r\u00e1pido. Dependendo do tamanho delas, a instala\u00e7\u00e3o do dom\u00ednio e inclus\u00e3o de cada m\u00e1quina \u00e9 quem demora mais.<\/p>\r\n<p>Uma vez no ar, eu entro e configuro um cluster e subo AlwaysON! Eu uso ele para qundo quero testar o AlwaysOn. At\u00e9 hoje n\u00e3o usei ele para subir um ambiente real de produ\u00e7\u00e3o&#8230; Quem sabe um dia&#8230;<\/p>\r\n<p>E quem sabe tambem um dia eu n\u00e3o disponibilize um template que fa\u00e7a tudo isso tamb\u00e9m? Sobe m\u00e1quinas, configura dom\u00ednio, configura o AlwaysON&#8230;<\/p>\r\n<p>Com o Azure e estes templates, por alguns centavos por m\u00eas\u00a0 eu consigo subir ambientes inteiros para explorar o m\u00e1ximo que eu posso sobre o SQL Server e o pr\u00f3prio Azure, e o melhor: foco no SQL!<\/p>\r\n<figure id=\"attachment_1579\" aria-describedby=\"caption-attachment-1579\" style=\"width: 1259px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc7b397f59a.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1579 size-full\" src=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc7b397f59a.png\" alt=\"Estrutura e dom\u00ednio com os par\u00e2metros default\" width=\"1259\" height=\"442\" srcset=\"https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc7b397f59a.png 1259w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc7b397f59a-300x105.png 300w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc7b397f59a-1024x359.png 1024w, https:\/\/thesqltimes.com\/blog\/wp-content\/uploads\/2020\/06\/img_5edc7b397f59a-768x270.png 768w\" sizes=\"auto, (max-width: 1259px) 100vw, 1259px\" \/><\/a><figcaption id=\"caption-attachment-1579\" class=\"wp-caption-text\">3 m\u00e1quinas, cada uma com sua interface conectadas na mesma rede virtual. 1 AD e 2 SQL, inclusos no dom\u00ednio!<\/figcaption><\/figure>\r\n<p>N\u00e3o deixe de ficar de olho no reposit\u00f3rio e acompanhar as novidades! Se voc\u00ea tiver d\u00favidas de como usar estes templates, abra um issue no git que tento explicar melhorar e tamb\u00e9m tento melhorar documenta\u00e7\u00e3o!<\/p>\r\n<p>At\u00e9 l\u00e1, aproveite esse recurso fant\u00e1stico do Azure para poupar tempo e focar no seu SQL Server!<\/p>\r\n<p>E se voce quiser aprender mais sobre AlwaysON, Alta Disponibilidade, Disaster Recovery, etc.,\u00a0 <a href=\"https:\/\/cursos.powertuning.com.br\/course?courseid=mdulo-01-hadr-incio-da-jornada\">confira os cursos de HADR na plataforma de cursos da PowerTuning! O m\u00f3dulo 01 \u00e9 FREE!<\/a><\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>O Azure j\u00e1 est\u00e1 a\u00ed h\u00e1 algum tempo e eu confesso: demorei pra aceitar ele na minha vida. E uma das coisas que me distanciavam dele era criar um ambiente no portal: Escolhe m\u00e1quina, escolhe tamanho de m\u00e1quina, escolhe a imagem&#8230; Escolhe virtual network, d\u00e1 nome, define ip define subnet&#8230; Disco, escolhe tamanho, escolhe tipo,&hellip;&nbsp;<a href=\"https:\/\/thesqltimes.com\/blog\/2020\/06\/07\/azure-arm-templates-como-eu-monto-uma-infra-pra-um-alwayson-em-minutos\/\" rel=\"bookmark\"><span class=\"screen-reader-text\">Azure ARM Templates: Como eu monto uma infra pra um AlwaysON em minutos?<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1579,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[8,343,277,7],"tags":[346,344,280,347,345,73],"series":[],"class_list":["post-1455","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administracao","category-arm-template","category-azure","category-sql-server","tag-active-directory","tag-arm-template","tag-azure","tag-infraestutura","tag-modelos","tag-sql-server"],"_links":{"self":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/comments?post=1455"}],"version-history":[{"count":19,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1455\/revisions"}],"predecessor-version":[{"id":1599,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/posts\/1455\/revisions\/1599"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media\/1579"}],"wp:attachment":[{"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/media?parent=1455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/categories?post=1455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/tags?post=1455"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/thesqltimes.com\/blog\/wp-json\/wp\/v2\/series?post=1455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}