Skip to content

Commit

Permalink
feat: Sync with main
Browse files Browse the repository at this point in the history
Signed-off-by: Klaus Smolin <[email protected]>
  • Loading branch information
smolin-de committed Nov 14, 2023
1 parent f87fa8c commit baca9e7
Show file tree
Hide file tree
Showing 13 changed files with 160 additions and 58 deletions.
2 changes: 2 additions & 0 deletions inventories/default/group_vars/all.yaml.template
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@ env:
bridge_name: macvtap
network_mode:
use_ipv6: True
use_dhcp: False

#jumphost if network mode is NAT
jumphost:
Expand Down Expand Up @@ -369,6 +370,7 @@ day2_compute_node:
vm_name:
vm_hostname:
vm_ip:
vm_mac:
vm_ipv6:
vm_interface:
hostname:
Expand Down
11 changes: 8 additions & 3 deletions playbooks/3_setup_kvm_host.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@
line: 'group = "libvirt"'
backup: true

- name: Get user home directory
- name: Get user home directory
tags: libvirt
shell: >
getent passwd {{ ansible_user }} | awk -F: '{ print $6 }'
Expand All @@ -116,16 +116,21 @@
- name: Check if directory {{ user_home.stdout }}/.config/libvirt exists
tags: libvirt
ansible.builtin.stat:
path: "{{ user_home.stdout }}/.config/libvirt"
path: "{{ user_home.stdout }}/.config/libvirt"
register: home_config_libvirt

- name: Create directory {{ user_home.stdout }}/.config/libvirt
tags: libvirt
file:
file:
path: "{{ user_home.stdout }}/.config/libvirt"
state: directory
when: home_config_libvirt.stat.exists == false

- name: Hack for bug 'https://github.com/IBM/Ansible-OpenShift-Provisioning/issues/188'
tags: libvirt
ansible.builtin.shell: |
mkdir -p /home/root/.config/libvirt
- name: Create file for user's custom libvirt configurations.
tags: libvirt
ansible.builtin.file:
Expand Down
3 changes: 3 additions & 0 deletions roles/check_dns/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
shell: "dig +short {{ env.bastion.networking.hostname }}.{{ env.bastion.networking.base_domain }} | tail -n1"
register: bastion_lookup
failed_when: env.bastion.networking.ip != bastion_lookup.stdout
ignore_errors: true

- name: Check internal cluster DNS resolution for external API and apps services
tags: check_dns, dns
Expand All @@ -27,6 +28,7 @@
shell: "dig +short {{ env.cluster.nodes.bootstrap.hostname }}.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }} | tail -n1"
register: bootstrap_lookup
failed_when: env.cluster.nodes.bootstrap.ip != bootstrap_lookup.stdout
ignore_errors: true

- name: Print results from bootstrap lookup
tags: check_dns, dns
Expand All @@ -42,6 +44,7 @@
loop_control:
extended: yes
index_var: i
ignore_errors: true

- name: Check compute nodes DNS resolution
tags: check_dns, dns
Expand Down
3 changes: 2 additions & 1 deletion roles/create_bastion/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@
--vcpus={{ env.bastion.resources.vcpu }} \
--location {{ env.file_server.protocol }}://{{ env.file_server.user + ':' + env.file_server.pass + '@' if env.file_server.protocol == 'ftp' else '' }}{{ env.file_server.ip }}/{{ env.file_server.iso_mount_dir }} \
--disk pool={{ env.cluster.networking.metadata_name }}-vdisk,size={{ env.bastion.resources.disk_size }} \
{{ ('--disk size=' + (env.bastion.resources.disk2_size | string) + ',format=qcow2,serial=datadisk') if env.bastion.resources.disk2_size is defined }} \
{{ ('--disk size=' + (env.bastion.resources.disk2_size | string) + ',format=qcow2,serial=datadisk') if env.bastion.resources.disk2_size is def
ined }} \
--network network={{ env.bridge_name }} \
--graphics none \
--console pty,target_type=serial \
Expand Down
2 changes: 1 addition & 1 deletion roles/create_bastion/templates/bastion-ks.cfg.j2
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ timezone {{ env.timezone }}
eula --agreed

