Qual o papel que as ferramentas de Gerenciamento de configuração desempenham na infraestrutura imutável?

12

Se estiver usando servidores / contêineres imutáveis , preciso de ferramentas como Chef, Puppet, Ansible ou Salt? Essas ferramentas de gerenciamento de configuração foram projetadas para estabelecer uma configuração e depois mantê-la.

Se estou implantando servidores imutáveis, devo usar as ferramentas de gerenciamento de configuração apenas para o provisionamento inicial?

Dave Swersky
fonte

Respostas:

12

Existem algumas respostas para isso:

  1. Algo precisa criar essas imagens imutáveis. Certamente é mais fácil usar o script de procedimentos no estilo da velha escola para criar algo ao iniciar a partir de um estado inicial conhecido, mas isso ainda pode ficar muito complicado ao longo do tempo (por exemplo, Dockerfiles), especialmente quando você acaba querendo uma grande matriz de imagens diferentes para coisas como versões diferentes de software, ambientes diferentes, etc. O Packer e outras ferramentas de criação de imagem se integram perfeitamente ao Chef, Ansible, Puppet, Salt e muito mais.

  2. A imutabilidade é um espectro, não um binário. Mesmo em uma implantação "muito imutável", não é incomum ter alguns arquivos de configuração que precisam de gerenciamento de tempo de execução. Este também é um lugar onde você pode usar as ferramentas do CAPS, embora opções mais leves, como Consul Templates ou etcd, possam fazer mais sentido, dependendo da infra-estrutura geral. Se você estiver criando servidores de aplicativos imutáveis, mas seus servidores de banco de dados forem gerenciados de maneira mais tradicional usando o Chef, pode fazer sentido usar o Chef mesmo no lado imutável para tarefas de gerenciamento menores.

  3. Gerenciamento de dia zero. A imutabilidade é boa, mas o que você fará quando o próximo dia 0 do OpenSSL cair? Se você tem seu pipeline de criação em posição de criar imagens de hotfix imediatas e implantá-las, isso é ótimo. Mas muitas pessoas provavelmente não terão esse tipo de habilidade de virar rápido.

  4. Coisas que não podem ser imutáveis. A resposta, mas toda uma infra raramente é 100% imutável. Coisas como servidores de banco de dados e estações de trabalho de desenvolvedor (sim, elas fazem parte da sua infra-estrutura) estão entre difícil e impossível de tornar imutável.

coderanger
fonte
Você está fazendo muitas suposições sobre "muitas pessoas". Aqueles que não podem gerar imagens para sua infraestrutura imutável, provavelmente não têm a infraestrutura imutável para começar.
Evgeny
Há uma grande lacuna entre "pode ​​implantar usando contêineres imutáveis" e "pode ​​reconstruir e reimplementar todos os contêineres dentro de 6 horas, mesmo com outras implantações em andamento".
precisa saber é o seguinte
E, na minha experiência, quando você tem essa lacuna (de 6 horas), não consegue ter uma infraestrutura imutável. Ter servidores imutáveis ​​e construir servidores imutáveis ​​rapidamente não são habilidades idênticas, mas estão intimamente relacionadas.
Evgeny
Muitas pessoas que dizem "corremos contêineres imutáveis" não estão nessa categoria. Portanto, salientando que é um problema a ser resolvido, que era o ponto principal da questão.
precisa saber é o seguinte
Você pode definir "imutável" como "ninguém entra e faz alterações manuais", porque não pode significar completamente imutável, pois elas se alteram durante as operações normais. Até escrever um arquivo de pid é uma mutação.
Gaius
0

Ambiente absolutamente imutável é uma má ideia, eu acho.

Ferramentas de CM como Ansible, Chef, Puppet podem ser úteis em muitos casos, incluindo o seu.

Estou usando o ansible para provisionamento inicial de instâncias de VM no GCP.

Quarind
fonte