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:
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.