[TUTORIAL] Ansible no Fedora 31
Ansible permitem a automação de infraestrutura, automação cloud, gerenciamento de conformidade e segurança, fluxo automático para integração e deploy contínuo (CI/CD).
Mas porque Ansible e não outra ferramenta?
- All-in-One ( tudo em uma unica ferramenta )
- Curva de Aprendizado (simples ,rápido, poderoso )
- Infra Mutável ( se adapta bem para ambientes mistos )
- Sem Agentes ( isso mesmo não precisa de um client )
O Ansible possui inúmeros módulo , para amazon , google , openstack , docker , kubernetes , windows , vmware ,etc..
Lista completa
https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html
Com Ansible podemos fazer coisas simples como trocar senha de vários servidores , ajustar o timezone , até subir uma infraestrutura local ou na nuvem .
No caso em Linux, GNU/Linux, SystemD/Linux , ele utiliza a conexão via ssh
essa conexão pode ser por chaves ou passando a senha de acesso , eu prefiro por chaves que é mais seguro
A imagem abaixo mostra que podemos utilizar o Ansible para várias distros
No Windows a conexão do Ansible é feita via winrm ( Windows Remote Management) permitindo o gerenciamento .
Instalação do Ansible é bem simples
# dnf install ansible -y
No diretório do Ansible temos 2 arquivos e um diretório
o arquivo de conf do ansible , arquivos onde vamos colocar os hosts , e o diretório onde vamos colocar as playbooks
Para demostração vou usar 3 hosts , minha maquina física e 2 máquinas
virtuais
Vamos criar as chaves ssh (Publica e Privada )para acesso sem senhas
Execute o comando
# ssh-keygen -t rsa
Após execute o comando para enviar a chave publica para os hosts
E copia para todos os hosts como no exemplo# ssh-copy-id 192.168.122.1
# ssh-copy-id 192.168.122.41
# ssh-copy-id 192.168.122.132
Depois só acessa via ssh cada um pra ver se ficou ok
Vamos adicionar os hosts no arquivo de hosts
*eu uso o vim , mas é só usar o seu editor de preferência
# vim /etc/ansible/hosts
e add os servers
[server]
192.168.122.1
192.168.122.41
192.168.122.132
No hosts , tu podes trabalhar com grupo , pode usar nome no lugar de IP
Vamos fazer um pequeno teste mostrando a distro que estamos usando , utilizando o Ansible ad-hoc
ansible-br.org/primeiros-passos/guia-rapido/passo-3/
# ansible -i /etc/ansible/hosts all -m setup -a 'filter=ansible_distribution*'
Agora vamos fazer uma simples playbook instalando e iniciando
o serviço do Apache
Vamos criar um arquivo de .html com um pequeno texto
A finalidade é mostrar que a instalação foi um sucesso .
# vim /etc/ansible/index.html
e Adicione o texto (pode mudar se quiser )
Instalando Apache via Ansible
Apache Web Server instalado via Ansible
Parabéns, consegui instalar o Apache via Ansible
Agora vamos criar o nosso primeiro playbook
vim /etc/ansible/role/apacheinstall.yml
- hosts: server user: root tasks: - name: Instala a ultima versão do apache dnf: name: httpd state: latest - name: Copia o arquivo para o diretorio root do apache template: src: /etc/ansible/index.html dest: /var/www/html owner: apache group: apache mode: 0644 - name: Inicia e Ativa na inicialização systemd: name: httpd state: started enabled: yes - name: Libera acesso a porta 80 firewalld: service: http permanent: true state: enabled - name: Reinicia o FirewallD service: name: firewalld state: restarted
Explicando ao poucos
- hosts: server
user: root
Ele vai rodar no grupo server , somente nos hosts que estão no grupo server
caso tenha vários grupo que queira rodar em todos só colocar
-hosts: all
E ira rodar como root nos hosts
Em tasks: é o que vai ser executado .
bom , é auto explicativo
- name: Instala a ultima versão do apache dnf: name: httpd state: latest
Agora é a parte que copiamos o nosso arquivo que criamos para o direório root do apache e ajusta a permissão do arquivo
template: src: /etc/ansible/index.html dest: /var/www/html owner: apache group: apache mode: 0644
E por ultimo é bem simples ele ativa na inicialização do S.O
e também inicia o serviço
- name: Inicia e Ativa na inicialização systemd: name: httpd state: started enabled: yes
E por ultimo claro a liberação no firewall
- name: Libera acesso a porta 80 firewalld: service: http permanent: true state: enabled - name: Reinicia o FirewallD service: name: firewalld state: restarted
Bom então vamos lá rodar a playbook
# ansible-playbook -i /etc/ansible/hosts /etc/ansible/roles/apacheinstall.yaml
só verificar o resultado
Espero que ajude
Links que podem ajudar
Salas de discussão
- 721 Todas as salas de discussão
- 5 Eventos
- 402 Fedora
- 7 CoreOS
- 137 Spins
- 11 CINNAMON
- 28 GNOME
- 63 KDE
- 10 LXDE
- 4 LXQT
- 13 MATE
- SOAS
- 3 XFCE
- 13 Server
- 84 Workstation
- 33 SilverBlue
- Atomic
- 3 Labs
- ARM®
- 3 Segurança
- 7 Servidores
- 222 Tutoriais
- 6 Críticas e Sugestões
- 16 Novidades e anuncios
- 5 CentOS
- 18 Games
- 31 Hardware
- 8 Linguagens de programação