Pré -requisitos
Se você gostaria de 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 você pode se conectar da Ansible.
Existem muitos artigos sobre Linuxhint dedicados à instalação do Ansible. Você pode verificar isso, se necessário, para instalar os programas necessários em seu sistema.
Você também precisará ter sshpass instalado no seu computador, onde você deve ter o Ansible instalado. Vou mostrar como instalar sshpass em 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 oficial do pacote do Ubuntu/Debian. Você pode instalar facilmente este programa em seu computador.
Primeiro, atualize o cache do repositório de pacotes apt por meio do seguinte comando:
$ sudo apt update
Agora, instale sshpass através do seguinte comando:
$ sudo apt install sshpass -y
Sshpass agora deve ser instalado.
Instalando o 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 ativado para instalar o sshpass.
Primeiro, atualize o cache do repositório de pacotes DNF através do seguinte comando:
$ sudo dnf makecache
Em seguida, instale o pacote de repositório EPEL através do seguinte comando:
$ sudo dnf install epel -release -y
O pacote de repositório EPEL deve agora ser instalado e o repositório EPEL deve ser ativado.
Atualize o cache do repositório de pacotes DNF novamente, como segue:
$ sudo dnf makecache
Instalar sshpass através do seguinte comando:
$ sudo dnf install sshpass -y
sshpass deve ser instalado.
Configurando um diretório de projeto Ansible
Antes de avançarmos, seria uma boa ideia criar uma estrutura de diretório de projeto, apenas para manter as coisas um pouco organizadas.
Para criar um diretório de projeto sshpass/ E todos os subdiretos necessários (em seu diretório de trabalho atual), execute o seguinte comando:
$ mkdir -pv sshpass/arquivos, playbooks
Navegue até o diretório do projeto, como segue:
$ cd sshpass/
Criar uma anfitriões Arquivo de inventário, como segue:
$ nano hosts
Adicione o nome IP do host ou DNS no arquivo de inventário.
Depois de terminar esta etapa, salve o arquivo pressionando + X, seguido pela Y e .
Crie um arquivo de configuração Ansible no diretório do projeto, como segue:
$ Nano Ansible.cfg
Agora, digite as seguintes linhas no Ansible.cfg arquivo.
Depois de terminar esta etapa, salve o arquivo pressionando + X, seguido pela Y e .
Testando o login SSH baseado em senha em Ansible
Em seguida, tente fazer ping nos hosts no arquivo de inventário, como segue:
$ Ansible All -u Shovon -m Ping
OBSERVAÇÃO: Aqui o -você a opção é usada para dizer a Ansible qual usuário fazer login como. Nesse caso, será o usuário Shovon. Substitua este nome de usuário com o seu a partir de agora, durante toda a demonstração.
Como você pode ver, não consigo fazer login no host e executar quaisquer comandos.
Para forçar o Ansible a pedir a senha do usuário, execute o Ansible comando com o -Ask-pas argumento, como segue:
$ Ansible All -u Shovon --k -Pass -M Ping
Como você pode ver, Ansible pede a senha ssh do usuário. Agora, digite sua senha SSH (senha de login do usuário) e pressione .
O host pode ser pingado, como segue:
Login SSH baseado em senha Ansible para Playbooks
Você pode usar um login SSH baseado em senha quando executa Playbooks Ansible. Vamos ver um exemplo.
Primeiro, crie um novo manual AskPass1.Yaml no Playbooks/ Diretório, como segue:
$ nano Playbooks/AskPass1.Yaml
Digite as seguintes linhas no AskPass1.Yaml Arquivo de Playbook:
- Hosts: todosDepois de terminar 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 -Ask-pas opção.
Execute o AskPass1.Yaml Manual com o -Ask-pas opção, como segue:
$ Ansible.Yaml
Como você pode ver, 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 playbooks
O -Ask-pas a opção solicitará apenas a senha de login SSH. E se você também desejar digitar a senha do sudo? Você verá como fazer isso nos próximos passos.
Primeiro, crie um novo manual AskPass2.Yaml no Playbooks/ Diretório, como segue:
$ nano Playbooks/AskPass2.Yaml
Digite as seguintes linhas no AskPass2.Yaml arquivo.
- Hosts: todosAqui, eu usei o comando tornar verdade Para dizer Ansible para executar este manual com privilégios sudo. Depois de terminar esta etapa, salve o AskPass2.Yaml arquivo pressionando + X, seguido pela Y e .
Criar um índice.html arquivo no arquivos/ Diretório, como segue:
$ nano arquivos/índice.html
Digite os seguintes códigos HTML no índice.html arquivo:
Funciona
Depois de terminar esta etapa, salve o arquivo pressionando + X seguido pela Y e .
Você pode executar o AskPass2.Yaml Manual com o -Ask-pas opção, como segue:
$ Ansible-playbook --k-pas plays/AskPass2.YamlVocê será solicitado a senha do SSH, como antes.
Mas o manual ainda pode não ser executado, mesmo se você fornecer a senha SSH. A razão para isso é porque você precisa dizer a Ansible para solicitar a senha do sudo, bem como a senha ssh.
Você pode dizer a Ansible para pedir a senha do sudo usando o -Ask-become-pass opção ao executar o manual, como segue:
$ Ansible-Playbook --k-pass-osk-become-pass playbooks/AskPass2.YamlAgora, o Ansible o levará para a senha ssh.
Em seguida, Ansible irá solicitar a senha do sudo. Se sua senha sudo for a mesma que a senha SSH (que é mais provável), deixe -a em branco e pressione .
Como você pode ver, o manual correu com sucesso.
Configurando o login SSH baseado em senha automática e o login de senha do sudo
Você pode usar o Login SSH e SUDO baseado em senha, mas não deseja digitar a senha e a senha do SUDO sempre que você executa 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 ser solicitado para as senhas, 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 anfitriões Arquivo de inventário, como segue:
$ nano hosts
Se você tiver vários hosts em seu arquivo de inventário e cada um dos hosts possui senhas diferentes, adicione o Ansible_ssh_pass e Ansible_become_pass variáveis como variáveis do host (após cada host), como segue.
Certifique -se de substituir segredo com sua senha SSH e SUDO.
Se todos ou alguns dos hosts tiverem a mesma senha, você poderá adicionar o Ansible_ssh_pass e Ansible_become_pass variáveis como variáveis de grupo, como 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 todos Grupo (todos os hosts no arquivo de inventário). Mas você pode adicionar essas variáveis para outros grupos específicos também.
Depois de terminar de adicionar o Ansible_ssh_pass e Ansible_become_pass variáveis no anfitriões arquivo de inventário, salve o anfitriões arquivo de inventário pressionando + X, seguido pela Y e .
Agora você pode executar o AskPass2.Yaml Manual, como segue:
$ Ansible-Playbook Playbooks/AskPass2.YamlComo você pode ver, o manual foi executado com sucesso, embora não tenha solicitado a senha do SSH ou a senha sudo.
Então, é assim que você usa sshpass Para SSH baseado em senha e login no Ansible. Obrigado por ler este artigo!