Módulo File do Ansible

AnsibleBeginner
Pratique Agora

Introdução

Neste laboratório, você explorará o módulo Ansible File, que permite gerenciar arquivos e diretórios em hosts remotos. O módulo File oferece uma ampla gama de funcionalidades, como criar, excluir, modificar permissões e verificar a existência de arquivos e diretórios.

Criar um Arquivo no Host Remoto

Nesta etapa, você criará um arquivo em um host remoto usando o módulo Ansible File.

Primeiro, crie um novo arquivo de playbook Ansible chamado /home/labex/project/file-module-playbook.yaml e abra-o em um editor de texto.
Adicione o seguinte conteúdo ao arquivo do playbook:

- hosts: localhost
  tasks:
    - name: Create a file on remote host
      file:
        path: /home/labex/file.txt
        state: touch
  • file: Módulo Ansible para manipular o sistema de arquivos.
  • path: Especifica o caminho para o arquivo, neste caso /home/labex/file.txt.
  • state: Especifica o estado do arquivo. Aqui, touch indica que o arquivo será criado se não existir, ou atualizado com os timestamps de acesso e modificação se já existir.

O objetivo deste playbook é criar um arquivo chamado file.txt no host remoto.

Em seguida, execute o playbook usando o seguinte comando:

ansible-playbook file-module-playbook.yaml

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 [Create a file on remote host] ********************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

Finalmente, verifique se o arquivo file.txt foi criado no caminho especificado no host remoto.

ll /home/labex/file.txt

Exemplo de saída:

-rw-rw-r-- 1 labex labex 0 Mar 10 03:12 file.txt

Você verá a mensagem indicando que /home/labex/file.txt foi criado com sucesso.

Gerenciar Permissões de Arquivos

Nesta etapa, você aprenderá como gerenciar permissões de arquivos em um host remoto usando o módulo Ansible File.

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: Set file permissions
      file:
        path: /home/labex/file.txt
        mode: "0644"
  • file: Módulo Ansible para manipular o sistema de arquivos.
  • path: Especifica o caminho para o arquivo, neste caso /home/labex/file.txt.
  • mode: Este parâmetro é usado para definir o modo de permissão do arquivo. Substitua "0644" pelo modo de permissão desejado para o arquivo. Consulte a documentação do chmod para obter mais informações sobre os modos de permissão.

O objetivo deste playbook é definir as permissões do arquivo /home/labex/file.txt para 0644.

Em seguida, execute o playbook usando o seguinte comando:

ansible-playbook file-module-playbook.yaml

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 [Set file permissions] ****************************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

Finalmente, verifique se as permissões do arquivo foram definidas conforme especificado no host remoto.

ll /home/labex/file.txt

Exemplo de saída:

-rw-r--r-- 1 labex labex 0 Mar 10 03:12 /home/labex/file.txt

O -rw-r--r-- aqui indica que o modo de /home/labex/file.txt foi definido com sucesso para 0644.

Excluir um Arquivo no Host Remoto

Nesta etapa, você aprenderá como excluir um arquivo em um host remoto usando o módulo Ansible File.

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: Delete a file on remote host
      file:
        path: /home/labex/file.txt
        state: absent
  • file: Módulo Ansible para manipular o sistema de arquivos.
  • path: Especifica o caminho para o arquivo a ser excluído, ou seja, /home/labex/file.txt.
  • state: Este parâmetro indica que o arquivo deve estar no estado absent. Portanto, o objetivo da tarefa é excluir o arquivo no caminho especificado.

O objetivo deste playbook é excluir o arquivo /home/labex/file.txt no host remoto.

Em seguida, execute o playbook usando o seguinte comando:

ansible-playbook file-module-playbook.yaml

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 [Delete a file on remote host] ********************************************
changed: [localhost]

PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

Finalmente, verifique se o arquivo file.txt foi excluído e não existe mais no host remoto.

ll /home/labex/file.txt

Exemplo de saída:

ls: cannot access '/home/labex/file.txt': No such file or directory

Esta mensagem indica que o arquivo /home/labex/file.txt foi excluído com sucesso.

Verificar a Existência de um Arquivo

Nesta etapa, você aprenderá como verificar a existência de um arquivo em um host remoto usando o módulo Ansible File.

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/file.txt
      register: file_info

    - name: Print file existence
      debug:
        msg: "File exists: {{ file_info.stat.exists }}"
  • stat: Este é um dos módulos do Ansible para obter informações de status sobre um arquivo ou diretório.
  • path: Especifica o caminho para o arquivo a ser verificado, ou seja, /home/labex/file.txt.
  • register: Armazena o resultado da execução do módulo na variável file_info usando a palavra-chave register.
  • debug: Este é um dos módulos Ansible que imprime informações de depuração.
  • msg: Use o módulo debug para imprimir uma mensagem com informações sobre a existência de um arquivo, que é recuperada via file_info.stat.exists.

O objetivo deste playbook é verificar a existência do arquivo /home/labex/file.txt no host remoto e imprimir as informações na saída padrão.

Em seguida, execute o playbook usando o seguinte comando:

ansible-playbook file-module-playbook.yaml

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: False"
}

PLAY RECAP *********************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Finalmente, observe a saída para ver se o arquivo file.txt existe no host remoto.
"msg": "File exists: False" indica que o arquivo /home/labex/file.txt não existe.

Resumo

Parabéns! Você concluiu com sucesso o laboratório do Módulo File do Ansible. Você aprendeu como criar arquivos e diretórios, gerenciar permissões de arquivos, excluir arquivos e verificar a existência de arquivos em hosts remotos usando o módulo File.

O módulo File é uma ferramenta poderosa no Ansible que permite realizar várias operações relacionadas a arquivos durante as tarefas de automação. Agora você pode usar com confiança o módulo File em seus playbooks Ansible para gerenciar arquivos e diretórios de forma eficiente.

Continue explorando a documentação do Ansible e outros módulos para expandir seu conhecimento e aprimorar suas habilidades de automação. Feliz Ansible-ing!