{"id":90386,"date":"2020-07-31T13:42:20","date_gmt":"2020-07-31T11:42:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management"},"modified":"2020-07-31T13:42:20","modified_gmt":"2020-07-31T11:42:20","slug":"triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","title":{"rendered":"Um thriller sobre a configura\u00e7\u00e3o de servidores sem milagres com Gerenciamento de Configura\u00e7\u00e3o","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A aproxima\u00e7\u00e3o do Ano Novo estava pr\u00f3xima. As crian\u00e7as de todo o pa\u00eds j\u00e1 enviaram cartas ao Papai Noel ou fizeram seus pedidos de presentes, enquanto o principal executor \u2014 um dos grandes varejistas \u2014 se preparava para o apogeu das vendas. Em dezembro, a carga em seu data center aumenta v\u00e1rias vezes. Portanto, a empresa decidiu modernizar o data center e colocar em opera\u00e7\u00e3o v\u00e1rias dezenas de novos servidores para substituir equipamentos cujo tempo de vida estava se esgotando. Assim, a introdu\u00e7\u00e3o termina em um pano de fundo de flocos de neve e come\u00e7a o thriller. <\/p>\n<p><img decoding=\"async\" alt=\"Um thriller sobre a configura\u00e7\u00e3o de servidores sem milagres com Gerenciamento de Configura\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2020\/07\/ebc2128d73e9a0e7f1e383b4b04ee492.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nO equipamento chegou ao local meses antes do pico de vendas. O servi\u00e7o de opera\u00e7\u00f5es, \u00e9 claro, sabe como e o que ajustar nos servidores para coloc\u00e1-los em um ambiente de produ\u00e7\u00e3o. Mas precis\u00e1vamos automatizar isso e eliminar o fator humano. Al\u00e9m disso, os servidores substitu\u00edam um conjunto de sistemas SAP, cr\u00edticos para a empresa, antes da migra\u00e7\u00e3o. <\/p>\n<p>A coloca\u00e7\u00e3o em funcionamento dos novos servidores estava rigidamente ligada ao prazo final. E adiar isso significava colocar em risco a entrega de um bilh\u00e3o de presentes e a migra\u00e7\u00e3o dos sistemas. Mudan\u00e7as na data n\u00e3o poderiam ser feitas nem mesmo pela equipe do Papai Noel ou do Santa Claus \u2014 transferir o sistema SAP para a gest\u00e3o do armaz\u00e9m s\u00f3 pode ser feito uma vez por ano. De 31 de dezembro a 1 de janeiro, enormes armaz\u00e9ns do varejista, somando o tamanho de 20 campos de futebol, param suas opera\u00e7\u00f5es por 15 horas. E essa \u00e9 a \u00fanica janela de tempo para migrar o sistema. N\u00e3o pod\u00edamos cometer erros ao ativar os servidores. <\/p>\n<p>Deixe-me esclarecer imediatamente: minha hist\u00f3ria reflete as ferramentas e o processo de gerenciamento de configura\u00e7\u00f5es que nossa equipe utiliza.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nO sistema de gerenciamento de configura\u00e7\u00f5es consiste em v\u00e1rios n\u00edveis. O componente chave \u00e9 o sistema CMS. Na opera\u00e7\u00e3o industrial, a falta de um dos n\u00edveis resultaria inevitavelmente em surpresas desagrad\u00e1veis.<\/p>\n<h1>Gerenciamento da instala\u00e7\u00e3o do SO<\/h1>\n<p>\nO primeiro n\u00edvel \u00e9 o sistema de gerenciamento da instala\u00e7\u00e3o de sistemas operacionais em servidores f\u00edsicos e virtuais. Ele cria configura\u00e7\u00f5es b\u00e1sicas do SO, eliminando o fator humano. <\/p>\n<p>Com este sistema, obtivemos inst\u00e2ncias de servidores com SO que eram t\u00edpicas e adequadas para futura automa\u00e7\u00e3o. Durante a \"distribui\u00e7\u00e3o\", eles recebiam o conjunto m\u00ednimo de usu\u00e1rios locais e chaves p\u00fablicas SSH, al\u00e9m de uma configura\u00e7\u00e3o de SO consistente. Pod\u00edamos gerenciar os servidores atrav\u00e9s da CMS com garantia, sabendo que \"por baixo\", no n\u00edvel do SO, n\u00e3o havia surpresas. <\/p>\n<p>A tarefa \"m\u00e1xima\" para o sistema de gerenciamento de instala\u00e7\u00e3o \u00e9 configurar automaticamente os servidores desde o n\u00edvel de BIOS\/Firmware at\u00e9 o SO. Muito disso depende do hardware e das tarefas de configura\u00e7\u00e3o. Para hardware heterog\u00eaneo, pode-se considerar <noindex><a rel=\"nofollow\" href=\"https:\/\/www.dmtf.org\/standards\/redfish\">REDFISH API<\/a><\/noindex>. Se todo o \"hardware\" for de um \u00fanico fornecedor, muitas vezes \u00e9 mais conveniente usar ferramentas de gerenciamento prontas (por exemplo, HP ILO Amplifier, DELL OpenManage, etc.).<\/p>\n<p>Para a instala\u00e7\u00e3o do SO em servidores f\u00edsicos, usamos o Cobbler, conhecido por todos, que possui um conjunto definido de perfis de instala\u00e7\u00e3o acordados com o servi\u00e7o de opera\u00e7\u00f5es. Ao adicionar um novo servidor \u00e0 infraestrutura, o engenheiro vinculava o endere\u00e7o MAC do servidor ao perfil necess\u00e1rio no Cobbler. Na primeira inicializa\u00e7\u00e3o pela rede, o servidor recebia um endere\u00e7o tempor\u00e1rio e um SO atualizado. Depois, ele era movido para a VLAN\/endere\u00e7o IP alvo e continuava a funcionar l\u00e1. Sim, mudar a VLAN leva tempo e requer coordena\u00e7\u00e3o, mas isso proporciona prote\u00e7\u00e3o adicional contra a instala\u00e7\u00e3o acidental do servidor em um ambiente de produ\u00e7\u00e3o.<\/p>\n<p>Cri\u00e1vamos servidores virtuais com base em templates preparados com o HashiCorp Packer. A raz\u00e3o era a mesma: evitar poss\u00edveis erros humanos na instala\u00e7\u00e3o do SO. Mas, ao contr\u00e1rio dos servidores f\u00edsicos, o Packer permite n\u00e3o usar PXE, inicializa\u00e7\u00e3o pela rede e mudan\u00e7a de VLAN. Isso facilitou e simplificou a cria\u00e7\u00e3o de servidores virtuais. <\/p>\n<p><img decoding=\"async\" alt=\"Um thriller sobre a configura\u00e7\u00e3o de servidores sem milagres com Gerenciamento de Configura\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2020\/07\/8cde23a4ad2ba1573bc88ec174bfe6b5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 1. Gerenciamento da instala\u00e7\u00e3o de sistemas operacionais.<\/i><\/p>\n<h1>Gerenciamento de segredos<\/h1>\n<p>\nQualquer sistema de gerenciamento de configura\u00e7\u00f5es cont\u00e9m dados que devem ser ocultos de usu\u00e1rios comuns, mas s\u00e3o necess\u00e1rios para a prepara\u00e7\u00e3o de sistemas. Isso inclui senhas de usu\u00e1rios locais e contas de servi\u00e7o, chaves de certificados, v\u00e1rios tokens de API, etc. Normalmente, s\u00e3o chamados de \"segredos\".<\/p>\n<p>Se desde o in\u00edcio n\u00e3o determinar onde e como armazenar esses segredos, dependendo da rigorosidade dos requisitos de seguran\u00e7a da informa\u00e7\u00e3o, \u00e9 prov\u00e1vel que ocorram as seguintes formas de armazenamento:<\/p>\n<ul>\n<li>diretamente no c\u00f3digo de gerenciamento de configura\u00e7\u00f5es ou em arquivos no reposit\u00f3rio;<\/li>\n<li>em ferramentas especializadas de gerenciamento de configura\u00e7\u00f5es (por exemplo, Ansible Vault);<\/li>\n<li>em sistemas de CI\/CD (Jenkins\/TeamCity\/GitLab\/etc.) ou em sistemas de gerenciamento de configura\u00e7\u00f5es (Ansible Tower\/Ansible AWX);<\/li>\n<li>tamb\u00e9m os segredos podem ser gerenciados manualmente. Por exemplo, s\u00e3o disponibilizados em um local acordado e, em seguida, utilizados pelos sistemas de gerenciamento de configura\u00e7\u00f5es;<\/li>\n<li>diferentes combina\u00e7\u00f5es do que foi descrito acima.<\/li>\n<\/ul>\n<p>\nCada m\u00e9todo tem suas desvantagens. A principal delas \u00e9 a aus\u00eancia de pol\u00edticas de acesso aos segredos: n\u00e3o \u00e9 poss\u00edvel ou \u00e9 dif\u00edcil determinar quem pode usar determinados segredos. Outro ponto negativo \u00e9 a falta de auditoria de acesso e um ciclo de vida completo. Como substituir rapidamente, por exemplo, uma chave p\u00fablica que est\u00e1 codificada e em v\u00e1rios sistemas relacionados?<\/p>\n<p>Utilizamos um reposit\u00f3rio centralizado de segredos, o HashiCorp Vault. Isso nos permitiu: <\/p>\n<ul>\n<li>armazenar segredos de forma segura. Eles s\u00e3o criptografados, e mesmo que algu\u00e9m tenha acesso ao banco de dados do reposit\u00f3rio Vault (por exemplo, restaurando-o de um backup), n\u00e3o conseguir\u00e1 ler os segredos armazenados l\u00e1; <\/li>\n<li>organizar pol\u00edticas de acesso aos segredos. Apenas os segredos 'designados' s\u00e3o acess\u00edveis a usu\u00e1rios e aplicativos;<\/li>\n<li>realizar auditoria de acesso aos segredos. Qualquer a\u00e7\u00e3o realizada com os segredos \u00e9 registrada no log de auditoria do Vault;<\/li>\n<li>organizar um 'ciclo de vida' completo para o trabalho com segredos. Eles podem ser criados, revogados, ter um prazo de validade definido, etc.<\/li>\n<li>integrar facilmente com outros sistemas que precisam de acesso aos segredos;<\/li>\n<li>e tamb\u00e9m aplicar criptografia de ponta a ponta, senhas descart\u00e1veis para sistemas operacionais e bancos de dados, certificados de autoridades certificadoras etc. <\/li>\n<\/ul>\n<p>\nAgora vamos abordar o sistema central de autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o. Poder\u00edamos ter funcionado sem ele, mas gerenciar usu\u00e1rios em m\u00faltiplos sistemas relacionados \u00e9 bastante complicado. Configuramos a autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o atrav\u00e9s do servi\u00e7o LDAP. Caso contr\u00e1rio, no mesmo Vault, ter\u00edamos que emitir continuamente e monitorar os tokens de autentica\u00e7\u00e3o dos usu\u00e1rios. E adicionar ou remover usu\u00e1rios se tornaria uma busca por \"em todos os lugares que eu criei\/removi este usu\u00e1rio?\" <\/p>\n<p>Adicionamos mais um n\u00edvel ao nosso sistema: gerenciamento de segredos e autentica\u00e7\u00e3o\/autoriza\u00e7\u00e3o central;<\/p>\n<p><img decoding=\"async\" alt=\"Um thriller sobre a configura\u00e7\u00e3o de servidores sem milagres com Gerenciamento de Configura\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2020\/07\/993e863417898c39940fe0bc9ee55b1e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 2. Gerenciamento de segredos.<\/i><\/p>\n<h1>Gerenciamento de configura\u00e7\u00f5es<\/h1>\n<p>\nChegamos ao cerne \u2014 ao sistema CMS. No nosso caso, trata-se da combina\u00e7\u00e3o Ansible e Red Hat Ansible AWX. <\/p>\n<p>Em vez do Ansible, pode-se utilizar Chef, Puppet, SaltStack. Optamos pelo Ansible por v\u00e1rios crit\u00e9rios. <\/p>\n<ul>\n<li>Em primeiro lugar, sua versatilidade. O conjunto de m\u00f3dulos prontos para gerenciamento <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/modules_by_category.html\">impressiona<\/a><\/noindex>. E se faltar algum, voc\u00ea pode procurar no GitHub e no Galaxy. <\/li>\n<li>Em segundo lugar, n\u00e3o \u00e9 necess\u00e1rio instalar e manter agentes no hardware gerenciado, provar que eles n\u00e3o interferem na carga e confirmar a aus\u00eancia de \"backdoors\". <\/li>\n<li>Em terceiro lugar, o Ansible possui uma baixa barreira de entrada. Um engenheiro competente escrever\u00e1 um playbook funcional logo no primeiro dia de trabalho com o produto.<\/li>\n<\/ul>\n<p>\nMas apenas o Ansible em um ambiente de produ\u00e7\u00e3o n\u00e3o era suficiente para n\u00f3s. Caso contr\u00e1rio, surgiriam muitos problemas com restri\u00e7\u00e3o de acesso e auditoria das a\u00e7\u00f5es dos administradores. Como restringir o acesso? Precis\u00e1vamos que cada departamento gerenciasse (ou seja, executasse o playbook do Ansible) seu pr\u00f3prio conjunto de servidores. Como permitir a execu\u00e7\u00e3o de playbooks do Ansible espec\u00edficos apenas para determinados funcion\u00e1rios? Ou como rastrear quem executou um playbook, sem criar m\u00faltiplas contas locais nos servidores e equipamentos gerenciados pelo Ansible?<\/p>\n<p>A maior parte dessas quest\u00f5es \u00e9 resolvida pelo Red Hat <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ansible.com\/products\/tower\">Ansible Tower<\/a><\/noindex>, ou seu projeto upstream open-source <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ansible\/awx\">Ansible AWX<\/a><\/noindex>. Portanto, preferimos us\u00e1-lo para o cliente. <\/p>\n<p>E mais um detalhe sobre o perfil do nosso sistema CMS. O playbook do Ansible deve ser armazenado em sistemas de gerenciamento de reposit\u00f3rios de c\u00f3digo. No nosso caso, \u00e9 o <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/install\/\">GitLab CE<\/a><\/noindex>.<\/p>\n<p>Portanto, o gerenciamento das configura\u00e7\u00f5es \u00e9 realizado pela combina\u00e7\u00e3o Ansible\/Ansible AWX\/GitLab (veja a Fig. 3). Naturalmente, o AWX\/GitLab est\u00e1 integrado a um sistema \u00fanico de autentica\u00e7\u00e3o, e o playbook do Ansible \u00e9 integrado ao HashiCorp Vault. As configura\u00e7\u00f5es entram no ambiente de produ\u00e7\u00e3o somente atrav\u00e9s do Ansible AWX, onde todas as \"regras do jogo\" est\u00e3o definidas: quem e o que pode configurar, de onde obter o c\u00f3digo de gerenciamento de configura\u00e7\u00f5es para o CMS, etc.<\/p>\n<p><img decoding=\"async\" alt=\"Um thriller sobre a configura\u00e7\u00e3o de servidores sem milagres com Gerenciamento de Configura\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2020\/07\/f4f5b3904a2145d7283cd52f921bca89.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 3. Gerenciamento de configura\u00e7\u00f5es.<\/i><\/p>\n<h1>Gerenciamento de testes<\/h1>\n<p>\nNossa configura\u00e7\u00e3o \u00e9 apresentada na forma de c\u00f3digo. Portanto, somos obrigados a jogar segundo as mesmas regras que os desenvolvedores de software. Precis\u00e1vamos organizar os processos de desenvolvimento, teste cont\u00ednuo, entrega e aplica\u00e7\u00e3o do c\u00f3digo de configura\u00e7\u00e3o nos servidores de produ\u00e7\u00e3o.<\/p>\n<p>Se isso n\u00e3o for feito imediatamente, os pap\u00e9is escritos para a configura\u00e7\u00e3o deixariam de ser suportados e atualizados, ou parariam de ser executados em produ\u00e7\u00e3o. A solu\u00e7\u00e3o para essa dor \u00e9 conhecida e se mostrou eficaz neste projeto:<\/p>\n<ul>\n<li>cada papel \u00e9 coberto por testes modulares;<\/li>\n<li>os testes s\u00e3o executados automaticamente sempre que h\u00e1 uma altera\u00e7\u00e3o no c\u00f3digo que controla as configura\u00e7\u00f5es;<\/li>\n<li>as altera\u00e7\u00f5es no c\u00f3digo de gerenciamento de configura\u00e7\u00f5es v\u00e3o para o ambiente de produ\u00e7\u00e3o somente ap\u00f3s a aprova\u00e7\u00e3o em todos os testes e na revis\u00e3o de c\u00f3digo.<\/li>\n<\/ul>\n<p>\nO desenvolvimento de c\u00f3digo e o gerenciamento de configura\u00e7\u00f5es tornaram-se mais tranquilos e previs\u00edveis. Para organiza\u00e7\u00e3o de testes cont\u00ednuos, utilizamos a ferramenta GitLab CI\/CD, e para o framework de teste escolhemos <noindex><a rel=\"nofollow\" href=\"https:\/\/molecule.readthedocs.io\/en\/latest\/\">Ansible Molecule<\/a><\/noindex>.<\/p>\n<p>Sempre que h\u00e1 uma altera\u00e7\u00e3o no c\u00f3digo de gerenciamento de configura\u00e7\u00f5es, o GitLab CI\/CD chama o Molecule: <\/p>\n<ul>\n<li>ele verifica a sintaxe do c\u00f3digo, <\/li>\n<li>levanta um cont\u00eainer Docker, <\/li>\n<li>aplica o c\u00f3digo alterado no cont\u00eainer criado, <\/li>\n<li>verifica a idempot\u00eancia do papel e executa testes para esse c\u00f3digo (a granularidade aqui est\u00e1 ao n\u00edvel do papel ansible, veja a Fig. 4).<\/li>\n<\/ul>\n<p>\nAs configura\u00e7\u00f5es foram entregues ao ambiente de produ\u00e7\u00e3o usando Ansible AWX. Os engenheiros respons\u00e1veis pela opera\u00e7\u00e3o aplicavam as altera\u00e7\u00f5es na configura\u00e7\u00e3o atrav\u00e9s de modelos previamente definidos. O AWX solicitava a vers\u00e3o mais recente do c\u00f3digo a partir do branch master do GitLab a cada aplica\u00e7\u00e3o. Assim, evitamos o uso de c\u00f3digo n\u00e3o verificado ou desatualizado no ambiente de produ\u00e7\u00e3o. Naturalmente, o c\u00f3digo chegava ao branch master apenas ap\u00f3s ser testado, revisado e aprovado.<\/p>\n<p><img decoding=\"async\" alt=\"Um thriller sobre a configura\u00e7\u00e3o de servidores sem milagres com Gerenciamento de Configura\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2020\/07\/aa8f6205f05792a6a1120ad7360ab102.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 4. Testes autom\u00e1ticos de pap\u00e9is no GitLab CI\/CD.<\/i><\/p>\n<p>H\u00e1 um outro problema relacionado \u00e0 opera\u00e7\u00e3o de sistemas em produ\u00e7\u00e3o. Na vida real, \u00e9 muito dif\u00edcil fazer altera\u00e7\u00f5es na configura\u00e7\u00e3o apenas atrav\u00e9s do c\u00f3digo CMS. Situa\u00e7\u00f5es inesperadas surgem, onde o engenheiro precisa alterar a configura\u00e7\u00e3o \"aqui e agora\", sem esperar pela corre\u00e7\u00e3o do c\u00f3digo, testes, aprova\u00e7\u00f5es etc.<\/p>\n<p>Como resultado, devido a altera\u00e7\u00f5es manuais, surgem discrep\u00e2ncias na configura\u00e7\u00e3o em equipamentos semelhantes (por exemplo, em n\u00f3s de um cluster HA, configura\u00e7\u00f5es sysctl diferentes). Ou a configura\u00e7\u00e3o real no equipamento difere daquela especificada no c\u00f3digo CMS. <\/p>\n<p>Portanto, al\u00e9m dos testes cont\u00ednuos, verificamos os ambientes de produ\u00e7\u00e3o em busca de diverg\u00eancias nas configura\u00e7\u00f5es. Optamos pela op\u00e7\u00e3o mais simples: executar o c\u00f3digo de configura\u00e7\u00e3o do CMS no modo \"dry run\", ou seja, sem aplicar mudan\u00e7as, mas notificando sobre todas as diverg\u00eancias entre a configura\u00e7\u00e3o planejada e a real. Implementamos isso por meio da execu\u00e7\u00e3o peri\u00f3dica de todos os playbooks do Ansible com a op\u00e7\u00e3o \"--check\" em servidores de produ\u00e7\u00e3o. A execu\u00e7\u00e3o e a relev\u00e2ncia dos playbooks, como sempre, s\u00e3o responsabilidade do Ansible AWX (veja a Fig. 5):<\/p>\n<p><img decoding=\"async\" alt=\"Um thriller sobre a configura\u00e7\u00e3o de servidores sem milagres com Gerenciamento de Configura\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2020\/07\/108a5a473f60ab76ee15f9334ebcbab7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 5. Verifica\u00e7\u00f5es de discrep\u00e2ncia de configura\u00e7\u00f5es no Ansible AWX.<\/i><\/p>\n<p>Ap\u00f3s as verifica\u00e7\u00f5es, o AWX envia um relat\u00f3rio de discrep\u00e2ncias aos administradores. Eles analisam a configura\u00e7\u00e3o problem\u00e1tica e, em seguida, a corrigem por meio de playbooks ajustados. Assim, mantemos a configura\u00e7\u00e3o no ambiente de produ\u00e7\u00e3o e a CMS est\u00e1 sempre atualizada e sincronizada. Isso evita os desagrad\u00e1veis 'milagres' quando o c\u00f3digo da CMS \u00e9 aplicado em servidores de 'produ\u00e7\u00e3o'.<\/p>\n<p>Agora temos um n\u00edvel importante de testes, que consiste em Ansible AWX\/GitLab\/Molecule (Fig. 6).<\/p>\n<p><img decoding=\"async\" alt=\"Um thriller sobre a configura\u00e7\u00e3o de servidores sem milagres com Gerenciamento de Configura\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2020\/07\/f487f5603e90b0c753fb9decf9018b11.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fig. 6. Gest\u00e3o de testes.<\/i><\/p>\n<p>Dif\u00edcil? N\u00e3o discordo. Mas tal complexo de gerenciamento de configura\u00e7\u00f5es se tornou a resposta abrangente para muitas quest\u00f5es relacionadas \u00e0 automa\u00e7\u00e3o da configura\u00e7\u00e3o de servidores. Agora, um varejista sempre tem uma configura\u00e7\u00e3o estritamente definida para seus servidores padr\u00e3o. A CMS, ao contr\u00e1rio do engenheiro, n\u00e3o se esquece de adicionar as configura\u00e7\u00f5es necess\u00e1rias, criar usu\u00e1rios e realizar dezenas ou centenas de ajustes exigidos.<\/p>\n<p>Nas configura\u00e7\u00f5es de servidores e ambientes, hoje n\u00e3o existem 'conhecimentos secretos'. Todas as caracter\u00edsticas necess\u00e1rias est\u00e3o refletidas nos playbooks. Nada de criatividade e instru\u00e7\u00f5es obscuras: '<i>instale como um Oracle comum, mas l\u00e1 \u00e9 necess\u00e1rio definir algumas configura\u00e7\u00f5es do sysctl e adicionar usu\u00e1rios com o UID apropriado. Pergunte aos caras da opera\u00e7\u00e3o, eles sabem.<\/i>\u00bb. <\/p>\n<p>A capacidade de detectar discrep\u00e2ncias de configura\u00e7\u00e3o e corrig\u00ed-las antecipadamente traz tranquilidade. Sem um sistema de gerenciamento de configura\u00e7\u00f5es, isso geralmente acontece de maneira diferente. Os problemas se acumulam at\u00e9 que um dia 'explodam' em produ\u00e7\u00e3o. Depois, realiza-se uma an\u00e1lise de falhas, verificam-se e corrigem-se as configura\u00e7\u00f5es. E o ciclo se repete novamente. <\/p>\n<p>E claro, aceleramos a implementa\u00e7\u00e3o dos servidores de alguns dias para algumas horas.<\/p>\n<p>Na pr\u00f3pria noite de Ano Novo, quando as crian\u00e7as desembrulhavam presentes com alegria e os adultos faziam desejos ao som das badaladas, nossos engenheiros migraram o sistema SAP para novos servidores. At\u00e9 o Papai Noel diria que os melhores milagres s\u00e3o bem planejados. <\/p>\n<p>P.S. Nossa equipe frequentemente enfrenta a situa\u00e7\u00e3o em que os clientes desejam resolver as tarefas de gerenciamento de configura\u00e7\u00f5es da maneira mais simples poss\u00edvel. Idealmente, como se fosse m\u00e1gica \u2014 com uma \u00fanica ferramenta. Mas na pr\u00e1tica, tudo \u00e9 mais complicado (sim, novamente n\u00e3o trouxeram as balas de prata): \u00e9 preciso criar todo um processo usando ferramentas que sejam convenientes para a equipe do cliente.<\/p>\n<p><i>Autor: Sergey Artemov, arquiteto de departamento <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/portal.jet.su\/about\/company\/structure\/?set_filter_structure=Y&amp;structure_UF_DEPARTMENT=56656\"><i>sistemas DevOps<\/i><\/a><\/noindex><i> \u2018Infosistemas Jet\u2019<\/i><br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/jetinfosystems\/blog\/513132\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436. \u0412 \u0434\u0435\u043a\u0430\u0431\u0440\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0435\u0433\u043e \u0426\u041e\u0414 \u0432\u044b\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0438\u043b\u0430 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440 \u0438 \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u0441\u0442\u0440\u043e\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043d\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":90387,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-90386","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u0440\u0438\u043b\u043b\u0435\u0440 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 \u0447\u0443\u0434\u0435\u0441 \u0441 Configuration Management | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-31T11:42:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-31T11:42:20+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Thriller sobre configura\u00e7\u00e3o de servidores sem m\u00e1gica com Gerenciamento de Configura\u00e7\u00e3o | ProHoster","description":"A chegada do Ano Novo estava se aproximando. As crian\u00e7as de todo o pa\u00eds j\u00e1 haviam enviado cartas ao Papai Noel ou feito pedidos de presentes, enquanto o principal executor, um dos grandes varejistas, se preparava para o cl\u00edmax das vendas.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u0440\u0438\u043b\u043b\u0435\u0440 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 \u0447\u0443\u0434\u0435\u0441 \u0441 Configuration Management | ProHoster","og:description":"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-31T11:42:20+00:00","article:modified_time":"2020-07-31T11:42:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"90386","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:52:34","updated":"2022-09-28 09:47:54","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/90386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=90386"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/90386\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/90387"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=90386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=90386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=90386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}