Como criar um diretório em Ansible

Como criar um diretório em Ansible

Ansible é uma das melhores ferramentas de automação disponíveis, oferecendo ferramentas simples, intuitivas e poderosas para executar tarefas de automação no mundo moderno.

Para a maioria das tarefas de automação, você precisará criar diretórios, especialmente ao instalar várias ferramentas e aplicativos, backups e restaurações. Embora você possa executar essas tarefas usando um script automatizado, o Ansible fornece uma melhor funcionalidade, permitindo que você crie diretórios em hosts especificados.

Este tutorial mostra como usar o módulo de arquivo Ansible para criar, remover e modificar permissões de diretório para hosts especificados.

Como criar um diretório em Ansible

Qualquer um dos métodos a seguir pode ser usado para criar um diretório em Ansible:

  • Um comando Ansible cru com o módulo de comando
  • Um módulo de arquivo em um manual Ansible

Para criar um diretório em Ansible usando o módulo de comando, digite o comando mostrado abaixo:

$ Ansible All -M Command -a "mkdir ~/backups"

Após inserir o comando acima, você deve obter a saída mostrada abaixo:

Digite a senha para a chave '/home/user/.ssh/id_rsa ':
[Aviso]: Considere usar o módulo de arquivo com estado = diretório em vez de executar 'mkdir'. Se você precisar usar o comando porque o arquivo é insuficiente, você pode adicionar 'Warn: false' a esta tarefa de comando ou definir 'command_warnings = false' em Ansible.CFG para se livrar desta mensagem.
35.222.210.12 | Alterado | rc = 0 >>

Verifique se o seu inventário de hosts Ansible em/etc/Ansible/hosts contém as informações corretas sobre seus hosts remotos.

Embora o módulo de comando seja simples de usar em um único host Ansible, ele se torna muito ineficiente ao lidar com vários hosts com diferentes diretórios e tarefas.

Para combater essa desvantagem, usaremos o módulo de arquivo Ansible e construiremos um manual contendo os hosts que queremos usar e os diretórios que desejamos criar.

OBSERVAÇÃO: O módulo de arquivo também pode ser usado como um único comando em Ansible, mas funciona muito parecido com o módulo de comando.

Para usar um manual Ansible, crie um arquivo YAML e insira as seguintes entradas para criar um diretório:

- Hosts: todas as tarefas:
- Nome: Módulo de arquivo Ansible Criar diretório
arquivo:
Caminho: ~/backups
Estado: Diretório

Salve o arquivo e use o Ansible-PlayBook para criar os diretórios:

Ansible-playbook mkdir.yml

Isso deve produzir uma saída como a abaixo, indicando que as ações foram realizadas com sucesso usando o arquivo de manual especificado.

Jogue [todos] **************************************************** ***************
Tarefa [coleta de fatos] *********************************************** **************************************************** **
Digite a senha para a chave '/home/user/.ssh/id_rsa ':
OK: [35.222.210.12]
Tarefa [Módulo Ansible Arquivo Criar Diretório] *********************************** ************************************
OK: [35.222.210.12]
Jogue recapitular ************************************************** **************************************************** *************
35.222.210.12: ok = 2 alterado = 0 inacessível = 0 falhou = 0 pulado = 0 resgatado = 0 ignorado = 0

Como criar vários diretórios com itens

Playbooks Ansible também permitem criar vários diretórios usando a instrução with_items no arquivo YAML.

Por exemplo, para criar backups para os três serviços, MySQL, Repositório e Config, você pode criar a tarefa mostrada no arquivo YAML abaixo:

- Hosts: todas as tarefas:
- Nome: Ansible Crie vários diretórios com_items
arquivo:
Caminho: ~/backups/item
Estado: Diretório
with_items:
- 'mysql'
- 'repositório'
- 'Config'

Salve o arquivo acima e execute-o com Ansible-Playbook.

$ Ansible-playbook mkdir_multi.yml tocar [tudo] *********************************************** **************************************************** **************************************************** **************************************************** ***
Tarefa [coleta de fatos] *********************************************** **************************************************** **************************************************** *******************************************
Digite a senha para a chave '/home/user/.ssh/id_rsa ':
OK: [35.222.210.12]
Tarefa [Ansible crie vários diretórios com_items] ******************************************** **************************************************** **************************************************** ***************
Alterado: [35.222.210.12] => (item = mysql)
Alterado: [35.222.210.12] => (item = repositório)
Alterado: [35.222.210.12] => (item = config)
Jogue recapitular ************************************************** **************************************************** **************************************************** ****************************************************
35.222.210.12: ok = 2 alterado = 1 inacessível = 0 falhou = 0 pulado = 0 resgatado = 0 ignorado = 0

O manual acima deve criar vários diretórios, como ~/backups/mysql, ~/backups/repositório e ~/backups/config.

$ ls -la

