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,touchindica 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 estadoabsent. 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ávelfile_infousando a palavra-chaveregister.debug: Este é um dos módulos Ansible que imprime informações de depuração.msg: Use o módulodebugpara imprimir uma mensagem com informações sobre a existência de um arquivo, que é recuperada viafile_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!


