Para começar precisamos preparar o ambiente que o
Ansible irá realizar o deploy de tudo que precisamos para subir nosso Cluster OKD Origin, provisionaremos três máquinas virtuais sendo elas:
- MASTER - 4 vCPU 16 GB Ram 80 GB HDD | 192.168.10.2
- NODE1 - 2 vCPU 4 GB Ram 80 GB HDD | 192.168.10.3
- NODE2 - 2 vCPU 4 GB Ram 80 GB HDD | 192.168.10.4
Utilizei a rede 192 pois o OKD utiliza em sua rede interna os IP's 10 e 172, aconselho não utilizar esses IP's para os hosts, porque irá ter grandes problemas como eu tive =D
Caso queira ver os REQUISITOS mínimos recomentados pela OKD, verifique o link:
Prerequisites - Installing a Cluster | Installation and Configuration | OpenShift Container Platform 3.6
O Sistema Operacional utilizado para instalação deve ser o
CentOS, tendo em vista que é um projeto da Redhat eu irei utilizar o CentOS7.
Já defina o domínio que irá utilizar e os nomes dos hosts já na instalação da máquina, nesse exemplo iremos utilizar o domínio "okd.os", previamente provisionado no meu servidor DNS.
Preparando as máquinas
Insira o domínio e um DNS nas máquinas a fim de que elas tenha acesso à internet, irei utilizar o da Google.
Aplicar em todas as máquinas:
sudo vim /etc/resolv.conf
search okd.os
nameserver 8.8.8.8
Aplicar o nome e IP de todos os hosts em todos os hosts:
sudo vim /etc/hosts
192.168.10.2 master.okd.os
192.168.10.3 node1.okd.os
192.168.10.4 node2.okd.os
Vamos declarar algumas variáveis de ambiente para garantir que no momento da instalação essas informações não se percam.
Aplicar em todas as máquinas:
HOSTS="$(head -n3 /etc/hosts)"
echo -e "$HOSTS" > /etc/hosts
echo -e '192.168.10.2 master.okd.os\n192.168.10.3 node1.okd.os\n192.168.10.4 node2.okd.os' > /etc/hosts
Vamos realizar algumas instalações de dependências que serão utilizadas no momento da instalação pelo Ansible.
Aplicar em todas as máquinas:
sudo yum install -y wget git zile nano net-tools docker-1.13.1 bind-utils iptables-services bridge-utils bash-completion
sudo yum install -y kexec-tools sos psacct openssl-devel httpd-tools NetworkManager python-cryptography python2-pip python-devel python-passlib
sudo yum install -y java-1.8.0-openjdk-headless "@Development Tools"
sudo yum install -y curl vim device-mapper-persistent-data lvm2 epel-release wget git net-tools bind-utils yum-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct docker-1.13.1-75.git8633870.el7.centos
Vamos atualizar nossa biblioteca com um update.
Aplicar em todas as máquinas:
yum update -y
Necessário instalar o repositório.
Aplicar em todas as máquinas:
cd /etc/yum.repos.d && curl -O https://storage.googleapis.com/origin-ci-test/releases/openshift/origin/master/origin.repo
Vamos garantir o status do NetworkManager.
Aplicar em todas as máquinas:
sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager
sudo systemctl status NetworkManager
Para que a comunicação do Ansible funcione sem a necessidade de setar a senha de root no inventário dele (não é uma prática aconselhada por questões de segurança) iremos realizar a troca de uma chave pública com os demais hosts.
Criando as chaves Pública e Primária no Master:
ssh-keygen -t rsa
Pressione "Enter" para todas as perguntas, nesse exemplo não utilizaremos senha.
Agora iremos enviar a chave pública para todos os hosts:
ssh-copy-id root@master.okd.os
ssh-copy-id root@node1.okd.os
ssh-copy-id root@node2.okd.os