SaltStack - Gerenciamento de Configuração

O gerenciamento de configuração é um dos conceitos mais significativos do SaltStack. É usado para criar um modelo de configuração reutilizável, chamado destate. O estado descreve tudo o que é necessário para colocar um componente do sistema ou um aplicativo em uma configuração conhecida.

Salt State

O estado de sal é uma configuração reutilizável para uma parte específica de um sistema. Os estados são mais fáceis de entender e descritos usando um YAML simples.

Crie um estado de sal

Os estados de sal são fáceis de criar. Vamos criar um estado simples neste capítulo. Mova para o diretório “salt-vagrant-demo / saltstack / salt /” e crie um arquivo chamadosamples.sls e adicione as seguintes linhas nele.

samples.sls

install_network_packages:
   pkg.installed:
      - pkgs:
         - rsync
         - lftp
         - curl

Agora, salve o arquivo e execute o seguinte comando no Salt master.

root@saltmaster:/home/vagrant# salt 'minion1’ state.apply samples

Aqui, nós instalamos rsync, lftp e curl através de pkg.installed módulo usando o estado de sal em um minion de sal, minion1. Se funcionar corretamente, você poderá ver a resposta conforme mostrado abaixo.

Irá produzir o seguinte output -

minion1:
----------
   ID: install_network_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 08:08:48.612336
   Duration: 545.385 ms
   Changes:

Summary for minion1
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 545.385 ms

Aplicar estado de sal

Agora que criamos um estado usando o arquivo '.sls' e o aplicamos chamando-o especificamente. O Salt tem um arquivo de estado padrão chamado detop.slsArquivo. O arquivo principal é usado para aplicar vários arquivos de estado a salt minions. O arquivo superior descreve onde os estados devem ser aplicados. Bem,States e a Top file trabalham juntos para criar o núcleo da capacidade de gerenciamento de configuração do SaltStack.

Vamos agora criar um arquivo top.sls simples no diretório saltstack/salt e adicione o seguinte.

top.sls

base:
  '*':
      - common
   'minion1':
      - samples

Aqui o state, comumente applies para all system Estado, samples aplica-se a minion1.

Em seguida, execute o Salt master e aplique o estado conforme mostrado abaixo.

root@saltmaster:/home/vagrant# salt '*' state.apply

Irá produzir o seguinte output -

minion1:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:33:35.642355
   Duration: 588.21 ms
   Changes:

Summary for minion1
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 588.210 ms
minion2:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:33:35.890331
   Duration: 602.79 ms
   Changes:

Summary for minion2
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 602.790 ms

Aplicar tamanho de lote

Se você tiver um grande número de lacaios conectados, poderá limitar o número de sistemas atualizados de uma vez. É realizado usando o–batch-size opção, que é definida abaixo.

root@saltmaster:/home/vagrant# salt --batch-size 5 '*' state.apply

Irá produzir o seguinte output -

Executing run on ['minion2', 'minion1']
jid:
   20170314094638482664
minion1:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:46:41.228519
   Duration: 582.24 ms
   Changes:

Summary for minion1
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 582.240 ms
retcode:
   0
jid:
   20170314094638482664
minion2:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:46:41.153609
   Duration: 605.235 ms
   Changes:

Summary for minion2
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 605.235 ms
retcode:
   0

Funções de estado de sal

As funções de estado de sal são usadas para instalar e configurar aplicativos em seu sistema remoto. Vamos instalar um pacote “Vim” usando a função Salt state.

Criar e aplicar função de estado

Crie um arquivo chamado “sample.sls” no diretório “salt-vagrant-demo / saltstack / salt / sample.sls” e adicione o seguinte -

sample.sls

install vim:
   pkg.installed:
      - name: vim

Quando o ambiente Vagrant estiver ativo, execute o salt master e aplique o sample.sls executando o seguinte comando.

root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample

Irá produzir o seguinte output -

minion2:
----------
   ID: install vim
   Function: pkg.installed
   Name: vim
   Result: True
   Comment: Package vim is installed
   Started: 15:07:45.752764
   Duration: 553.506 ms
   Changes:

Summary for minion2
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 553.506 ms

