Executando um comando em todos os servidores usando Fabric

0

Não tenho certeza, se eu deveria fazer esta pergunta aqui ou alguma outra comunidade de troca de pilha, mas estou tentando alguns comandos simples para executar em uma lista de servidores, usando o python fabric.

O código para o comando:

    from fabric.api import run
    def host_type():
      run('uname -s')

Isso executará o comando uname -s em todos os servidores Linux invocando:

  $fab -H < ......Comma, separated , Servers , List , Here.....> host_type

Agora, o problema é que, como posso executá-lo / configurá-lo de forma que ele retorne os resultados sem solicitar a senha do usuário / root durante a execução. Pode haver algum truque de linha de comando do Linux, mas não me lembro.

Editar1:

Ok, existe uma opção -p com o comando fab, mas cada servidor tem uma senha diferente, portanto, essa opção pode não funcionar para mim.

    
por Ijaz Ahmad Khan 12.01.2016 / 13:28

1 resposta

2

Existem duas maneiras de fazer isso. Fabric usa openssh no backend, portanto, se você já configurou a conexão sem senha, não precisará definir nada e ela funcionará.

A outra maneira é simples também. Você só precisa configurar as variáveis env .

from fabric.state import env

env.user = "user"
env.password = "password"

env.colorize_errors = True
env.connection_attempts = 3
env.disable_known_hosts = True
env.skip_bad_hosts = True
env.parallel = False
env.linewise = True

Isso deve fazer o truque. Eu costumo colocá-lo em um arquivo separado e importá-lo.

PS: Eu, pessoalmente, encontro o paramiko , que é a biblioteca que o Fabric usa, é mais fácil de usar para tarefas mais simples.

    
por 12.01.2016 / 13:32