É possível começar a administrar uma caixa linux via Ansible com apenas a conta root e sua senha?

2

Recentemente aluguei uma caixa de Linux e pretendo provisioná-la usando Ansible . Eu gostaria de usar Ansible o mais cedo possível no processo. Neste estágio, eu só tenho uma conta root e a senha correspondente.

Perguntas

  • Dado o fato de que minha caixa de destino, bem como o OpenSSH-Server, está sendo executado, seria possível copiar minha chave pública para o servidor e configurá-la com o Ansible neste estágio inicial?
  • Preciso copiar manualmente a chave do pub para o servidor e configurar o ssh para que o Ansible consiga se comunicar com o servidor em primeiro lugar?

EDIT 1:

Eu deveria ter mencionado que, depois de ler os documentos, usei a seguinte sintaxe:

ansible <nameoftargetbox> -m ping -u root -k

O comando basicamente significa usar o usuário root (-u) e pedir senha (-k). Fui corretamente solicitado pela senha, mas continuo recebendo esta resposta:

 <nameoftargetbox>| FAILED => to use -c ssh with passwords, you must install the sshpass program

Escusado será dizer que um ssh root@<targetbox> comum funciona sem falhas.

Depois de pesquisar um pouco mais, encontrei uma solução no rastreador de problemas do github Ansible. Vou postar isso como uma resposta para essa pergunta.

    
por Ralph 08.01.2014 / 20:37

3 respostas

2

Anexando -c paramiko a ansible <nameoftargetbox> -m ping -u root -k forces Ansible para usar internamente a biblioteca Paramiko Python que aparentemente não precisa ter o sshpass instalado. Por favor, consulte este problema fechado no rastreador de problemas do github Ansible.

EDIT1:

Para responder a pergunta original, sim, é possível administrar uma caixa do Linux usando o Ansible com a conta root e a senha. Pode-se usar a opção -c paramiko em primeiro lugar para copiar o pubkey para o alvo e fazer mais bootstrap antes de usar o Ansible Playbooks completo.

    
por 09.01.2014 / 13:39
2

É muito fácil usar o Ansible com uma nova máquina Ubuntu. Eu suponho que você está em uma caixa Ubuntu, seu usuário na máquina remota é ubuntu , e sua máquina remota é REMOTE.COM (você pode usar um endereço IP também). Siga estes passos:

  1. Copie sua chave ssh pública para a máquina remota para que você não precise digitar sua senha para fazer o login.

    ssh-copy-id [email protected]
    

    Se você não tiver uma chave SSH, use ssh-keygen e siga os prompts.

  2. SSH no servidor remoto (você não precisa digitar sua senha);

    ssh [email protected]
    
  3. Configure seu usuário do Ubuntu para poder sudo sem senha (você precisará da sua senha para isso):

    sudo sh -c 'echo "ubuntu ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers.d/ubuntu'
    
  4. Verifique se o python e o python-apt estão instalados na caixa:

    sudo apt-get install python python-apt
    
  5. Voltar para sua máquina local

    exit
    
  6. Configure seu arquivo ANSIBLE_HOSTS (diga remote.hosts) com:

    [www]
    REMOTE.COM ansible_ssh_user=ubuntu
    

Você está feito. Agora você pode executar seu playbook com:

ANSIBLE_HOSTS='pwd'/remote.hosts ansible-playbook -v site.yml
    
por 29.03.2014 / 16:30
1

Com base nessas balas dos documentos oficiais, eu diria que você deve ser capaz de fazer o que quiser usando apenas ssh sem problemas.

  • Dead simple setup
  • Super fast & parallel by default
  • No server or client daemons; use existing SSHd
  • No additional software required on client boxes
  • Modules can be written in ANY language
  • Awesome API for creating very powerful distributed scripts
  • Be usable as non-root
  • The easiest config management system to use, ever.

Isso também é repetido no manual do usuário e na documentação.

By default, Ansible 1.3 and later will try to use native OpenSSH for remote communication when possible. This enables both ControlPersist (a performance feature), Kerberos, and options in ~/.ssh/config such as Jump Host setup. When using Enterprise Linux 6 operating systems as the control machine (Red Hat Enterprise Linux and derivatives such as CentOS), however, the version of OpenSSH may be too old to support Control Persist. On these operating systems, Ansible will fallback into using a high-quality python implementation of OpenSSH called ‘paramiko’. If you wish to use features like Kerberized SSH and more, consider using Fedora, OS X, or Ubuntu as your control machine until a newer version of OpenSSH is available for your platform – or engage ‘accelerated mode’ in Ansible.

por 09.01.2014 / 00:57