Como configurar nós gerenciados Ansible e executar comandos ad -hoc - Parte 3
 
                - 2284
- 16
- Randal Kuhlman
Nos dois artigos anteriores desta série Ansible, explicamos os componentes principais do nó de controle Ansible e Configuração Ansible. Nesta parte 3, demonstraremos como você pode configurar nós gerenciados Ansible para executar comandos ad-hoc em hosts remotos.
Configurar a autenticação SSH sem senha para os nós gerenciados Ansible
Como recapitulação em nosso último tópico, o gerenciamento de hosts remotos com Ansible exige a criação de autenticação SSH sem senha entre o nó de controle Ansible e os hosts gerenciados. Isso envolve a geração de um par de chaves (par público e privado SSH) no nó de controle Ansible e copiando a chave pública para todos os hosts remotos. Este será um passo crucial daqui para frente e tornará seu trabalho muito mais fácil.
Configurar a escalada de privilégios em nós gerenciados
Quando conectado como usuário comum, você pode ser obrigado a executar determinadas tarefas em nós gerenciados que exigem privilégios elevados ou privilégios de raiz. Essas tarefas incluem gerenciamento de pacotes, adicionando novos usuários e grupos e modificando configurações do sistema para mencionar apenas alguns. Para conseguir isso, você precisa invocar certas diretrizes no manual para executar as tarefas como um usuário privilegiado nos hosts remotos.
tornar-se
Ansible permite que você 'tornar-se' outro usuário no nó gerenciado diferente do que atualmente está conectado. O Torne -se: Sim A diretiva eleva seus privilégios e permite que você execute tarefas que exijam privilégios de raiz, como instalar e atualizar pacotes e reiniciar o sistema.
Considere um manual httpd.yml que instala e inicia o Apache WebServer, como mostrado:
--- - Nome: Instale e inicie o Apache WebServer Hosts: WebServers Tasks: - Nome: Instale Httpd yum: nome = httpd state = mais recente Torne -se: Sim - Nome: Verifique o serviço de status httpd: nome = httpd state = iniciado
O Torne -se: Sim A diretiva permite executar comandos como usuário root no host remoto.
tornar -se_user
Outra diretiva que você pode usar para se tornar outro usuário é o tornar -se_user. Isso permite que você mude para um usuário sudo no host remoto ao fazer login e não para o usuário que você faz login como.
Por exemplo, para executar um comando como Tecmint Usuário no controle remoto Use a diretiva como mostrado.
- Nome: Execute um comando como o comando do usuário do Apache: SomeCommand se torna: sim Torne -se_User: Tecmint
tornar -se_method
Esta diretiva substituirá o método padrão definido em Ansible.cfg arquivo que geralmente é definido como sudo.
tornar -se_flags
Eles são usados no nível de jogo ou de tarefas, por exemplo, quando você precisa mudar para um usuário quando o shell é definido como NOLOGIN.
Por exemplo,
- Nome: Execute um comando como ninguém comando: SomCommand se tornar: true se tornar_method: su se tornou_user: ninguém se tornou_flags: '-s /bin /sh'
Opções da linha de comando em escalada de privilégios
Vamos dar uma olhada em algumas das opções de linha de comando que você pode usar para elevar seus privilégios ao executar comandos:
- --Ask-become-pass,- -K- Isso solicita a senha do usuário sudo no sistema remoto que você está tentando conectar.
$ Ansible-playbook MyPlaybook.YML --SK-BECOME-PASS
 Ansible se torna passe
 Ansible se torna passe - --tornar-se,- -b- Isso permite que você execute a tarefa como usuário root sem solicitar uma senha.
$ Ansible-playbook MyPlaybook.YML -Acompanhe
- --tornar-se-user = tornar-se_user- Ele permite que você execute tarefas como outro usuário.
$ Ansible-playbook MyPlaybook.yml-become-user = Tecmint
 Ansible se torna usuário
 Ansible se torna usuário Validar uma configuração de trabalho usando comandos ad-hoc ansifle
