SlideShare a Scribd company logo
1 of 18
Download to read offline
Quay 3.3 installation
Senior Technical Account manager
Jooho
This document shows how to deploy Quay 3.3 HA on RHV according to the official Red Hat doc.
It shares more practical command lines to achieve the goal.
Note that this document is ​NOT​ the official one that Red Hat provided so it is not supported.
Test Environment 4
Phase 0 5
Install required packages 5
Phase 1 5
Download RHEL 7.x image from here 5
Change root password for the RHEL 7.x image 5
Upload qcow2 file to RHV 5
Create a VM with the uploaded disk on RHV console. 6
Create a template with the created VM 7
Phase 2 9
Clone git repository 9
Export credential as an environmental variable. 9
Update vars.yaml 10
Create all VMs (Ansible) 10
Update hosts file with vm ip(Manual) 10
SSH Copy/ Subscription Attach/ Generate Hosts file for all groups 12
System A (LB,DB) 12
Ceph (Enable Repos/ Install ceph-ansible/ Copy ansible files) 12
Quay(Deploy Redis) 13
Generate Quay config 14
Move config file to git repository folder 17
Deploy Quay 17
Clean up (Ansible) 18
Reference: 18
Test Environment
sysA - Load Balancer / PostgreSQL
ceph01/02/03 - Ceph
ceph04 - Ceph Object Gateway
ceph05 - Ceph Ansible system
quay01/02/03 - Quay
Phase 0
To use ansible for Rhv, the host needs some mandatory packages. Phase 0 is for base
preparation.
Install required packages
yum install libxslt-devel libxml2-devel
pip install ovirt-engine-sdk-python
Phase 1
This phase does tasks that are related with RHV.
Download RHEL 7.x image from ​here
Change root password for the RHEL 7.x image
virt-customize -a rhel-server-7.8-x86_64-kvm.qcow2 --root-password
password:redhat--uninstall cloud-init
Upload qcow2 file to RHV
cat upload_rhel_disk.yaml
- hosts: localhost
gather_facts: no
tasks:
- name: Authenticate with engine
ovirt_auth:
url: https://10.8.109.7/ovirt-engine/api
username: admin@internal
password: redhat
insecure: yes
- name: Upload RHCOS image
ovirt_disk:
auth: "{{ ovirt_auth }}"
name: rhel_7U8
size: 30GiB
interface: virtio_scsi
storage_domain: vmstore
bootable: yes
timeout: 3600
upload_image_path:
/home/jooho/dev/git/quay_rhev/QUAY/rhel-server-7.8-x86_64-kvm.qcow2
wait: yes
ansible-playbook upload.yaml -vvvv
Create a VM with the uploaded disk on RHV console.
Compute > Virtual Machines
Update parts:
- Operating System: RHEL 7.x
- Name: jlee_rhel7U8
- Instance Images (RHEL_7U8) +​ Check Boot
- nic1: tamlab
Update parts:
- Memory Size: 4096M
- CPU: 4
- Hardware Clock Time Offset
Create a template with the created VM
Click ​“Make Template”
Update parts:
- Name: quay33
Phase 2
LB/Ceph/Quay using Ansible playbook + Manual jobs
Clone git repository
cd /tmp
git clone ​https://github.com/Jooho/quay_install.git
git checkout -b 3.11 origin/3.11
cd quay_install
Export credential as an environmental variable.
$ cp rhv ~/rhv
# RHEV(upstream name: Ovirt) Information
export OVIRT_USERNAME=CHANGE_ME
export OVIRT_PASSWORD=CHANGE_ME
export OVIRT_API_URL=CHANGE_ME
# Red hat subscription manager information
export RHSM_ID='CHANGE_ME'
export RHSM_PW='CHANGE_ME'
# Subscription Pool ID
export BROKER_SUB_POOL_ID="CHANGE_ME"
export NODE_SUB_POOL_ID="CHANGE_ME"
# Quay image(​https://access.redhat.com/solutions/3533201​)
export QUAY_IMAGE_ATH="CHANGE_ME"
(Sample)
# RHEV(upstream name: Ovirt) Information
export OVIRT_USERNAME=admin@internal
export OVIRT_PASSWORD=test
export OVIRT_API_URL=https://rhev.console.com/ovirt-engine/api
# Red hat subscription manager information
export RHSM_ID='jlee'
export RHSM_PW='test'
# Subscription Pool ID
export BROKER_SUB_POOL_ID="8axxx"
export NODE_SUB_POOL_ID="8axxx"
# Quay image(​https://access.redhat.com/solutions/3533201​)
export QUAY_IMAGE_ATH="XXX"
source ~/rhv
Update vars.yaml
cat vars.yaml
vm_prefix: CHANGE_ME
(sample)
vm_prefix: jlee
Create all VMs (Ansible)
ansible-playbook ./playbooks/vm_creation.yaml -vvvv
Update hosts file with vm ip(Manual)
cp hosts_template hosts
vi hosts
[QUAYv3:children]
sys
quay
ceph
[QUAYv3:vars]
ansible_ssh_user=root
ansible_become=true
[rhv]
localhost ansible_connection=local ssh_public_key=%CHANGE_ME%
[sys]
sysA ansible_host=%CHANGE_ME%
[quay]
quay01 ansible_host=%CHANGE_ME%
quay02 ansible_host=%CHANGE_ME%
quay03 ansible_host=%CHANGE_ME%
[ceph]
ceph01 ansible_host=%CHANGE_ME%
ceph02 ansible_host=%CHANGE_ME%
ceph03 ansible_host=%CHANGE_ME%
ceph04 ansible_host=%CHANGE_ME%
ceph05 ansible_host=%CHANGE_ME%
(Sample)
[QUAYv3:children]
sys
quay
ceph
[QUAYv3:vars]
ansible_ssh_user=root
ansible_become=true
[rhv]
localhost ansible_connection=local ssh_public_key=​/home/jooho/.ssh/id_rsa.pub
[sys]
sysA ansible_host=​X.X.X.209
[quay]
quay01 ansible_host=​X.X.X.237
quay02 ansible_host=​X.X.X.232
quay03 ansible_host=​X.X.X.235
[ceph]
ceph01 ansible_host=​X.X.X.241
ceph02 ansible_host=​X.X.X..247
ceph03 ansible_host=​X.X.X.202
ceph04 ansible_host=​X.X.X.227
ceph05 ansible_host=​X.X.X.217
SSH Copy/ Subscription Attach/ Generate Hosts file for all groups
ansible-playbook -i hosts ./playbooks/pre.yaml -vvvv
System A (LB,DB)
Enable Repos/ Docker/ Selinux / HAProxy/ Postgresql
ansible-playbook -i hosts ./playbooks/sys.yaml -vvvv
Ceph (Enable Repos/ Install ceph-ansible/ Copy ansible files)
ansible-playbook -i hosts ./playbooks/ceph.yaml -vvvv
on Ceph05
ssh root@$(cat hosts|grep ceph05|cut -d= -f2)
ansible-playbook ./main.yaml -vvvv
cd /usr/share/ceph-ansible
ansible-playbook -i hosts site.yml -vvvv -e @vars.yaml
# Check ceph health
/root/check_ceph_health.sh
radosgw_interface: eth0
Known errors
reason": "The field 'loop' is supposed to be a string type, however the incoming data structure
is a <class 'ansible.parsing.yaml.objects.AnsibleSequence'>nnThe error appears to have
been in '/usr/share/ceph-ansible/roles/ceph-config/tasks/create_ceph_initial_dirs.yml': line 2,
column 3, but maynbe elsewhere in the file depending on the exact syntax problem.nnThe
offending line appears to be:nn---n- name: create ceph initial directoriesn ^ heren"
}
Solution
sed -i 's/loop/with_items/g'
/usr/share/ceph-ansible/roles/ceph-config/tasks/create_ceph_initial_dirs.yml
ansible-playbook -i hosts site.yml -vvvv -e @vars.yaml
Quay(Deploy Redis)
ansible-playbook -i hosts ./playbooks/quay.yaml -e phase=redis -vvvv
(Note) it might take 10mins.
Test Redis
# ssh root@$(cat hosts|grep quay01|cut -d= -f2)
# yum install telnet -y
# telnet quay01 6379
Trying x.x.x.x...
Connected to x.x.x.x/
Escape character is '^]'.
MONITOR
+OK
+1525703165.754099 [0 172.17.0.1:43848] "PING"
QUIT
+OK
Generate Quay config
Configuration console
echo https://$(cat hosts|grep quay01|cut -d= -f2):8443
(sample)
echo https://$(cat hosts|grep quay01|cut -d= -f2):8443
https://X.X.X.X:8443
quayconfig/quaypass
quaypass
quayredhat
Move config file to git repository folder
mv ~/Downloads/quay-config.tar.gz /tmp/quay_install/quay-config.tar.gz
Deploy Quay
ansible-playbook -i hosts ./playbooks/quay.yaml -e phase=quay -vvvv
Clean up (Ansible)
ansible-playbook ./playbooks/vm_teardown.yaml -vvvv
Reference:
https://access.redhat.com/documentation/en-us/red_hat_quay/3.3/html-single/deploy_red_hat_q
uay_-_high_availability/index#set_up_load_balancer_and_database

