Módulo Stat do Ansible

AnsibleBeginner
Pratique Agora

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

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â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 indicando se o arquivo existe ou não com base nas informações recuperadas usando o módulo stat.

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â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 contendo o timestamp de modificação do arquivo recuperado usando o módulo stat.

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!