Skip to content

Commit

Permalink
feat: Add dhcp support
Browse files Browse the repository at this point in the history
Signed-off-by: Klaus Smolin <[email protected]>
  • Loading branch information
smolin-de committed Jun 20, 2023
1 parent 096a11f commit 26d1efd
Show file tree
Hide file tree
Showing 9 changed files with 45 additions and 20 deletions.
1 change: 1 addition & 0 deletions playbooks/create_compute_node.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
- role: update_ignition_files

- role: dns_update
when: env.bastion.options.dns
param_dns_cmd: add
param_dns_hostname: "{{ day2_compute_node.vm_hostname }}"
param_dns_ip: "{{ day2_compute_node.vm_ip }}"
Expand Down
1 change: 1 addition & 0 deletions playbooks/delete_compute_node.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
param_compute_node: "{{ day2_compute_node }}"

- role: dns_update
when: env.bastion.options.dns
param_dns_cmd: delete
param_dns_hostname: "{{ day2_compute_node.vm_hostname }}"
param_dns_ip: "{{ day2_compute_node.vm_ip }}"
Expand Down
1 change: 1 addition & 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 Down
2 changes: 1 addition & 1 deletion roles/common/tasks/print_ocp_node_status.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
# master-1 Ready control-plane,master 35h v1.25.4+77bec7a 4.18.0-372.40.1.el8_6.s390x 172.23.232.131
ansible.builtin.shell: |
set -o pipefail
oc get nodes -o wide | awk -F ' +' '{ printf "%-15s %-26s %-22s %-7s %-17s %-29s %-15s\n", $1, $2, $3, $4, $5, $9, $6 }'
oc get nodes -o wide | awk -F ' +' '{ printf "%-24s %-26s %-22s %-7s %-17s %-29s %-15s\n", $1, $2, $3, $4, $5, $9, $6 }'
register: oc_get_nodes
changed_when: false

Expand Down
5 changes: 3 additions & 2 deletions roles/create_bastion/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,9 @@
--console pty,target_type=serial \
--noautoconsole --wait=-1 \
--initrd-inject "/{{ kvm_host_home.stdout }}/{{ env.file_server.cfgs_dir }}/{{ env.bastion.networking.hostname }}/bastion-ks.cfg" \
--extra-args "inst.ks=file:/bastion-ks.cfg ip={{ env.bastion.networking.ip }}::{{ env.bastion.networking.gateway }}\
:{{ env.bastion.networking.subnetmask }}:{{ env.bastion.networking.hostname }}::none {{ _vm_console }}"
--extra-args "inst.ks=file:/bastion-ks.cfg \
ip={{ env.bastion.networking.ip }}::{{ env.bastion.networking.gateway }}:{{ env.bastion.networking.subnetmask }}:{{ env.bastion.networking.hostname }}::none \
{{ _vm_console }}"
timeout: 420
register: cmd_output

Expand Down
19 changes: 13 additions & 6 deletions roles/create_bootstrap/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,30 @@
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 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 }} \
--network network={{ env.bridge_name }},mac={{ ('RANDOM') if env.cluster.nodes.bootstrap.mac is not defined else (env.cluster.nodes.bootstrap.mac) }} \
--location {{ rhcos_download_url }},kernel={{ rhcos_live_kernel }},initrd={{ rhcos_live_initrd }} \
--extra-args "rd.neednet=1 coreos.inst=yes coreos.inst.install_dev=vda \
coreos.live.rootfs_url=http://{{ env.bastion.networking.ip }}:8080/bin/{{ rhcos_live_rootfs }} \
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 }}::none:1500 \
nameserver={{ env.cluster.networking.nameserver1 }} {{ ('--nameserver=' + env.cluster.networking.nameserver2) if env.cluster.networking.nameserver2 is defined else '' }} \
--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 }}" \
--graphics none \
--console pty,target_type=serial \
--wait=-1 \
--noautoconsole
timeout: 300
register: cmd_output

- name: Debug, print above command output
tags: create_bootstrap
ansible.builtin.debug:
var: cmd_output
12 changes: 7 additions & 5 deletions roles/create_compute_node/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@

