Ansible

Como usar o login baseado em senha SSH no Ansible usando sshpass

Como usar o login baseado em senha SSH no Ansible usando sshpass
Neste artigo, vou mostrar como executar os manuais do Ansible usando um login baseado em senha SSH com sshpass.

Pré-requisitos

Se você quiser experimentar os exemplos discutidos neste artigo,

1) Você deve ter o Ansible instalado em seu computador.
2) Você deve ter pelo menos um host Ubuntu / Debian ao qual possa se conectar a partir do Ansible.

Existem muitos artigos sobre LinuxHint dedicados à instalação de Ansible. Você pode verificar estes se necessário para instalar os programas necessários em seu sistema.

Você também precisará ter sshpass instalado em seu computador, onde você deve ter o Ansible instalado. Eu vou te mostrar como instalar sshpass no Ubuntu / Debian e CentOS / RHEL neste artigo. Não se preocupe se você não tiver esses programas já instalados em seu sistema.

Instalando sshpass no Ubuntu / Debian

O programa sshpass está disponível no repositório de pacotes oficial do Ubuntu / Debian. Você pode facilmente instalar este programa no seu computador.

Primeiro, atualize o cache do repositório de pacotes APT por meio do seguinte comando:

$ sudo apt update

Agora, instale sshpass por meio do seguinte comando:

$ sudo apt install sshpass -y

sshpass agora deve ser instalado.

Instalando sshpass no CentOS 8 / RHEL 8

sshpass está disponível no repositório EPEL do CentOS 8 / RHEL 8. Você deve ter o repositório EPEL habilitado para instalar o sshpass.

Primeiro, atualize o cache do repositório de pacotes DNF por meio do seguinte comando:

$ sudo dnf makecache

Em seguida, instale o pacote do repositório EPEL por meio do seguinte comando:

$ sudo dnf install epel-release -y

O pacote do repositório EPEL agora deve ser instalado e o repositório EPEL deve ser habilitado.

Atualize o cache do repositório de pacotes DNF novamente, da seguinte maneira:

$ sudo dnf makecache

Instalar sshpass por meio do seguinte comando:

$ sudo dnf install sshpass -y

sshpass deve ser instalado.

Configurando um Diretório de Projetos Ansible

Antes de prosseguirmos, seria uma boa ideia criar uma estrutura de diretório do projeto, apenas para manter as coisas um pouco organizadas.

Para criar um diretório de projeto sshpass / e todos os subdiretórios necessários (em seu diretório de trabalho atual), execute o seguinte comando:

$ mkdir -pv sshpass / arquivos, manuais

Navegue até o diretório do projeto, da seguinte maneira:

$ cd sshpass /

Criar uma hospedeiros arquivo de inventário, como segue:

hosts $ nano

Adicione seu IP de host ou nome de DNS no arquivo de inventário.

Depois de concluir esta etapa, salve o arquivo pressionando + X, seguido pela Y e .

Crie um arquivo de configuração Ansible no diretório do projeto, da seguinte maneira:

$ nano ansible.cfg

Agora, digite as seguintes linhas no ansible.cfg Arquivo.

Depois de concluir esta etapa, salve o arquivo pressionando + X, seguido pela Y e .

Teste de login SSH baseado em senha no Ansible

Em seguida, tente executar ping nos hosts no arquivo de inventário, da seguinte maneira:

$ ansible all -u shovon -m ping

NOTA: Aqui o -você opção é usada para dizer ao ansible qual usuário logar como. Neste caso, será o usuário . Substitua este nome de usuário pelo seu a partir de agora, durante a demonstração.

Como você pode ver, não consigo fazer login no host e executar nenhum comando.

Para forçar o Ansible a pedir a senha do usuário, execute o ansible comando com o -pedir-passe argumento, como segue:

$ ansible all -u shovon --ask-pass -m ping

Como você pode ver, o Ansible pede a senha SSH do usuário. Agora, digite sua senha SSH (senha de login do usuário) e pressione .

O host pode receber ping, da seguinte maneira:

Login SSH baseado em senha Ansible para Playbooks

Você pode usar um login SSH baseado em senha ao executar os manuais do Ansible. Vamos ver um exemplo.

Primeiro, crie um novo manual askpass1.yaml no manuais / diretório, da seguinte forma:

$ nano playbooks / askpass1.yaml

Digite as seguintes linhas no askpass1.yaml arquivo de manual:

- hosts: todos
usuário: shovon
tarefas:
- nome: Ping todos os hosts
ping:
- nome: imprimir uma mensagem
depurar:
msg: 'Tudo pronto'

Depois de concluir esta etapa, salve o arquivo pressionando + X, seguido pela Y e .

Execute o askpass1.yaml manual, como segue:

$ ansible-playbook playbooks / askpass1.yaml

Como você pode ver, não consigo me conectar ao host. Você pode ver que isso é porque eu não executei o ansible-playbook comando com o -pedir-passe opção.

Execute o askpass1.yaml cartilha com o -pedir-passe opção, da seguinte forma:

$ ansible-playbook -ask-pass playbooks / askpass1.yaml

