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