Loops são conjuntos de comandos ou instruções que estão definidas para repetir um certo número de vezes, conforme os requisitos do usuário. Loops permitem um melhor fluxo de controle em seus scripts e remova a redundância geral deles.
Ansible também vem com vários métodos de looping de blocos de código. Este guia deve ajudá -lo a aprender sobre loops em Ansible. Abordaremos o básico do looping em Ansible, juntamente com a sintaxe e exemplos apropriados.
Dito isto, vamos dar uma olhada nos loops em Ansible.
Palavras -chave para loops em Ansible
Ansible usa as seguintes palavras -chave para suas estruturas de loop:
Como o nome sugere, "Loop" é o comando preferido para implementar loops em blocos de código.
Semelhante a "Loop", você tem "com_". Este comando exige que você forneça um plug -in de pesquisa. Recomenda -se usar com_* em vez de loop quando plugins de pesquisa estão envolvidos.
“Até” permite que você continue executando uma tarefa até que a condição necessária seja atendida. É a condição mais próxima da “enquanto” no fluxo de controle.
Agora que você tem uma idéia das palavras -chave para loops, você pode aprender sobre como implementá -las no código.
Loops padrão em Ansible
Começaremos discutindo como implementar loops padrão em Ansible. Para loops padrão, usaremos a palavra -chave "com_".
Este exemplo demonstra como podemos usar loops para adicionar usuários.
- Nome: Adicione vários usuáriosAgora, o próximo passo seria executar o manual. Você pode fazer isso com a ajuda do seguinte comando no terminal Linux:
Livro de teste Ansible-PlayBook.ymlAqui, "item" é o termo de pesquisa. "With_item" tem dois hosts, VM1 e VM2, respectivamente. O loop faz o mesmo que o código abaixo:
- Nome: Adicionar usuário VM1Como você pode ver, usando "with_item", podemos remover a redundância do nosso código. Ao adicionar mais usuários em "with_items:", podemos adicionar vários usuários conforme a necessidade.
O próximo exemplo abordará como executar loops aninhados em Ansible.
Loops aninhados em Ansible
Ansible permite que você implemente loops aninhados em seus scripts. Um exemplo desse loop é dado abaixo.
- Nome: fornece aos usuários acesso a bancos de dadosComo alternativa, você pode escrever o mesmo código com "Loop" da seguinte forma:
- Nome: fornece aos usuários acesso a bancos de dadosOs usuários terão acesso a todos os bancos de dados um por um. Como afirmado anteriormente, é mais fácil entender que o "with_" é melhor com plugins de pesquisa do que "loop" como a sintaxe.
Vamos dar uma olhada em alguns outros exemplos destacando a capacidade do Ansible.
Usando Ansible para iterar sobre hashes
Ansible permite que você pague uma lista de hashes. Isso pode ser visto no exemplo dado abaixo.
Vamos supor que você declarou uma lista de usuários da seguinte maneira.
Usuários:Para imprimir todos os nomes e seriados, execute o script abaixo.
tarefas:Isso imprimirá os nomes de usuário e seriados, respectivamente. Ao adicionar mais usuários no painel "Usuários:", você pode imprimir mais usuários sem precisar escrever o código novamente.
Usando loops para conjuntos de dados paralelos
Você também pode usar loops para conjuntos de dados paralelos. Isso é demonstrado no exemplo abaixo:
Vamos supor que você tenha os seguintes dados:
alfabetos: ['a', 'b', 'c', 'd']Você pode fazer loop esses comandos da seguinte maneira:
tarefas:O código acima fará o loop dos dois conjuntos de dados juntos como (a, 2), (b, 4), etc.
Loops de escolha aleatória
Um dos recursos que acompanham os loops "with_" é "Random_choice".
Como o nome sugere, o recurso de escolha aleatória é usada para selecionar itens aleatoriamente de um determinado conjunto de instruções.
Este exemplo ilustra como fazer loops para selecionar uma ação de uma determinada lista de strings.
- depurar:Aqui, a sequência de "ação executada" é arbitrária e pode ser substituída por qualquer coisa. O comando with_random_choice selecionaria a lista de ações dadas aleatoriamente.
"Até" exemplos de loop
Esta seção do guia será sobre a sintaxe do loop "até".
Como afirmado anteriormente, o comando "até" repetirá um certo conjunto de instruções até que atenda a uma certa condição.
Aqui está um exemplo do loop "até" em ação.
concha:/usr/bin/fooEste é um exemplo de um loop recursivo. O bloco de código acima continuará sendo executado até que o shell receba “todos os sistemas prontos” como saída de texto. Se não for esse o caso, ele vai parar depois de executar 10 vezes, pois as tentativas especificadas são "10".
O atraso corresponde ao atraso em segundos. Por padrão, está definido em 5.
Conclusão
Este foi um guia sobre como você pode usar loops em Ansible. Cobrimos o básico dos loops e sua sintaxe em Ansible e demonstramos seu uso através de diferentes exemplos. Com isso, esperamos que você esteja um passo mais perto de automatizar seus processos usando Ansible.