A saída da lista de diretórios é como mostrado abaixo:

total 0
drwxrwxr-x. 5 Debian Debian 51 Mar 6 17:26 .
DRWX------. 6 Debian Debian 117 Mar 6 17: 26…
drwxrwxr-x. 2 Debian Debian 6 mar 6 17:26 Config
drwxrwxr-x. 2 Debian Debian 6 mar 6 17:26 MySQL
drwxrwxr-x. 2 Debian Debian 6 mar 6 17:26 Repositório

Como definir permissões para um diretório

Ansible permite especificar permissões para um diretório usando a diretiva de modo. Considere o seguinte manual, que cria um diretório e define permissões:

- Hosts: todos
tarefas:
- Nome: Ansible Criar Diretório e Definir Permissões
arquivo:
caminho: /backups
Estado: Diretório
modo: "u = rw, g = wx, o = rwx"
Torne -se: sim

Na entrada acima, criamos um diretório em /. Também precisávamos ser raiz, daí o que se tornar: sim entrada.

$ ANSIBLE PLAYBOOK PERMISSÃO.yml tocar [tudo] *********************************************** **************************************************** **************************************************** **************************************************** ***
Tarefa [coleta de fatos] *********************************************** **************************************************** **************************************************** *******************************************
Digite a senha para a chave '/home/user/.ssh/id_rsa ':
OK: [35.222.210.12]
Tarefa [Ansible Criar Diretório e Definir Permissões] ******************************* **************************************************** **************************************************** ******************
Alterado: [35.222.210.12]
Jogue recapitular ************************************************** **************************************************** **************************************************** ****************************************************
35.222.210.12: ok = 2 alterado = 1 inacessível = 0 falhou = 0 pulado = 0 resgatado = 0 ignorado = 0

Se você visualizar as permissões do diretório que criamos, verá o seguinte:

$ ls -lrt / | backups grep

A saída é como mostrado abaixo:

DRW-wxrwx. 2 raiz raiz 6 mar 6 17:36 Backups

Como alterar recursivamente as permissões em um diretório

Para alterar as permissões de um diretório e seus arquivos recursivamente, basta especificar a entrada recursiva, como mostrado abaixo:

- Hosts: todos
tarefas:
- Nome: Ansible Criar Diretório e Definir Permissões
arquivo:
caminho: /backups
Estado: Diretório
modo: "u = rw, g = wx, o = rwx"
Recursiva: Sim
Torne -se: Sim

Como definir permissões em vários diretórios

A configuração de permissões para vários diretórios em Ansible também é tão simples quanto algumas linhas de entradas. Considere o seguinte manual.

- Hosts: todos
tarefas:
- Nome: Ansible Criar diretório Mutliple com permissões
arquivo:
caminho: "item.caminho "
modo: "item.modo"
Estado: Diretório
with_items:
- path: '~/backups/mysql', modo: '0777'
- path: '~/backups/repositório', modo: '0755'
- path: '~/backups/config', modo: '0707'

Como excluir um diretório em Ansible

Para remover um diretório e todo o seu conteúdo usando um manual Ansible, especifique o estado como ausente, como mostrado abaixo:

- Hosts: todos
tarefas:
- Nome: Ansible Diretório de Excluir
arquivo:
caminho: /backups
estado: ausente
Torne -se: sim

Este comando removerá o diretório e todos os arquivos e diretórios infantis.

OBSERVAÇÃO: Verifique se você tem permissões para o diretório em que está trabalhando.

Como criar um diretório de registro de data e hora

Em alguns casos, pode ser necessário criar um diretório com um registro de data e hora anexado a ele, o que pode ser muito útil, especialmente ao criar backups. Para criar um diretório de registro de data e hora, podemos usar a variável Ansible_date_time.

Considere o seguinte manual:

- Hosts: todos
tarefas:
- Nome: Ansible Adicione Timestamp ao diretório
arquivo:
caminho: "/backups/mysql Ansible_date_time.data"
Estado: Diretório
Modo: "0777"
Torne -se: sim

Depois de executar o manual, você terá um diretório com o registro de data e hora.

$ ls -l

A listagem do diretório deve ser como mostrado abaixo:

Total 0 DRWXRWXRWX. 2 raiz 6 mar 6 de março 18:03 MySQL2021-03-06

OBSERVAÇÃO: Para evitar erros, sempre verifique a sintaxe do arquivo YAML que você pretende usar em Ansible.

Conclusão

Este tutorial mostrou que trabalhar com módulos Ansible é muito fácil e intuitivo, simplificando as tarefas complexas mais simples. Usando o módulo de arquivo Ansible, você pode criar um ou mais diretórios e adicionar permissões para cada. Você também pode usar o mesmo módulo para remover um diretório para obter mais informações sobre como usar o módulo de arquivo Ansible, verifique a documentação oficial na página de recursos.