Usando variáveis armazenadas no servidor remoto

1

Eu tenho, o que eu acho, é uma tarefa complexa.

Eu tenho 1 máquina, nós chamaremos um servidor e um monte de outras máquinas, hostX. Todos eles executam o servidor Ubuntu 16.04. Cada host executa um script bash simples na inicialização, mas esse script atualmente possui valores codificados. Eu gostaria de usar variáveis dentro desse script, mas os valores de variáveis devem ser armazenados em arquivos / um arquivo no servidor, permitindo-me alterar valores em um local central e afetar um host ou um grupo de hosts. Estou feliz por ter que reinicializar ou reiniciar o script em cada host após uma alteração, isso não é problema. O problema que eu tenho é que eu não sei como usar uma variável de uma máquina remota, tudo o que posso encontrar é a informação sobre a execução de um script em uma máquina remota. Eu quero que ele seja executado localmente, mas puxe informações do controle remoto.

Então aqui está o meu fluxo de trabalho, na minha cabeça.

O Host1 inicializa e analisa o conteúdo de host1.cfg localizado no servidor. host1.cfg é assim:

NAME=John
ADDRESS='10 The High Street'
AGE=25

O Host1 é executado:

echo server:$HOSTNAME.cfg:$NAME & $ADDRESS & $AGE

Ou talvez tenha um arquivo central HOST.CFG com:

[HOST1]
NAME=John
ADDRESS='10 The High Street'
AGE=25

[HOST2]
NAME=Mike
ADDRESS='30 The Avenue'
AGE=80

Isso faz sentido?

    
por Preston Cole 09.12.2017 / 13:01

1 resposta

2

Eu usaria um arquivo para cada host contendo as variáveis, vamos chamá-lo de host1.cfg , copiá-lo no início do script e source it:

rsync user@server:/path/to/host1.cfg .
source host1.cfg

Isso substituirá qualquer host1.cfg existente no host, para que as atualizações no arquivo do servidor sejam aplicadas na próxima execução. Esteja avisado de que source executará qualquer comando que host1.cfg contenha sem misericórdia. Certifique-se de que não pode ser alterado por ninguém, especialmente se você executar o script no host como root. Para abordagens alternativas e talvez mais seguras (dependendo da sua configuração), consulte: Como leio uma variável de um arquivo?

Eu gosto de rsync , mas você também pode usar scp , wget ou curl para a tarefa. Se você não precisa de uma cópia local, você pode usar (graças a glenn jackman ):

source <(ssh user@server "cat /path/to/host1.cfg")
    
por dessert 09.12.2017 / 13:24