More Related Content

What's hot

Building Docker images with Puppet
Building Docker images with PuppetBuilding Docker images with Puppet
Building Docker images with PuppetNick Jones
 
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법Open Source Consulting
 
The SaltStack Pub Crawl - Fosscomm 2016
The SaltStack Pub Crawl - Fosscomm 2016The SaltStack Pub Crawl - Fosscomm 2016
The SaltStack Pub Crawl - Fosscomm 2016effie mouzeli
 
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...SaltStack
 
Small, Simple, and Secure: Alpine Linux under the Microscope
Small, Simple, and Secure: Alpine Linux under the MicroscopeSmall, Simple, and Secure: Alpine Linux under the Microscope
Small, Simple, and Secure: Alpine Linux under the MicroscopeDocker, Inc.
 
Weird things we've seen with OpenStack Neutron
Weird things we've seen with OpenStack NeutronWeird things we've seen with OpenStack Neutron
Weird things we've seen with OpenStack NeutronNick Jones
 
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and StatesSaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and StatesSaltStack
 
Elasticsearch (R)Evolution — You Know, for Search… by Philipp Krenn at Big Da...
Elasticsearch (R)Evolution — You Know, for Search… by Philipp Krenn at Big Da...Elasticsearch (R)Evolution — You Know, for Search… by Philipp Krenn at Big Da...
Elasticsearch (R)Evolution — You Know, for Search… by Philipp Krenn at Big Da...Big Data Spain
 