Agora, adicionamos um pacote “Vim”. Vamos agora testar o pacote usando o método de teste Salt.

Teste de estado de sal

A execução do teste é obrigatória adicionando a opção “test = True” aos estados. As informações de retorno mostrarão os estados que serão aplicados em amarelo e o resultado será relatado como 'Nenhum'.

O seguinte comando é usado para testar o estado -

root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample test = True

Irá produzir o seguinte output -

minion2:
----------
   ID: install vim
   Function: pkg.installed
   Name: vim
   Result: True
   Comment: Package vim is already installed
   Started: 15:07:45.752764
   Duration: 553.506 ms
   Changes:

Summary for minion2
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 553.506 ms

SaltStack ─ Componente Pilar

O pilar é um componente essencial para tornar os estados de sal reutilizáveis. É usado para definir dados seguros para lacaios atribuídos usando alvos. Os dados do Salt pilar armazena valores como portas, caminhos de arquivo, parâmetros de configuração e senhas.

Arquivo de configuração do pilar

A configuração para o pillar_roots no arquivo de configuração principal é mostrado abaixo -

pillar_roots:
   base:
      - /srv/pillar

Aqui, o arquivo está no diretório “/ srv / pillar”.

Considere que o arquivo principal localizado em /srv/pillar/top.sls tem a seguinte estrutura -

base:
   '*':
      - default

Agora, vá para o arquivo default.sls localizado em /srv/pillar/default.sls e adicione o seguinte código.

# Default pillar values
apache
git

Depois de salvar o arquivo, atualize o pilar para atualizar todas as alterações.

Atualizando o Pilar

Você pode atualizar o pilar usando o seguinte comando.

root@saltmaster:/home/vagrant# salt '*' saltutil.refresh_pillar

O comando acima é usado para atualizar os dados do pilar de Sal em todos os lacaios.

Listar dados do pilar

Para listar os dados do pilar, você pode usar o comando fornecido abaixo.

root@saltmaster:/home/vagrant# salt '*' pillar.ls

Irá produzir o seguinte output -

minion2:
   - apache
   - git
minion1:
   - apache
   - git

Itens do pilar

Uma vez que o pilar é configurado, os dados podem ser visualizados no lacaio através do módulo do pilar. Ele pode ser acessado através da funçãopillar.items, que é definido abaixo.

root@saltmaster:/home/vagrant# salt '*' pillar.items

Irá produzir o seguinte output -

minion2:
   ----------
   apache:
      httpd
   git:
      git
minion1:
   ----------
   apache:
      httpd
   git:
      git

SaltStack - Incluir Componente

O componente 'Incluir' é usado para definir a mesma tarefa de configuração em vários locais. É fácil de executar. Na parte superior do seu arquivo de estado, adicione um include usando o seguinte formato -

include:
   - state file 1 
   - state file 2

Aqui, state file 1 e state file 2são os nomes dos arquivos SLS que você deseja incluir. Não há necessidade de incluir o.slsextensão. Os estados de Salt incluídos são inseridos na parte superior do arquivo atual.

Arquivo de estado no subdiretório

Você pode incluir o arquivo de estado do subdiretório usando um ponto (.). Ele atua como um separador de diretório.

include:
   - dir.sls1

Interface de grãos

Grãos é uma interface usada para derivar as informações sobre o sistema subjacente. Os grãos são coletados para o sistema operacional, nome de domínio, endereço IP, kernel, tipo de sistema operacional, memória e muitas outras propriedades do sistema.

Segmentação de grãos

Os dados de grãos podem ser usados ​​ao selecionar lacaios, o que é definido no bloco de código a seguir.

root@saltmaster:/home/vagrant# salt -G 'os:Ubuntu' test.ping

Irá produzir o seguinte output -

minion1:
   True
minion2:
   True

Listando grãos

Os grãos podem ser listados usando o módulo 'grains.ls', que é definido abaixo.

root@saltmaster:/home/vagrant# salt '*' grains.ls

lista de itens

Como o Pillar, os dados de grãos também podem ser listados usando 'grains.items'.

root@saltmaster:/home/vagrant# salt '*' grains.items