Ansible

Instalando vários pacotes facilmente no CentOS usando o Ansible

Instalando vários pacotes facilmente no CentOS usando o Ansible
No Ansible, você pode usar o dnf ou yum módulo para instalar pacotes de software em hosts 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 do Ansible para instalar quantos pacotes de software você quiser. Porém, esta não é a maneira mais eficiente de fazer isso, pois haverá muitas repetições 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 em hosts CentOS / RHEL usando o loop Ansible. 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 configuração de hosts para automação do Ansible. Você pode verificar se necessário.

Configurando um Diretório de Projeto

Antes de prosseguir, vamos criar 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 subdiretórios 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, da seguinte maneira:

$ cd centos-pkg /

Em seguida, crie um hospedeiros arquivo de inventário, como segue:

hosts $ nano

Adicione o IP do host ou o nome DNS (vm3.nodekite.com, no meu caso) de seus hosts CentOS / RHEL no arquivo de inventário (um host por linha).

Quando terminar, salve o arquivo pressionando + X, seguido pela Y e .

Crie um arquivo de configuração Ansible ansible.cfg no diretório do seu projeto, da seguinte maneira:

$ nano ansible.cfg

Em seguida, digite as seguintes linhas no ansible.cfg Arquivo.

[padrões]
inventário = hosts
host_key_checking = False

Quando terminar, salve o ansible.cfg arquivo pressionando + X, seguido pela Y e .

Tente executar ping em todos os hosts CentOS / RHEL que você adicionou em seu hospedeiros arquivo de inventário, como segue:

$ ansible all -u ansible -m ping

Como você pode ver, meu host CentOS 8 está 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 CentOS / RHEL.

Primeiro, crie o novo manual install_package.yaml no manuais / diretório, da seguinte forma:

$ 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

Quando 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 CentOS / RHEL 7, mude dnf para yum, como marcado na imagem abaixo. Nenhuma outra mudança é necessária.

O nome opção é usada para dizer ao dnf ou yum módulo o nome do pacote que você está tentando instalar. Neste caso, será o httpd pacote.

O Estado opção é usada para dizer ao dnf ou yum module a ação (i.e. instalar, atualizar, remover) deve assumir o pacote fornecido. Neste caso, a ação é presente.

Os valores suportados do Estado opções são:

presente - irá instalar o pacote se ainda não estiver instalado.

Mais recentes - irá instalar o pacote se ainda não estiver instalado; se já estiver 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 - irá remover o pacote se estiver instalado.

Se o update_cache opção está definida para Verdadeiro, o cache do repositório de pacotes DNF / YUM será atualizado antes que o pacote seja instalado.

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 pacote está instalado no meu host CentOS 8, que eu adicionei no meu hospedeiros arquivo de inventário.

Lista $ sudo dnf instalada | grep httpd

Se você estiver no CentOS / RHEL 7, use o yum gerenciador de pacotes em vez do dnf gerenciador de pacotes para verificar se o pacote está instalado.

$ sudo yum list instalado | 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 em 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 CentOS / RHEL usando o Ansible with_items ciclo.

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

Quando terminar, pressione + X, seguido pela Y e , para salvar o install_packages.yaml Arquivo.

Aqui, eu defini os nomes dos pacotes (httpd, php, vsftpd) que desejo instalar usando with_items ciclo.

Substituí o nome do pacote pela variável item. O item 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 pacotes são instalados no meu host CentOS 8, como você pode ver na imagem abaixo.

Lista $ sudo dnf instalada | grep httpd
Lista $ sudo dnf instalada | grep php
Lista $ sudo dnf instalada | grep vsftpd

Instalando vários pacotes de software usando o loop Loop

A partir de Ansible 2.5, a maneira recomendada de usar loops em seu manual é usando o ciclo palavra-chave, em vez do with_items palavra-chave. É por isso que você viu uma mensagem de aviso quando executei o install_packages.yaml manual na seção anterior deste artigo.

Trabalhar com loops usando o ciclo 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 manual, basta substituir o termo with_items com o termo ciclo, como marcado na imagem abaixo. Você não precisa mudar mais nada.

Quando 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 pacotes são instalados no meu host CentOS 8, como você pode ver na imagem abaixo.

Lista $ sudo dnf instalada | grep httpd
Lista $ sudo dnf instalada | grep php
Lista $ sudo dnf instalada | grep vsftpd

Instalando vários pacotes de software usando a sintaxe de array

Seções anteriores deste artigo mostraram como usar o with_items e ciclo loops no 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 array mais simples.

Primeiro, abra o install_packages.yaml manual, como segue:

$ nano playbooks / install_packages.yaml

Remova o with_items ou ciclo seção da tarefa e alterar o nome opção para ['httpd', 'php', vsftpd '], como marcado na imagem abaixo.

Quando terminar, pressione + X, seguido pela Y e , para salvar o install_packages.yaml livro de cantadas.

Aqui, cada string entre aspas dentro dos colchetes ([]) é um elemento de array (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 array desejar. 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 CentOS 8.

Lista $ sudo dnf instalada | grep httpd
Lista $ sudo dnf instalada | grep php
Lista $ sudo dnf instalada | grep vsftpd

Conclusão

Este artigo mostrou como usar o with_items e ciclo loops, bem como a sintaxe Array, 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 da Ansible.

[1] Documentação oficial de loops Ansible
[2] Documentação oficial do Ansible with_items
[3] Documentação oficial do módulo dnf Ansible
[4] Documentação oficial do módulo Ansible yum

Top jogos do Oculus App Lab
Se você é proprietário de um fone de ouvido Oculus, deve estar informado sobre o carregamento lateral. Sideload é o processo de instalação de conteúdo...
Os 10 melhores jogos para jogar no Ubuntu
A plataforma Windows tem sido uma das plataformas dominantes para jogos devido à grande porcentagem de jogos que estão sendo desenvolvidos hoje para o...
5 melhores jogos de arcade para Linux
Hoje em dia, os computadores são máquinas sérias usadas para jogos. Se você não pode obter a nova pontuação máxima, você saberá o que quero dizer. Nes...