diff --git a/inventory/group_vars/all b/inventory/group_vars/all index be5b7e84d7..11028489c3 100644 --- a/inventory/group_vars/all +++ b/inventory/group_vars/all @@ -87,6 +87,22 @@ nfs_bridge: br1 mac_address: RANDOM mac_address1: RANDOM + +virt_install_command_pxe_rhcos: virt-install \ + --name {{ inventory_hostname }} \ + --vcpus {{ num_cpus }},maxvcpus={{ max_cpu }} \ + --cpu host \ + --memory {{ mem_size }} \ + --disk bus=virtio,path={{ volgroup }}/{{ inventory_hostname }} \ + --nographics \ + --network bridge={{ main_bridge }},model=virtio,mac={{ mac_address }} \ + --hvm --accelerate \ + --autostart --wait=-1 \ + --extra-args "ip={{ eth0_ip }}::{{ gw }}:{{ nm }}:{{ inventory_hostname }}:eth0:none nameserver={{ dns }} console=ttyS0 nomodeset rd.neednet=1 coreos.inst=yes coreos.inst.install_dev=vda coreos.live.rootfs_url={{ rhcos_install_rootfs_url }} coreos.inst.ignition_url={{ rhcos_ignition_file_url }} " \ + --os-type linux --os-variant rhel7 \ + --location {{ rhcos_install_url }} + + virt_install_command_one_nic: virt-install -n {{ inventory_hostname }} --memory={{ mem_size }},maxmemory={{ max_mem_size }} --memballoon virtio --disk bus=virtio,path={{ volgroup }}/{{ inventory_hostname }} diff --git a/inventory/host_vars/ocp01.ocp.stg.iad2.fedoraproject.org b/inventory/host_vars/ocp01.ocp.stg.iad2.fedoraproject.org new file mode 100644 index 0000000000..9bdbf7a16b --- /dev/null +++ b/inventory/host_vars/ocp01.ocp.stg.iad2.fedoraproject.org @@ -0,0 +1,56 @@ +--- +freezes: false + +datacenter: iad2 + +vmhost: vmhost-x86-05.stg.iad2.fedoraproject.org +volgroup: /dev/vg_guests +lvm_size: 120g +mem_size: 16384 +max_mem_size: 16384 +num_cpus: 4 + +dns1: 10.3.163.33 +dns2: 10.3.163.34 + +dns_search1: "stg.iad2.fedoraproject.org" +dns_search3: "fedoraproject.org" + +has_ipv4: yes +eth0_ipv4: 10.3.166.115 +eth0_ipv4_nm: 24 +eth0_ipv4_gw: 10.3.166.254 + +mac0: "{{ ansible_default_ipv4.macaddress }}" + +rhcos_ignition_file_url: "http://10.3.166.50/rhcos/controlplane.ign" +rhcos_install_img_url: "http://10.3.166.50/rhcos/rhcos-{{ rhcos_version }}-x86_64-metal.x86_64.raw.gz" +rhcos_install_rootfs_url: "http://10.3.166.50/rhcos/rhcos-{{ rhcos_version }}-x86_64-live-rootfs.x86_64.img" +rhcos_install_url: "http://10.3.166.50/rhcos/" + +virt_install_command: "{{ virt_install_command_pxe_rhcos }}" + +network_connections: + - name: eth0 + mac: "{{ mac0 }}" + state: up + type: ethernet + autoconnect: yes + ip: + address: + - "{{ eth0_ipv4 }}/{{ eth0_ipv4_nm }}" + gateway4: "{{ eth0_ipv4_gw }}" + dns: + - "{{ dns1 }}" + - "{{ dns2 }}" + dns_search: + - "{{ dns_search1 }}" + - "{{ dns_search2 }}" + - "{{ dns_search3 }}" + dhcp4: no + auto6: no + +vpn: true + +nrpe_procs_warn: 1200 +nrpe_procs_crit: 1400 diff --git a/inventory/host_vars/ocp02.ocp.stg.iad2.fedoraproject.org b/inventory/host_vars/ocp02.ocp.stg.iad2.fedoraproject.org new file mode 100644 index 0000000000..91f72cfce6 --- /dev/null +++ b/inventory/host_vars/ocp02.ocp.stg.iad2.fedoraproject.org @@ -0,0 +1,56 @@ +--- +freezes: false + +datacenter: iad2 + +vmhost: vmhost-x86-06.stg.iad2.fedoraproject.org +volgroup: /dev/vg_guests +lvm_size: 120g +mem_size: 16384 +max_mem_size: 16384 +num_cpus: 4 + +dns1: 10.3.163.33 +dns2: 10.3.163.34 + +dns_search1: "stg.iad2.fedoraproject.org" +dns_search3: "fedoraproject.org" + +has_ipv4: yes +eth0_ipv4: 10.3.166.116 +eth0_ipv4_nm: 24 +eth0_ipv4_gw: 10.3.166.254 + +mac0: "{{ ansible_default_ipv4.macaddress }}" + +rhcos_ignition_file_url: "http://10.3.166.50/rhcos/controlplane.ign" +rhcos_install_img_url: "http://10.3.166.50/rhcos/rhcos-{{ rhcos_version }}-x86_64-metal.x86_64.raw.gz" +rhcos_install_rootfs_url: "http://10.3.166.50/rhcos/rhcos-{{ rhcos_version }}-x86_64-live-rootfs.x86_64.img" +rhcos_install_url: "http://10.3.166.50/rhcos/" + +virt_install_command: "{{ virt_install_command_pxe_rhcos }}" + +network_connections: + - name: eth0 + mac: "{{ mac0 }}" + state: up + type: ethernet + autoconnect: yes + ip: + address: + - "{{ eth0_ipv4 }}/{{ eth0_ipv4_nm }}" + gateway4: "{{ eth0_ipv4_gw }}" + dns: + - "{{ dns1 }}" + - "{{ dns2 }}" + dns_search: + - "{{ dns_search1 }}" + - "{{ dns_search2 }}" + - "{{ dns_search3 }}" + dhcp4: no + auto6: no + +vpn: true + +nrpe_procs_warn: 1200 +nrpe_procs_crit: 1400 diff --git a/inventory/host_vars/ocp03.ocp.stg.iad2.fedoraproject.org b/inventory/host_vars/ocp03.ocp.stg.iad2.fedoraproject.org new file mode 100644 index 0000000000..a369a3ac15 --- /dev/null +++ b/inventory/host_vars/ocp03.ocp.stg.iad2.fedoraproject.org @@ -0,0 +1,56 @@ +--- +freezes: false + +datacenter: iad2 + +vmhost: vmhost-x86-07.stg.iad2.fedoraproject.org +volgroup: /dev/vg_guests +lvm_size: 120g +mem_size: 16384 +max_mem_size: 16384 +num_cpus: 4 + +dns1: 10.3.163.33 +dns2: 10.3.163.34 + +dns_search1: "stg.iad2.fedoraproject.org" +dns_search3: "fedoraproject.org" + +has_ipv4: yes +eth0_ipv4: 10.3.166.117 +eth0_ipv4_nm: 24 +eth0_ipv4_gw: 10.3.166.254 + +mac0: "{{ ansible_default_ipv4.macaddress }}" + +rhcos_ignition_file_url: "http://10.3.166.50/rhcos/controlplane.ign" +rhcos_install_img_url: "http://10.3.166.50/rhcos/rhcos-{{ rhcos_version }}-x86_64-metal.x86_64.raw.gz" +rhcos_install_rootfs_url: "http://10.3.166.50/rhcos/rhcos-{{ rhcos_version }}-x86_64-live-rootfs.x86_64.img" +rhcos_install_url: "http://10.3.166.50/rhcos/" + +virt_install_command: "{{ virt_install_command_pxe_rhcos }}" + +network_connections: + - name: eth0 + mac: "{{ mac0 }}" + state: up + type: ethernet + autoconnect: yes + ip: + address: + - "{{ eth0_ipv4 }}/{{ eth0_ipv4_nm }}" + gateway4: "{{ eth0_ipv4_gw }}" + dns: + - "{{ dns1 }}" + - "{{ dns2 }}" + dns_search: + - "{{ dns_search1 }}" + - "{{ dns_search2 }}" + - "{{ dns_search3 }}" + dhcp4: no + auto6: no + +vpn: true + +nrpe_procs_warn: 1200 +nrpe_procs_crit: 1400 diff --git a/playbooks/manual/ocp4-place-ignitionfiles.yml b/playbooks/manual/ocp4-place-ignitionfiles.yml new file mode 100644 index 0000000000..a09da87e57 --- /dev/null +++ b/playbooks/manual/ocp4-place-ignitionfiles.yml @@ -0,0 +1,111 @@ +--- +# 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:////rhcos/rhcos-4.3.8-x86_64-metal.x86_64.raw.gz +# rhcos_ignition_file_url: # where to find ignition file http:///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 +# gateway +# deploy_host: # http server serving ignition files +- hosts: os-control01.stg.iad2.fedoraproject.org + user: root + gather_facts: false + + tasks: + - block: + - name: == OCP KVM provisioning == Ensuring we have needed httpd dir + file: + path: "/var/www/html/rhcos" + state: directory + mode: 0755 + - name: == OCP KVM provisioning == Importing generated Ignition files + template: + src: "/srv/web/infra/bigfiles/openshiftboot/{{ item }}" + dest: "/var/www/html/rhcos/{{ item }}" + mode: 0755 + with_items: + - bootstrap.ign + - controlplane.ign + - worker.ign + - 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 }}" + run_once: True + with_items: + - "rhcos-{{ rhcos_version }}-x86_64-live-initramfs.x86_64.img" + - "rhcos-{{ rhcos_version }}-x86_64-live-kernel-x86_64" + - "rhcos-{{ rhcos_version }}-x86_64-live-rootfs.x86_64.img" + - "rhcos-{{ rhcos_version }}-x86_64-metal.x86_64.raw.gz" + + - 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" + - name: == OCP KVM provisioning == Creating needed treeinfo for virt-install --location + template: + src: ocp-treeinfo.j2 + dest: /var/www/html/rhcos/.treeinfo + mode: 0644 + tags: + - ignition + - repo + + - name: == OCP KVM provisioning == Checking OCP Virtual Guest exist[s] + virt: + name: "{{ inventory_hostname }}" + state: running + ignore_errors: yes + no_log: True + delegate_to: "{{ kvm_host }}" + register: vm_exists + tags: + - kvm_deploy + + - name: == OCP KVM provisioning == Creating temporary virt-install command + template: + src: ../templates/ansible-virt-install-ocp.j2 + dest: "/var/lib/libvirt/virt-install-{{ inventory_hostname }}" + mode: 0750 + owner: root + group: root + delegate_to: "{{ kvm_host }}" + tags: + - kvm_deploy + + - name: == OCP KVM provisioning == Deploying the OCP Virtual Guest[s] + command: "/var/lib/libvirt/virt-install-{{ inventory_hostname }}" + when: vm_exists is failed + delegate_to: "{{ kvm_host }}" + tags: + - kvm_deploy + + - name: == OCP KVM provisioning == Waiting for sshd to be available on the deployed node + wait_for: + port: 22 + host: "{{ ip }}" + timeout: 1200 + delegate_to: "{{ deploy_host }}" + when: vm_exists is failed + tags: + - kvm_deploy + + - name: == OCP KVM provisioning == Ensuring we remove the templatized virt-install script + file: + path: "/var/lib/libvirt/virt-install-{{ inventory_hostname }}" + state: absent + delegate_to: "{{ kvm_host }}" + tags: + - kvm_deploy +