TOROS: Python Framework for Recommender System
TOROS: Python Framework for Recommender SystemTOROS: Python Framework for Recommender System
TOROS: Python Framework for Recommender SystemKwangseob Kim
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOpsОмские ИТ-субботники
 
Automating Mendix application deployments with Nix
Automating Mendix application deployments with NixAutomating Mendix application deployments with Nix
Automating Mendix application deployments with NixSander van der Burg
 
(APP310) Scheduling Using Apache Mesos in the Cloud | AWS re:Invent 2014
(APP310) Scheduling Using Apache Mesos in the Cloud | AWS re:Invent 2014(APP310) Scheduling Using Apache Mesos in the Cloud | AWS re:Invent 2014
(APP310) Scheduling Using Apache Mesos in the Cloud | AWS re:Invent 2014Amazon Web Services
 
Multinode kubernetes-cluster
Multinode kubernetes-clusterMultinode kubernetes-cluster
Multinode kubernetes-clusterRam Nath
 
OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013databus.pro
 
Continuous Security
Continuous SecurityContinuous Security
Continuous SecuritySysdig
 
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with PrometheusOpenStack Korea Community
 
Wordpress y Docker, de desarrollo a produccion
Wordpress y Docker, de desarrollo a produccionWordpress y Docker, de desarrollo a produccion
Wordpress y Docker, de desarrollo a produccionSysdig
 

What's hot (20)

Query logging with proxysql
Query logging with proxysqlQuery logging with proxysql
Query logging with proxysql
 
