Deploy openshift 3.7 via ansible on fedora-atomic 27 with calico network

Deploy openshift 3.7 via ansible on fedora-atomic 27 with calico network

Requements(node configuration)
— 3 node fedora atomic 27
— debian node with python3,docker,docker-compose packages
— ssh-login without password on all nodes from deploying node(from
— dns records(by dns server or wildcard domains )
— python3 on ansible-deploy-node
Node settings
— ansible,dns node 10.12.4.37 — Debian with python3,docker,docker-compose packages
— fedora atomic 10.12.4.58 — resolved by name master.cluster.dev
— fedora atomic 10.12.4.59 — resolved by name node1.cluster.dev
— fedora atomic 10.12.4.60 — resolved by name node2.cluster.dev
— dns nameserver after build and up compose file must be changed on 10.12.4.37

1. Configure ansible, dns node

Install requirements

nano /etc/apt/sources.list

Add line

deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main

add key

 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367

Install

 apt-get update
 apt-get install ansible git  -y

Clone bind9 docker-compose

mkdir /docker-compose
cd /docker-compose
git clone git@github.com:galushkoav/bind9.git
cd bind9
docker-compose build
docker-compose up -d

Change dns-nameserver

nano /etc/resolv.conf

edit

nameserver 10.12.4.37

1. Configure fedora-atomic nodes

cd /docker-compose/bind/configs/bind/

Edit dns config

nano named.conf
########################
## options
########################
acl mynetwork { 0.0.0.0/0; };
    options {
        directory "/var/bind";
        auth-nxdomain no;
        forwarders {8.8.4.4; 8.8.8.8; };
        listen-on-v6 { none; };
        allow-query { mynetwork; };
    };
########################
## zones
########################
zone "cluster.dev" IN {
    type master;
    file "/etc/bind/cluster.dev.zone";
};

Edit zone config

nano cluster.dev.zone
$TTL 30
$ORIGIN cluster.dev.
@ IN SOA cluster.dev. admin.cluster.dev. (
    2015020301 ; Serial
            1d ; Refresh
            1h ; Retry
            1w ; Expire
            2h ; Negative Cache TTL
    )
@   IN   NS   cluster.dev.
@   IN   A    10.12.4.58
*   IN   A    10.12.4.58
master   IN   A    10.12.4.58
node1   IN   A    10.12.4.59
node2   IN   A    10.12.4.60

Restart docker dns server

cd /docker-compose/bind9/
docker-compose restart

Change dns-nameserver

vi /etc/resolv.conf

edit

nameserver 10.12.4.37

3. Deploy openshift from ansible node

Git clone

git clone https://github.com/openshift/openshift-ansible.git
cd openshift-ansible

COnfigure openshift_inventory file

nano openshift_inventory

paste

# Create an OSEv3 group that contains the masters and nodes groups
[OSEv3:children]
masters
nodes
etcd
[OSEv3:vars]
# SSH user, this user should allow ssh based auth without requiring a password
ansible_ssh_user=root
ansible_ssh_port=22
openshift_deployment_type=origin
deployment_type=origin
##Openshift version
openshift_release=v3.7
openshift_pkg_version=-3.7.0
openshift_image_tag=v3.7.0
#Debug level
debug_level=2
#Disable check
openshift_disable_check=disk_availability,memory_availability,docker_storage,docker_image_availability
##Default master domain
openshift_master_default_subdomain=apps.cluster.dev
###Deploy calico network
os_sdn_network_plugin_name=cni
openshift_use_calico=true
openshift_use_openshift_sdn=false
##Deploing nodes for services
osm_default_node_selector='region=lab'
openshift_hosted_router_selector='region=infra'
openshift_hosted_registry_selector='region=infra'
###access by admin admin
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/htpasswd'}]
openshift_master_htpasswd_users={'admin': '$apr1$hyn7QTrL$pDxNvYGvwsY98P6kPPuQK/'}
[masters]
master.cluster.dev
[etcd]
master.cluster.dev
[nodes]
master.cluster.dev openshift_node_labels="{'region': 'infra', 'zone': 'baremetal'}" openshift_schedulable=true
node1.cluster.dev  openshift_node_labels="{'region': 'lab', 'zone': 'baremetal'}" openshift_schedulable=true
node2.cluster.dev  openshift_node_labels="{'region': 'lab', 'zone': 'baremetal'}" openshift_schedulable=true

Check

ansible -i myinventory nodes -a '/usr/bin/rpm-ostree status'

Predeployment

ansible-playbook -i openshift-ansible/openshift_inventory openshift-ansible/playbooks/prerequisites.yml

Deploy

ansible-playbook -i openshift-ansible/openshift_inventory openshift-ansible/playbooks/deploy_cluster.yml

It’s time to coffee brake. 15-20 min.

PLAY RECAP ********************************************************************************************************************************************************************
localhost                  : ok=15   changed=0    unreachable=0    failed=0
master.cluster.dev     : ok=743  changed=148  unreachable=0    failed=0
node1.cluster.dev      : ok=263  changed=47   unreachable=0    failed=0
node2.cluster.dev      : ok=260  changed=45   unreachable=0    failed=0

Go to

https://10.12.4.58:8443

The password for the admin user is admin

Done

Snippets

Remove openshift from nodes

ansible-playbook -i openshift_inventory  ./playbooks/adhoc/uninstall.yml

Materials
#http://www.randomlyexpressed.com/open-shift-origin-ansible/
#https://developer.fedoraproject.org/deployment/openshift/about.html
#https://dustymabe.com/2016/12/07/installing-an-openshift-origin-cluster-on-fedora-25-atomic-host-part-1/
#https://dustymabe.com/2016/12/12/installing-an-openshift-origin-cluster-on-fedora-25-atomic-host-part-2/
#https://blog.zencoffee.org/2016/07/deploying-openshift-origin-centos-atomic/
#http://farshidmirza.blogspot.ru/2017/12/advance-installation-of-openshift.html

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.