Pré -requisitos
Se você quiser experimentar os exemplos deste artigo, você deve:
1) Tenha Ansible instalado no seu computador.
2) Tenha um host do Ubuntu configurado para Ansible Automation.
Existem muitos artigos sobre Linuxhint dedicados à instalação do Ansible e configurando hosts para Ansible Automation. Você pode verificar esses artigos, se necessário.
Configurando um diretório de projeto
Antes de seguir em frente, configure um novo diretório de projeto Ansible, apenas para manter as coisas um pouco organizadas.
Para criar o diretório do projeto registro-deem// E todos os subdiretos necessários (em seu diretório de trabalho atual), execute o seguinte comando:
$ mkdir -pv registr -deemo/playbooks
Depois que o diretório do projeto for criado, navegue até o diretório do projeto, como segue:
$ cd registro-democonamente/
Criar uma anfitriões Arquivo de inventário, como segue:
$ nano hosts
Adicione o nome IP do host ou DNS do seu host ubuntu no arquivo de inventário (um host por linha), como mostrado na captura de tela abaixo.
Aqui, eu adicionei meu Ubuntu 20.04 Host LTS VM3.NodeKite.com no Ubuntu20 grupo.
Depois de terminar, salve o arquivo pressionando + X, seguido pela Y e .
Crie um arquivo de configuração Ansible Ansible.cfg No seu diretório de projeto, como segue:
$ Nano Ansible.cfg
Em seguida, digite as seguintes linhas no Ansible.cfg arquivo:
[Padrões]Depois de terminar, salve o Ansible.cfg arquivo pressionando + X, seguido pela Y e .
Agora, tente fazer ping no seu host Ubuntu, como segue:
$ Ansible ubuntu20 -u Ansible -M ping
Como você pode ver, meu Ubuntu 20.04 HOST VM3.NodeKite.com é acessível.
Exemplo 1: O básico
Neste exemplo, mostrarei alguns dos básicos do Ansible registro módulo. Vou usar Ansible para gerar uma senha aleatória no meu Ubuntu 20.04 Host usando o pwgen comando, armazene a senha em uma variável usando o registro módulo e imprima a senha na tela.
Primeiro, crie o novo manual generate_pass.Yaml no Playbooks/ Diretório, como segue:
$ nano Playbooks/generate_pass.YamlDigite as seguintes linhas no generate_pass.Yaml arquivo:
- Hosts: Ubuntu20Depois de terminar, pressione + X, seguido pela Y e , Para salvar o generate_pass.Yaml arquivo.
A linha a seguir diz a Ansible para executar o manual generate_pass.Yaml Em todos os anfitriões no Ubuntu20 grupo. No meu caso, o manual será executado no host VM3.NodeKite.com.
Neste manual, vou definir três tarefas.
A primeira tarefa irá criar que o pwgen o pacote está instalado.
A segunda tarefa gerará uma senha aleatória de 30 caracteres usando o pwgen comando. Vou usar o registro módulo para armazenar a senha gerada no MyPass variável.
A terceira tarefa imprimirá o MyPass variável usando o Ansible depurar módulo.
Execute o manual generate_pass.Yaml Usando o seguinte comando:
$ Ansible-Playbook Playbooks/Generate_pass.YamlComo você pode ver, o manual correu com sucesso. Uma senha também foi gerada.
Mas, por que a variável MyPass Imprima tantos itens?
Bem, a variável MyPass é um objeto que contém algumas propriedades importantes.
As propriedades mais importantes de cada um dos registro As variáveis são as seguintes:
cmd - O comando que correu para gerar a saída.
stdout - A saída do comando.
stderr - A saída de erro do comando.
começar - A data e hora em que o comando começou a executar.
fim - A data e a hora em que o comando terminou de executar.
delta - O tempo necessário para executar o comando. Esta é a diferença entre o fim e a começar propriedades.
stdout_lines - Uma matriz contendo cada linha de saída do comando. Igual a stdout, mas stdout separa as linhas usando um novo (\ n) caracteres em vez de matrizes.
stderr_lines - Uma matriz contendo cada linha de saída de erro do comando. Igual a stderr, mas stderr Separa as linhas usando caracteres newlines (\ n) em vez de matrizes.
Se você deseja apenas imprimir/acessar a sequência de senha (que é muito provável), você pode imprimir/acessar o stdout propriedade do MyPass variável em seu manual, conforme marcado na captura de tela abaixo.
$ nano Playbooks/generate_pass.YamlDepois de terminar, execute o manual generate_pass.Yaml de novo. Somente a sequência de senha será impressa, como você pode ver na captura de tela abaixo.
Que cobre o básico do Ansible registro módulo.
Exemplo 2: Conteúdo do diretório da loja
Neste exemplo, mostrarei como armazenar o conteúdo de um diretório em uma variável usando o Ansible registro módulo, bem como como iterar sobre eles.
Primeiro, crie o novo manual get_dir_contents.Yaml no Playbooks/ diretório.
$ Nano Playbooks/get_dir_contents.YamlEm seguida, digite as seguintes linhas no get_dir_contents.Yaml livro de cantadas:
- Hosts: Ubuntu20Depois de terminar, pressione + X, seguido pela Y e , Para salvar o generate_pass.Yaml arquivo.
Neste manual, vou definir duas tarefas.
A primeira tarefa lista todo o conteúdo do /Home/Ansible diretório e os armazena no DIR_CONTENTES variável.
A segunda tarefa imprime o DIR_CONTENTES variável.
Execute o get_dir_contents.Yaml Playbook, como segue.
$ Ansible-Playbook Playbooks/get_dir_contents.YamlComo você pode ver, o stdout_lines A propriedade armazenou o conteúdo do diretório como uma matriz. O stdout A propriedade também é armazenada no conteúdo do diretório. Essas propriedades são separadas por caracteres newline (\ n). Neste exemplo, o stdout_lines A propriedade é fácil de trabalhar com.
Em seguida, itera sobre o conteúdo do diretório usando um loop.
Para fazer isso, abra o get_dir_contents.Yaml Playbook e mude a segunda tarefa, conforme marcado na captura de tela abaixo.
$ Nano Playbooks/get_dir_contents.YamlAqui, estou iterando sobre o DIR_CONTENTES.stdout_lines Array usando um loop e imprimindo os itens da matriz usando o Ansible depurar módulo. Nesta tarefa, o item A variável é uma variável de loop usada para iterar sobre os elementos da matriz.
Execute o get_dir_contents.Yaml Manual, como segue:
$ Ansible-Playbook Playbooks/get_dir_contents.YamlComo você pode ver, o conteúdo do /Home/Ansible O diretório é impresso na tela.
Exemplo 3: Diretório de backup
Neste exemplo, mostrarei como fazer backup de um diretório usando o Ansible registro, arquivo, e cópia de módulos.
Primeiro, crie o novo manual backup_home_dir.Yaml no Playbooks/ Diretório, como segue:
$ nano Playbooks/backup_home_dir.YamlEm seguida, digite as seguintes linhas no backup_home_dir.Yaml arquivo.
- Hosts: Ubuntu20Depois de terminar, pressione + X, seguido pela Y e , Para salvar o backup_home_dir.Yaml arquivo.
Neste manual, vou definir três tarefas.
A primeira tarefa armazena o conteúdo do /Home/Ansible diretório (o diretório que vou fazer backup) no DIR_CONTENTES variável usando o Ansible registro módulo.
A segunda tarefa cria um novo diretório /TMP/ANSIBLE usando o Ansible arquivo módulo. Este é o diretório onde o backup será armazenado.
A terceira tarefa faz um loop através do DIR_CONTENTES.stdout_lines Array e usa o Ansible cópia de módulo para copiar cada diretório para o /TMP/ANSIBLE/ diretório.
Execute o backup_home_dir.Yaml Manual, como segue:
$ Ansible-Playbook Playbooks/backup_home_dir.YamlComo você pode ver, no meu Ubuntu 20.04 Host LTS, o backup foi bem -sucedido.
Exemplo 4: Executar ou pular tarefas
Neste exemplo, mostrarei como executar ou pular tarefas, dependendo da variável que você registrou, usando o registro módulo.
Primeiro, crie o novo manual Register_conditions.Yaml no Playbooks/ diretório da seguinte maneira:
$ Nano Playbooks/Register_conditions.YamlEm seguida, digite as seguintes linhas no Register_conditions.Yaml arquivo.
- Hosts: Ubuntu20Depois de terminar, pressione + X, seguido pela Y e , Para salvar o Register_conditions.Yaml arquivo.
Neste manual, eu defini duas tarefas.
A primeira tarefa armazena o conteúdo do /Home/Ansible/Test3 diretório no DIR_CONTENTES variável.
A segunda tarefa verifica se DIR_CONTENTES.stdout é uma corda vazia ou se o diretório /Home/Ansible/Test3 está vazia. Se o diretório estiver vazio, a mensagem Diretório está vazio irá imprimir.
Execute o Register_conditions.Yaml Manual, como segue:
$ Ansible-Playbook Playbooks/Register_conditions.YamlComo você pode ver, o manual correu com sucesso.
Desde o diretório /Home/Ansible/Test3 está vazio, o manual imprimiu a mensagem Diretório está vazio.
Em seguida, crie um novo arquivo no /Home/Ansible/Test3 diretório.
$ touch test3/myfile
Desde o /Home/Ansible/Test3 O diretório não está mais vazio, a tarefa Verifique se o diretório está vazio é ignorado, como você pode ver na captura de tela abaixo.
$ Ansible-Playbook Playbooks/Register_conditions.YamlConclusão
O Ansible registro O módulo é muito útil para automação do servidor. Este artigo mostrou o básico do registro módulo, incluindo exemplos de uso do Ansible registro Módulo para armazenamento e backup de diretórios e tarefas de diretório em execução.