Building Docker images with Puppet
Building Docker images with PuppetBuilding Docker images with Puppet
Building Docker images with Puppet
 
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법[오픈소스컨설팅] EFK Stack 소개와 설치 방법
[오픈소스컨설팅] EFK Stack 소개와 설치 방법
 
The SaltStack Pub Crawl - Fosscomm 2016
The SaltStack Pub Crawl - Fosscomm 2016The SaltStack Pub Crawl - Fosscomm 2016
The SaltStack Pub Crawl - Fosscomm 2016
 
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...
Arnold Bechtoldt, Inovex GmbH Linux systems engineer - Configuration Manageme...
 
Small, Simple, and Secure: Alpine Linux under the Microscope
Small, Simple, and Secure: Alpine Linux under the MicroscopeSmall, Simple, and Secure: Alpine Linux under the Microscope
Small, Simple, and Secure: Alpine Linux under the Microscope
 
Weird things we've seen with OpenStack Neutron
Weird things we've seen with OpenStack NeutronWeird things we've seen with OpenStack Neutron
Weird things we've seen with OpenStack Neutron
 
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and StatesSaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
SaltConf14 - Forrest Alvarez, Choice Hotels - Salt Formulas and States
 
Elasticsearch (R)Evolution — You Know, for Search… by Philipp Krenn at Big Da...
Elasticsearch (R)Evolution — You Know, for Search… by Philipp Krenn at Big Da...Elasticsearch (R)Evolution — You Know, for Search… by Philipp Krenn at Big Da...
Elasticsearch (R)Evolution — You Know, for Search… by Philipp Krenn at Big Da...
 
TOROS: Python Framework for Recommender System
TOROS: Python Framework for Recommender SystemTOROS: Python Framework for Recommender System
TOROS: Python Framework for Recommender System
 
DevOps with Fabric
DevOps with FabricDevOps with Fabric
DevOps with Fabric
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
 
Automating Mendix application deployments with Nix
Automating Mendix application deployments with NixAutomating Mendix application deployments with Nix
Automating Mendix application deployments with Nix
 
(APP310) Scheduling Using Apache Mesos in the Cloud | AWS re:Invent 2014
(APP310) Scheduling Using Apache Mesos in the Cloud | AWS re:Invent 2014(APP310) Scheduling Using Apache Mesos in the Cloud | AWS re:Invent 2014
(APP310) Scheduling Using Apache Mesos in the Cloud | AWS re:Invent 2014
 
Multinode kubernetes-cluster
Multinode kubernetes-clusterMultinode kubernetes-cluster
Multinode kubernetes-cluster
 
OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013OpenNebula and SaltStack - OpenNebulaConf 2013
OpenNebula and SaltStack - OpenNebulaConf 2013
 
Continuous Security
Continuous SecurityContinuous Security
Continuous Security
 
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus
[OpenInfra Days Korea 2018] Day 2 - E6 - OpenInfra monitoring with Prometheus
 
Wordpress y Docker, de desarrollo a produccion
Wordpress y Docker, de desarrollo a produccionWordpress y Docker, de desarrollo a produccion
Wordpress y Docker, de desarrollo a produccion
 
Nginx
NginxNginx
Nginx
 

Similar to Quay 3.3 installation

Automating Container Deployments on Virtualization with Ansible: OpenShift on...
Automating Container Deployments on Virtualization with Ansible: OpenShift on...Automating Container Deployments on Virtualization with Ansible: OpenShift on...
Automating Container Deployments on Virtualization with Ansible: OpenShift on...Laurent Domb
 
Bare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and ChefBare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and ChefMatt Ray
 
KVM tools and enterprise usage
KVM tools and enterprise usageKVM tools and enterprise usage
KVM tools and enterprise usagevincentvdk
 
Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierCarlos Sanchez
 
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google CloudDrupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google CloudDropsolid
 
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...Willian Molinari
 
DevOps in PHP environment
DevOps in PHP environment DevOps in PHP environment
DevOps in PHP environment Evaldo Felipe
 
