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âmetro path.
register: Armazena a saída do módulo stat em uma variável chamada file_info para 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ódulo stat, 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