Este artigo mostrará como instalar vários pacotes de software nos hosts do CentOS/RHEL usando o Ansible Loop. Então vamos começar.
Pré -requisitos
Se você quiser experimentar os exemplos neste artigo,
1) Você deve ter o Ansible instalado em seu computador.
2) Você deve ter pelo menos um host CentOS/RHEL 7 ou 8 configurado para automação Ansible.
Existem muitos artigos sobre Linuxhint dedicados à instalação do Ansible e configurando hosts para Ansible Automation. Você pode verificar isso se necessário.
Configurando um diretório de projeto
Antes de avançar, criaremos um diretório de projeto, apenas para manter as coisas um pouco organizadas.
Para criar o diretório do projeto CENTOS-PKG/ E todos os subdiretos necessários (em seu diretório de trabalho atual), execute o seguinte comando:
$ mkdir -pv CENTOS -PKG/PlayBooks
Depois que o diretório do projeto for criado, navegue até o diretório do projeto, como segue:
$ CD CENTOS-PKG/
Em seguida, crie um anfitriões Arquivo de inventário, como segue:
$ nano hosts
Adicione o nome IP do host ou DNS (VM3.NodeKite.com, no meu caso) de seus hosts do CentOS/RHEL no arquivo de inventário (um host por linha).
Depois de terminar, salve o arquivo pressionando + X, seguido pela Y e .
Crie um arquivo de configuração Ansible Ansible.cfg No seu diretório de projeto, como segue:
$ Nano Ansible.cfg
Em seguida, digite as seguintes linhas no Ansible.cfg arquivo.
[Padrões]Depois de terminar, salve o Ansible.cfg arquivo pressionando + X, seguido pela Y e .
Tente ping todos os hosts do CentOS/Rhel que você adicionou em seu anfitriões Arquivo de inventário, como segue:
$ Ansible All -u Ansible -M Ping
Como você pode ver, meu host do CentOS 8 é acessível.
Instalando um único pacote de software
Esta seção mostrará como instalar um único pacote de software usando o DNF ou yum Módulo de Ansible em seus hosts do CentOS/RHEL.
Primeiro, crie o novo manual install_package.Yaml no Playbooks/ Diretório, como segue:
$ Nano Playbooks/Install_package.YamlEm seguida, digite as seguintes linhas no install_package.Yaml arquivo.
- Hosts: todosDepois de terminar, salve o arquivo pressionando + X, seguido pela Y e .
Aqui, eu adicionei apenas uma tarefa, Instale o pacote HTTPD. O objetivo desta tarefa é instalar o httpd Pacote no CentOS/Rhel 8.
Centos/Rhel 7 não usa o DNF Gerenciador de pacotes, ele usa o yum gerenciador de pacotes. Então, se você estiver usando o CentOS/Rhel 7, mude DNF para yum, conforme marcado na captura de tela abaixo. Nenhuma outra mudança é necessária.
O nome a opção é usada para dizer o DNF ou yum módulo o nome do pacote que você está tentando instalar. Nesse caso, será o httpd pacote.
O estado a opção é usada para dizer o DNF ou yum módulo a ação (eu.e. instalar, atualizar, remover) ele deve assumir o pacote especificado. Nesse caso, a ação é presente.
Os valores suportados do estado opção são:
presente - instalará o pacote se ainda não estiver instalado.
mais recente - instalará o pacote se ainda não estiver instalado; Se já instalado, o módulo verificará se há atualizações; Se uma versão atualizada do pacote estiver disponível, ele instalará a nova versão.
ausente - removerá o pacote se estiver instalado.
Se o update_cache a opção está definida como Verdadeiro, O cache do repositório de pacotes DNF/YUM será atualizado antes da instalação do pacote.
Execute o install_package.Yaml Manual, como segue:
$ Ansible-playbook playbooks/install_package.YamlComo você pode ver, o manual install_package.Yaml correu com sucesso.
Como você pode ver, o httpd o pacote está instalado no meu host do CentOS 8, que eu adicionei no meu anfitriões arquivo de inventário.
Lista de $ sudo dnf instalada | grep httpdSe você estiver no CentOS/Rhel 7, use o yum gerente de pacotes em vez do DNF Gerenciador de pacotes para verificar se o pacote está instalado.
Lista de $ sudo yum instalada | grep httpdInstalando vários pacotes de software usando o loop with_items
A seção anterior deste artigo mostrou como instalar um único pacote de software no seu host CentOS/RHEL usando o Ansible DNF/yum módulo. Esta seção mostrará como instalar vários pacotes de software em seus hosts do CentOS/RHEL usando o Ansible com_items laço.
Primeiro, crie o novo manual install_packages.Yaml, do seguinte modo:
$ Nano Playbooks/Install_packages.YamlDigite as seguintes linhas no install_packages.Yaml arquivo.
- Hosts: todosDepois de terminar, pressione + X, seguido pela Y e , Para salvar o install_packages.Yaml arquivo.
Aqui, eu defini os nomes de pacotes (httpd, php, vsftpd) que eu quero instalar usando com_items laço.
Eu substituí o nome do pacote pela variável item. O item A variável será atualizada com o nome do pacote em cada iteração.
Execute o install_packages.Yaml Manual, como segue:
$ Ansible-playbook playbooks/install_packages.YamlComo você pode ver, o manual install_packages.Yaml correu com sucesso.
O httpd, php, e vsftpd Os pacotes estão instalados no meu host do CentOS 8, como você pode ver na captura de tela abaixo.
Lista de $ sudo dnf instalada | grep httpd
Lista de $ sudo dnf instalada | Grep php
Lista de $ sudo dnf instalada | Grep vsftpd
Instalando vários pacotes de software usando o loop de loop
Começando de Ansible 2.5, a maneira recomendada de usar loops em seu manual é usando o laço palavra -chave, em vez do com_items palavra -chave. É por isso que você viu uma mensagem de aviso quando eu corri o install_packages.Yaml Playbook na seção anterior deste artigo.
Trabalhando com loops usando o laço A palavra -chave é muito fácil.
Primeiro, abra o manual install_packages.Yaml (do exemplo anterior), da seguinte forma:
$ Nano Playbooks/Install_packages.YamlNo install_packages.Yaml Playbook, basta substituir o termo com_items com o termo laço, conforme marcado na captura de tela abaixo. Você não precisa mudar mais nada.
Depois de terminar, pressione + X, seguido pela Y e , Para salvar o install_packages.Yaml arquivo.
Execute o install_packages.Yaml Manual, como segue:
$ Ansible-playbook playbooks/install_packages.YamlComo você pode ver, a tarefa Instale todos os pacotes correu o DNF/yum módulo três vezes no total; uma vez para cada loop item.
O httpd, php, e vsftpd Os pacotes estão instalados no meu host do CentOS 8, como você pode ver na captura de tela abaixo.
Lista de $ sudo dnf instalada | grep httpdInstalando vários pacotes de software usando a sintaxe da matriz
Seções anteriores deste artigo mostraram como usar o com_items e laço Loops em Ansible para instalar vários pacotes de software no CentOS/Rhel 7 ou 8, sem qualquer repetição de código. Esta seção mostrará como fazer a mesma coisa com uma sintaxe de matriz mais simples.
Primeiro, abra o install_packages.Yaml Manual, como segue:
$ Nano Playbooks/Install_packages.YamlRemova o com_items ou laço seção da tarefa e alterar o nome opção para ['httpd', 'php', vsftpd '], conforme marcado na captura de tela abaixo.
Depois de terminar, pressione + X, seguido pela Y e , Para salvar o install_packages.Yaml livro de cantadas.
Aqui, cada corda citada dentro dos suportes quadrados ([]) é um elemento de matriz (o nome do pacote de software, no meu caso). Cada elemento da matriz deve ser separado por uma vírgula (,). Você pode adicionar quantos elementos de matriz quiser. Eu adicionei apenas três elementos, httpd, php, e vsftpd.
Execute o install_packages.Yaml Manual, como segue:
$ Ansible-playbook playbooks/install_packages.YamlComo você pode ver, os pacotes de software httpd, php, e vsftpd estão instalados no meu host do CentOS 8.
Lista de $ sudo dnf instalada | grep httpdConclusão
Este artigo mostrou como usar o com_items e laço loops, bem como a sintaxe da matriz, com o Ansible yum/DNF Módulo para instalar vários pacotes de software em seus hosts Centos/Rhel 7 ou 8.
Para mais informações, verifique a documentação oficial do Ansible.
[1] Documentação oficial de loops Ansible
[2] Documentação oficial de Ansible With_items
[3] Documentação oficial do módulo Ansible DNF
[4] Documentação oficial do módulo Ansible Yum