Control your deployments with Capistrano
Control your deployments with CapistranoControl your deployments with Capistrano
Control your deployments with CapistranoRamazan K
 
Quick-and-Easy Deployment of a Ceph Storage Cluster with SLES
Quick-and-Easy Deployment of a Ceph Storage Cluster with SLESQuick-and-Easy Deployment of a Ceph Storage Cluster with SLES
Quick-and-Easy Deployment of a Ceph Storage Cluster with SLESJan Kalcic
 
Docker Security workshop slides
Docker Security workshop slidesDocker Security workshop slides
Docker Security workshop slidesDocker, Inc.
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient waySylvain Rayé
 
Ansible new paradigms for orchestration
Ansible new paradigms for orchestrationAnsible new paradigms for orchestration
Ansible new paradigms for orchestrationPaolo Tonin
 
Deploying OpenStack with Chef
Deploying OpenStack with ChefDeploying OpenStack with Chef
Deploying OpenStack with ChefMatt Ray
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context ConstraintsAlessandro Arrichiello
 
Vitta Minicurso Laravel - Hackathon League of Legends
Vitta Minicurso Laravel - Hackathon League of LegendsVitta Minicurso Laravel - Hackathon League of Legends
Vitta Minicurso Laravel - Hackathon League of LegendsFilipe Forattini
 
NLIT 2011: Chef & Capistrano
NLIT 2011: Chef & CapistranoNLIT 2011: Chef & Capistrano
NLIT 2011: Chef & Capistranonickblah
 
Professional deployment
Professional deploymentProfessional deployment
Professional deploymentIvelina Dimova
 
Infrastructure = code - 1 year later
Infrastructure = code - 1 year laterInfrastructure = code - 1 year later
Infrastructure = code - 1 year laterChristian Ortner
 

Similar to Quay 3.3 installation (20)

Automating Container Deployments on Virtualization with Ansible: OpenShift on...
Automating Container Deployments on Virtualization with Ansible: OpenShift on...Automating Container Deployments on Virtualization with Ansible: OpenShift on...
Automating Container Deployments on Virtualization with Ansible: OpenShift on...
 
Bare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and ChefBare Metal to OpenStack with Razor and Chef
Bare Metal to OpenStack with Razor and Chef
 
KVM tools and enterprise usage
KVM tools and enterprise usageKVM tools and enterprise usage
KVM tools and enterprise usage
 
Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next Frontier
 
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google CloudDrupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
 
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
How we used ruby to build locaweb's cloud (http://presentations.pothix.com/ru...
 
DevOps in PHP environment
DevOps in PHP environment DevOps in PHP environment
DevOps in PHP environment
 
Control your deployments with Capistrano
Control your deployments with CapistranoControl your deployments with Capistrano
Control your deployments with Capistrano
 
Quick-and-Easy Deployment of a Ceph Storage Cluster with SLES
Quick-and-Easy Deployment of a Ceph Storage Cluster with SLESQuick-and-Easy Deployment of a Ceph Storage Cluster with SLES
Quick-and-Easy Deployment of a Ceph Storage Cluster with SLES
 
Docker Security workshop slides
Docker Security workshop slidesDocker Security workshop slides
Docker Security workshop slides
 
Capistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient wayCapistrano deploy Magento project in an efficient way
Capistrano deploy Magento project in an efficient way
 
Ansible new paradigms for orchestration
Ansible new paradigms for orchestrationAnsible new paradigms for orchestration
Ansible new paradigms for orchestration
 
Deploying OpenStack with Chef
Deploying OpenStack with ChefDeploying OpenStack with Chef
Deploying OpenStack with Chef
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
 
Vitta Minicurso Laravel - Hackathon League of Legends
Vitta Minicurso Laravel - Hackathon League of LegendsVitta Minicurso Laravel - Hackathon League of Legends
Vitta Minicurso Laravel - Hackathon League of Legends
 
NLIT 2011: Chef & Capistrano
NLIT 2011: Chef & CapistranoNLIT 2011: Chef & Capistrano
NLIT 2011: Chef & Capistrano
 
Cooking with Chef
Cooking with ChefCooking with Chef
Cooking with Chef
 