Às vezes, você pode executar tarefas rápidas e simples em hosts ou servidores remotos em Ansible sem necessariamente ter que criar um manual. Nesse caso, você precisaria executar um Ad hoc comando.
O que é um comando adhoc?
Um Ansible comando ad-hoc é um comando de uma linha que ajuda você a executar tarefas simples de uma maneira simples, mas eficiente, sem a necessidade de criar manuais. Essas tarefas incluem copiar arquivos entre hosts, reiniciar servidores, adicionar e remover usuários e instalar um único pacote.
Neste tutorial, exploramos várias aplicações de comandos ad-hoc ansible. Nós vamos usar o arquivo de inventário Abaixo para uma demonstração.
[SERVERVERS WEBS] 173.82.115.165 [Database_servers] 173.82.202.239
Uso básico dos comandos adhoc
O uso mais básico dos comandos Ansible-Adhoc é ping em um host ou um grupo de hosts.
# Ansible -m ping tudo
No comando acima, o -m O parâmetro é a opção do módulo. Ping é o comando adhoc e o segundo parâmetro representa todos os hosts no arquivo de inventário. A saída do comando é mostrada abaixo:
 Ansible ping todos os hosts
 Ansible ping todos os hosts Ao ping, um grupo específico de hosts, substitua 'todos' parâmetro com o nome do grupo. No exemplo abaixo, estamos testando conectividade com hosts no grupo WebServers Group.
# Ansible -M Ping Web Servers
 Grupo Ansible Ping de Hosts
 Grupo Ansible Ping de Hosts Além disso, você pode usar o -a atributo para especificar comandos regulares do Linux em aspas duplas. Por exemplo, para verificar o tempo de atividade do sistema de sistemas remotos, execute:
# Ansible -a "uptime" tudo
 Ansible Check Uptime de host remoto
 Ansible Check Uptime de host remoto Para verificar o uso do disco de hosts remotos executados.
# Ansible -a "df -th" todos
 Ansible Verifique o uso de disco de hosts remotos
 Ansible Verifique o uso de disco de hosts remotos Existem centenas e centenas de módulos que você pode usar com o comando adhoc. Para visualizar toda a lista de módulos com suas descrições, execute o comando abaixo.
# Ansible -Doc -l
Para visualizar informações detalhadas sobre um módulo específico, execute o comando.
# Ansible-Doc Module_name
Por exemplo, para procurar mais detalhes sobre o Módulo YUM correr:
# Ansible-Doc yum
 Módulo Ansible Check Yum
 Módulo Ansible Check Yum Gerenciando pacotes / serviços com Ansible
Os comandos Ansible Adhoc podem ser usados para a instalação e remoção de pacotes usando yum e apt Gerentes de pacotes.
Para instalar o Apache Web Server no CENTOS 7 Host Under WebServers Group no arquivo de inventário Execute o comando:
# Ansible Web Servers -m yum -a "nome = httpd state = presente"
 Ansible Instale Apache em hosts remotos
 Ansible Instale Apache em hosts remotos Para verificar a instalação do Apache Web Server, faça login no cliente remoto e execute.
# rpm -qa | grep httpd
 Confirme a instalação do Apache
 Confirme a instalação do Apache Para desinstalar o Apache, alterar o estado simples de presente para ausente.
# Ansible Web Servers -m yum -a "nome = httpd state = ausente"
 Ansible Remover Apache
 Ansible Remover Apache Novamente, para confirmar a remoção da execução httpd.
# rpm -qa | grep httpd
 Confirme a remoção do Apache
 Confirme a remoção do Apache Como observado, os pacotes de servidores da Web Apache foram purificados.
