commit 9f15fde015574669f8735efd18f57a92f5f3fa0b Author: Nils Cant Date: Tue May 5 17:29:21 2020 +0200 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..dd4ad8c --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# + +``` +cd /var/www/html +curl -O https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.3/4.3.0/rhcos-4.3.0-x86_64-metal.raw.gz +curl -O https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.3/4.3.0/rhcos-4.3.0-x86_64-installer-kernel +curl -O https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.3/4.3.0/rhcos-4.3.0-x86_64-installer-initramfs.img +``` diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..f502652 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,9 @@ +os4_pxe_install_server_address: "" +os4_pxe_install_server_gateway: "" +os4_pxe_install_server_netmask: "" +os4_pxe_install_server_domain_name: "" +os4_pxe_install_server_nameserver: "" +os4_pxe_install_server_clients: [] +os4_pxe_install_server_firewalld_configure: yes +os4_pxe_install_server_firewalld_zone: public +os4_pxe_install_server_httpd_port: 80 diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..ce347c9 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,4 @@ +- name: Restart dhcpd + service: + name: dhcpd + state: restarted diff --git a/tasks/firewalld.yml b/tasks/firewalld.yml new file mode 100644 index 0000000..da234b7 --- /dev/null +++ b/tasks/firewalld.yml @@ -0,0 +1,17 @@ +- name: Ensure firewalld is enabled + service: + name: firewalld + enabled: true + state: started + +- name: Open firewalld ports + firewalld: + port: "{{ item }}" + state: enabled + zone: "{{ os4_pxe_install_server_firewalld_zone }}" + immediate: yes + permanent: yes + loop: + - "{{ os4_pxe_install_server_httpd_port }}/tcp" + - "69/tcp" + - "69/udp" diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..5150b2a --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,54 @@ +- name: Install packages + yum: + name: ["dhcp-server", "syslinux", "tftp", "tftp-server", "xinetd", "httpd"] + +- name: dhcpd configuration + template: + src: dhcpd.conf.j2 + dest: /etc/dhcp/dhcpd.conf + notify: Restart dhcpd + +- name: tftp configuration + template: + src: tftp.j2 + dest: /etc/xinetd.d/tftp + +- name: tftpboot directory + file: + name: /var/lib/tftpboot/pxelinux.cfg + state: directory + +- name: syslinux files + file: + state: hard + src: "/usr/share/syslinux/{{ item }}" + dest: "/var/lib/tftpboot/{{ item }}" + loop: ["pxelinux.0", "ldlinux.c32"] + +- name: tftpboot configuration + template: + src: pxelinux.cfg-default.j2 + dest: "/var/lib/tftpboot/pxelinux.cfg/{{ item.ip | ip4_hex | upper}}" + loop: "{{ os4_pxe_install_server_clients }}" + +- name: dhcpd service + service: + name: dhcpd + state: started + enabled: yes + +- name: httpd service + service: + name: httpd + state: started + enabled: yes + +- name: xinetd service + service: + name: xinetd + state: started + enabled: yes + +- name: Configure firewalld + import_tasks: firewalld.yml + when: os4_pxe_install_server_firewalld_configure diff --git a/templates/dhcpd.conf.j2 b/templates/dhcpd.conf.j2 new file mode 100644 index 0000000..83ca4f8 --- /dev/null +++ b/templates/dhcpd.conf.j2 @@ -0,0 +1,20 @@ +subnet {{ os4_pxe_install_server_address | ipaddr('network') }} netmask {{ os4_pxe_install_server_address | ipaddr('netmask') }} { + option domain-name-servers {{ os4_pxe_install_server_nameserver }}; + option domain-name "ocp01.lab.vargen.io"; + option routers {{ os4_pxe_install_server_gateway }}; + option broadcast-address {{ os4_pxe_install_server_address | ipaddr('broadcast') }}; + + next-server {{ os4_pxe_install_server_address | ipaddr('address') }}; + filename "pxelinux.0"; + + {% for host in os4_pxe_install_server_clients -%} + + host {{ host.hostname }} { + hardware ethernet {{ host.mac | upper }}; + option host-name "{{ host.hostname }}"; + fixed-address {{ host.ip }}; + } + + {% endfor %} + +} diff --git a/templates/pxelinux.cfg-default.j2 b/templates/pxelinux.cfg-default.j2 new file mode 100644 index 0000000..c476ff1 --- /dev/null +++ b/templates/pxelinux.cfg-default.j2 @@ -0,0 +1,6 @@ +DEFAULT pxeboot +TIMEOUT 20 +PROMPT 0 +LABEL pxeboot + KERNEL http://{{ os4_pxe_install_server_address | ipaddr('address') }}:{{ os4_pxe_install_server_httpd_port }}/rhcos-4.3.0-x86_64-installer-kernel + APPEND ip=dhcp rd.neednet=1 initrd=http://{{ os4_pxe_install_server_address | ipaddr('address') }}:{{ os4_pxe_install_server_httpd_port }}/rhcos-4.3.0-x86_64-installer-initramfs.img console=tty0 console=ttyS0 coreos.inst=yes coreos.inst.install_dev=vda coreos.inst.image_url=http://{{ os4_pxe_install_server_address | ipaddr('address') }}:{{ os4_pxe_install_server_httpd_port }}/rhcos-4.3.0-x86_64-metal.raw.gz coreos.inst.ignition_url=http://{{ os4_pxe_install_server_address | ipaddr('address') }}:{{ os4_pxe_install_server_httpd_port }}/{{ item.ignition }} diff --git a/templates/tftp.j2 b/templates/tftp.j2 new file mode 100644 index 0000000..acf4165 --- /dev/null +++ b/templates/tftp.j2 @@ -0,0 +1,13 @@ +service tftp +{ + socket_type = dgram + protocol = udp + wait = yes + user = root + server = /usr/sbin/in.tftpd + server_args = -s /var/lib/tftpboot + disable = no + per_source = 11 + cps = 100 2 + flags = IPv4 +}