Professional deployment
Professional deploymentProfessional deployment
Professional deployment
 
Infrastructure = code - 1 year later
Infrastructure = code - 1 year laterInfrastructure = code - 1 year later
Infrastructure = code - 1 year later
 

More from Jooho Lee

Docker, Atomic Host and Kubernetes.
Docker, Atomic Host and Kubernetes.Docker, Atomic Host and Kubernetes.
Docker, Atomic Host and Kubernetes.Jooho Lee
 
OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)Jooho Lee
 
OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)Jooho Lee
 
Practical byteman sample 20131128
Practical byteman sample 20131128Practical byteman sample 20131128
Practical byteman sample 20131128Jooho Lee
 
Consistent hashing
Consistent hashingConsistent hashing
Consistent hashingJooho Lee
 

More from Jooho Lee (7)

Hello istio
Hello istioHello istio
Hello istio
 
Docker, Atomic Host and Kubernetes.
Docker, Atomic Host and Kubernetes.Docker, Atomic Host and Kubernetes.
Docker, Atomic Host and Kubernetes.
 
OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)
 
OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)OpenSCAP Overview(security scanning for docker image and container)
OpenSCAP Overview(security scanning for docker image and container)
 
Tcp summary
Tcp summaryTcp summary
Tcp summary
 
Practical byteman sample 20131128
Practical byteman sample 20131128Practical byteman sample 20131128
Practical byteman sample 20131128
 
Consistent hashing
Consistent hashingConsistent hashing
Consistent hashing
 

Recently uploaded

How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorShane Coughlan
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Incrobinwilliams8624
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdfMeon Technology
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntelliSource Technologies
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIIvo Andreev
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampVICTOR MAESTRE RAMIREZ
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesSoftwareMill
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
Webinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptWebinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptkinjal48
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native BuildpacksVish Abrams
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadIvo Andreev
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfBrain Inventory
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxJoão Esperancinha
 

Recently uploaded (20)

How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS Calculator
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Inc
 
online pdf editor software solutions.pdf
online pdf editor software solutions.pdfonline pdf editor software solutions.pdf
online pdf editor software solutions.pdf
 
Introduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptxIntroduction-to-Software-Development-Outsourcing.pptx
Introduction-to-Software-Development-Outsourcing.pptx
 
Salesforce AI Associate Certification.pptx
Salesforce AI Associate Certification.pptxSalesforce AI Associate Certification.pptx
Salesforce AI Associate Certification.pptx
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AI
 
Deep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - DatacampDeep Learning for Images with PyTorch - Datacamp
Deep Learning for Images with PyTorch - Datacamp
 
Growing Oxen: channel operators and retries
Growing Oxen: channel operators and retriesGrowing Oxen: channel operators and retries
Growing Oxen: channel operators and retries
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
Webinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.pptWebinar_050417_LeClair12345666777889.ppt
Webinar_050417_LeClair12345666777889.ppt
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in Trivandrum
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native Buildpacks
 
Cybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and BadCybersecurity Challenges with Generative AI - for Good and Bad
Cybersecurity Challenges with Generative AI - for Good and Bad
 
Why Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdfWhy Choose Brain Inventory For Ecommerce Development.pdf
Why Choose Brain Inventory For Ecommerce Development.pdf
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptx
 

