SaltStack - Salt para infraestrutura em nuvem

Salt fornece um módulo separado, Salt Cloud para fornecer máquinas virtuais de vários provedores de nuvem, como Amazon AWS, Google Compute, etc. Salt Cloud é uma interface genérica para configurar e gerenciar VMs de vários provedores de nuvem.

  • Cloud Config- O arquivo de configuração principal do Salt Cloud é / etc / salt / cloud e se aplica a todas as VMs. O arquivo de configuração principal é chamadoCloud Config.

  • Cloud Providers - Para atingir provedores de nuvem específicos, podemos usar um arquivo de configuração específico e eles estão localizados em /etc/salt/cloud.providers.d/*.conf, são chamados de Cloud Providers.

  • Cloud Profiles - Para direcionar uma VM específica, também podemos usar um arquivo de configuração especial, que se aplica a essa VM específica e estão localizados em /etc/salt/cloud.profiles.d/*.conf, são chamados de Cloud Profiles.

Para uma máquina virtual, as configurações no Cloud Config é aplicado primeiro e depois no Cloud Providers e finalmente a substituição é feita pelo Cloud Profiles.

Instalação de Salt Cloud

Por padrão, o Salt Cloud é integrado ao Salt e está prontamente disponível. Se não estiver disponível, podemos instalá-lo usando o comando abaixo.

pip install salt-cloud

Como o Salt Cloud é um módulo separado e é executado em seu próprio processo, ele também pode ser instalado no sistema Salt Minion em vez do Salt Master.

Provisionando uma máquina virtual

Para provisionar uma máquina virtual, precisamos definir um provedor de nuvem e um perfil de nuvem. Depois que ambos forem criados, podemos provisionar uma nova máquina virtual para usá-los.

Provedor de nuvem

As informações do host da nuvem são configuradas no arquivo de configuração do provedor de nuvem. Normalmente, as informações básicas que precisam ser configuradas são driver de nuvem, nome de usuário, senha, chave privada, etc. Vamos criar um novo provedor de nuvem chamadomy-amazon-cloud.

  • Crie um arquivo, my-amazon-cloud.conf em /etc/salt/cloud.providers.d/

  • Adicione um novo provedor usando o ec2 motorista.

my-amazon-cloud:
   driver: ec2
   id: '<AWS_ID>'
   key: '<AWS_KEY>'
   private_key: /path/to/privatekey.pem
   keyname: <name of the key>
   securitygroup: default

   minion:
      master: <master server>

Salt fornece drivers para vários hosts de nuvem prontos para uso, como GoGrid, HP Cloud, Google Compute Engine (GCE), Amazon AWS, Joyent, Linode, OpenNebula, ProfitBricks, Proxmox, Saltify, VexxHost, VMWare, etc.

Uma vez que os provedores de nuvem são configurados, podemos consultar a localização disponível do provedor, imagens de máquina disponíveis e seus vários tamanhos.

salt-cloud --list-location my-amazon-cloud
salt-cloud --list-images my-amazon-cloud
salt-cloud --list-sizes my-amazon-cloud

Perfil de Nuvem

Um perfil de nuvem especifica a imagem e o tamanho da máquina virtual. Ele pode ser configurado em - /etc/salt/cloud.profiles.d/. Vamos criar um perfil simples,simple.conf.

aws_micro:
   provider: my-amazon-cloud
   image: <image_id>
   size: <machine_id e.g. t1.micro>

Máquina virtual

Depois que o provedor e os perfis estão configurados, podemos fornecer facilmente uma máquina virtual usando a nuvem-sal, conforme mostrado abaixo.

salt-cloud -p aws_micro master minion1 minion2

Onde, p - O nome do perfil master, minion1 e minion2 são as novas máquinas virtuais.

Os detalhes da máquina virtual recém-criada podem ser obtidos usando o seguinte comando.

salt-cloud --query

As máquinas virtuais podem ser destruídas usando o seguinte comando -

slat-cloud -d master minion1

Mapa de Nuvem

Um mapa de nuvem é um formato especial para criar várias máquinas virtuais ao mesmo tempo. O formato do arquivo de mapa é especificar o perfil e, em seguida, adicionar uma lista das máquinas virtuais sob ele.

Um arquivo de mapa de amostra é o seguinte -

micro:
   - web1
   - web2
large:
   - db1
   - db2

O arquivo de mapa pode ser passado como um argumento para o comando salt-cloud para criar a máquina virtual da seguinte maneira -

salt-cloud -m /path/to/mapfile