- 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 }}
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) }} \
Expand All @@ -59,16 +61,16 @@
--ram {{ env.cluster.nodes.compute.ram }} \
--cpu host \
--vcpus {{ env.cluster.nodes.compute.vcpu }} \
--network network={{ env.bridge_name }} \
--network network={{ env.bridge_name }},mac={{ ('RANDOM') if param_compute_node.vm_mac is not defined else (param_compute_node.vm_mac) }} \
--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 coreos.inst=yes coreos.inst.install_dev=vda \
ip={{ param_compute_node.vm_ip }}::{{ env.bastion.networking.gateway }}:{{ env.bastion.networking.subnetmask }}:{{ param_compute_node.vm_hostname }}::none:1500 \
nameserver={{ env.cluster.networking.nameserver1 }}{{ (',' + env.cluster.networking.nameserver2) if env.cluster.networking.nameserver2 is defined else '' }} \
coreos.live.rootfs_url=http://{{ env.bastion.networking.ip }}:8080/bin/{{ rhcos_live_rootfs }} \
--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 }}"
timeout: 300
register: cmd_output
Expand Down
12 changes: 9 additions & 3 deletions roles/create_compute_nodes/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,23 @@
shell: |
virsh destroy {{ env.cluster.nodes.compute.vm_name[i] }} || true
virsh undefine {{ env.cluster.nodes.compute.vm_name[i] }} --remove-all-storage || true
IP_OPT=="{{ env.cluster.nodes.compute.ip[i] }}::{{ env.cluster.networking.gateway }}:{{ env.cluster.networking.subnetmask }}:{{ env.cluster.nodes.compute.hostname[i] }}::none:1500"
{{ ("IP_OPT=dhcp") if env.cluster.nodes.compute.mac[i] is defined }}
virt-install \
--name {{ env.cluster.nodes.compute.vm_name[i] }} \
--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 size={{ env.cluster.nodes.compute.disk_size }} \
--ram {{ env.cluster.nodes.compute.ram }} \
--cpu host \
--vcpus {{ env.cluster.nodes.compute.vcpu }} \
--network network={{ env.bridge_name }} \
--network network={{ env.bridge_name }},mac={{ ('RANDOM') if env.cluster.nodes.compute.mac[i] is not defined else (env.cluster.nodes.compute.mac[i]) }} \
--location {{ rhcos_download_url }},kernel={{ rhcos_live_kernel }},initrd={{ rhcos_live_initrd }} \
--extra-args "rd.neednet=1 coreos.inst=yes coreos.inst.install_dev=vda coreos.live.rootfs_url=http://{{ env.bastion.networking.ip }}:8080/bin/{{ rhcos_live_rootfs }} ip={{ env.cluster.nodes.compute.ip[i] }}::{{ env.cluster.networking.gateway }}:{{ env.cluster.networking.subnetmask }}:{{ env.cluster.nodes.compute.hostname[i] }}::none:1500 nameserver={{ env.cluster.networking.nameserver1 }} {{ ('--nameserver=' + env.cluster.networking.nameserver2) if env.cluster.networking.nameserver2 is defined else '' }} coreos.inst.ignition_url=http://{{ env.bastion.networking.ip }}:8080/ignition/worker.ign {{ _vm_console }}" \
--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 }}" \
--wait=-1 \
--noautoconsole
timeout: 300
Expand Down
12 changes: 9 additions & 3 deletions roles/create_control_nodes/tasks/main.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,23 @@
- name: Create CoreOS control nodes on the the KVM host.
tags: create_control_nodes
shell: |
IP_OPT="{{ env.cluster.nodes.control.ip[i] }}::{{ env.cluster.networking.gateway }}:{{ env.cluster.networking.subnetmask }}:{{ env.cluster.nodes.control.hostname[i] }}::none:1500"
{{ ("IP_OPT=dhcp") if env.cluster.nodes.control.mac[i] is defined }}
virt-install \
--name {{ env.cluster.nodes.control.vm_name[i] }} \
--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.control.disk_size }} \
--disk size={{ env.cluster.nodes.control.disk_size }} \
--ram {{ env.cluster.nodes.control.ram }} \
--cpu host \
--vcpus {{ env.cluster.nodes.control.vcpu }} \
--network network={{ env.bridge_name }} \
--network network={{ env.bridge_name }},mac={{ ('RANDOM') if env.cluster.nodes.control.mac[i] is not defined else (env.cluster.nodes.control.mac[i]) }} \
--location {{ rhcos_download_url }},kernel={{ rhcos_live_kernel }},initrd={{ rhcos_live_initrd }} \
--extra-args "rd.neednet=1 coreos.inst=yes coreos.inst.install_dev=vda coreos.live.rootfs_url=http://{{ env.bastion.networking.ip }}:8080/bin/{{ rhcos_live_rootfs }} ip={{ env.cluster.nodes.control.ip[i] }}::{{ env.cluster.networking.gateway }}:{{ env.cluster.networking.subnetmask }}:{{ env.cluster.nodes.control.hostname[i] }}::none:1500 nameserver={{ env.cluster.networking.nameserver1 }} {{ ('--nameserver=' + env.cluster.networking.nameserver2) if env.cluster.networking.nameserver2 is defined else '' }} coreos.inst.ignition_url=http://{{ env.bastion.networking.ip }}:8080/ignition/master.ign {{ _vm_console }}" \
--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/master.ign {{ _vm_console }}" \
--graphics none \
--console pty,target_type=serial \
--wait=-1 \
Expand Down

0 comments on commit 26d1efd

Please sign in to comment.