Instalando vários pacotes facilmente no CentOS usando Ansible

Instalando vários pacotes facilmente no CentOS usando Ansible
Em Ansible, você pode usar o DNF ou yum Módulo para instalar pacotes de software nos hosts do CentOS ou RHEL. Por padrão, esses módulos instalam apenas um único pacote de software. Você pode usar o DNF ou yum Módulo várias vezes em seu manual Ansible para instalar quantos pacotes de software você quiser. No entanto, essa não é a maneira mais eficiente de fazer isso, pois haverá muita repetição de código que gostaríamos de evitar se possível. Felizmente, podemos usar loops para instalar facilmente quantos pacotes de software quisermos sem qualquer repetição de código.

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]
inventário = hosts
host_key_checking = false

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

Em seguida, digite as seguintes linhas no install_package.Yaml arquivo.

- Hosts: todos
Usuário: Ansible
tornar verdade
tarefas:
- Nome: Instale o pacote httpd
DNF:
Nome: httpd
Estado: presente
update_cache: true

Depois 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.Yaml

Como 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 httpd

Se 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 httpd

Instalando 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.Yaml

Digite as seguintes linhas no install_packages.Yaml arquivo.

- Hosts: todos
Usuário: Ansible
tornar verdade
tarefas:
- Nome: Instale todos os pacotes
DNF:
Nome: 'item'
Estado: presente
update_cache: true
with_items:
httpd
php
vsftpd

Depois 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.Yaml

Como 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.Yaml

No 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.Yaml

Como 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 httpd
Lista de $ sudo dnf instalada | Grep php
Lista de $ sudo dnf instalada | Grep vsftpd

Instalando 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.Yaml

Remova 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.Yaml

Como 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 httpd
Lista de $ sudo dnf instalada | Grep php
Lista de $ sudo dnf instalada | Grep vsftpd

Conclusã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