Criando usuários e grupos usando Ansible
Ao criar usuários, o 'do utilizador'Módulo é útil. Para criar um novo usuário James com senha chapéu vermelho No banco de dados do sistema do cliente, emita o comando.
# Ansible Database_server -m Usuário -a "nome = James senha = redhat"
 Ansible Criar usuário em hosts remotos
 Ansible Criar usuário em hosts remotos Para confirmar a criação do novo usuário, execute o comando:
# Ansible Database_servers -a "Id James"
 Ansible Confirmar a criação do usuário
 Ansible Confirmar a criação do usuário Para remover o usuário, execute o comando:
# Ansible Database_servers -m Usuário -a "Nome = James State = ausente"
 Ansible Remover usuário
 Ansible Remover usuário Escalada de privilégios
Se você está executando Ansible como usuário comum, Ansible fornece uma escalada de privilégio em hosts remotos usando o --tornar-se opção para adquirir privilégios de raiz e -k Para solicitar a senha.
Por exemplo, para executar o comando Ansible Adhoc 'netstat -pnltU'Com a opção privilegiada --tornar-se e opção -K para solicitar a senha do usuário root para executar o comando.
$ Ansible WebServers -m Shell -a 'netStat -pnltU' - -Become -k
 Escalada de privilégio Ansible
 Escalada de privilégio Ansible Para se tornar outro usuário que não seja root, use o --Torne-se-user atributo.
Por exemplo para correr 'df -th' como Tecmint Usuário nos hosts remotos e solicitar a senha executada:
$ Ansible All -M Shell -A 'DF -TH' -Become -User Tecmint -k
 Ansible se tornará outro usuário
 Ansible se tornará outro usuário Reunindo fatos sobre os sistemas host
Fatos Consulte informações detalhadas sobre um sistema. Isso inclui informações sobre o endereço IP, arquitetura do sistema, memória e CPU para mencionar alguns.
Para recuperar informações sobre hosts remotos, execute o comando:
$ Ansible All -M Setup
 Ansible Gather System Facts
 Ansible Gather System Facts Arquivos de transferência / cópia de arquivos
Ansible usa o módulo cópia de Para copiar com segurança arquivos do controle Ansible para vários hosts remotos.
Abaixo está um exemplo de uma operação de cópia:
# Ansible WebServers -m Copy -a "src =/var/log/seguro dest =/tmp/"
 Ansible Copy Arquivos para host remoto
 Ansible Copy Arquivos para host remoto O comando copia o /var/log/seguro Arquivo no nó de controle Ansible para hosts remotos no grupo WebServers no /tmp destino.
Você pode usar o módulo de arquivo Para alterar as permissões e a propriedade de arquivos.
# Ansible WebServers -m Arquivo -a "Dest =/TMP/Modo Seguro = 600"
 Permissões de arquivo de alteração Ansible
 Permissões de arquivo de alteração Ansible Além disso, você pode anexar os argumentos do proprietário e do grupo, como mostrado:
# Ansible WebServers -m Arquivo -a "Dest =/TMP/Modo Seguro = 600 Proprietário = Tecmint Group = Tecmint"
 Ansible Append User e Grupo Atributos
 Ansible Append User e Grupo Atributos Você também pode criar diretórios, de maneira semelhante a mkdir -p como mostrado.
$ ANSIBLE WebServers -m Arquivo -a "Dest =/Path/To/Directory Mode = 755 Proprietário = Tecmint Group = Tecmint State = Diretório"
Por exemplo,
$ ANSIBLE WebServers -m Arquivo -a "Dest =/Home/Tecmint/Data Modo = 755 Proprietário = Tecmint Group = Tecmint State = Diretório"
 Ansible Crie um diretório
 Ansible Crie um diretório Conclusão
Neste artigo, lançamos luz sobre como você pode configurar nós gerenciados para executar comandos ad-hoc addible para gerenciar hosts remotos. Esperamos que você tenha achado útil. Tire uma chance e deixe -nos saber como foi.
 
                    