Eu acho que a experiência de um desenvolvedor tornará os 'devops' realmente mais complicados. Sua pergunta tem quase 3 anos. Portanto, seria interessante saber como você está encontrando a jornada. Darei uma resposta do ponto de vista de o administrador do sistema sobre os aplicativos que você mencionou acima e espero que isso mostre alguma luz ou dê uma perspectiva não técnica que explique por que uma pessoa (administrador ou desenvolvedor) começaria a considerar exatamente o que você pediu, por exemplo, dos devops perspectiva qual é a relação entre x, y, z essas ferramentas são maiores que a soma de suas partes?
Na verdade, acho que os administradores de sistemas têm vantagem aqui, a maioria dos aplicativos mencionados na sua pergunta resolve os 'problemas' dos administradores e, portanto, fornece um ambiente mais abstrato do datacenter, o que, por sua vez, é mais programável para desenvolvedores e os novos estratégia dos devops (leia estratégia / equipe, devops não é uma pessoa). Então, qual é o relacionamento com os aplicativos mencionados? como isso fornece uma abordagem holística ao serviço de TI?
OpenStack: uma ferramenta que permite criar sua própria nuvem privada, portanto comparável a algo como a AWS
É isso que é, mas o que faz? - o sistema operacional mais apropriadamente chamado era DOS - operava seu disco abstraindo o BIOS, o OpenStack opera seu datacenter e abstrai sua infraestrutura (IaaS - é o jargão do sistema operacional do datacenter). Agora, o seu centro de dados tem uma API, uma sintaxe de comando e uma interface gráfica, OpenStack pode dirigir hypervisors, switches, roteadores, firewalls, redes de armazenamento, balanceadores de carga, anfitriões docker etc .. OpenStack usa seu hardware fabrica 'plug-in' ou a função especial pode existir apenas no software, pois o software definiu algoou virtualização de funções de rede. Além disso, o OpenStack e todas as outras nuvens podem orquestrar sua própria infraestrutura lendo scripts que você lança no mecanismo de orquestração ou são acionados com base em regras (aumento, redução, etc.). Portanto, o openstack é uma camada gigante de abstração, por exemplo, eu não me importo com o switch que tenho, me dê uma rede com esse comando ou crie uma complicada carga equilibrada, alta disponibilidade, disponibilidade pública, escala automática, nome de domínio registrado, armazenamento anexado coisinha - com este script que encontrei na internet.
Docker: Uma "VM leve", baseada em alguns conceitos de kernel Linux, que pode ser usada para executar processos isoladamente, por exemplo, em um ambiente compartilhado de hospedagem na web.
O Docker é outra camada de abstração e, como a nuvem é uma tecnologia disruptiva, está mudando o setor porque resolve muitos 'problemas' operacionais, como dependências de software, atualizações, isolamento de dados e pura portabilidade. O Java tornou-se popular por causa da portabilidade do código-fonte que os desenvolvedores não precisavam pensar; uma JVM em execução significava que seu código deveria ser executado na máquina de café desde que suportasse java. O Docker resolve um problema semelhante. Para executar meu aplicativo, você precisa de um host do docker, não, você precisa desta versão do python, deste kernel, dessa distribuição Linux e assim por diante, é claro que o aplicativo ainda possui essas dependências, mas o host subjacente não se importa e o administrador não se importa com o que você faz dentro de um contêiner isolado ( até certo ponto). O Docker está mudando o paradigma de desenvolvimento e operações, tratando todo um sistema operacional e seus serviços como um binário. podemos obtê-los de um repositório , versão deles, modificá-los, executá-los com parâmetros etc.
Chef: Uma ferramenta para instalar e configurar um sistema operacional, por exemplo, dentro de uma VM.
Sim, e não tão perturbador quanto os dois primeiros, Chef, fantoche, ansible, salt, gerente de operações do system center e uma enorme variedade de outros aplicativos neste espaço fornecem uma maneira para desenvolvedores e administradores modelarem implantações, atualizações e outras ações (config mudanças), não parece haver nenhum órgão de padrões que analise esses esforços como existe para a nuvem . Mas não estamos lidando com algo tão definitivo quanto a infraestrutura, portanto, é mais doloroso aprender isso e não há muita coisa transferível de um para o outro.
Vagrant: Do meu entendimento, é automatizar a criação e o gerenciamento de VMs: configurando-as, iniciando e parando-as. Isso pode ser feito usando uma VM local ou remota, por exemplo, em uma plataforma em nuvem.
Esse é o mais estranho na lista de aplicativos que você mencionou, o Vagrant é uma ferramenta para desenvolvedores e um brinquedo para administradores, você pode rapidamente suportar um ambiente de desenvolvimento com vagrant, por exemplo, eu quero desenvolver um aplicativo para Android, pegar um IDE em vagabundo, acho que será ultrapassado por Docker em breve.
você pode me dar um conselho sobre como começar a usar tudo isso (é bastante ao mesmo tempo e ainda não sei por onde começar)?
É por isso que acho que os administradores têm vantagem, tivemos que fazer a maior parte disso manualmente e saber o que pode dar errado, manifestos de marionetes, computação em nuvem e orquestração de docker serão mais fáceis para nós, os desenvolvedores se encontrarão levando muitas tangentes. conselhos a qualquer devops em potencial é ser um administrador primeiro.