Tutorial do módulo de arquivo Ansible

Tutorial do módulo de arquivo Ansible
Ansible é um utilitário de automação incrível que vem com recursos e ferramentas para gerenciar hosts remotos. Funciona implementando módulos para executar tarefas e operações específicas.

Um módulo prático em Ansible é o módulo de arquivo. Este módulo é responsável por executar tarefas como criar arquivos e diretórios, excluir arquivos e diretórios, criar links simbólicos suaves e difíceis, adicionar e modificar permissões de arquivos e diretórios e muito mais.

Este guia irá orientá -lo como trabalhar com o módulo de arquivo Ansible. Vamos ilustrar isso usando uma coleção de exemplos e manuais.

OBSERVAÇÃO: Certifique -se de ter acesso aos seus hosts remotos especificados no arquivo de inventário da Ansible.

Como funciona o módulo de arquivo Ansible

O Ansible.construídas em.O módulo de arquivo está na instalação Ansible padrão como parte do Ansible-Core. Ansible recomenda referir -se ao módulo usando o "nome totalmente qualificado" em vez do nome curto do módulo para evitar conflitos com módulos de nomes semelhantes.

O módulo de arquivo contém uma coleção de parâmetros predefinidos para gerenciamento de arquivos. Usamos esses parâmetros para configurar as ações executadas no host remoto.

Os seguintes são parâmetros importantes que você pode usar:

  1. Proprietário - Nome de usuário do usuário que possuirá o arquivo e diretório criados
  2. Caminho - Caminho para o arquivo ou diretório para gerenciar
  3. Modo - Modo de permissão para definir no arquivo ou diretório especificado. Use a notação octal dentro de um par de citações únicas.
  4. Grupo - Define a propriedade do grupo para um arquivo ou diretório
  5. Força - Um valor booleano usado para forçar a criação de links simbólicos se o arquivo de origem não estiver disponível no momento (mas adicionado mais tarde) ou o Symlink de destino já existe.
  6. Seguir - Se houver links de sistema de arquivos, siga -os.
  7. Atributos - Define atributos para o arquivo ou diretório especificado. Semelhante ao utilitário de chattr padrão no Linux
  8. Estado - Define o contexto para a criação de um arquivo. As opções aceitas incluem:
    1. Tocar - Crie um arquivo vazio
    2. Diretório - Crie um diretório
    3. Duro - Crie um link rígido
    4. Link - Crie um link suave
    5. Ausente - Excluir arquivos e diretórios de forma recursiva e vincular links

Verifique os documentos do módulo de arquivo Ansible para outros parâmetros predefinidos.

A melhor maneira de aprender a trabalhar com o módulo de arquivo Ansible é por exemplos.

Módulo de arquivo Ansible: Exemplos Práticos

OBSERVAÇÃO: Este guia pressupõe que você tenha um nó de controle Ansible e seus hosts de destino adicionados ao seu arquivo de inventário.

Como criar um arquivo vazio

Para criar um arquivo vazio usando o módulo de arquivo Ansible, definimos o estado para tocar como ilustrado no manual.

---
- Hosts: todos
tarefas:
- Nome: Crie arquivo vazio
arquivo:
Caminho: $ home/touch_file
Estado: toque

O manual acima contém configuração básica de Ansible:

  1. hospedar - Define os hosts de destino remoto para executar o manual. Você pode definir um grupo de hosts remotos ou um único host.
  2. tarefas - Diz Ansible para executar a tarefa especificada no host remoto.
  3. nome - Especifica o nome da tarefa para executar
  4. arquivo - Chama o módulo de arquivo Ansible
  5. caminho - Define um caminho na máquina remota onde o arquivo é criado.
  6. estado - Crie um arquivo vazio usando o toque.

Salve o manual e execute -o nos hosts remotos:

Ansible-playbook em vazio.yml

Como criar vários arquivos

Ansible permite que você crie vários arquivos em uma única tarefa. Abaixo está um exemplo de manual:

---
- Hosts: todos
tarefas:
- Nome: Crie vários arquivos
arquivo:
Caminho: $ home/item
Estado: toque
with_items:
- arquivo1.c
- cabeçalho.h
- File2.py
- arquivo3.TXT
- arquivo4.rb

No manual, utilizamos duas entradas Ansible:

  1. item - Diz Ansible para criar um caminho único para os arquivos especificados.
  2. com_item - Cria uma lista de arquivos para criar no host remoto. Você pode adicionar quantos arquivos e extensões você achar adequado.

Execute o Ansible-PlayBook para criar vários arquivos especificados:

Ansible-playbook MultipFiles.yml

Como criar um arquivo com conteúdo

