Introdução
Neste laboratório, você explorará o módulo Ansible Stat, que permite coletar informações sobre arquivos e diretórios em hosts remotos. O módulo Stat fornece vários atributos e informações, como tamanho do arquivo, propriedade, permissões e timestamps de modificação.
Obter Informações do Arquivo
Nesta etapa, você usará o módulo Ansible Stat para coletar informações sobre um arquivo em um host remoto.
Primeiro, crie um novo arquivo de playbook Ansible chamado /home/labex/project/stat-module-playbook.yaml e abra-o em um editor de texto.
Adicione o seguinte conteúdo ao arquivo do playbook:
- hosts: localhost
tasks:
- name: Get file information
stat:
path: /home/labex/project/file.txt
register: file_info
- name: Print file information
debug:
msg: |
File size: {{ file_info.stat.size }}
Ownership: {{ file_info.stat.uid }}:{{ file_info.stat.gid }}
Permissions: {{ file_info.stat.mode }}
hosts: Isso especifica o host de destino no qual o playbook será executado. Neste caso, o playbook será executado no host local porque o host de destino élocalhost.tasks: Esta é uma lista de tarefas a serem executadas.name: Este é o nome descritivo para a tarefa que identifica o propósito da tarefa.stat: Este módulo Ansible coleta informações sobre um arquivo no host remoto especificado pelo parâmetropath.register: Armazena a saída do módulostatem uma variável chamadafile_infopara uso posterior.debug: Imprime informações de depuração durante a execução do playbook.msg: Exibe uma mensagem com as informações do arquivo recuperadas usando o módulostat, incluindo tamanho do arquivo, propriedade (UID e GID) e permissões.
Em resumo, este playbook foi projetado para recuperar informações sobre um arquivo específico localizado em /home/labex/project/file.txt no host local e imprimir vários detalhes, como tamanho, propriedade e permissões.
Em seguida, crie um arquivo chamado file.txt no diretório /home/labex/project.
echo "This is the content of the file." > /home/labex/project/file.txt
Finalmente, execute o playbook com o seguinte comando:
ansible-playbook stat-module-playbook.yaml
Observe a saída para ver o tamanho do arquivo, a propriedade e as permissões do arquivo especificado. Exemplo de saída:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Get file information] ****************************************************
ok: [localhost]
TASK [Print file information] **************************************************
ok: [localhost] => {
"msg": "File size: 33\nOwnership: 5000:5000\nPermissions: 0664\n"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Verificar a Existência do Arquivo
Nesta etapa, você usará o módulo Ansible Stat para verificar a existência de um arquivo em um host remoto.
Primeiro, modifique o arquivo de playbook existente removendo todo o conteúdo e adicionando o seguinte conteúdo ao arquivo do playbook:
- hosts: localhost
tasks:
- name: Check file existence on remote host
stat:
path: /home/labex/project/file.txt
register: file_info
- name: Print file existence
debug:
msg: "File exists: {{ file_info.stat.exists }}"
hosts: Isso especifica o host de destino no qual o playbook será executado. Neste caso, o playbook será executado no host local porque o host de destino élocalhost.tasks: Esta é uma lista de tarefas a serem executadas.name: Este é o nome descritivo para a tarefa que identifica o propósito da tarefa.stat: Este módulo Ansible coleta informações sobre um arquivo no host remoto especificado pelo parâmetropath.register: Armazena a saída do módulostatem uma variável chamadafile_infopara uso posterior.debug: Imprime informações de depuração durante a execução do playbook.msg: Exibe uma mensagem indicando se o arquivo existe ou não com base nas informações recuperadas usando o módulostat.
Em resumo, este playbook foi projetado para verificar a existência de um arquivo específico localizado em /path/on/remote/host/file.txt no host local e imprimir uma mensagem indicando se o arquivo existe ou não.
Em seguida, execute o playbook com o seguinte comando:
ansible-playbook stat-module-playbook.yaml
Observe a saída para ver se o arquivo file.txt existe no host remoto.
Exemplo de saída:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Check file existence on remote host] *************************************
ok: [localhost]
TASK [Print file existence] ****************************************************
ok: [localhost] => {
"msg": "File exists: True"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Recuperar o Timestamp de Modificação do Arquivo
Nesta etapa, você usará o módulo Ansible Stat para recuperar o timestamp de modificação de um arquivo em um host remoto.
Primeiro, modifique o arquivo de playbook existente removendo todo o conteúdo e adicionando o seguinte conteúdo ao arquivo do playbook:
- hosts: localhost
tasks:
- name: Get file modification timestamp
stat:
path: /home/labex/project/file.txt
register: file_info
- name: Print file modification timestamp
debug:
msg: "File modification timestamp: {{ file_info.stat.mtime }}"
hosts: Isso especifica o host de destino no qual o playbook será executado. Neste caso, o playbook será executado no host local porque o host de destino élocalhost.tasks: Esta é uma lista de tarefas a serem executadas.name: Este é o nome descritivo para a tarefa que identifica o propósito da tarefa.stat: Este módulo Ansible coleta informações sobre um arquivo no host remoto especificado pelo parâmetropath.register: Armazena a saída do módulostatem uma variável chamadafile_infopara uso posterior.debug: Imprime informações de depuração durante a execução do playbook.msg: Exibe uma mensagem contendo o timestamp de modificação do arquivo recuperado usando o módulostat.
Em resumo, este playbook foi projetado para recuperar o timestamp de modificação de um arquivo específico localizado em /home/labex/project/file.txt no host local e imprimir o timestamp.
Em seguida, execute o playbook com o seguinte comando:
ansible-playbook stat-module-playbook.yaml
Observe a saída para ver o timestamp de modificação do arquivo file.txt em um formato legível por humanos.
Exemplo de saída:
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
PLAY [localhost] ***************************************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Get file modification timestamp] *****************************************
ok: [localhost]
TASK [Print file modification timestamp] ***************************************
ok: [localhost] => {
"msg": "File modification timestamp: 1710555624.2304714"
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Resumo
Parabéns! Você concluiu com sucesso o laboratório do Módulo Stat do Ansible. Você aprendeu como coletar informações de arquivos, verificar a existência de arquivos e recuperar o timestamp de modificação usando o módulo Stat no Ansible.
O módulo Stat é uma ferramenta poderosa que permite coletar vários atributos e informações sobre arquivos e diretórios em hosts remotos. Agora você pode aproveitar este módulo em seus playbooks Ansible para realizar operações avançadas relacionadas a arquivos e tomar decisões informadas com base nas informações coletadas.
Continue explorando a documentação do Ansible e experimentando diferentes módulos para aprimorar suas habilidades de automação. Feliz Ansible-ing!