Quay 3.3 installation

  • 1. Quay 3.3 installation Senior Technical Account manager Jooho
  • 2. This document shows how to deploy Quay 3.3 HA on RHV according to the official Red Hat doc. It shares more practical command lines to achieve the goal. Note that this document is ​NOT​ the official one that Red Hat provided so it is not supported.
  • 3. Test Environment 4 Phase 0 5 Install required packages 5 Phase 1 5 Download RHEL 7.x image from here 5 Change root password for the RHEL 7.x image 5 Upload qcow2 file to RHV 5 Create a VM with the uploaded disk on RHV console. 6 Create a template with the created VM 7 Phase 2 9 Clone git repository 9 Export credential as an environmental variable. 9 Update vars.yaml 10 Create all VMs (Ansible) 10 Update hosts file with vm ip(Manual) 10 SSH Copy/ Subscription Attach/ Generate Hosts file for all groups 12 System A (LB,DB) 12 Ceph (Enable Repos/ Install ceph-ansible/ Copy ansible files) 12 Quay(Deploy Redis) 13 Generate Quay config 14 Move config file to git repository folder 17 Deploy Quay 17 Clean up (Ansible) 18 Reference: 18
  • 4. Test Environment sysA - Load Balancer / PostgreSQL ceph01/02/03 - Ceph ceph04 - Ceph Object Gateway ceph05 - Ceph Ansible system quay01/02/03 - Quay Phase 0 To use ansible for Rhv, the host needs some mandatory packages. Phase 0 is for base preparation. Install required packages yum install libxslt-devel libxml2-devel pip install ovirt-engine-sdk-python Phase 1 This phase does tasks that are related with RHV. Download RHEL 7.x image from ​here Change root password for the RHEL 7.x image virt-customize -a rhel-server-7.8-x86_64-kvm.qcow2 --root-password password:redhat--uninstall cloud-init Upload qcow2 file to RHV cat upload_rhel_disk.yaml
  • 5. - hosts: localhost gather_facts: no tasks: - name: Authenticate with engine ovirt_auth: url: https://10.8.109.7/ovirt-engine/api username: admin@internal password: redhat insecure: yes - name: Upload RHCOS image ovirt_disk: auth: "{{ ovirt_auth }}" name: rhel_7U8 size: 30GiB interface: virtio_scsi storage_domain: vmstore bootable: yes timeout: 3600 upload_image_path: /home/jooho/dev/git/quay_rhev/QUAY/rhel-server-7.8-x86_64-kvm.qcow2 wait: yes ansible-playbook upload.yaml -vvvv Create a VM with the uploaded disk on RHV console. Compute > Virtual Machines
  • 6. Update parts: - Operating System: RHEL 7.x - Name: jlee_rhel7U8 - Instance Images (RHEL_7U8) +​ Check Boot - nic1: tamlab
  • 7. Update parts: - Memory Size: 4096M - CPU: 4 - Hardware Clock Time Offset Create a template with the created VM Click ​“Make Template”
  • 9. Phase 2 LB/Ceph/Quay using Ansible playbook + Manual jobs Clone git repository cd /tmp git clone ​https://github.com/Jooho/quay_install.git git checkout -b 3.11 origin/3.11 cd quay_install Export credential as an environmental variable. $ cp rhv ~/rhv # RHEV(upstream name: Ovirt) Information export OVIRT_USERNAME=CHANGE_ME export OVIRT_PASSWORD=CHANGE_ME export OVIRT_API_URL=CHANGE_ME # Red hat subscription manager information export RHSM_ID='CHANGE_ME' export RHSM_PW='CHANGE_ME' # Subscription Pool ID export BROKER_SUB_POOL_ID="CHANGE_ME" export NODE_SUB_POOL_ID="CHANGE_ME" # Quay image(​https://access.redhat.com/solutions/3533201​) export QUAY_IMAGE_ATH="CHANGE_ME" (Sample) # RHEV(upstream name: Ovirt) Information export OVIRT_USERNAME=admin@internal export OVIRT_PASSWORD=test
  • 10. export OVIRT_API_URL=https://rhev.console.com/ovirt-engine/api # Red hat subscription manager information export RHSM_ID='jlee' export RHSM_PW='test' # Subscription Pool ID export BROKER_SUB_POOL_ID="8axxx" export NODE_SUB_POOL_ID="8axxx" # Quay image(​https://access.redhat.com/solutions/3533201​) export QUAY_IMAGE_ATH="XXX" source ~/rhv Update vars.yaml cat vars.yaml vm_prefix: CHANGE_ME (sample) vm_prefix: jlee Create all VMs (Ansible) ansible-playbook ./playbooks/vm_creation.yaml -vvvv Update hosts file with vm ip(Manual) cp hosts_template hosts vi hosts
  • 11. [QUAYv3:children] sys quay ceph [QUAYv3:vars] ansible_ssh_user=root ansible_become=true [rhv] localhost ansible_connection=local ssh_public_key=%CHANGE_ME% [sys] sysA ansible_host=%CHANGE_ME% [quay] quay01 ansible_host=%CHANGE_ME% quay02 ansible_host=%CHANGE_ME% quay03 ansible_host=%CHANGE_ME% [ceph] ceph01 ansible_host=%CHANGE_ME% ceph02 ansible_host=%CHANGE_ME% ceph03 ansible_host=%CHANGE_ME% ceph04 ansible_host=%CHANGE_ME% ceph05 ansible_host=%CHANGE_ME% (Sample) [QUAYv3:children] sys quay ceph [QUAYv3:vars] ansible_ssh_user=root ansible_become=true [rhv] localhost ansible_connection=local ssh_public_key=​/home/jooho/.ssh/id_rsa.pub [sys] sysA ansible_host=​X.X.X.209
  • 12. [quay] quay01 ansible_host=​X.X.X.237 quay02 ansible_host=​X.X.X.232 quay03 ansible_host=​X.X.X.235 [ceph] ceph01 ansible_host=​X.X.X.241 ceph02 ansible_host=​X.X.X..247 ceph03 ansible_host=​X.X.X.202 ceph04 ansible_host=​X.X.X.227 ceph05 ansible_host=​X.X.X.217 SSH Copy/ Subscription Attach/ Generate Hosts file for all groups ansible-playbook -i hosts ./playbooks/pre.yaml -vvvv System A (LB,DB) Enable Repos/ Docker/ Selinux / HAProxy/ Postgresql ansible-playbook -i hosts ./playbooks/sys.yaml -vvvv Ceph (Enable Repos/ Install ceph-ansible/ Copy ansible files) ansible-playbook -i hosts ./playbooks/ceph.yaml -vvvv on Ceph05 ssh root@$(cat hosts|grep ceph05|cut -d= -f2) ansible-playbook ./main.yaml -vvvv cd /usr/share/ceph-ansible
  • 13. ansible-playbook -i hosts site.yml -vvvv -e @vars.yaml # Check ceph health /root/check_ceph_health.sh radosgw_interface: eth0 Known errors reason": "The field 'loop' is supposed to be a string type, however the incoming data structure is a <class 'ansible.parsing.yaml.objects.AnsibleSequence'>nnThe error appears to have been in '/usr/share/ceph-ansible/roles/ceph-config/tasks/create_ceph_initial_dirs.yml': line 2, column 3, but maynbe elsewhere in the file depending on the exact syntax problem.nnThe offending line appears to be:nn---n- name: create ceph initial directoriesn ^ heren" } Solution sed -i 's/loop/with_items/g' /usr/share/ceph-ansible/roles/ceph-config/tasks/create_ceph_initial_dirs.yml ansible-playbook -i hosts site.yml -vvvv -e @vars.yaml Quay(Deploy Redis) ansible-playbook -i hosts ./playbooks/quay.yaml -e phase=redis -vvvv (Note) it might take 10mins. Test Redis # ssh root@$(cat hosts|grep quay01|cut -d= -f2) # yum install telnet -y # telnet quay01 6379 Trying x.x.x.x... Connected to x.x.x.x/ Escape character is '^]'. MONITOR +OK +1525703165.754099 [0 172.17.0.1:43848] "PING"
  • 14. QUIT +OK Generate Quay config Configuration console echo https://$(cat hosts|grep quay01|cut -d= -f2):8443 (sample) echo https://$(cat hosts|grep quay01|cut -d= -f2):8443 https://X.X.X.X:8443 quayconfig/quaypass
  • 17. Move config file to git repository folder mv ~/Downloads/quay-config.tar.gz /tmp/quay_install/quay-config.tar.gz Deploy Quay ansible-playbook -i hosts ./playbooks/quay.yaml -e phase=quay -vvvv
  • 18. Clean up (Ansible) ansible-playbook ./playbooks/vm_teardown.yaml -vvvv Reference: https://access.redhat.com/documentation/en-us/red_hat_quay/3.3/html-single/deploy_red_hat_q uay_-_high_availability/index#set_up_load_balancer_and_database