Nos exemplos acima, criamos arquivos vazios usando o comando Touch. Para criar um arquivo com conteúdo, podemos usar o módulo de cópia e definir o parâmetro de conteúdo para o conteúdo do arquivo.

Abaixo está um exemplo de manual:

---
- Hosts: todos
tarefas:
- Nome: Criar arquivo com conteúdo
cópia de:
dest: $ home/olá.cpp
Conteúdo: |
#incluir
usando namespace std
int main ()
cout << "hello world" << endl;
retornar 0;

Os módulos e parâmetros no manual acima são:

  1. cópia de - Envolve o módulo de cópia Ansible.
  2. dest - O caminho de destino para o seu arquivo
  3. contente - O conteúdo para adicionar ao seu arquivo. Cada linha é adicionada a uma nova linha.

Execute o manual:

Ansible-playbook com conteúdo.yml

Como criar um diretório

O manual usado para criar um diretório usando o módulo de arquivo Ansible é semelhante à criação de um arquivo vazio. No entanto, como mostrado abaixo, definimos o estado como "diretório" em vez de "arquivo":

---
- Hosts: todos
tarefas:
- Nome: CreateAdirectory
arquivo:
Caminho: $ Home/Ansible-Dir
Estado: Diretório

Como excluir um arquivo ou link simbólico

A remoção de arquivos, diretórios ou links simbólicos é muito direta; Tudo o que precisamos fazer é definir o estado como ausente, conforme mostrado no manual abaixo:

---
- Hosts: todos
tarefas:
- Nome: Removerfiles
arquivo:
Caminho: $ Home/Ansible-Dir
estado: ausente

O manual não fará nada se o arquivo especificado não existir.

Como alterar a permissão de um diretório

Usamos os parâmetros do proprietário, do grupo e do modo do manual para alterar a permissão de um diretório.

O exemplo a seguir definirá as permissões especificadas no diretório.

---
- Hosts: todos
tornar verdade
tarefas:
- Nome: ModifyDirPermissions
arquivo:
caminho: /var /log
Estado: Diretório
Proprietário: raiz
Grupo: Raiz
Modo: 0755

No manual de exemplo acima, nos tornamos: verdadeiro. Isso é necessário ao definir permissões para outros usuários, exceto Ansible_user

  1. Use a notação octal para especificar permissões, incluindo o líder 0.

Usando o modo simbólico

Ansible permite que você defina as permissões no modo simbólico em vez do formato octal. O modo abaixo é equivalente a 0777.

---
- Hosts: todos
tornar verdade
tarefas:
- Nome: ModifyDirPermissions em formato simbólico
arquivo:
caminho:/var/log/
Estado: Diretório
Modo: u = rwx, g = rwx, o = rwx

OBSERVAÇÃO: Definir 0777 para um diretório como /var /log não é a melhor prática, e nós o usamos aqui para fins de ilustração apenas.

Alterar as permissões de diretório recursivamente

Se você deseja alterar as permissões em um diretório recursivamente, pode usar o parâmetro Recurse, como mostrado no manual abaixo:

---
- Hosts: todos
tornar verdade
tarefas:
- Nome: ModifyDirPerMissionsRecursive
arquivo:
caminho:/var/log/
Estado: Diretório
Proprietário: raiz
Grupo: Raiz
Modo: 0755
Recurse: Verdadeiro

Definir recurso: true afetará os arquivos dentro do diretório pai especificado.

Como criar um link simbólico

Criar um link simulado usando o módulo de arquivo Ansible é tão simples quanto criar um diretório vazio. Nesse caso, definimos o estado para vincular como mostrado no manual de exemplo abaixo:

---
- Hosts: todos
- tornar verdade
tarefas:
- Nome: CreateAsymlink
arquivo:
SRC: $ home/src_file
dest: /etc /dest_symlink
Estado: Link

Como excluir um link simbólico

Remover um link simulado é semelhante a remover um arquivo regular.

---
- Hosts: todos
- tornar verdade
tarefas:
- Nome: removeasymlink
arquivo:
caminho: /etc /dest_symlink
estado: ausente

Como modificar o tempo de acesso

Você pode modificar o tempo de acesso e modificação usando os parâmetros access_time e modification_time.

Exemplo de manual:

- tornar verdade
tarefas:
- Nome: ModifyAccessAndModifiedTime
arquivo:
caminho:/etc/Ansible/hosts
Estado: Arquivo
Access_time: agora
modificação_time: "202110041123.11 "

Definimos o access_time como o horário atual usando a função agora.

Você também pode fornecer tempo para os parâmetros access_time e modification_time no formato (como uma string):

Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.Ss

Conclusão

Este guia ajudou você a entender como trabalhar com o módulo de arquivo Ansible em um manual.