Tuesday, November 6, 2018

PVS

Persistentes Volumes

Los volumenes, (Heredados de dockers), son efimeros.

Por eso se deben Manejar PVs, ( Al tipo de recurso de Kubernete ) , y tenemos las reclamaciones de PVs que pueden realizar los PODS:

Los siguientes tipos estan soportados

NFS
GLUSTER
LOCAL

Y mas, se define un yaml, donde tenemos las definiciones para poder usarlo.


El yaml es tipo....

[root@ocp ~]# cat pv03.yml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv03
spec:
  capacity:
    storage:  1Gi
  accessModes:
  -  ReadWriteOnce
  nfs:
    path: /home/data
    server: 192.168.0.28
  persistentVolumeReclaimPolicy: Recycle


Debemos tener un nfs en /home/data


y para crearlo oc create -f archivo.yml

para ver ....

[root@ocp ~]# oc get pv
NAME           CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM            STORAGECLASS   REASON    AGE
persistent01   1Gi        RWO            Recycle          Bound       marcce/mariadb                            35m
persistent02   1Gi        RWO            Recycle          Bound       marcce/pv02                               9m
pv03           1Gi        RWO            Recycle          Available                                             3m
pv04           1Gi        RWO            Recycle          Available                                             2m
pv05           1Gi        RWO            Recycle          Available                                             2m


y para describir mejor...


[root@ocp ~]# oc describe pv persistent02
Name:            persistent02
Labels:         
Annotations:     pv.kubernetes.io/bound-by-controller=yes
Finalizers:      [kubernetes.io/pv-protection]
StorageClass:
Status:          Bound
Claim:           marcce/pv02
Reclaim Policy:  Recycle
Access Modes:    RWO
Capacity:        1Gi
Node Affinity:   
Message:
Source:
    Type:      NFS (an NFS mount that lasts the lifetime of a pod)
    Server:    192.168.0.28
    Path:      /home/data
    ReadOnly:  false
Events:       


continuara....





Tomando el cafe mientras se instala packstat


yum install -y centos-release-openstack-pike
yum-config-manager --enable openstack-pike
yum update -y
yum install -y openstack-packstack
yum install -y lvm2

packstack --install-hosts="192.168.2.22" \
 --os-heat-install=y --os-heat-cfn-install=y \
 --os-neutron-lbaas-install=y --keystone-admin-passwd="openstack" --keystone-demo-passwd="openstack"


ahhh, pero tardo como 1:30 ....

revisar si esta trabajando el disco con 

watch df /


Playbook para borrar lo instalador por ansible


el playbook, es uninstall.yml

como no sabia el path /Y puede variar dependiendo del OS y la instalación /

find / -iname uninstall.yml


/usr/share/ansible/openshift-ansible/playbooks/adhoc/uninstall.yml

Monday, November 5, 2018

Openshift Ansible Centos 7

#!/bin/bash

echo root:balinux | chpasswd

yum -y install net-tools bind-utils vim iptables epel-release
yum -y install centos-release-openshift-origin310 epel-release docker git pyOpenSSL
systemctl start docker
systemctl enable docker

yum -y install openshift-ansible
yum -y install dnsmasq

grep -v "#" /etc/ssh/sshd_config  | grep . | grep -v "PasswordAuthentication no" > /tmp/salida
echo "PermitRootLogin yes" >> /tmp/salida
echo "PasswordAuthentication yes" >> /tmp/salida

mv /etc/ssh/sshd_config /etc/ssh/sshd_config.old
mv /tmp/salida /etc/ssh/sshd_config
systemctl restart sshd

#Cambiamos Pass Root


hostname ocp.balinux.com.ar

echo "hostname ocp.balinux.com.ar"
echo "127.0.0.1         localhost.localdomain   localhost" > /etc/hosts
echo "192.168.0.147     ocp.balinux.com.ar      ocp" >> /etc/hosts

#Mando el openshift Ansible

yum -y install openshift-ansible


cat <<  EOT > /tmp/hosts


[OSEv3:children]
masters
nodes
etcd

[OSEv3:vars]
# admin user created in previous section
ansible_ssh_user=root
ansible_become=true
openshift_deployment_type=origin

# use HTPasswd for authentication
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}]
os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant'
# define default sub-domain for Master node
openshift_master_default_subdomain=apps.balinux.com.ar
# allow unencrypted connection within cluster
openshift_docker_insecure_registries=172.30.0.0/16
openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability
[masters]
ocp.balinux.com.ar openshift_schedulable=true containerized=false

[etcd]
ocp.balinux.com.ar

[nodes]
# defined values for [openshift_node_group_name] in the file below
# [/usr/share/ansible/openshift-ansible/roles/openshift_facts/defaults/main.yml]
ocp.balinux.com.ar openshift_node_group_name='node-config-all-in-one'

EOT


mv /etc/ansible/hosts /etc/ansible/hosts.bak
mv /tmp/hosts /etc/ansible


# Ansible
yum -y install  e2fsprogs
yum -y install python2-pip
pip install --upgrade ansible
systemctl enable dnsmasq
systemctl restart dnsmasq

 iptables -I INPUT -p tcp --dport 53 -j ACCEPT
 iptables -I INPUT -p udp --dport 53 -j ACCEPT
#
echo "search balinux.com.ar" > /etc/resolv.conf
echo "nameserver 192.168.0.147" >> /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf


# DNSMASQ Y OPENSHIFT

cat <<  EOT > /etc/dnsmasq.d/openshift.conf

strict-order
domain-needed
local=/balinux.com.ar/
bind-dynamic
log-queries

