Como configurar nós gerenciados Ansible e executar comandos ad -hoc - Parte 3

Como configurar nós gerenciados Ansible e executar comandos ad -hoc - Parte 3

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
  • --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

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

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

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

Para verificar o uso do disco de hosts remotos executados.

# Ansible -a "df -th" todos 
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

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

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

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

Novamente, para confirmar a remoção da execução httpd.

# rpm -qa | grep httpd 
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

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

Para remover o usuário, execute o comando:

# Ansible Database_servers -m Usuário -a "Nome = James State = ausente" 
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

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

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

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

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

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

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
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.