# Network information
network --bootproto=static --device={{ env.bastion.networking.interface }} --ip={{ env.bastion.networking.ip }} --gateway={{ env.bastion.networking.gateway }} --netmask={{ env.bastion.networking.subnetmask }} {{'--ipv6=' + env.bastion.networking.ipv6 if env.use_ipv6 else --noipv6}} {{'--ipv6gateway=' + env.bastion.networking.ipv6_gateway if env.use_ipv6 else ''}} --nameserver={{ env.bastion.networking.nameserver1 }}{{ (',' + env.bastion.networking.nameserver2) if env.bastion.networking.nameserver2 is defined else '' }} --activate
network --bootproto=static --device={{ env.bastion.networking.interface }} --ip={{ env.bastion.networking.ip }} --gateway={{ env.bastion.networking.gateway }} --netmask={{ env.bastion.networking.subnetmask }} {{'--ipv6=' + env.bastion.networking.ipv6 if env.use_ipv6 else '--noipv6' }} {{'--ipv6gateway=' + env.bastion.networking.ipv6_gateway if env.use_ipv6 else ''}} --nameserver={{ env.bastion.networking.nameserver1 }}{{ (',' + env.bastion.networking.nameserver2) if env.bastion.networking.nameserver2 is defined else '' }} --activate
network --hostname={{ env.bastion.networking.hostname }}.{{ env.cluster.networking.base_domain }}

# Firewall and SELinux
Expand Down
22 changes: 14 additions & 8 deletions roles/create_bootstrap/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,28 @@
ansible.builtin.shell: |
virsh destroy {{ env.cluster.nodes.bootstrap.vm_name }} || true
virsh undefine {{ env.cluster.nodes.bootstrap.vm_name }} --remove-all-storage || true
IP_OPT="{{ env.cluster.nodes.bootstrap.ip }}::{{ env.cluster.networking.gateway }}:{{ env.cluster.networking.subnetmask }}:{{ env.cluster.nodes.bootstrap.hostname }}.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }}::none:1500"
{{ ("IP_OPT=dhcp") if env.cluster.nodes.bootstrap.mac is defined }}
virt-install \
--name {{ env.cluster.nodes.bootstrap.vm_name }} \
--osinfo detect=on,name={{ ('rhel8.6') if rhcos_os_variant is not defined else (rhcos_os_variant) }} \
--autostart \
--disk pool={{ env.cluster.networking.metadata_name }}-vdisk,size={{ env.cluster.nodes.bootstrap.disk_size }} \
--disk pool={{ env.cluster.networking.metadata_name }}-vdisk,size={{ env.cluster.nodes.bootstrap.disk_size }} \
--ram {{ env.cluster.nodes.bootstrap.ram }} \
--cpu host \
--vcpus {{ env.cluster.nodes.bootstrap.vcpu }} \
--network network={{ env.bridge_name }},mac={{ ('RANDOM') if env.cluster.nodes.bootstrap.mac is not defined else (env.cluster.nodes.bootstrap.mac) }} \
--network network={{ env.bridge_name }}{{ (',mac=' + env.cluster.nodes.bootstrap.mac) if env.use_dhcp }} \
--location {{ rhcos_download_url }},kernel={{ rhcos_live_kernel }},initrd={{ rhcos_live_initrd }} \
--extra-args "rd.neednet=1 coreos.inst=yes ip=${IP_OPT} \
nameserver={{ env.cluster.networking.nameserver1 }} {{ ('nameserver=' + env.cluster.networking.nameserver2) if env.cluster.networking.nameserver2 is defined }} \
coreos.inst.install_dev=vda coreos.live.rootfs_url=http://{{ env.bastion.networking.ip }}:8080/bin/{{ rhcos_live_rootfs }} \
coreos.inst.ignition_url=http://{{ env.bastion.networking.ip }}:8080/ignition/bootstrap.ign {{ _vm_console }}" \
--extra-args "rd.neednet=1 coreos.inst=yes coreos.inst.install_dev=vda" \
--extra-args "coreos.live.rootfs_url=http://{{ env.bastion.networking.ip }}:8080/bin/{{ rhcos_live_rootfs }}" \
--extra-args "coreos.inst.ignition_url=http://{{ env.bastion.networking.ip }}:8080/ignition/bootstrap.ign" \
{% if env.use_dhcp %}
--extra-args "ip=dhcp" \
{% else %}
--extra-args "ip={{ env.cluster.nodes.bootstrap.ip }}::{{ env.cluster.networking.gateway }}:{{ env.cluster.networking.subnetmask }}:{{ env.cluster.nodes.bootstrap.hostname }}.{{ env.cluster.networking.metadata_name }}.{{ env.cluster.networking.base_domain }}:{{ env.cluster.networking.interface }}:none:1500" \
--extra-args "{{ ('ip=[' + env.cluster.nodes.bootstrap.ipv6 + ']::[' + env.cluster.networking.ipv6_gateway + ']:' + env.cluster.networking.ipv6_prefix | string + '::' + env.cluster.networking.interface + ':none' ) if env.use_ipv6 == True else '' }}" \
{% endif %}
--extra-args "nameserver={{ env.cluster.networking.nameserver1 }}" \
--extra-args "{{ ('--nameserver=' + env.cluster.networking.nameserver2) if env.cluster.networking.nameserver2 is defined else '' }}" \
--extra-args "{{ _vm_console }}" \
--graphics none \
--console pty,target_type=serial \
--wait=-1 \
Expand Down
22 changes: 13 additions & 9 deletions roles/create_compute_node/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,30 +51,34 @@