Como você pode ver, o Ansible está pedindo uma senha SSH. Digite sua senha SSH e pressione .

O manual askpass1.yaml agora deve ser executado com sucesso.

Ansible sudo Login de senha para manuais

O -pedir-passe opção irá pedir apenas a senha de login SSH. E se você também quiser digitar a senha do sudo? Você verá como fazer isso nas próximas etapas.

Primeiro, crie um novo manual askpass2.yaml no manuais / diretório, da seguinte forma:

$ nano playbooks / askpass2.yaml

Digite as seguintes linhas no askpass2.yaml Arquivo.

- hosts: todos
usuário: shovon
tornar verdade
tarefas:
- nome: Instale o pacote apache2
apt:
nome: apache2
estado: mais recente
- nome: Certifique-se de que o serviço apache2 esteja em execução
serviço:
nome: apache2
estado: iniciado
habilitado: Verdadeiro
- nome: Copiar índice.arquivo html para servidor
cópia de:
src:… / files / index.html
dest: / var / www / html / index.html
modo: 0644
proprietário: www-data
grupo: www-data

Aqui, usei o comando tornar verdade para dizer ao Ansible para executar este manual com privilégios de sudo. Depois de concluir esta etapa, salve o askpass2.yaml arquivo pressionando + X, seguido pela Y e .

Criar um índice.html arquivo no arquivos/ diretório, da seguinte forma:

$ nano arquivos / índice.html

Digite os seguintes códigos HTML no índice.html Arquivo:




Pagina inicial


Olá Mundo


Funciona



Depois de concluir esta etapa, salve o arquivo pressionando + X seguido pela Y e .

Você pode executar o askpass2.yaml cartilha com o -pedir-passe opção, da seguinte forma:

$ ansible-playbook --ask-pass playbooks / askpass2.yaml

Em seguida, será solicitada a senha SSH, como antes.

Mas o manual ainda pode não funcionar, mesmo se você fornecer a senha SSH. A razão para isso é porque você precisa dizer ao Ansible para solicitar a senha sudo, bem como a senha SSH.

Você pode dizer ao Ansible para pedir a senha do sudo usando o -pergunte-se-passe opção durante a execução do manual, da seguinte maneira:

$ ansible-playbook --ask-pass --ask-Become-pass playbooks / askpass2.yaml

Agora, o Ansible solicitará a senha SSH.

Em seguida, o Ansible solicitará a senha do sudo. Se sua senha sudo for igual à senha SSH (o que é mais provável), deixe-a em branco e pressione .

Como você pode ver, o manual foi executado com sucesso.

Configurando login SSH automático baseado em senha e login com senha sudo

Você pode querer usar SSH baseado em senha e login sudo, mas não quer digitar a senha SSH e a senha sudo sempre que executar um manual. Se for esse o caso, esta seção é para você.

Para usar o login SSH baseado em senha e o login sudo sem que as senhas sejam solicitadas, tudo o que você precisa fazer é adicionar o ansible_ssh_pass e ansible_become_pass variáveis ​​de host ou variáveis ​​de grupo em seu arquivo de inventário.

Primeiro, abra o hospedeiros arquivo de inventário, como segue:

hosts $ nano

Se você tiver vários hosts em seu arquivo de inventário e cada um dos hosts tiver senhas diferentes, adicione o ansible_ssh_pass e ansible_become_pass variáveis ​​como variáveis ​​de host (após cada host) da seguinte forma.

Certifique-se de substituir segredo com seu SSH e senha sudo.

Se todos ou alguns dos hosts tiverem a mesma senha, você pode adicionar o ansible_ssh_pass e ansible_become_pass variáveis ​​como variáveis ​​de grupo, conforme mostrado no exemplo abaixo.

Aqui, eu tenho apenas um host, então adicionei o ansible_ssh_pass e ansible_become_pass variáveis ​​para o tudo grupo (todos os hosts no arquivo de inventário). Mas, você pode adicionar essas variáveis ​​para outros grupos específicos também.

Assim que terminar de adicionar o ansible_ssh_pass e ansible_become_pass variáveis ​​no hospedeiros arquivo de inventário, salve o hospedeiros arquivo de inventário pressionando + X, seguido pela Y e .

Agora você pode executar o askpass2.yaml manual, como segue:

$ ansible-playbook playbooks / askpass2.yaml

Como você pode ver, o manual foi executado com sucesso, embora não solicitasse a senha SSH ou a senha sudo.

Então, é assim que você usa sshpass para SSH baseado em senha e login sudo no Ansible. Obrigado por ler este artigo!

Como capturar e transmitir sua sessão de jogo no Linux
No passado, jogar era considerado apenas um hobby, mas com o tempo a indústria de jogos viu um grande crescimento em termos de tecnologia e número de ...
Melhores jogos para jogar com rastreamento manual
Oculus Quest introduziu recentemente a grande ideia de rastreamento manual sem controladores. Com um número cada vez maior de jogos e atividades que e...
Como mostrar a sobreposição de OSD em aplicativos e jogos Linux em tela cheia
Jogar jogos em tela cheia ou usar aplicativos em modo de tela cheia sem distração pode cortar você das informações relevantes do sistema visíveis em u...