2021-07-15 16:38:59 +01:00
---
# This playbook is an ad-hoc task used to deploy kvm nodes for OCP4
# It used the following variables, declared through inventory (group/host vars):
# rhcos_version: 4.5.6 # upstream version to fetch from mirror.openshift.com in local httpd dir for deployment
# rhcos_install_img_url: # Where to grab rhcos install http://<host>/<path>/rhcos/rhcos-4.3.8-x86_64-metal.x86_64.raw.gz
# rhcos_ignition_file_url: # where to find ignition file http://<host>/config/rhcos/bootstrap.ign #to be modified based on group or host level, for bootstrap, master, etc
# rhcos_install_url: #where kernel/initrd.img and .treeinfo are to be found, internal
# kvm_guest_vcpus:
# kvm_guest_memory:
# kvm_guest_disk_size: #in GiB, not to be added, so example: 120
# kvm_host_bridge: # which defined bridged to use for the guest vnic
# kvm_guest_vnic: ens3
# ip:
# nameservers:
# - 192.168.1.1
# - 192.168.2.2
2021-08-25 13:52:16 +09:00
# gateway
2021-07-15 16:38:59 +01:00
# deploy_host: # http server serving ignition files
2021-09-02 11:01:02 +09:00
- hosts : os_control_stg:os_control:ocp_controlplane_stg:ocp_controlplane:ocp_bootstrap:ocp_boostrap_stg:ocp_vms_stg:ocp_vms
2021-07-15 16:38:59 +01:00
user : root
2021-08-06 22:57:16 +09:00
gather_facts : false
2021-07-15 16:38:59 +01:00
tasks :
- block :
- name : == OCP KVM provisioning == Ensuring we have needed httpd dir
2021-08-25 13:52:16 +09:00
file :
2021-07-15 16:38:59 +01:00
path : "/var/www/html/rhcos"
state : directory
mode : 0755
- name : == OCP KVM provisioning == Importing generated Ignition files
2021-08-25 13:52:16 +09:00
template :
2021-08-17 12:26:54 +09:00
src : "/srv/web/infra/bigfiles/openshiftboot/{{ env }}/{{ item }}"
2021-07-15 16:38:59 +01:00
dest : "/var/www/html/rhcos/{{ item }}"
mode : 0755
with_items :
- bootstrap.ign
- controlplane.ign
- worker.ign
2021-08-25 13:52:16 +09:00
- name : == OCP KVM provisioning == Creating treeinfo for virt-install --location
template :
2021-07-19 19:55:45 +01:00
src : "/srv/web/infra/bigfiles/openshiftboot/ocp-treeinfo.j2"
2021-07-19 17:23:12 +01:00
dest : "/var/www/html/rhcos/.treeinfo"
mode : 0644
2021-07-27 09:55:24 +01:00
- name : == OCP KVM provisioning == Copy kubeadmin config files to bastion
copy :
2021-08-17 12:26:54 +09:00
src : "/srv/web/infra/bigfiles/openshiftboot/{{ env }}/auth/"
dest : "/root/ocp4/ocp-{{env}}/"
2021-07-15 16:38:59 +01:00
- name : == OCP KVM provisioning == Downloading RHCOS deploy files
get_url :
dest : /var/www/html/rhcos/
mode : 0755
url : "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/latest/{{ rhcos_version }}/{{ item }}"
2021-09-02 12:52:57 +09:00
# run_once: True
2021-07-29 13:27:35 +01:00
ignore_errors : True
2021-07-15 16:38:59 +01:00
with_items :
- "rhcos-{{ rhcos_version }}-x86_64-live-initramfs.x86_64.img"
- "rhcos-{{ rhcos_version }}-x86_64-live-rootfs.x86_64.img"
- "rhcos-{{ rhcos_version }}-x86_64-metal.x86_64.raw.gz"
2021-07-29 11:39:17 +01:00
- "rhcos-{{ rhcos_version }}-x86_64-live-kernel-x86_64"
2021-07-15 16:38:59 +01:00
- name : == OCP KVM provisioning == Ensuring symlink for correct version {{ rhcos_version }}
file :
state : link
src : "/var/www/html/rhcos/rhcos-{{ rhcos_version }}-x86_64-metal.x86_64.raw.gz"
dest : "/var/www/html/rhcos/rhcos-metal.raw"
tags :
- ignition
- repo
2021-09-02 11:48:45 +09:00
when : inventory_hostname in groups['os_control_stg'] or inventory_hostname in groups['os_control']
2021-07-19 19:55:45 +01:00
2021-07-29 09:10:20 +01:00
- name : == OCP KVM provisioning == Downloading RHCOS deploy files
get_url :
2022-05-17 15:34:03 -07:00
dest : /srv/web/infra/bigfiles/tftpboot/rhcos/
2021-07-29 09:10:20 +01:00
mode : 0755
url : "https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/latest/{{ rhcos_version }}/{{ item }}"
run_once : True
2021-07-29 13:27:35 +01:00
ignore_errors : True
2021-07-29 09:10:20 +01:00
with_items :
2021-07-29 15:11:46 +01:00
- "rhcos-{{ rhcos_version }}-x86_64-live-initramfs.x86_64.img"
2021-07-29 09:10:20 +01:00
- "rhcos-{{ rhcos_version }}-x86_64-live-kernel-x86_64"
delegate_to : 127.0 .0 .1
2021-07-29 15:18:19 +01:00
tags :
- ignition
- repo
2021-07-29 09:10:20 +01:00
2021-07-19 19:55:45 +01:00
- name : == OCP KVM provisioning == Checking OCP Virtual Guest exist[s]
virt :
name : "{{ inventory_hostname }}"
state : running
ignore_errors : yes
2021-07-19 17:23:12 +01:00
delegate_to : "{{ vmhost }}"
2021-07-19 19:55:45 +01:00
register : vm_exists
2021-07-15 16:38:59 +01:00
tags :
- kvm_deploy
2021-09-02 11:48:45 +09:00
when : inventory_hostname in groups['ocp_vms_stg'] or inventory_hostname in groups['ocp_vms']
2021-07-19 19:55:45 +01:00
- block :
2021-07-21 08:53:22 +01:00
- name : ensure the lv for the guest is made
lvol : lv={{ inventory_hostname }} vg={{ volgroup }} size={{ lvm_size }} state=present
delegate_to : "{{ vmhost }}"
2021-07-22 10:49:04 +01:00
tags :
- kvm_deploy
2021-09-02 11:48:45 +09:00
when : inventory_hostname in groups['ocp_vms_stg'] or inventory_hostname in groups['ocp_vms']
2021-07-19 19:55:45 +01:00
- name : == OCP KVM provisioning == Deploying the OCP Virtual Guest[s]
command : "{{ virt_install_command }}"
delegate_to : "{{ vmhost }}"
tags :
- kvm_deploy
2021-09-02 11:48:45 +09:00
when : inventory_hostname in groups['ocp_vms_stg'] or inventory_hostname in groups['ocp_vms']
2021-07-19 19:55:45 +01:00
when : vm_exists is failed