address=/.apps.balinux.com.ar/192.168.0.147


EOT

cp /etc/resolv.conf /etc/resolv.conf.upstream

#Ahora el dnsmasq.conf

echo "resolv-file=/etc/resolv.conf.upstream" > /etc/dnsmasq.conf
echo "conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig" >> /etc/dnsmasq.conf

systemctl restart dnsmasq

####

## Ahora vamos porn las ssh keys


echo -e "\n\n\n" | ssh-keygen -t rsa


cat <<  EOT > /root/.ssh/config

Host ocp
    Hostname ocp.balinux.com.ar
    User root
EOT


chmod 600 /root/.ssh/config

echo "#### Probando el tema de ssh-copy-id"

yum -y install yum

cat <<  EOT > /tmp/salida-ssh.sh


        #!/usr/bin/expect -f
        spawn ssh-copy-id $argv
        expect "password:"
        send "balinux\n"
        expect eof

EOT

chmod +x /tmp/salida-ssh.sh


(continuará)....

Openshift Para los impacientes

Si bien no es la ultima version de openshift, ni la ultima version de fedora, les dejo acá los vagrant file y los scripts para que los impacientes puedan jugar con openshift.

Este es el script "script.sh", que es llamado por el vagranfile. Pero sino, bien puede ejecutarse sobre una instalacion limpia de fedora core 27.


#!/bin/bash


echo root:balinux | chpasswd
yum -y install net-tools
yum -y install vim bind-utils
yum -y install docker
systemctl enable docker

yum -y install origin docker-registry

grep -v "#" /etc/ssh/sshd_config  | grep . | grep -v "PasswordAuthentication no" > /tmp/salida
echo "PermitRootLogin yes" >> /tmp/salida
echo PasswordAuthentication yes >> /tmp/salida

mv /etc/ssh/sshd_config /etc/ssh/sshd_config.old
mv /tmp/salida /etc/ssh/sshd_config
systemctl restart sshd

#Cambiamos Pass Root
echo "search balinux.com.ar" > /etc/resolv.conf
echo "nameserver 192.168.0.147" >> /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf

chattr +i /etc/resolv.conf


hostname ocp.balinux.com.ar
echo "hostname ocp.balinux.com.ar"
echo "127.0.0.1         localhost.localdomain localhost" > /etc/hosts
echo "192.168.0.147     ocp.balinux.com.ar      ocp" >> /etc/hosts


echo "INSECURE_REGISTRY='--insecure-registry 172.30.0.0/16'" >> /etc/sysconfig/docker

systemctl daemon-reload
systemctl restart docker

cat <<  EOT > /root/cluster_up.sh

pkill docker
iptables -t nat -F
iptables -F
service docker restart
oc cluster up --public-hostname=192.168.0.147
iptables -I INPUT -s 0/0 -j ACCEPT

EOT

chmod +x /root/cluster_up.sh

echo "La instalacion esta lista, rebootee la maquina, y por favor ccrra /root/cluster_up.sh"


Y Manifiesto de vagrant, el Vagrantfile


# -*- mode: ruby -*-
# vi: set ft=ruby :
servers=[
  {
    :hostname => "ocp.balinux.com.ar",
    :box => "bento/fedora-27",
    :ram => 4200,
    :cpu => 2,
    :script => "sh /vagrant/script_fc.sh"
  }
]
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
  servers.each do |machine|
    config.vm.define machine[:hostname] do |node|
      node.vm.box = machine[:box]
      node.vm.hostname = machine[:hostname]
      node.vm.provider "virtualbox" do |vb|
        vb.customize ["modifyvm", :id, "--memory", machine[:ram], "--cpus", machine[:cpu]]
      end
     # config.vm.network "public_network", ip: "192.168.0.147"
      # Agrego y borro
        config.vm.network "public_network", ip: "192.168.0.147", bridge: "enp0s8: Ethernet", bootproto: "static", gateway: "192.168.0.1"

        config.vm.provision "shell",
        run: "always",
        inline: "eval `route -n | awk '{ if ($8 ==\"enp0s3\" && $2 != \"0.0.0.0\") print \"route del default gw \" $2; }'`"

      node.vm.provision "shell", inline: machine[:script], privileged: true, run: "once"
    end
  end
end


Saturday, November 3, 2018

Reviviendo de las cenizas

Y bueno, algun dia tenia que pasar....

Mucha agua paso bajo el puente, pero voy a ir tirando ideas, para la certificación de RHCSA.

Cambiar la placa de red....


como todos sabemos, la placa de red, se configura en los archivos que se ubican en /etc/sysconfig/network-scripts/ifcfg-xxxx

cuando el xxx, lo podemos ver , de la siguiente manera...


[root@ocp ~]# ip addr
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:b0:57:36 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.150/24 brd 192.168.0.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::8f23:cc88:b7b7:1b30/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: docker0: mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:97:fe:23:2a brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 scope global docker0
       valid_lft forever preferred_lft forever
[root@ocp ~]#


como vemos  ahi, tengo una interface enp0s3. yo ya la tengo seteada, por lo cual,  deberiamos encontrarla en /etc/sysconfig/network-scripts/ifcfg-enp0s3


TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.0.150
PREFIX=24
GATEWAY=192.168.0.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=fija
UUID=345f278d-8569-467e-aa0a-554570f8d58f
DEVICE=enp0s3
ONBOOT=yes
DNS1=8.8.8.8


creo que es bastante descriptivo este archivo, pero es la forma en que redhat los usa para setear en forma fija la placa de red.
para que el cambio quede permanente, lo que debemos hacer, es correr el comando 

systemctl restart network