- name: "Create compute node VM on {{ param_compute_node.host_arch }}"
ansible.builtin.shell: |
IP_OPT="{{ param_compute_node.vm_ip }}::{{ env.bastion.networking.gateway }}:{{ env.bastion.networking.subnetmask }}:{{ param_compute_node.vm_hostname }}::none:1500"
{{ ("IP_OPT=dhcp") if param_compute_node.vm_mac is defined }}
CPU_MODEL="--cpu host"
# CPU host model is not supported on arm64 yet, we need to disable it
{{ ("CPU_MODEL=''") if param_compute_node.host_arch == 'aarch64' }}
virt-install \
--name {{ param_compute_node.vm_name }} \
--osinfo detect=on,name={{ ('rhel8.6') if rhcos_os_variant is not defined else (rhcos_os_variant) }} \
--autostart \
--disk pool={{ env.cluster.networking.metadata_name }}-vdisk,size={{ env.cluster.nodes.compute.disk_size }} \
--disk pool={{ env.cluster.networking.metadata_name }}-vdisk,size={{ env.cluster.nodes.compute.disk_size }} \
--ram {{ env.cluster.nodes.compute.ram }} \
${CPU_MODEL} \
--vcpus {{ env.cluster.nodes.compute.vcpu }} \
--network network={{ env.bridge_name }},mac={{ ('RANDOM') if param_compute_node.vm_mac is not defined else (param_compute_node.vm_mac) }} \
--network network={{ env.bridge_name }}{{ (',mac=' + param_compute_node.vm_mac) if env.use_dhcp }} \
--graphics none \
--console pty,target_type=serial \
--wait -1 \
--noautoconsole \
--location {{ rhcos_download_url }},kernel={{ rhcos_live_kernel }},initrd={{ rhcos_live_initrd }} \
--extra-args "rd.neednet=1 ip=${IP_OPT} \
nameserver={{ env.cluster.networking.nameserver1 }} {{ ('nameserver=' + env.cluster.networking.nameserver2) if env.cluster.networking.nameserver2 is defined }} \
coreos.inst=yes \
coreos.inst.install_dev=vda coreos.live.rootfs_url=http://{{ env.bastion.networking.ip }}:8080/bin/{{ rhcos_live_rootfs }} \
coreos.inst.ignition_url=http://{{ env.bastion.networking.ip }}:8080/ignition/worker.ign {{ _vm_console }}"
--extra-args "rd.neednet=1 coreos.inst=yes coreos.inst.install_dev=vda" \
{% if env.use_dhcp %}
--extra-args "ip=dhcp" \
{% else %}
--extra-args "ip={{ param_compute_node.vm_ip }}::{{ env.bastion.networking.gateway }}:{{ env.bastion.networking.subnetmask }}:{{ param_compute_node.vm_hostname }}:{{ param_compute_node.vm_interface }}:none:1500" \
--extra-args "{{ ('ip=[' + param_compute_node.vm_ipv6 + ']::[' + env.cluster.networking.ipv6_gateway +']:' + env.cluster.networking.ipv6_prefix | string + '::' + param_compute_node.vm_interface + ':none' ) if env.use_ipv6 == True else '' }}" \
{% endif %}
--extra-args "nameserver={{ env.cluster.networking.nameserver1 }}{{ (',' + env.cluster.networking.nameserver2) if env.cluster.networking.nameserver2 is defined else '' }}" \
--extra-args "coreos.live.rootfs_url=http://{{ env.bastion.networking.ip }}:8080/bin/{{ rhcos_live_rootfs }}" \
--extra-args "coreos.inst.ignition_url=http://{{ env.bastion.networking.ip }}:8080/ignition/worker.ign" \
--extra-args "{{ _vm_console }}"
timeout: 360
register: cmd_output
- name: Debug, print above command output
Expand Down
Loading

0 comments on commit baca9e7

Please sign in to comment.