---
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfig
metadata:
  annotations:
    machineconfiguration.openshift.io/generated-by-controller-version: c0b5ea57cf1be9fb30092472809bbb9378614c2e
  creationTimestamp: "2022-03-08T10:39:24Z"
  generation: 1
  managedFields:
  - apiVersion: machineconfiguration.openshift.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:machineconfiguration.openshift.io/generated-by-controller-version: {}
        f:ownerReferences:
          .: {}
          k:{"uid":"f5a82dd5-4394-45c2-91c2-1a8a54178e71"}:
            .: {}
            f:apiVersion: {}
            f:blockOwnerDeletion: {}
            f:controller: {}
            f:kind: {}
            f:name: {}
            f:uid: {}
      f:spec:
        .: {}
        f:config:
          .: {}
          f:ignition:
            .: {}
            f:version: {}
          f:passwd:
            .: {}
            f:users: {}
          f:storage:
            .: {}
            f:files: {}
          f:systemd:
            .: {}
            f:units: {}
        f:extensions: {}
        f:fips: {}
        f:kernelArguments: {}
        f:kernelType: {}
        f:osImageURL: {}
    manager: machine-config-controller
    operation: Update
    time: "2022-03-08T10:39:24Z"
  name: rendered-worker-9cba68d1b9fde6c79c41dcb10dfd7e0d
  ownerReferences:
  - apiVersion: machineconfiguration.openshift.io/v1
    blockOwnerDeletion: true
    controller: true
    kind: MachineConfigPool
    name: worker
    uid: f5a82dd5-4394-45c2-91c2-1a8a54178e71
  resourceVersion: "8485"
  selfLink: /apis/machineconfiguration.openshift.io/v1/machineconfigs/rendered-worker-9cba68d1b9fde6c79c41dcb10dfd7e0d
  uid: f3c13667-9971-4120-bc23-a5e4de77acc0
spec:
  config:
    ignition:
      version: 3.1.0
    passwd:
      users:
      - name: core
        sshAuthorizedKeys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCRRHeDeKvtbHZByvYnQOkbD63ZxVij1/NkwzoBm39jPC+YdgSwN6lVuJEAwivUpHyfHjhGoX2rF9LzPI5Y5tJ9Wju7SdH+26pUjIqKZWOebXq9/z8Tw+FZ5lKWXY30r7hw91S33KkJ83zCY+i6AqgBtL3BiCYIM5gd/DfgaozGNoNf/AaqSLgMEIULx9giRh9iJ2EQubWrcM2iYpVFbWqJN60/ZCk6AE8f6QFonZigWsHxhFljI6WfoAshJ1Q0LhkT8U0uXaNGfmrxKtHCtSaFshAyAQf01KcEG6xXOJYP0E/qXJtGiKiam7dMlMtHa9kO64GMIL+bhY7ZSGV/8SMP
    storage:
      files:
      - contents:
          source: data:,
        mode: 384
        overwrite: true
        path: /etc/pki/ca-trust/source/anchors/openshift-config-user-ca-bundle.crt
      - contents:
          source: data:,r%20%2Fetc%2Fkubernetes%2Fcni%2Fnet.d%2F80-openshift-network.conf%0Ar%20%2Fetc%2Fkubernetes%2Fcni%2Fnet.d%2F10-ovn-kubernetes.conf%0Ad%20%2Frun%2Fmultus%2Fcni%2Fnet.d%2F%200755%20root%20root%20-%20-%0AD%20%2Fvar%2Flib%2Fcni%2Fnetworks%2Fopenshift-sdn%2F%200755%20root%20root%20-%20-%0A
        mode: 420
        overwrite: true
        path: /etc/tmpfiles.d/cleanup-cni.conf
      - contents:
          source: data:,
        mode: 420
        overwrite: true
        path: /etc/kubernetes/static-pod-resources/configmaps/cloud-config/ca-bundle.pem
      - contents:
          source: data:,%23!%2Fbin%2Fbash%0Aset%20-eux%0A%0A%23%20Workaround%20to%20ensure%20OVS%20is%20installed%20due%20to%20bug%20in%20systemd%20Requires%3A%0A%23%20https%3A%2F%2Fbugzilla.redhat.com%2Fshow_bug.cgi%3Fid%3D1888017%0Aif%20!%20rpm%20-qa%20%7C%20grep%20-q%20openvswitch%3B%20then%0A%20%20echo%20%22Warning%3A%20Openvswitch%20package%20is%20not%20installed!%22%0A%20%20exit%201%0Afi%0A%0A%23%20Create%20file%20to%20signal%20that%20ovs-configuration%20has%20executed%20(we%20are%20booted%20into%204.6)%0A%23%20This%20is%20necessary%20because%20systemd%20calls%20from%20SDN%20containers%20are%20unreliable%2C%20so%20need%20to%20look%20for%20a%20file%0Atouch%20%2Fvar%2Frun%2Fovs-config-executed%0A%0Aif%20%5B%20%22%241%22%20%3D%3D%20%22OVNKubernetes%22%20%5D%3B%20then%0A%20%20%23%20Configures%20NICs%20onto%20OVS%20bridge%20%22br-ex%22%0A%20%20%23%20Configuration%20is%20either%20auto-detected%20or%20provided%20through%20a%20config%20file%20written%20already%20in%20Network%20Manager%0A%20%20%23%20key%20files%20under%20%2Fetc%2FNetworkManager%2Fsystem-connections%2F%0A%20%20%23%20Managing%20key%20files%20is%20outside%20of%20the%20scope%20of%20this%20script%0A%0A%20%20%23%20if%20the%20interface%20is%20of%20type%20vmxnet3%20add%20multicast%20capability%20for%20that%20driver%0A%20%20%23%20REMOVEME%3A%20Once%20BZ%3A1854355%20is%20fixed%2C%20this%20needs%20to%20get%20removed.%0A%20%20function%20configure_driver_options%20%7B%0A%20%20%20%20intf%3D%241%0A%20%20%20%20driver%3D%24(cat%20%22%2Fsys%2Fclass%2Fnet%2F%24%7Bintf%7D%2Fdevice%2Fuevent%22%20%7C%20grep%20DRIVER%20%7C%20awk%20-F%20%22%3D%22%20'%7Bprint%20%242%7D')%0A%20%20%20%20echo%20%22Driver%20name%20is%22%20%24driver%0A%20%20%20%20if%20%5B%20%22%24driver%22%20%3D%20%22vmxnet3%22%20%5D%3B%20then%0A%20%20%20%20%20%20ifconfig%20%22%24intf%22%20allmulti%0A%20%20%20%20fi%0A%20%20%7D%0A%0A%20%20NM_CONN_PATH%3D%22%2Fetc%2FNetworkManager%2Fsystem-connections%22%0A%20%20iface%3D%22%22%0A%20%20counter%3D0%0A%20%20%23%20find%20default%20interface%0A%20%20while%20%5B%20%24counter%20-lt%2012%20%5D%3B%20do%0A%20%20%20%20%23%20check%20ipv4%0A%20%20%20%20iface%3D%24(ip%20route%20show%20default%20%7C%20awk%20'%7B%20if%20(%244%20%3D%3D%20%22dev%22)%20%7B%20print%20%245%3B%20exit%20%7D%20%7D')%0A%20%20%20%20if%20%5B%5B%20-n%20%22%24iface%22%20%5D%5D%3B%20then%0A%20%20%20%20%20%20echo%20%22IPv4%20Default%20gateway%20interface%20found%3A%20%24%7Biface%7D%22%0A%20%20%20%20%20%20break%0A%20%20%20%20fi%0A%20%20%20%20%23%20check%20ipv6%0A%20%20%20%20iface%3D%24(ip%20-6%20route%20show%20default%20%7C%20awk%20'%7B%20if%20(%244%20%3D%3D%20%22dev%22)%20%7B%20print%20%245%3B%20exit%20%7D%20%7D')%0A%20%20%20%20if%20%5B%5B%20-n%20%22%24iface%22%20%5D%5D%3B%20then%0A%20%20%20%20%20%20echo%20%22IPv6%20Default%20gateway%20interface%20found%3A%20%24%7Biface%7D%22%0A%20%20%20%20%20%20break%0A%20%20%20%20fi%0A%20%20%20%20counter%3D%24((counter%2B1))%0A%20%20%20%20echo%20%22No%20default%20route%20found%20on%20attempt%3A%20%24%7Bcounter%7D%22%0A%20%20%20%20sleep%205%0A%20%20done%0A%0A%20%20if%20%5B%20%22%24iface%22%20%3D%20%22br-ex%22%20%5D%3B%20then%0A%20%20%20%20%23%20handle%20vlans%20and%20bonds%20etc%20if%20they%20have%20already%20been%0A%20%20%20%20%23%20configured%20via%20nm%20key%20files%20and%20br-ex%20is%20already%20up%0A%20%20%20%20ifaces%3D%24(ovs-vsctl%20list-ifaces%20%24%7Biface%7D)%0A%20%20%20%20for%20intf%20in%20%24ifaces%3B%20do%20configure_driver_options%20%24intf%3B%20done%0A%20%20%20%20echo%20%22Networking%20already%20configured%20and%20up%20for%20br-ex!%22%0A%20%20%20%20%23%20remove%20bridges%20created%20by%20openshift-sdn%0A%20%20%20%20ovs-vsctl%20--timeout%3D30%20--if-exists%20del-br%20br0%0A%20%20%20%20exit%200%0A%20%20fi%0A%0A%20%20if%20%5B%20-z%20%22%24iface%22%20%5D%3B%20then%0A%20%20%20%20echo%20%22ERROR%3A%20Unable%20to%20find%20default%20gateway%20interface%22%0A%20%20%20%20exit%201%0A%20%20fi%0A%0A%20%20%23%20find%20the%20MAC%20from%20OVS%20config%20or%20the%20default%20interface%20to%20use%20for%20OVS%20internal%20port%0A%20%20%23%20this%20prevents%20us%20from%20getting%20a%20different%20DHCP%20lease%20and%20dropping%20connection%0A%20%20if%20!%20iface_mac%3D%24(%3C%22%2Fsys%2Fclass%2Fnet%2F%24%7Biface%7D%2Faddress%22)%3B%20then%0A%20%20%20%20echo%20%22Unable%20to%20determine%20default%20interface%20MAC%22%0A%20%20%20%20exit%201%0A%20%20fi%0A%0A%20%20echo%20%22MAC%20address%20found%20for%20iface%3A%20%24%7Biface%7D%3A%20%24%7Biface_mac%7D%22%0A%0A%20%20%23%20find%20MTU%20from%20original%20iface%0A%20%20iface_mtu%3D%24(ip%20link%20show%20%22%24iface%22%20%7C%20awk%20'%7Bprint%20%245%3B%20exit%7D')%0A%20%20if%20%5B%5B%20-z%20%22%24iface_mtu%22%20%5D%5D%3B%20then%0A%20%20%20%20echo%20%22Unable%20to%20determine%20default%20interface%20MTU%2C%20defaulting%20to%201500%22%0A%20%20%20%20iface_mtu%3D1500%0A%20%20else%0A%20%20%20%20echo%20%22MTU%20found%20for%20iface%3A%20%24%7Biface%7D%3A%20%24%7Biface_mtu%7D%22%0A%20%20fi%0A%0A%20%20%23%20store%20old%20conn%20for%20later%0A%20%20old_conn%3D%24(nmcli%20--fields%20UUID%2CDEVICE%20conn%20show%20--active%20%7C%20awk%20%22%2F%5Cs%24%7Biface%7D%5Cs*%5C%24%2F%20%7Bprint%20%5C%241%7D%22)%0A%0A%20%20extra_brex_args%3D%22%22%0A%20%20%23%20check%20for%20dhcp%20client%20ids%0A%20%20dhcp_client_id%3D%24(nmcli%20--get-values%20ipv4.dhcp-client-id%20conn%20show%20%24%7Bold_conn%7D)%0A%20%20if%20%5B%20-n%20%22%24dhcp_client_id%22%20%5D%3B%20then%0A%20%20%20%20extra_brex_args%2B%3D%22ipv4.dhcp-client-id%20%24%7Bdhcp_client_id%7D%20%22%0A%20%20fi%0A%0A%20%20dhcp6_client_id%3D%24(nmcli%20--get-values%20ipv6.dhcp-duid%20conn%20show%20%24%7Bold_conn%7D)%0A%20%20if%20%5B%20-n%20%22%24dhcp6_client_id%22%20%5D%3B%20then%0A%20%20%20%20extra_brex_args%2B%3D%22ipv6.dhcp-duid%20%24%7Bdhcp6_client_id%7D%20%22%0A%20%20fi%0A%0A%20%20%23%20create%20bridge%3B%20use%20NM's%20ethernet%20device%20default%20route%20metric%20(100)%0A%20%20if%20!%20nmcli%20connection%20show%20br-ex%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20nmcli%20c%20add%20type%20ovs-bridge%20%5C%0A%20%20%20%20%20%20%20%20con-name%20br-ex%20%5C%0A%20%20%20%20%20%20%20%20conn.interface%20br-ex%20%5C%0A%20%20%20%20%20%20%20%20802-3-ethernet.mtu%20%24%7Biface_mtu%7D%20%5C%0A%20%20%20%20%20%20%20%20802-3-ethernet.cloned-mac-address%20%24%7Biface_mac%7D%20%5C%0A%20%20%20%20%20%20%20%20ipv4.route-metric%20100%20%5C%0A%20%20%20%20%20%20%20%20ipv6.route-metric%20100%20%5C%0A%20%20%20%20%20%20%20%20%24%7Bextra_brex_args%7D%0A%20%20fi%0A%0A%20%20%23%20find%20default%20port%20to%20add%20to%20bridge%0A%20%20if%20!%20nmcli%20connection%20show%20ovs-port-phys0%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20nmcli%20c%20add%20type%20ovs-port%20conn.interface%20%24%7Biface%7D%20master%20br-ex%20con-name%20ovs-port-phys0%0A%20%20fi%0A%0A%20%20if%20!%20nmcli%20connection%20show%20ovs-port-br-ex%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20nmcli%20c%20add%20type%20ovs-port%20conn.interface%20br-ex%20master%20br-ex%20con-name%20ovs-port-br-ex%0A%20%20fi%0A%0A%20%20extra_phys_args%3D%22%22%0A%20%20%23%20check%20if%20this%20interface%20is%20a%20vlan%2C%20bond%2C%20or%20ethernet%20type%0A%20%20if%20%5B%20%24(nmcli%20--get-values%20connection.type%20conn%20show%20%24%7Bold_conn%7D)%20%3D%3D%20%22vlan%22%20%5D%3B%20then%0A%20%20%20%20iface_type%3Dvlan%0A%20%20%20%20vlan_id%3D%24(nmcli%20--get-values%20vlan.id%20conn%20show%20%24%7Bold_conn%7D)%0A%20%20%20%20if%20%5B%20-z%20%22%24vlan_id%22%5D%3B%20then%0A%20%20%20%20%20%20echo%20%22ERROR%3A%20unable%20to%20determine%20vlan_id%20for%20vlan%20connection%3A%20%24%7Bold_conn%7D%22%0A%20%20%20%20%20%20exit%201%0A%20%20%20%20fi%0A%20%20%20%20vlan_parent%3D%24(nmcli%20--get-values%20vlan.parent%20conn%20show%20%24%7Bold_conn%7D)%0A%20%20%20%20if%20%5B%20-z%20%22%24vlan_parent%22%20%5D%3B%20then%0A%20%20%20%20%20%20echo%20%22ERROR%3A%20unable%20to%20determine%20vlan_parent%20for%20vlan%20connection%3A%20%24%7Bold_conn%7D%22%0A%20%20%20%20%20%20exit%201%0A%20%20%20%20fi%0A%20%20%20%20extra_phys_args%3D%22dev%20%24%7Bvlan_parent%7D%20id%20%24%7Bvlan_id%7D%22%0A%20%20elif%20%5B%20%24(nmcli%20--get-values%20connection.type%20conn%20show%20%24%7Bold_conn%7D)%20%3D%3D%20%22bond%22%20%5D%3B%20then%0A%20%20%20%20iface_type%3Dbond%0A%20%20%20%20%23%20check%20bond%20options%0A%20%20%20%20bond_opts%3D%24(nmcli%20--get-values%20bond.options%20conn%20show%20%24%7Bold_conn%7D)%0A%20%20%20%20if%20%5B%20-n%20%22%24bond_opts%22%20%5D%3B%20then%0A%20%20%20%20%20%20extra_phys_args%2B%3D%22bond.options%20%24%7Bbond_opts%7D%20%22%0A%20%20%20%20fi%0A%20%20else%0A%20%20%20%20iface_type%3D802-3-ethernet%0A%20%20fi%0A%0A%20%20%23%20bring%20down%20any%20old%20iface%0A%20%20nmcli%20device%20disconnect%20%24iface%0A%0A%20%20if%20!%20nmcli%20connection%20show%20ovs-if-phys0%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20nmcli%20c%20add%20type%20%24%7Biface_type%7D%20conn.interface%20%24%7Biface%7D%20master%20ovs-port-phys0%20con-name%20ovs-if-phys0%20%5C%0A%20%20%20%20%20%20connection.autoconnect-priority%20100%20802-3-ethernet.mtu%20%24%7Biface_mtu%7D%20%24%7Bextra_phys_args%7D%0A%20%20fi%0A%0A%20%20%23%20Update%20connections%20with%20master%20property%20set%20to%20use%20the%20new%20device%20name%0A%20%20new_device%3D%24(nmcli%20--get-values%20connection.interface-name%20conn%20show%20ovs-if-phys0)%0A%20%20for%20conn_uuid%20in%20%24(nmcli%20-g%20UUID%20connection%20show)%20%3B%20do%0A%20%20%20%20if%20%5B%20%22%24(nmcli%20-g%20connection.master%20connection%20show%20uuid%20%22%24conn_uuid%22)%22%20!%3D%20%22%24old_conn%22%20%5D%3B%20then%0A%20%20%20%20%20%20continue%0A%20%20%20%20fi%0A%20%20%20%20nmcli%20conn%20mod%20uuid%20%24%7Bconn_uuid%7D%20connection.master%20%24%7Bnew_device%7D%0A%20%20done%0A%0A%20%20nmcli%20conn%20up%20ovs-if-phys0%0A%0A%20%20if%20!%20nmcli%20connection%20show%20ovs-if-br-ex%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20if%20nmcli%20--fields%20ipv4.method%2Cipv6.method%20conn%20show%20%24old_conn%20%7C%20grep%20manual%3B%20then%0A%20%20%20%20%20%20echo%20%22Static%20IP%20addressing%20detected%20on%20default%20gateway%20connection%3A%20%24%7Bold_conn%7D%22%0A%20%20%20%20%20%20%23%20find%20and%20copy%20the%20old%20connection%20to%20get%20the%20address%20settings%0A%20%20%20%20%20%20if%20egrep%20-l%20--include%3D*.nmconnection%20uuid%3D%24old_conn%20%24%7BNM_CONN_PATH%7D%2F*%3B%20then%0A%20%20%20%20%20%20%20%20old_conn_file%3D%24(egrep%20-l%20--include%3D*.nmconnection%20uuid%3D%24old_conn%20%24%7BNM_CONN_PATH%7D%2F*)%0A%20%20%20%20%20%20%20%20cloned%3Dfalse%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20echo%20%22WARN%3A%20unable%20to%20find%20NM%20configuration%20file%20for%20conn%3A%20%24%7Bold_conn%7D.%20Attempting%20to%20clone%20conn%22%0A%20%20%20%20%20%20%20%20old_conn_file%3D%24%7BNM_CONN_PATH%7D%2F%24%7Bold_conn%7D-clone.nmconnection%0A%20%20%20%20%20%20%20%20nmcli%20conn%20clone%20%24%7Bold_conn%7D%20%24%7Bold_conn%7D-clone%0A%20%20%20%20%20%20%20%20cloned%3Dtrue%0A%20%20%20%20%20%20%20%20if%20%5B%20!%20-f%20%22%24old_conn_file%22%20%5D%3B%20then%0A%20%20%20%20%20%20%20%20%20%20echo%20%22ERROR%3A%20unable%20to%20locate%20cloned%20conn%20file%3A%20%24%7Bold_conn_file%7D%22%0A%20%20%20%20%20%20%20%20%20%20exit%201%0A%20%20%20%20%20%20%20%20fi%0A%20%20%20%20%20%20%20%20echo%20%22Successfully%20cloned%20conn%20to%20%24%7Bold_conn_file%7D%22%0A%20%20%20%20%20%20fi%0A%20%20%20%20%20%20echo%20%22old%20connection%20file%20found%20at%3A%20%24%7Bold_conn_file%7D%22%0A%20%20%20%20%20%20new_conn_file%3D%24%7BNM_CONN_PATH%7D%2Fovs-if-br-ex.nmconnection%0A%20%20%20%20%20%20if%20%5B%20-f%20%22%24new_conn_file%22%20%5D%3B%20then%0A%20%20%20%20%20%20%20%20echo%20%22WARN%3A%20existing%20br-ex%20interface%20file%20found%3A%20%24new_conn_file%2C%20which%20is%20not%20loaded%20in%20NetworkManager...overwriting%22%0A%20%20%20%20%20%20fi%0A%20%20%20%20%20%20cp%20-f%20%24%7Bold_conn_file%7D%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20if%20%24cloned%3B%20then%0A%20%20%20%20%20%20%20%20nmcli%20conn%20delete%20%24%7Bold_conn%7D-clone%0A%20%20%20%20%20%20%20%20rm%20-f%20%24%7Bold_conn_file%7D%0A%20%20%20%20%20%20fi%0A%20%20%20%20%20%20ovs_port_conn%3D%24(nmcli%20--fields%20connection.uuid%20conn%20show%20ovs-port-br-ex%20%7C%20awk%20'%7Bprint%20%242%7D')%0A%20%20%20%20%20%20br_iface_uuid%3D%24(cat%20%2Fproc%2Fsys%2Fkernel%2Frandom%2Fuuid)%0A%20%20%20%20%20%20%23%20modify%20file%20to%20work%20with%20OVS%20and%20have%20unique%20settings%0A%20%20%20%20%20%20sed%20-i%20'%2F%5E%5C%5Bconnection%5C%5D%24%2F%2C%2F%5E%5C%5B%2F%20s%2F%5Euuid%3D.*%24%2Fuuid%3D'%22%24br_iface_uuid%22'%2F'%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20sed%20-i%20'%2F%5Emulti-connect%3D.*%24%2Fd'%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20sed%20-i%20'%2F%5E%5C%5Bconnection%5C%5D%24%2F%2C%2F%5E%5C%5B%2F%20s%2F%5Etype%3D.*%24%2Ftype%3Dovs-interface%2F'%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20sed%20-i%20'%2F%5E%5C%5Bconnection%5C%5D%24%2F%2C%2F%5E%5C%5B%2F%20s%2F%5Eid%3D.*%24%2Fid%3Dovs-if-br-ex%2F'%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20sed%20-i%20'%2F%5E%5C%5Bconnection%5C%5D%24%2Fa%20slave-type%3Dovs-port'%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20sed%20-i%20'%2F%5E%5C%5Bconnection%5C%5D%24%2Fa%20master%3D'%22%24ovs_port_conn%22%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20if%20grep%20'interface-name%3D'%20%24%7Bnew_conn_file%7D%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20%20%20%20%20sed%20-i%20'%2F%5E%5C%5Bconnection%5C%5D%24%2F%2C%2F%5E%5C%5B%2F%20s%2F%5Einterface-name%3D.*%24%2Finterface-name%3Dbr-ex%2F'%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20sed%20-i%20'%2F%5E%5C%5Bconnection%5C%5D%24%2Fa%20interface-name%3Dbr-ex'%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20fi%0A%20%20%20%20%20%20if%20!%20grep%20'cloned-mac-address%3D'%20%24%7Bnew_conn_file%7D%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20%20%20%20%20sed%20-i%20'%2F%5E%5C%5Bethernet%5C%5D%24%2F%2C%2F%5E%5C%5B%2F%20s%2F%5Ecloned-mac-address%3D.*%24%2Fcloned-mac-address%3D'%22%24iface_mac%22'%2F'%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20sed%20-i%20'%2F%5E%5C%5Bethernet%5C%5D%24%2Fa%20cloned-mac-address%3D'%22%24iface_mac%22%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20fi%0A%20%20%20%20%20%20if%20grep%20'mtu%3D'%20%24%7Bnew_conn_file%7D%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20%20%20%20%20sed%20-i%20'%2F%5E%5C%5Bethernet%5C%5D%24%2F%2C%2F%5E%5C%5B%2F%20s%2F%5Emtu%3D.*%24%2Fmtu%3D'%22%24iface_mtu%22'%2F'%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20sed%20-i%20'%2F%5E%5C%5Bethernet%5C%5D%24%2Fa%20mtu%3D'%22%24iface_mtu%22%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20fi%0A%20%20%20%20%20%20cat%20%3C%3CEOF%20%3E%3E%20%24%7Bnew_conn_file%7D%0A%5Bovs-interface%5D%0Atype%3Dinternal%0AEOF%0A%20%20%20%20%20%20nmcli%20c%20load%20%24%7Bnew_conn_file%7D%0A%20%20%20%20%20%20echo%20%22Loaded%20new%20ovs-if-br-ex%20connection%20file%3A%20%24%7Bnew_conn_file%7D%22%0A%20%20%20%20else%0A%20%20%20%20%20%20nmcli%20c%20add%20type%20ovs-interface%20slave-type%20ovs-port%20conn.interface%20br-ex%20master%20ovs-port-br-ex%20con-name%20%5C%0A%20%20%20%20%20%20%20%20ovs-if-br-ex%20802-3-ethernet.mtu%20%24%7Biface_mtu%7D%20802-3-ethernet.cloned-mac-address%20%24%7Biface_mac%7D%20%5C%0A%20%20%20%20%20%20%20%20ipv4.route-metric%20100%20ipv6.route-metric%20100%0A%20%20%20%20fi%0A%20%20fi%0A%0A%20%20%23%20wait%20for%20DHCP%20to%20finish%2C%20verify%20connection%20is%20up%0A%20%20counter%3D0%0A%20%20while%20%5B%20%24counter%20-lt%205%20%5D%3B%20do%0A%20%20%20%20sleep%205%0A%20%20%20%20%23%20check%20if%20connection%20is%20active%0A%20%20%20%20if%20nmcli%20--fields%20GENERAL.STATE%20conn%20show%20ovs-if-br-ex%20%7C%20grep%20-i%20%22activated%22%3B%20then%0A%20%20%20%20%20%20echo%20%22OVS%20successfully%20configured%22%0A%20%20%20%20%20%20ip%20a%20show%20br-ex%0A%20%20%20%20%20%20ip%20route%20show%0A%20%20%20%20%20%20configure_driver_options%20%24%7Biface%7D%0A%20%20%20%20%20%20exit%200%0A%20%20%20%20fi%0A%20%20%20%20counter%3D%24((counter%2B1))%0A%20%20done%0A%0A%20%20echo%20%22WARN%3A%20OVS%20did%20not%20succesfully%20activate%20NM%20connection.%20Attempting%20to%20bring%20up%20connections%22%0A%20%20counter%3D0%0A%20%20while%20%5B%20%24counter%20-lt%205%20%5D%3B%20do%0A%20%20%20%20if%20nmcli%20conn%20up%20ovs-if-br-ex%3B%20then%0A%20%20%20%20%20%20echo%20%22OVS%20successfully%20configured%22%0A%20%20%20%20%20%20ip%20a%20show%20br-ex%0A%20%20%20%20%20%20ip%20route%20show%0A%20%20%20%20%20%20configure_driver_options%20%24%7Biface%7D%0A%20%20%20%20%20%20exit%200%0A%20%20%20%20fi%0A%20%20%20%20sleep%205%0A%20%20%20%20counter%3D%24((counter%2B1))%0A%20%20done%0A%0A%20%20echo%20%22ERROR%3A%20Failed%20to%20activate%20ovs-if-br-ex%20NM%20connection%22%0A%20%20%23%20if%20we%20made%20it%20here%20networking%20isnt%20coming%20up%2C%20revert%20for%20debugging%0A%20%20set%20%2Be%0A%20%20nmcli%20conn%20down%20ovs-if-br-ex%0A%20%20nmcli%20conn%20down%20ovs-if-phys0%0A%20%20nmcli%20conn%20up%20%24old_conn%0A%20%20exit%201%0Aelif%20%5B%20%22%241%22%20%3D%3D%20%22OpenShiftSDN%22%20%5D%3B%20then%0A%20%20%23%20Revert%20changes%20made%20by%20%2Fusr%2Flocal%2Fbin%2Fconfigure-ovs.sh.%0A%20%20%23%20Remove%20OVS%20bridge%20%22br-ex%22.%20Use%20the%20default%20NIC%20for%20cluster%20network.%0A%0A%20%20if%20nmcli%20connection%20show%20ovs-port-phys0%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20nmcli%20c%20del%20ovs-port-phys0%20%0A%20%20fi%0A%0A%20%20if%20nmcli%20connection%20show%20ovs-if-phys0%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20nmcli%20c%20del%20ovs-if-phys0%0A%20%20fi%0A%0A%20%20if%20nmcli%20connection%20show%20ovs-port-br-ex%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20nmcli%20c%20del%20ovs-port-br-ex%0A%20%20fi%0A%0A%20%20if%20nmcli%20connection%20show%20ovs-if-br-ex%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20nmcli%20c%20del%20ovs-if-br-ex%0A%20%20fi%0A%0A%20%20if%20nmcli%20connection%20show%20br-ex%20%26%3E%20%2Fdev%2Fnull%3B%20then%0A%20%20%20%20nmcli%20c%20del%20br-ex%0A%20%20fi%0A%0A%20%20%23%20remove%20bridges%20created%20by%20ovn-kubernetes%2C%20try%20to%20delete%20br-ex%20again%20in%20case%20NM%20fail%20to%20talk%20to%20ovsdb%0A%20%20ovs-vsctl%20--timeout%3D30%20--if-exists%20del-br%20br-int%20--%20--if-exists%20del-br%20br-local%20--%20--if-exists%20del-br%20br-ex%0Afi%0A
        mode: 493
        overwrite: true
        path: /usr/local/bin/configure-ovs.sh
      - contents:
          source: data:,%23%20This%20file%20is%20generated%20by%20the%20Machine%20Config%20Operator's%20containerruntimeconfig%20controller.%0A%23%0A%23%20storage.conf%20is%20the%20configuration%20file%20for%20all%20tools%0A%23%20that%20share%20the%20containers%2Fstorage%20libraries%0A%23%20See%20man%205%20containers-storage.conf%20for%20more%20information%0A%23%20The%20%22container%20storage%22%20table%20contains%20all%20of%20the%20server%20options.%0A%5Bstorage%5D%0A%0A%23%20Default%20Storage%20Driver%0Adriver%20%3D%20%22overlay%22%0A%0A%23%20Temporary%20storage%20location%0Arunroot%20%3D%20%22%2Fvar%2Frun%2Fcontainers%2Fstorage%22%0A%0A%23%20Primary%20Read%2FWrite%20location%20of%20container%20storage%0Agraphroot%20%3D%20%22%2Fvar%2Flib%2Fcontainers%2Fstorage%22%0A%0A%5Bstorage.options%5D%0A%23%20Storage%20options%20to%20be%20passed%20to%20underlying%20storage%20drivers%0A%0A%23%20AdditionalImageStores%20is%20used%20to%20pass%20paths%20to%20additional%20Read%2FOnly%20image%20stores%0A%23%20Must%20be%20comma%20separated%20list.%0Aadditionalimagestores%20%3D%20%5B%0A%5D%0A%0A%23%20Size%20is%20used%20to%20set%20a%20maximum%20size%20of%20the%20container%20image.%20%20Only%20supported%20by%0A%23%20certain%20container%20storage%20drivers.%0Asize%20%3D%20%22%22%0A%0A%23%20OverrideKernelCheck%20tells%20the%20driver%20to%20ignore%20kernel%20checks%20based%20on%20kernel%20version%0Aoverride_kernel_check%20%3D%20%22true%22%0A%0A%23%20Remap-UIDs%2FGIDs%20is%20the%20mapping%20from%20UIDs%2FGIDs%20as%20they%20should%20appear%20inside%20of%0A%23%20a%20container%2C%20to%20UIDs%2FGIDs%20as%20they%20should%20appear%20outside%20of%20the%20container%2C%20and%0A%23%20the%20length%20of%20the%20range%20of%20UIDs%2FGIDs.%20%20Additional%20mapped%20sets%20can%20be%20listed%0A%23%20and%20will%20be%20heeded%20by%20libraries%2C%20but%20there%20are%20limits%20to%20the%20number%20of%0A%23%20mappings%20which%20the%20kernel%20will%20allow%20when%20you%20later%20attempt%20to%20run%20a%0A%23%20container.%0A%23%0A%23%20remap-uids%20%3D%200%3A1668442479%3A65536%0A%23%20remap-gids%20%3D%200%3A1668442479%3A65536%0A%0A%23%20Remap-User%2FGroup%20is%20a%20name%20which%20can%20be%20used%20to%20look%20up%20one%20or%20more%20UID%2FGID%0A%23%20ranges%20in%20the%20%2Fetc%2Fsubuid%20or%20%2Fetc%2Fsubgid%20file.%20%20Mappings%20are%20set%20up%20starting%0A%23%20with%20an%20in-container%20ID%20of%200%20and%20the%20a%20host-level%20ID%20taken%20from%20the%20lowest%0A%23%20range%20that%20matches%20the%20specified%20name%2C%20and%20using%20the%20length%20of%20that%20range.%0A%23%20Additional%20ranges%20are%20then%20assigned%2C%20using%20the%20ranges%20which%20specify%20the%0A%23%20lowest%20host-level%20IDs%20first%2C%20to%20the%20lowest%20not-yet-mapped%20container-level%20ID%2C%0A%23%20until%20all%20of%20the%20entries%20have%20been%20used%20for%20maps.%0A%23%0A%23%20remap-user%20%3D%20%22storage%22%0A%23%20remap-group%20%3D%20%22storage%22%0A%0A%5Bstorage.options.thinpool%5D%0A%23%20Storage%20Options%20for%20thinpool%0A%0A%23%20autoextend_percent%20determines%20the%20amount%20by%20which%20pool%20needs%20to%20be%0A%23%20grown.%20This%20is%20specified%20in%20terms%20of%20%25%20of%20pool%20size.%20So%20a%20value%20of%2020%20means%0A%23%20that%20when%20threshold%20is%20hit%2C%20pool%20will%20be%20grown%20by%2020%25%20of%20existing%0A%23%20pool%20size.%0A%23%20autoextend_percent%20%3D%20%2220%22%0A%0A%23%20autoextend_threshold%20determines%20the%20pool%20extension%20threshold%20in%20terms%0A%23%20of%20percentage%20of%20pool%20size.%20For%20example%2C%20if%20threshold%20is%2060%2C%20that%20means%20when%0A%23%20pool%20is%2060%25%20full%2C%20threshold%20has%20been%20hit.%0A%23%20autoextend_threshold%20%3D%20%2280%22%0A%0A%23%20basesize%20specifies%20the%20size%20to%20use%20when%20creating%20the%20base%20device%2C%20which%0A%23%20limits%20the%20size%20of%20images%20and%20containers.%0A%23%20basesize%20%3D%20%2210G%22%0A%0A%23%20blocksize%20specifies%20a%20custom%20blocksize%20to%20use%20for%20the%20thin%20pool.%0A%23%20blocksize%3D%2264k%22%0A%0A%23%20directlvm_device%20specifies%20a%20custom%20block%20storage%20device%20to%20use%20for%20the%0A%23%20thin%20pool.%20Required%20if%20you%20setup%20devicemapper%0A%23%20directlvm_device%20%3D%20%22%22%0A%0A%23%20directlvm_device_force%20wipes%20device%20even%20if%20device%20already%20has%20a%20filesystem%0A%23%20directlvm_device_force%20%3D%20%22True%22%0A%0A%23%20fs%20specifies%20the%20filesystem%20type%20to%20use%20for%20the%20base%20device.%0A%23%20fs%3D%22xfs%22%0A%0A%23%20log_level%20sets%20the%20log%20level%20of%20devicemapper.%0A%23%200%3A%20LogLevelSuppress%200%20(Default)%0A%23%202%3A%20LogLevelFatal%0A%23%203%3A%20LogLevelErr%0A%23%204%3A%20LogLevelWarn%0A%23%205%3A%20LogLevelNotice%0A%23%206%3A%20LogLevelInfo%0A%23%207%3A%20LogLevelDebug%0A%23%20log_level%20%3D%20%227%22%0A%0A%23%20min_free_space%20specifies%20the%20min%20free%20space%20percent%20in%20a%20thin%20pool%20require%20for%0A%23%20new%20device%20creation%20to%20succeed.%20Valid%20values%20are%20from%200%25%20-%2099%25.%0A%23%20Value%200%25%20disables%0A%23%20min_free_space%20%3D%20%2210%25%22%0A%0A%23%20mkfsarg%20specifies%20extra%20mkfs%20arguments%20to%20be%20used%20when%20creating%20the%20base%0A%23%20device.%0A%23%20mkfsarg%20%3D%20%22%22%0A%0A%23%20mountopt%20specifies%20extra%20mount%20options%20used%20when%20mounting%20the%20thin%20devices.%0A%23%20mountopt%20%3D%20%22%22%0A%0A%23%20use_deferred_removal%20Marking%20device%20for%20deferred%20removal%0A%23%20use_deferred_removal%20%3D%20%22True%22%0A%0A%23%20use_deferred_deletion%20Marking%20device%20for%20deferred%20deletion%0A%23%20use_deferred_deletion%20%3D%20%22True%22%0A%0A%23%20xfs_nospace_max_retries%20specifies%20the%20maximum%20number%20of%20retries%20XFS%20should%0A%23%20attempt%20to%20complete%20IO%20when%20ENOSPC%20(no%20space)%20error%20is%20returned%20by%0A%23%20underlying%20storage%20device.%0A%23%20xfs_nospace_max_retries%20%3D%20%220%22%0A
        mode: 420
        overwrite: true
        path: /etc/containers/storage.conf
      - contents:
          source: data:,%23!%2Fbin%2Fbash%0A%23%0A%23%2090-long-hostname%20is%20a%20wrapper%20around%20%2Fusr%2Flocal%2Fsbin%2Fset-valid-hostname.sh%2C%0A%23%20which%20ensures%20that%20a%20node%20has%20a%20valid%20hostname.%0AIF%3D%241%0ASTATUS%3D%242%0A%0Alog()%20%7B%20logger%20--tag%20%22network-manager%2F%24(basename%20%240)%22%20%22%24%7B%40%7D%22%3B%20%7D%0A%0Aif%20%5B%5B%20!%20%22%24STATUS%22%20%3D~%20(up%7Chostname%7Cdhcp4-change%7Cdhcp6-change)%20%5D%5D%3B%20then%0A%20%20%20%20exit%200%0Afi%0A%0Akn%3D%22%24(%3C%20%2Fproc%2Fsys%2Fkernel%2Fhostname)%22%0Aif%20%5B%5B%20!%20%22%24%7Bkn%7D%22%20%3D~%20(localhost%7Clocalhost.localdomain)%20%5D%5D%20%26%26%20%5B%20%22%24%7B%23kn%7D%22%20-le%2063%20%5D%3B%20then%0A%20%20%20%20log%20%22hostname%20is%20already%20set%22%0A%20%20%20%20exit%200%0Afi%0A%0A%23%20source%20the%20script%20since%20NetworkManager%20execution%20rules%20do%0A%23%20allow%20sourcing%20from%20%2Fusr%2Flocal.%20RHCOS%20has%20an%20read-only%20rootfs%0A%23%20which%20limits%20where%20this%20can%20be%20stashed.%0Asource%20%2Fusr%2Flocal%2Fsbin%2Fset-valid-hostname.sh%0Ahost_name%3D%22%24%7BDHCP4_HOST_NAME%3A-%24DHCP6_HOST_NAME%7D%22%0A%0Aif%20%5B%20-n%20%22%24%7Bhost_name%7D%22%20%5D%3B%20then%0A%20%20%20%20set_valid_hostname%20%22%24%7Bhost_name%7D%22%0Afi%0A
        mode: 493
        overwrite: true
        path: /etc/NetworkManager/dispatcher.d/90-long-hostname
      - contents:
          source: data:,%5BManager%5D%0ADefaultEnvironment%3DGODEBUG%3Dx509ignoreCN%3D0%0A
        mode: 420
        overwrite: true
        path: /etc/systemd/system.conf.d/10-default-env-godebug.conf
      - contents:
          source: data:,%23%20Force-load%20legacy%20iptables%20so%20it%20is%20usable%20from%20pod%20network%20namespaces%0Aip_tables%0A
        mode: 420
        overwrite: true
        path: /etc/modules-load.d/iptables.conf
      - contents:
          source: data:,-----BEGIN%20CERTIFICATE-----%0AMIIDMDCCAhigAwIBAgIILm0S2IEi7cYwDQYJKoZIhvcNAQELBQAwNjESMBAGA1UE%0ACxMJb3BlbnNoaWZ0MSAwHgYDVQQDExdhZG1pbi1rdWJlY29uZmlnLXNpZ25lcjAe%0AFw0yMjAzMDgxMDEwMjZaFw0zMjAzMDUxMDEwMjZaMDYxEjAQBgNVBAsTCW9wZW5z%0AaGlmdDEgMB4GA1UEAxMXYWRtaW4ta3ViZWNvbmZpZy1zaWduZXIwggEiMA0GCSqG%0ASIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1en%2BoPGZM%2BzljbeD479RBXjMRjldPeTGy%0AiuHx7iOJRmKECrCXol%2BHRQP2vd9eXeqOF6OJk5BbkGuxVYNtKzcQj98sCYT2GZeI%0AGpS7fbwpxKMA%2FijaWOLd%2FqCrCuoXRONdz5uy6HN7DdCxtkOX9TLfWnjyuiA%2BpPjk%0AZ1fJXlPk8oJs6BsZB0opzqfodjBnaaM%2BJ%2B4Xs3DrEYOFAMdsI35%2FSrrtX8AOMvG8%0Ayfrk0%2FRbQdp2gXODCwOI9kanppMlQGt2BCvTl6si2i4h4W%2FadxfidjJMpt9WANAA%0Ah69UUaeDPT%2BvLDVxzaxdSgXkBm73P8fbqAj3HoIii91NtirunqAlAgMBAAGjQjBA%0AMA4GA1UdDwEB%2FwQEAwICpDAPBgNVHRMBAf8EBTADAQH%2FMB0GA1UdDgQWBBRn5fXr%0AYnHSKCfDetp4ELfbeDl26TANBgkqhkiG9w0BAQsFAAOCAQEAk6OJdwcorHXMf1tZ%0Avwc8XH1Hd4N1SWV31Db9BAbUckyBhI5fufw76oD%2FcGNoARGUUgXT6ywRhOKdFHap%0AbKO%2B8vJIW1v4Jf1Ua3%2F5pG7xLkmxLZnMEPLFPDL7RQRHM7MTFeyiurAWaTDO%2Fots%0A1taSQrivn3MOV7r6q2RvuWEFtPjvWLtjxbco8iQ9fqMIIgJ4QytGgI%2FyLmKCR3xq%0AFIq454ZrjyaBoPhbxHrAtsp0ZWKwlCd4xjizRddARs%2FatHK2Bn7d7%2FNN6KvTEGcX%0AqnMkwB9j9lQYxZ7HDiok5Dr4UI3D0Aquzz1%2F0ybbaRxSnfG27DYZamE6RP5phWuY%0AiMqZ5A%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIIDHjCCAgagAwIBAgIIGQlmvCPlcn0wDQYJKoZIhvcNAQELBQAwLTESMBAGA1UE%0ACxMJb3BlbnNoaWZ0MRcwFQYDVQQDEw5rdWJlbGV0LXNpZ25lcjAeFw0yMjAzMDgx%0AMDEwMzBaFw0yMjAzMDkxMDEwMzBaMC0xEjAQBgNVBAsTCW9wZW5zaGlmdDEXMBUG%0AA1UEAxMOa3ViZWxldC1zaWduZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK%0AAoIBAQDfFs%2FVDbvfwfgfZLJv%2FbEC%2FurdpCfpXj05emXoCxKSo9Ux1uyPnbfrxFJ1%0AsBENNeAlfExjzTRwtI6zuta%2BxQ3%2FBgm6kCXxFt66Nb93pIzLwUMP0S%2BXmnUcrye3%0Avgimd%2B%2BSldhHktQGRghcoI42tpSs0Iri%2FhK%2FOqDQBi2iDEwlE4N0TI17%2FelrAkfb%0A1sKExFxUlmsuF55c%2BoXDXZRnDvpGTFgIoPyBXlxvtkc6l8Ol8F4XKo%2BevhmwtqGT%0Ao74%2BbDhJ8fXtNvnIpo1c83yG7nm2pRTn0Po%2FmdkVYW71zih21ts%2FpU5OmD%2Fk8H8e%0Ag3C8hh5oufbA8iB5r%2BL0EKXGLFRbAgMBAAGjQjBAMA4GA1UdDwEB%2FwQEAwICpDAP%0ABgNVHRMBAf8EBTADAQH%2FMB0GA1UdDgQWBBTN3PuV0382w1kuNxKLcqdDLcch3TAN%0ABgkqhkiG9w0BAQsFAAOCAQEAvI0mcLoabaeHWK%2B4RC5e5d2ULptQPr2C%2FcDx9ZWJ%0A1i%2FAnQoSDn83sDFp8jIg4A8r0Na1Mk3KdXQ7tb0H1kkl07dX3aEhiMIKy5WFg3wW%0AcNA50gqv%2FsVXA%2FDyEdE0Hg2R0Vcrbfv%2F6V%2FtTGV8UgaS1AYMy9A%2F%2F%2BD37l4oTztI%0AfvFRHotcr%2F9UvTlhg1147kBUNdUcSkk2V3Y4w9OJh4fyceBmfi6zFSyejc%2Fz7MVd%0AzhmNln%2F0aD6v4O6Ya90WCP2CUD1b%2F%2BnmphLtKVUyfRJhn18AvHBOu5265IaOM%2FCM%0A70AErvb7VH7jFHEK1yoIcLIQcDt%2FkFEBoYuuYb7b8tSNSg%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIIDNDCCAhygAwIBAgIIdpdJCTjOgJ8wDQYJKoZIhvcNAQELBQAwODESMBAGA1UE%0ACxMJb3BlbnNoaWZ0MSIwIAYDVQQDExlrdWJlLWNvbnRyb2wtcGxhbmUtc2lnbmVy%0AMB4XDTIyMDMwODEwMTAzMFoXDTIzMDMwODEwMTAzMFowODESMBAGA1UECxMJb3Bl%0AbnNoaWZ0MSIwIAYDVQQDExlrdWJlLWNvbnRyb2wtcGxhbmUtc2lnbmVyMIIBIjAN%0ABgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqNrkO5hSxHUWsKPzkDpZNNSbzpfG%0A0i25DbHZL6maNKKp%2BAR4nOPC28O02q62rWo9zltE4xkZbUu%2FiZIYF0s6bxYB%2B21q%0ApzSiaQIFIzETMv5yMbXokrzD0I1CTFi26knbVfWVABSKPj7rMVvS1MdxTLRQ3Zw0%0Axqcn%2B9pTssF95%2B73x5yOkEARCQszQjsq3ZKY8%2FiojSzd02FbBg9WEzJek7NW6Ilc%0A71yadSYnM3C%2F3IAAvIzyxBDziV7wdBbI%2FFbWV5jIibZL4meyk7IweEKcggvQ5TEZ%0An%2BUrwNq3ylSnFHIJG%2FlZQV79MWJLCKUDOkGrQSzc3rPJwGWm4U58UsHIeQIDAQAB%0Ao0IwQDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH%2FBAUwAwEB%2FzAdBgNVHQ4EFgQU%0A7zn4kuwhofBa6hkvlfFZ41tfxZ4wDQYJKoZIhvcNAQELBQADggEBAGz4PDueyujX%0A%2F3TFvnab9i3p4Xg%2BY4UDD3J32u1VkZYDcApz5xh3PInYVsLcHlKjTiAs%2FymqlaS3%0AecyunOiOJG%2FbTPeCVOSyyWgHDXaquuyoWaEHa4PB%2Bkner2aisuopF%2Bp2tAXX4ba1%0Aw9JnENoOeaO%2BgizKV%2BNqd0Fmk68%2FwVbzmlWfz5XDNMXOsc4axrms6ZlZIZuSnBaB%0A5gqgzdRGTUyDySuzZMOgDRQQ9wF60Y4gRbiJ8G5B90S8rwpnd7uNYzW85e2EGpCa%0ANZSjJyo7Np7Emh%2BsTqRktyimgr4ajtyYoM8I1q0ttA8fzu1RY%2Fd1naSDV6GZ2qEr%0Arydb1bRZPSk%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIIDQjCCAiqgAwIBAgIILKs0zTTGMbQwDQYJKoZIhvcNAQELBQAwPzESMBAGA1UE%0ACxMJb3BlbnNoaWZ0MSkwJwYDVQQDEyBrdWJlLWFwaXNlcnZlci10by1rdWJlbGV0%0ALXNpZ25lcjAeFw0yMjAzMDgxMDEwMzFaFw0yMzAzMDgxMDEwMzFaMD8xEjAQBgNV%0ABAsTCW9wZW5zaGlmdDEpMCcGA1UEAxMga3ViZS1hcGlzZXJ2ZXItdG8ta3ViZWxl%0AdC1zaWduZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC01H2%2BLYa5%0AQ8z8apBvtTr5p43pCnNLxTOJohEzMFETxdgx8ry%2B0yAV%2BsPlskjA7sMOMG%2FvlkiV%0A74lwdXyDDEwaqNmBgtkFhuf3lPpQ1TgOqSU%2BwJ8K8hs7c%2FqLuOIAGny4f1hPM5ik%0ASwpIq1q8i%2F9GEGE3wfJLi2uu42Wz2ezZkgBu1d0YwQVRLDGPGk%2BiS%2BPSaN2OjVfH%0AsMTAAe%2BgnuZuROMZTiSR3OYOJDydaacZDFykdi98vYZ%2FOqnzSOZW5aIdOmdihSnN%0ALcGRlM4ENYgf4%2BUHcCK%2FlTlNsYa55JuQh7qLFbt3qAYbSkKtlyo%2FOdQw0aTk6sHO%0AVIyoV2bSzOvVAgMBAAGjQjBAMA4GA1UdDwEB%2FwQEAwICpDAPBgNVHRMBAf8EBTAD%0AAQH%2FMB0GA1UdDgQWBBR%2FIydXyhenIUNY%2Bxp29Iqk5yP3%2BTANBgkqhkiG9w0BAQsF%0AAAOCAQEAimQSeIt1NGw%2BJfGb9Ajl4k5kICSXHoQ1R%2FeQGnuitD9GRAdWy5uiEFwQ%0ALH3GoMyCih3lhMZJXdMaZBwUwBdnkHDZOH1ZxUoP4gNXgGvnJ1Ar%2Bo%2BufX8TL6zr%0AviOxNtvakcDJqyiBA3upXFTXC0ePUA1BQqIP6jrBNaT%2Bc91j2%2FE5rY6NK2LDOjRm%0Ani1DqU%2FYDAtOE%2F504ipSotp0QpT6vQi0D2pDNCxpuhf4UZMCoQTUoaSE%2FzTn7DtF%0AQPXJF5TDKgO8llnoBrMXZ9AM6vR5rwBrrtggzd6hE%2BYmUE%2BwOqus9DcQEvRPSZgh%0Av68ae4JN9Z5MHy5N9GnfgZk3%2B3KgWA%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIIDSDCCAjCgAwIBAgIIDDeq9RQtznowDQYJKoZIhvcNAQELBQAwQjESMBAGA1UE%0ACxMJb3BlbnNoaWZ0MSwwKgYDVQQDEyNrdWJlbGV0LWJvb3RzdHJhcC1rdWJlY29u%0AZmlnLXNpZ25lcjAeFw0yMjAzMDgxMDEwMjdaFw0zMjAzMDUxMDEwMjdaMEIxEjAQ%0ABgNVBAsTCW9wZW5zaGlmdDEsMCoGA1UEAxMja3ViZWxldC1ib290c3RyYXAta3Vi%0AZWNvbmZpZy1zaWduZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6%0AZWXFIitnsK8l7WUsJUIw%2Fx76d1rtESdg7FsuBTP%2Bep6Vlr5aMzLYzTLx9mDMf493%0A1pcugcfruA4otmc7Eo2UuoEKTgRk6m50yeN2pvhiKkQHjDWmiyCU6afqszksy87m%0AcxleqV%2FEDUlaY6vAoLAvRm44FxKOw3tCkEL1lYshml8q5Hqp%2F%2B0dEx7bqTe9no42%0A0vUrdPeZkJHmgIXOw2dRUVp2gJNbYTxrheC0LYRJELamfx5oNyehtnSTKExPGSfV%0AupvbNRo4GT68Sa9XjRaUK9KhGDa0gwgqQpwT46D6d5ubbLVRAIgJlTsH2yefDpSi%0ARextAZwxjraUtFImYg11AgMBAAGjQjBAMA4GA1UdDwEB%2FwQEAwICpDAPBgNVHRMB%0AAf8EBTADAQH%2FMB0GA1UdDgQWBBTk1wyVZdxwTjMDFXw1UAVhFZ2tATANBgkqhkiG%0A9w0BAQsFAAOCAQEAUrVRz5yHoHvVvwM6dwH8exDlYcrRdF2F5NESAPC95us7EjIq%0AvWByMXmfWoNumbUem8ZUxit2xDZgwdtRpoviRtNGDnlyv8o6You2JrendhsaxtwY%0A4ahNmW3qW9HZ71baZYmb4mzlvWJe6boyKB28Xb9tQDPIRcXBFGQjEk%2Bo3%2BwK8VSf%0AM5Hzto7D5tiUTCQ14oH4RfpTaWDhKGCVDtrLgqXUie278y3HpOhGzOB8Kg%2FtRMFw%0A5kKT4WiZS4wUFYOBd11DBaGjLwg04yH3oKEVF3oyS%2FaY2ULQx%2BHdOqQ%2Fc%2FDQg%2Fdp%0Afr1WwrEMoLTo34FAPXcjFn79MtksHgJZBzV4Ng%3D%3D%0A-----END%20CERTIFICATE-----%0A
        mode: 420
        overwrite: true
        path: /etc/kubernetes/kubelet-ca.crt
      - contents:
          source: data:,%23%20Turning%20on%20Accounting%20helps%20track%20down%20performance%20issues.%0A%5BManager%5D%0ADefaultCPUAccounting%3Dyes%0ADefaultMemoryAccounting%3Dyes%0ADefaultBlockIOAccounting%3Dyes%0A
        mode: 420
        overwrite: true
        path: /etc/systemd/system.conf.d/kubelet-cgroups.conf
      - contents:
          source: data:,%23%20ignore%20known%20SDN-managed%20devices%0A%5Bdevice%5D%0Amatch-device%3Dinterface-name%3Abr-int%3Binterface-name%3Abr-local%3Binterface-name%3Abr-nexthop%2Cinterface-name%3Aovn-k8s-*%2Cinterface-name%3Ak8s-*%3Binterface-name%3Atun0%3Binterface-name%3Abr0%3Bdriver%3Aveth%0Amanaged%3D0%0A
        mode: 420
        overwrite: true
        path: /etc/NetworkManager/conf.d/sdn.conf
      - contents:
          source: data:,%7B%22auths%22%3A%7B%22quay.io%22%3A%7B%22email%22%3A%22cee-ops-admins%40redhat.com%22%2C%22auth%22%3A%22b3BlbnNoaWZ0LXJlbGVhc2UtZGV2K2NlZW9wc2F1dG9tYXRpb24xb3Z0Z29xa3AxeWVmcGl4ZWFiczkzeWljdmw6UUtDMzFFUzQ4QlVCNkRHUjBRRFYzTkJJTDc5U0lEM1pJWjVKNk5CMzZMTVEyRlVGM04yQU01WFRZVkZQV0VVTw%3D%3D%22%7D%2C%22cloud.openshift.com%22%3A%7B%22email%22%3A%22cee-ops-admins%40redhat.com%22%2C%22auth%22%3A%22b3BlbnNoaWZ0LXJlbGVhc2UtZGV2K2NlZW9wc2F1dG9tYXRpb24xb3Z0Z29xa3AxeWVmcGl4ZWFiczkzeWljdmw6UUtDMzFFUzQ4QlVCNkRHUjBRRFYzTkJJTDc5U0lEM1pJWjVKNk5CMzZMTVEyRlVGM04yQU01WFRZVkZQV0VVTw%3D%3D%22%7D%2C%22registry.redhat.io%22%3A%7B%22email%22%3A%22cee-ops-admins%40redhat.com%22%2C%22auth%22%3A%22NTAwNjM3NzB8dWhjLTFPVnRnb1FrcDFZRUZwSVhFYUJzOTNZSWNWbDpleUpoYkdjaU9pSlNVelV4TWlKOS5leUp6ZFdJaU9pSXpaVGs0T0RjNU1HSmhNbUUwWVRObVlUQmtORGM0WVRrd01UUmpOREUzTVNKOS5SLVFIVXJEOW90YVhKckkxRXBYaEYzWFYtcFN3SFUtXzhLYkJHSmtMQVJzMjBoUTJVY25XTGVicXk1MjdJTHdGbGIteXlDN2ZpS2ZyTGlsYTdOUDBqaUIyVFkwTjVFemxZckJXaDE4U1JreHRHVkNldnRDSEtpUER4VFlZU2ZkUVJGbjZ6ckVpRkp2Wjg4STk0bHg3QTdvSUZRSDFRQkRvLVU2T3dZSEo0VFF5dG9uaF9NZ0RHU3BUVk5mZUZGczJ0ai12akpJSlp0ZndKU3p4MndhX3E2LTh4cWtobHNybFBRN1F6UjFNVEZ2Rk5PdmZkb1pLZlp5d1NJUXNrUFkwSWtlSGZBX0dhVmxJNnZsQlBQWUhHME1yZXlCSTU1M05Pd2JsWExOeGhpcklHdE9Vb0xHNGl6MU5oOHhqRXh1MmQ3dXpIR3JvWms3dVdrdG9VNWlYT05UUkNSaW5Qa01TUzZHdndheHF6RUJHWWJfUDhQNUR6MUFySGlfcGFSZUtZUFZwYWM2U1M2UmRhSzZJdDh2a1RLcXlCdzFlT3RRamFTTGYwR2Y4dUJCN0lhVHJxVG1fMGV0MzYwaFZLYmlRdEZadUprRURRYzhnV1hybmp2Q1VGcEFsZ0RBODRxSnJCMjNKcTlRcW05RGp0OWlUR2xsYTZHZ28wQjFTal9UVFVDWElMTkdHanRSZGpiX3RZTnVnbS00TXNxTGZIZ0ozdG5ORXRNbnFSZmh0VThRVk1tekVTZHp0RTZiWEgwUTY3RDBRU0ZObUZNOWhEYlBrZWJLV0dsR3F4SDJVVmlScV9QalBnU2ljRnVwNlpFVU1oWDVQQVBibDM2Rld3ejBHUS1tM0pDd2M5aFAzRkxlWnZUaHVXQWJUN3RweWtiSEF2YmtyQ0xRQjR3UQ%3D%3D%22%7D%2C%22registry.connect.redhat.com%22%3A%7B%22email%22%3A%22cee-ops-admins%40redhat.com%22%2C%22auth%22%3A%22NTAwNjM3NzB8dWhjLTFPVnRnb1FrcDFZRUZwSVhFYUJzOTNZSWNWbDpleUpoYkdjaU9pSlNVelV4TWlKOS5leUp6ZFdJaU9pSXpaVGs0T0RjNU1HSmhNbUUwWVRObVlUQmtORGM0WVRrd01UUmpOREUzTVNKOS5SLVFIVXJEOW90YVhKckkxRXBYaEYzWFYtcFN3SFUtXzhLYkJHSmtMQVJzMjBoUTJVY25XTGVicXk1MjdJTHdGbGIteXlDN2ZpS2ZyTGlsYTdOUDBqaUIyVFkwTjVFemxZckJXaDE4U1JreHRHVkNldnRDSEtpUER4VFlZU2ZkUVJGbjZ6ckVpRkp2Wjg4STk0bHg3QTdvSUZRSDFRQkRvLVU2T3dZSEo0VFF5dG9uaF9NZ0RHU3BUVk5mZUZGczJ0ai12akpJSlp0ZndKU3p4MndhX3E2LTh4cWtobHNybFBRN1F6UjFNVEZ2Rk5PdmZkb1pLZlp5d1NJUXNrUFkwSWtlSGZBX0dhVmxJNnZsQlBQWUhHME1yZXlCSTU1M05Pd2JsWExOeGhpcklHdE9Vb0xHNGl6MU5oOHhqRXh1MmQ3dXpIR3JvWms3dVdrdG9VNWlYT05UUkNSaW5Qa01TUzZHdndheHF6RUJHWWJfUDhQNUR6MUFySGlfcGFSZUtZUFZwYWM2U1M2UmRhSzZJdDh2a1RLcXlCdzFlT3RRamFTTGYwR2Y4dUJCN0lhVHJxVG1fMGV0MzYwaFZLYmlRdEZadUprRURRYzhnV1hybmp2Q1VGcEFsZ0RBODRxSnJCMjNKcTlRcW05RGp0OWlUR2xsYTZHZ28wQjFTal9UVFVDWElMTkdHanRSZGpiX3RZTnVnbS00TXNxTGZIZ0ozdG5ORXRNbnFSZmh0VThRVk1tekVTZHp0RTZiWEgwUTY3RDBRU0ZObUZNOWhEYlBrZWJLV0dsR3F4SDJVVmlScV9QalBnU2ljRnVwNlpFVU1oWDVQQVBibDM2Rld3ejBHUS1tM0pDd2M5aFAzRkxlWnZUaHVXQWJUN3RweWtiSEF2YmtyQ0xRQjR3UQ%3D%3D%22%7D%7D%7D%0A
        mode: 384
        overwrite: true
        path: /var/lib/kubelet/config.json
      - contents:
          source: data:,-----BEGIN%20CERTIFICATE-----%0AMIIDEDCCAfigAwIBAgIISOsKRi7RVN8wDQYJKoZIhvcNAQELBQAwJjESMBAGA1UE%0ACxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdyb290LWNhMB4XDTIyMDMwODEwMTAyNFoX%0ADTMyMDMwNTEwMTAyNFowJjESMBAGA1UECxMJb3BlbnNoaWZ0MRAwDgYDVQQDEwdy%0Ab290LWNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwWoIiKK9qE%2Bf%0AdFipdeSHg5mkKXZ%2F%2F45x2sFvjBQTOdlDlCThl8FVRSUaLVEqYUT%2BMdRcnN%2B2fZQD%0AHcy0UoZEPr79NVgJq1Ib2DOtXN6xjUUh2tNniBCpeoxO3emqML76MMO8KyEt%2Bkv2%0ARq%2BPADqewQXD0ZPlFTUmZnppgtOVMcpEFf4NGDrmXYIm4piEfxNjgmIXdgwl6JIB%0A7TMtw3sALK6f8In9USuBuHmuPLmuFGcti8NxEgcSgy3KFDP4NSqiSyixFKGTRqHB%0AOZWJDsmO%2BEIGscFFect3hf716joFhGI5bd3OFwCwuHY0kQEuxuBZDkh39e2p3bpt%0Aqalebv8enwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH%2FBAUwAwEB%0A%2FzAdBgNVHQ4EFgQUm%2FFCc9z3kfUALCN1s3phjyRFdNIwDQYJKoZIhvcNAQELBQAD%0AggEBAA1f9qP2tZ%2BLgjeXOM%2Fg8WA0e99pZ4V%2B955Xi4W6XCe9xhGqJA0jmWx1WUhh%0AAOzuamRbUazHt%2Bl%2F9beCxGcCQ3xDV0xLb29%2FCArzhnkzcOyR1vNjzkeHmtCxVwvz%0AAdopr0UIQxEsDPnQnNW7JDCTSjDtwiTSFSkAQNXwwWTzjm0hZDsW7K01JsBfvZJQ%0AawEzGRYleGPMyV2L0K5A7AEvzIjSLK6Xw8QNaJ75MGXDH951MRdZyom3yq6k7MFX%0A2T9BMReDw0SjwDgt55SIJhXaRMX7xdthllgc5oDVVGexqiFHDey6novgKpw8s%2FD5%0AOAUBEb0lKPSqJ%2FxMHTNTb4N1m%2Fc%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIIDMDCCAhigAwIBAgIILm0S2IEi7cYwDQYJKoZIhvcNAQELBQAwNjESMBAGA1UE%0ACxMJb3BlbnNoaWZ0MSAwHgYDVQQDExdhZG1pbi1rdWJlY29uZmlnLXNpZ25lcjAe%0AFw0yMjAzMDgxMDEwMjZaFw0zMjAzMDUxMDEwMjZaMDYxEjAQBgNVBAsTCW9wZW5z%0AaGlmdDEgMB4GA1UEAxMXYWRtaW4ta3ViZWNvbmZpZy1zaWduZXIwggEiMA0GCSqG%0ASIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1en%2BoPGZM%2BzljbeD479RBXjMRjldPeTGy%0AiuHx7iOJRmKECrCXol%2BHRQP2vd9eXeqOF6OJk5BbkGuxVYNtKzcQj98sCYT2GZeI%0AGpS7fbwpxKMA%2FijaWOLd%2FqCrCuoXRONdz5uy6HN7DdCxtkOX9TLfWnjyuiA%2BpPjk%0AZ1fJXlPk8oJs6BsZB0opzqfodjBnaaM%2BJ%2B4Xs3DrEYOFAMdsI35%2FSrrtX8AOMvG8%0Ayfrk0%2FRbQdp2gXODCwOI9kanppMlQGt2BCvTl6si2i4h4W%2FadxfidjJMpt9WANAA%0Ah69UUaeDPT%2BvLDVxzaxdSgXkBm73P8fbqAj3HoIii91NtirunqAlAgMBAAGjQjBA%0AMA4GA1UdDwEB%2FwQEAwICpDAPBgNVHRMBAf8EBTADAQH%2FMB0GA1UdDgQWBBRn5fXr%0AYnHSKCfDetp4ELfbeDl26TANBgkqhkiG9w0BAQsFAAOCAQEAk6OJdwcorHXMf1tZ%0Avwc8XH1Hd4N1SWV31Db9BAbUckyBhI5fufw76oD%2FcGNoARGUUgXT6ywRhOKdFHap%0AbKO%2B8vJIW1v4Jf1Ua3%2F5pG7xLkmxLZnMEPLFPDL7RQRHM7MTFeyiurAWaTDO%2Fots%0A1taSQrivn3MOV7r6q2RvuWEFtPjvWLtjxbco8iQ9fqMIIgJ4QytGgI%2FyLmKCR3xq%0AFIq454ZrjyaBoPhbxHrAtsp0ZWKwlCd4xjizRddARs%2FatHK2Bn7d7%2FNN6KvTEGcX%0AqnMkwB9j9lQYxZ7HDiok5Dr4UI3D0Aquzz1%2F0ybbaRxSnfG27DYZamE6RP5phWuY%0AiMqZ5A%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIIDHjCCAgagAwIBAgIIGQlmvCPlcn0wDQYJKoZIhvcNAQELBQAwLTESMBAGA1UE%0ACxMJb3BlbnNoaWZ0MRcwFQYDVQQDEw5rdWJlbGV0LXNpZ25lcjAeFw0yMjAzMDgx%0AMDEwMzBaFw0yMjAzMDkxMDEwMzBaMC0xEjAQBgNVBAsTCW9wZW5zaGlmdDEXMBUG%0AA1UEAxMOa3ViZWxldC1zaWduZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK%0AAoIBAQDfFs%2FVDbvfwfgfZLJv%2FbEC%2FurdpCfpXj05emXoCxKSo9Ux1uyPnbfrxFJ1%0AsBENNeAlfExjzTRwtI6zuta%2BxQ3%2FBgm6kCXxFt66Nb93pIzLwUMP0S%2BXmnUcrye3%0Avgimd%2B%2BSldhHktQGRghcoI42tpSs0Iri%2FhK%2FOqDQBi2iDEwlE4N0TI17%2FelrAkfb%0A1sKExFxUlmsuF55c%2BoXDXZRnDvpGTFgIoPyBXlxvtkc6l8Ol8F4XKo%2BevhmwtqGT%0Ao74%2BbDhJ8fXtNvnIpo1c83yG7nm2pRTn0Po%2FmdkVYW71zih21ts%2FpU5OmD%2Fk8H8e%0Ag3C8hh5oufbA8iB5r%2BL0EKXGLFRbAgMBAAGjQjBAMA4GA1UdDwEB%2FwQEAwICpDAP%0ABgNVHRMBAf8EBTADAQH%2FMB0GA1UdDgQWBBTN3PuV0382w1kuNxKLcqdDLcch3TAN%0ABgkqhkiG9w0BAQsFAAOCAQEAvI0mcLoabaeHWK%2B4RC5e5d2ULptQPr2C%2FcDx9ZWJ%0A1i%2FAnQoSDn83sDFp8jIg4A8r0Na1Mk3KdXQ7tb0H1kkl07dX3aEhiMIKy5WFg3wW%0AcNA50gqv%2FsVXA%2FDyEdE0Hg2R0Vcrbfv%2F6V%2FtTGV8UgaS1AYMy9A%2F%2F%2BD37l4oTztI%0AfvFRHotcr%2F9UvTlhg1147kBUNdUcSkk2V3Y4w9OJh4fyceBmfi6zFSyejc%2Fz7MVd%0AzhmNln%2F0aD6v4O6Ya90WCP2CUD1b%2F%2BnmphLtKVUyfRJhn18AvHBOu5265IaOM%2FCM%0A70AErvb7VH7jFHEK1yoIcLIQcDt%2FkFEBoYuuYb7b8tSNSg%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIIDNDCCAhygAwIBAgIIdpdJCTjOgJ8wDQYJKoZIhvcNAQELBQAwODESMBAGA1UE%0ACxMJb3BlbnNoaWZ0MSIwIAYDVQQDExlrdWJlLWNvbnRyb2wtcGxhbmUtc2lnbmVy%0AMB4XDTIyMDMwODEwMTAzMFoXDTIzMDMwODEwMTAzMFowODESMBAGA1UECxMJb3Bl%0AbnNoaWZ0MSIwIAYDVQQDExlrdWJlLWNvbnRyb2wtcGxhbmUtc2lnbmVyMIIBIjAN%0ABgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqNrkO5hSxHUWsKPzkDpZNNSbzpfG%0A0i25DbHZL6maNKKp%2BAR4nOPC28O02q62rWo9zltE4xkZbUu%2FiZIYF0s6bxYB%2B21q%0ApzSiaQIFIzETMv5yMbXokrzD0I1CTFi26knbVfWVABSKPj7rMVvS1MdxTLRQ3Zw0%0Axqcn%2B9pTssF95%2B73x5yOkEARCQszQjsq3ZKY8%2FiojSzd02FbBg9WEzJek7NW6Ilc%0A71yadSYnM3C%2F3IAAvIzyxBDziV7wdBbI%2FFbWV5jIibZL4meyk7IweEKcggvQ5TEZ%0An%2BUrwNq3ylSnFHIJG%2FlZQV79MWJLCKUDOkGrQSzc3rPJwGWm4U58UsHIeQIDAQAB%0Ao0IwQDAOBgNVHQ8BAf8EBAMCAqQwDwYDVR0TAQH%2FBAUwAwEB%2FzAdBgNVHQ4EFgQU%0A7zn4kuwhofBa6hkvlfFZ41tfxZ4wDQYJKoZIhvcNAQELBQADggEBAGz4PDueyujX%0A%2F3TFvnab9i3p4Xg%2BY4UDD3J32u1VkZYDcApz5xh3PInYVsLcHlKjTiAs%2FymqlaS3%0AecyunOiOJG%2FbTPeCVOSyyWgHDXaquuyoWaEHa4PB%2Bkner2aisuopF%2Bp2tAXX4ba1%0Aw9JnENoOeaO%2BgizKV%2BNqd0Fmk68%2FwVbzmlWfz5XDNMXOsc4axrms6ZlZIZuSnBaB%0A5gqgzdRGTUyDySuzZMOgDRQQ9wF60Y4gRbiJ8G5B90S8rwpnd7uNYzW85e2EGpCa%0ANZSjJyo7Np7Emh%2BsTqRktyimgr4ajtyYoM8I1q0ttA8fzu1RY%2Fd1naSDV6GZ2qEr%0Arydb1bRZPSk%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIIDQjCCAiqgAwIBAgIILKs0zTTGMbQwDQYJKoZIhvcNAQELBQAwPzESMBAGA1UE%0ACxMJb3BlbnNoaWZ0MSkwJwYDVQQDEyBrdWJlLWFwaXNlcnZlci10by1rdWJlbGV0%0ALXNpZ25lcjAeFw0yMjAzMDgxMDEwMzFaFw0yMzAzMDgxMDEwMzFaMD8xEjAQBgNV%0ABAsTCW9wZW5zaGlmdDEpMCcGA1UEAxMga3ViZS1hcGlzZXJ2ZXItdG8ta3ViZWxl%0AdC1zaWduZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC01H2%2BLYa5%0AQ8z8apBvtTr5p43pCnNLxTOJohEzMFETxdgx8ry%2B0yAV%2BsPlskjA7sMOMG%2FvlkiV%0A74lwdXyDDEwaqNmBgtkFhuf3lPpQ1TgOqSU%2BwJ8K8hs7c%2FqLuOIAGny4f1hPM5ik%0ASwpIq1q8i%2F9GEGE3wfJLi2uu42Wz2ezZkgBu1d0YwQVRLDGPGk%2BiS%2BPSaN2OjVfH%0AsMTAAe%2BgnuZuROMZTiSR3OYOJDydaacZDFykdi98vYZ%2FOqnzSOZW5aIdOmdihSnN%0ALcGRlM4ENYgf4%2BUHcCK%2FlTlNsYa55JuQh7qLFbt3qAYbSkKtlyo%2FOdQw0aTk6sHO%0AVIyoV2bSzOvVAgMBAAGjQjBAMA4GA1UdDwEB%2FwQEAwICpDAPBgNVHRMBAf8EBTAD%0AAQH%2FMB0GA1UdDgQWBBR%2FIydXyhenIUNY%2Bxp29Iqk5yP3%2BTANBgkqhkiG9w0BAQsF%0AAAOCAQEAimQSeIt1NGw%2BJfGb9Ajl4k5kICSXHoQ1R%2FeQGnuitD9GRAdWy5uiEFwQ%0ALH3GoMyCih3lhMZJXdMaZBwUwBdnkHDZOH1ZxUoP4gNXgGvnJ1Ar%2Bo%2BufX8TL6zr%0AviOxNtvakcDJqyiBA3upXFTXC0ePUA1BQqIP6jrBNaT%2Bc91j2%2FE5rY6NK2LDOjRm%0Ani1DqU%2FYDAtOE%2F504ipSotp0QpT6vQi0D2pDNCxpuhf4UZMCoQTUoaSE%2FzTn7DtF%0AQPXJF5TDKgO8llnoBrMXZ9AM6vR5rwBrrtggzd6hE%2BYmUE%2BwOqus9DcQEvRPSZgh%0Av68ae4JN9Z5MHy5N9GnfgZk3%2B3KgWA%3D%3D%0A-----END%20CERTIFICATE-----%0A-----BEGIN%20CERTIFICATE-----%0AMIIDSDCCAjCgAwIBAgIIDDeq9RQtznowDQYJKoZIhvcNAQELBQAwQjESMBAGA1UE%0ACxMJb3BlbnNoaWZ0MSwwKgYDVQQDEyNrdWJlbGV0LWJvb3RzdHJhcC1rdWJlY29u%0AZmlnLXNpZ25lcjAeFw0yMjAzMDgxMDEwMjdaFw0zMjAzMDUxMDEwMjdaMEIxEjAQ%0ABgNVBAsTCW9wZW5zaGlmdDEsMCoGA1UEAxMja3ViZWxldC1ib290c3RyYXAta3Vi%0AZWNvbmZpZy1zaWduZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6%0AZWXFIitnsK8l7WUsJUIw%2Fx76d1rtESdg7FsuBTP%2Bep6Vlr5aMzLYzTLx9mDMf493%0A1pcugcfruA4otmc7Eo2UuoEKTgRk6m50yeN2pvhiKkQHjDWmiyCU6afqszksy87m%0AcxleqV%2FEDUlaY6vAoLAvRm44FxKOw3tCkEL1lYshml8q5Hqp%2F%2B0dEx7bqTe9no42%0A0vUrdPeZkJHmgIXOw2dRUVp2gJNbYTxrheC0LYRJELamfx5oNyehtnSTKExPGSfV%0AupvbNRo4GT68Sa9XjRaUK9KhGDa0gwgqQpwT46D6d5ubbLVRAIgJlTsH2yefDpSi%0ARextAZwxjraUtFImYg11AgMBAAGjQjBAMA4GA1UdDwEB%2FwQEAwICpDAPBgNVHRMB%0AAf8EBTADAQH%2FMB0GA1UdDgQWBBTk1wyVZdxwTjMDFXw1UAVhFZ2tATANBgkqhkiG%0A9w0BAQsFAAOCAQEAUrVRz5yHoHvVvwM6dwH8exDlYcrRdF2F5NESAPC95us7EjIq%0AvWByMXmfWoNumbUem8ZUxit2xDZgwdtRpoviRtNGDnlyv8o6You2JrendhsaxtwY%0A4ahNmW3qW9HZ71baZYmb4mzlvWJe6boyKB28Xb9tQDPIRcXBFGQjEk%2Bo3%2BwK8VSf%0AM5Hzto7D5tiUTCQ14oH4RfpTaWDhKGCVDtrLgqXUie278y3HpOhGzOB8Kg%2FtRMFw%0A5kKT4WiZS4wUFYOBd11DBaGjLwg04yH3oKEVF3oyS%2FaY2ULQx%2BHdOqQ%2Fc%2FDQg%2Fdp%0Afr1WwrEMoLTo34FAPXcjFn79MtksHgJZBzV4Ng%3D%3D%0A-----END%20CERTIFICATE-----%0A
        mode: 420
        overwrite: true
        path: /etc/kubernetes/ca.crt
      - contents:
          source: data:,net.ipv4.ip_forward%20%3D%201%0Anet.ipv6.conf.all.forwarding%20%3D%201%0A
        mode: 420
        overwrite: true
        path: /etc/sysctl.d/forward.conf
      - contents:
          source: data:,%0Afs.inotify.max_user_watches%20%3D%2065536%0Afs.inotify.max_user_instances%20%3D%208192%0A
        mode: 420
        overwrite: true
        path: /etc/sysctl.d/inotify.conf
      - contents:
          source: data:,%23!%2Fbin%2Fbash%0A%23%20On%20some%20platforms%20the%20hostname%20may%20be%20too%20long%20(%3E63%20chars).%0A%23%20%20-%20On%20firstboot%20the%20hostname%20is%20set%20in%20the%20initramfs%20before%20NetworkManager%0A%23%20%20%20%20And%20it%20may%20be%20truncated%20at%2064%20characters%20(too%20long)%0A%23%20%20-%20On%20reboot%20affect%20nodes%20use%20'localhost'.%0A%23%0A%23%20This%20script%20is%20a%20simple%20workaround%20for%20hostname%20woes%2C%20including%0A%23%20%20-%20NOT%20a%20localhost%20name%0A%23%20%20-%20NOT%20longer%20than%2063%20characters.%20Names%20will%20be%20truncated%20at%20the%0A%23%20%20%20%20first%20dot%2C%20and%20then%20capped%20at%2063%20char%20(which%20ever%20is%20less).%0A%23%20%20-%20Race%20conditions%20between%20truncated%20hostnames%20by%20the%20dhclient%0A%23%20%20%20%20and%20NetworkManager.%0A%23%0A%23%20Finally%2C%20this%20script%20is%20invoked%20via%3A%0A%23%20%20-%20%2Fetc%2FNetworkManager%2Fdispatcher.d%2F90-long-hostnames%0A%23%20%20-%20on%20boot%20via%20node-valid-hostname.service%0A%0Aexport%20PATH%3D%22%2Fusr%2Fbin%3A%2Fusr%2Flocal%2Fbin%3A%2Fsbin%3A%2Fusr%2Flocal%2Fsbin%3A%2Fbin%3A%24%7BPATH%7D%22%0Alog()%20%7B%20logger%20--tag%20%22%24(basename%20%240)%22%20%22%24%7B%40%7D%22%3B%20%7D%0A%0A%23%20wait_localhost%20waits%20until%20the%20host%20gets%20a%20real%20hostname.%0A%23%20This%20will%20wait%20indefinately.%20node-valid-hostname.service%20will%20terminate%0A%23%20this%20after%205m.%0Await_localhost()%20%7B%0A%20%20%20%20log%20%22waiting%20for%20non-localhost%20hostname%20to%20be%20assigned%22%0A%20%20%20%20while%20%5B%5B%20%22%24(%3C%20%2Fproc%2Fsys%2Fkernel%2Fhostname)%22%20%3D~%20(localhost%7Clocalhost.localdomain)%20%5D%5D%3B%0A%20%20%20%20do%0A%20%20%20%20%20%20%20%20sleep%201%0A%20%20%20%20done%0A%20%20%20%20log%20%22node%20identified%20as%20%24(%3C%2Fproc%2Fsys%2Fkernel%2Fhostname)%22%0A%20%20%20%20exit%200%0A%7D%0A%0Aset_valid_hostname()%20%7B%0A%20%20%20%20local%20host_name%3D%24%7B1%7D%0A%20%20%20%20local%20type_arg%3D%22transient%22%0A%0A%20%20%20%20%23%20%2Fetc%2Fhostname%20is%20used%20for%20static%20hostnames%20and%20is%20authorative.%0A%20%20%20%20%23%20This%20will%20check%20to%20make%20sure%20that%20the%20static%20hostname%20is%20the%0A%20%20%20%20%23%20less%20than%20or%20equal%20to%2063%20characters%20in%20length.%0A%20%20%20%20if%20%5B%20-f%20%2Fetc%2Fhostname%20%5D%20%26%26%20%5B%20%22%24(cat%20%2Fetc%2Fhostname%20%7C%20wc%20-m)%22%20-gt%200%20%5D%3B%20then%0A%20%20%20%20%20%20%20%20etc_name%3D%22%24(%3C%20%2Fetc%2Fhostname)%22%0A%20%20%20%20%20%20%20%20type_arg%3D%22static%22%0A%20%20%20%20%20%20%20%20if%20%5B%20%22%24%7Betc_name%7D%22%20!%3D%20%22%24%7Bhost_name%7D%22%20%5D%3B%20then%0A%20%20%20%20%20%20%20%20%20%20%20%20log%20%22%2Fetc%2Fhostname%20is%20set%20to%20%24%7Betc_name%7D%20but%20does%20not%20match%20%24%7Bhost_name%7D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20log%20%22using%20%2Fetc%2Fhostname%20as%20the%20authorative%20name%22%0A%20%20%20%20%20%20%20%20%20%20%20%20host_name%3D%22%24%7Betc_name%7D%22%0A%20%20%20%20%20%20%20%20fi%0A%20%20%20%20fi%0A%0A%20%20%20%20%23%20Only%20mutate%20the%20hostname%20if%20the%20length%20is%20longer%20than%2063%20characters.%20The%0A%20%20%20%20%23%20hostname%20will%20be%20the%20lesser%20of%2063%20characters%20after%20the%20first%20dot%20in%20the%0A%20%20%20%20%23%20FQDN.%0A%20%20%20%20if%20%5B%20%22%24%7B%23host_name%7D%22%20-gt%2063%20%5D%3B%20then%0A%20%20%20%20%20%20%20%20alt_name%3D%24(printf%20%22%24%7Bhost_name%7D%22%20%7C%20cut%20-f1%20-d'.'%20%7C%20cut%20-c%20-63)%0A%20%20%20%20%20%20%20%20log%20%22%24%7Bhost_name%7D%20is%20longer%20than%2063%20characters%2C%20using%20trunacated%20hostname%22%0A%20%20%20%20%20%20%20%20host_name%3D%22%24%7Balt_name%7D%22%0A%20%20%20%20fi%0A%20%20%20%20log%20%22setting%20%24%7Btype_arg%7D%20hostname%20to%20%24%7Bhost_name%7D%22%0A%20%20%20%20%2Fbin%2Fhostnamectl%20%22--%24%7Btype_arg%7D%22%20set-hostname%20%22%24%7Bhost_name%7D%22%0A%20%20%20%20exit%200%0A%7D%0A%0Acli_run()%20%7B%0A%20%20%20%20mode%3D%22%24%7B1%3A%3Fmode%20must%20be%20the%20first%20argument%7D%22%3B%20shift%3B%0A%20%20%20%20case%20%22%24%7Bmode%7D%22%20in%0A%20%20%20%20%20%20%20%20%20%20%20%20wait_localhost)%20wait_localhost%3B%3B%0A%20%20%20%20%20%20%20%20set_valid_hostname)%20hname%3D%22%24%7B1%3A%3Fhostname%20is%20a%20required%20last%20argument%7D%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20set_valid_hostname%20%22%24%7Bhname%7D%22%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20*)%20log%20%22unknown%20mode%20%24%7Bmode%7D%22%3B%20exit%201%3B%3B%0A%20%20%20%20esac%0A%7D%0A%0A%23%20Allow%20the%20functions%20to%20be%20sourced.%20This%20can%20be%20run%20either%20as%20a%0A%23%20standalone%20command%20or%20in%20systemd%20or%20part%20of%20NetworkManager.%0Aif%20%5B%5B%20%22%24%7BBASH_SOURCE%5B0%5D%7D%22%20%3D%3D%20%22%24%7B0%7D%22%20%5D%5D%3B%20then%0A%20%20%20%20cli_run%20%24%7B%40%7D%0Afi%0A
        mode: 493
        overwrite: true
        path: /usr/local/sbin/set-valid-hostname.sh
      - contents:
          source: data:,
        mode: 493
        overwrite: true
        path: /etc/kubernetes/kubelet-plugins/volume/exec/.dummy
      - contents:
          source: data:,unqualified-search-registries%20%3D%20%5B'registry.access.redhat.com'%2C%20'docker.io'%5D%0A
        mode: 420
        overwrite: true
        path: /etc/containers/registries.conf
      - contents:
          source: data:,%5Bcrio.api%5D%0Astream_address%20%3D%20%22%22%0Astream_port%20%3D%20%2210010%22%0A%0A%5Bcrio.runtime%5D%0Aconmon%20%3D%20%22%2Fusr%2Flibexec%2Fcrio%2Fconmon%22%0Aconmon_cgroup%20%3D%20%22pod%22%0Adefault_env%20%3D%20%5B%0A%20%20%20%20%22NSS_SDB_USE_CACHE%3Dno%22%2C%0A%5D%0Alog_level%20%3D%20%22info%22%0Acgroup_manager%20%3D%20%22systemd%22%0Adefault_sysctls%20%3D%20%5B%0A%20%20%20%20%22net.ipv4.ping_group_range%3D0%202147483647%22%2C%0A%5D%0Ahooks_dir%20%3D%20%5B%0A%20%20%20%20%22%2Fetc%2Fcontainers%2Foci%2Fhooks.d%22%2C%0A%20%20%20%20%22%2Frun%2Fcontainers%2Foci%2Fhooks.d%22%2C%0A%5D%0Amanage_ns_lifecycle%20%3D%20true%0A%0A%5Bcrio.image%5D%0Aglobal_auth_file%20%3D%20%22%2Fvar%2Flib%2Fkubelet%2Fconfig.json%22%0Apause_image%20%3D%20%22quay.io%2Fopenshift-release-dev%2Focp-v4.0-art-dev%40sha256%3Aee6eaf5cd7abe6fbbf5f42f553a07a8ff387f6f003ca2aa19514894e52401694%22%0Apause_image_auth_file%20%3D%20%22%2Fvar%2Flib%2Fkubelet%2Fconfig.json%22%0Apause_command%20%3D%20%22%2Fusr%2Fbin%2Fpod%22%0A%0A%5Bcrio.network%5D%0Anetwork_dir%20%3D%20%22%2Fetc%2Fkubernetes%2Fcni%2Fnet.d%2F%22%0Aplugin_dirs%20%3D%20%5B%0A%20%20%20%20%22%2Fvar%2Flib%2Fcni%2Fbin%22%2C%0A%20%20%20%20%22%2Fusr%2Flibexec%2Fcni%22%2C%0A%5D%0A%0A%5Bcrio.metrics%5D%0Aenable_metrics%20%3D%20true%0Ametrics_port%20%3D%209537%0A
        mode: 420
        overwrite: true
        path: /etc/crio/crio.conf.d/00-default
      - contents:
          source: data:,%7B%0A%20%20%20%20%22default%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22type%22%3A%20%22insecureAcceptAnything%22%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%5D%2C%0A%20%20%20%20%22transports%22%3A%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%22docker-daemon%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%22%3A%20%5B%7B%22type%22%3A%22insecureAcceptAnything%22%7D%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%7D
        mode: 420
        overwrite: true
        path: /etc/containers/policy.json
      - contents:
          source: data:,
        mode: 420
        overwrite: true
        path: /etc/kubernetes/cloud.conf
      - contents:
          source: data:,kind%3A%20KubeletConfiguration%0AapiVersion%3A%20kubelet.config.k8s.io%2Fv1beta1%0Aauthentication%3A%0A%20%20x509%3A%0A%20%20%20%20clientCAFile%3A%20%2Fetc%2Fkubernetes%2Fkubelet-ca.crt%0A%20%20anonymous%3A%0A%20%20%20%20enabled%3A%20false%0AcgroupDriver%3A%20systemd%0AcgroupRoot%3A%20%2F%0AclusterDNS%3A%0A%20%20-%20172.30.0.10%0AclusterDomain%3A%20cluster.local%0AcontainerLogMaxSize%3A%2050Mi%0AmaxPods%3A%20250%0AkubeAPIQPS%3A%2050%0AkubeAPIBurst%3A%20100%0ArotateCertificates%3A%20true%0AserializeImagePulls%3A%20false%0AstaticPodPath%3A%20%2Fetc%2Fkubernetes%2Fmanifests%0AsystemCgroups%3A%20%2Fsystem.slice%0AsystemReserved%3A%0A%20%20cpu%3A%20500m%0A%20%20memory%3A%201Gi%0A%20%20ephemeral-storage%3A%201Gi%0AfeatureGates%3A%0A%20%20APIPriorityAndFairness%3A%20true%0A%20%20LegacyNodeRoleBehavior%3A%20false%0A%20%20NodeDisruptionExclusion%3A%20true%0A%20%20RotateKubeletServerCertificate%3A%20true%0A%20%20SCTPSupport%3A%20true%0A%20%20ServiceNodeExclusion%3A%20true%0A%20%20SupportPodPidsLimit%3A%20true%0AserverTLSBootstrap%3A%20true%0A
        mode: 420
        overwrite: true
        path: /etc/kubernetes/kubelet.conf
    systemd:
      units:
      - dropins:
        - contents: |
            [Unit]
          name: 10-mco-default-env.conf
        - contents: |
            [Service]
            Environment="GODEBUG=x509ignoreCN=0,madvdontneed=1"
          name: 10-mco-default-madv.conf
        name: crio.service
      - dropins:
        - contents: |
            [Unit]
            ConditionPathExists=/enoent
          name: mco-disabled.conf
        name: docker.socket
      - contents: |
          [Unit]
          Description=Kubernetes Kubelet
          Wants=rpc-statd.service network-online.target crio.service
          After=network-online.target crio.service
          After=ostree-finalize-staged.service

          [Service]
          Type=notify
          ExecStartPre=/bin/mkdir --parents /etc/kubernetes/manifests
          ExecStartPre=/bin/rm -f /var/lib/kubelet/cpu_manager_state
          Environment="KUBELET_LOG_LEVEL=3"
          EnvironmentFile=/etc/os-release
          EnvironmentFile=-/etc/kubernetes/kubelet-workaround
          EnvironmentFile=-/etc/kubernetes/kubelet-env

          ExecStart=/usr/bin/hyperkube \
              kubelet \
                --config=/etc/kubernetes/kubelet.conf \
                --bootstrap-kubeconfig=/etc/kubernetes/kubeconfig \
                --kubeconfig=/var/lib/kubelet/kubeconfig \
                --container-runtime=remote \
                --container-runtime-endpoint=/var/run/crio/crio.sock \
                --runtime-cgroups=/system.slice/crio.service \
                --node-labels=node-role.kubernetes.io/worker,node.openshift.io/os_id=${ID} \
                --node-ip=${KUBELET_NODE_IP} \
                --minimum-container-ttl-duration=6m0s \
                --volume-plugin-dir=/etc/kubernetes/kubelet-plugins/volume/exec \
                --cloud-provider= \
                 \
                --pod-infra-container-image=quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:ee6eaf5cd7abe6fbbf5f42f553a07a8ff387f6f003ca2aa19514894e52401694 \
                --v=${KUBELET_LOG_LEVEL}

          Restart=always
          RestartSec=10

          [Install]
          WantedBy=multi-user.target
        dropins:
        - contents: |
            [Unit]
          name: 10-mco-default-env.conf
        - contents: |
            [Service]
            Environment="GODEBUG=x509ignoreCN=0,madvdontneed=1"
          name: 10-mco-default-madv.conf
        enabled: true
        name: kubelet.service
      - contents: |
          [Unit]
          Description=Machine Config Daemon Firstboot
          # Make sure it runs only on OSTree booted system
          ConditionPathExists=/run/ostree-booted
          # Removal of this file signals firstboot completion
          ConditionPathExists=/etc/ignition-machine-config-encapsulated.json
          After=machine-config-daemon-pull.service
          Before=crio.service crio-wipe.service
          Before=kubelet.service

          [Service]
          Type=oneshot
          RemainAfterExit=yes
          # Disable existing repos (if any) so that OS extensions would use embedded RPMs only
          ExecStartPre=-/usr/bin/sh -c "sed -i 's/enabled=1/enabled=0/' /etc/yum.repos.d/*.repo"
          ExecStart=/run/bin/machine-config-daemon firstboot-complete-machineconfig

          [Install]
          WantedBy=multi-user.target
          RequiredBy=crio.service kubelet.service
        enabled: true
        name: machine-config-daemon-firstboot.service
      - contents: |
          [Unit]
          Description=Machine Config Daemon Pull
          # Make sure it runs only on OSTree booted system
          ConditionPathExists=/run/ostree-booted
          # This "stamp file" is unlinked when we complete
          # machine-config-daemon-firstboot.service
          ConditionPathExists=/etc/ignition-machine-config-encapsulated.json
          Wants=network-online.target
          After=network-online.target

          [Service]
          Type=oneshot
          RemainAfterExit=yes
          # See https://github.com/coreos/fedora-coreos-tracker/issues/354
          ExecStart=/bin/sh -c '/bin/mkdir -p /run/bin && chcon --reference=/usr/bin /run/bin'
          ExecStart=/bin/sh -c "while ! /usr/bin/podman pull --authfile=/var/lib/kubelet/config.json --quiet 'quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:44af0373c6d9ac03c0453fd50cc78ee9b2d8782ed3fccc5bf4e510fd0937d6a9'; do sleep 1; done"
          ExecStart=/bin/sh -c "/usr/bin/podman run --rm --quiet --net=host --entrypoint=cat 'quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:44af0373c6d9ac03c0453fd50cc78ee9b2d8782ed3fccc5bf4e510fd0937d6a9' /usr/bin/machine-config-daemon > /run/bin/machine-config-daemon.tmp"
          ExecStart=/bin/sh -c '/usr/bin/chmod a+x /run/bin/machine-config-daemon.tmp && mv /run/bin/machine-config-daemon.tmp /run/bin/machine-config-daemon'

          [Install]
          RequiredBy=machine-config-daemon-firstboot.service
        enabled: true
        name: machine-config-daemon-pull.service
      - contents: |
          [Unit]
          Description=Ensure the node hostname is valid for the cluster
          Before=network-online.target

          [Service]
          Type=oneshot
          RemainAfterExit=yes
          User=root

          # SystemD prevents direct execution of the script in /usr/local/sbin,
          # so it is sourced. See the script for functionality.
          ExecStart=/bin/bash -c "source /usr/local/sbin/set-valid-hostname.sh; wait_localhost; set_valid_hostname `hostname`"

          # Wait up to 5min for the node to get a real hostname.
          TimeoutSec=300

          [Install]
          WantedBy=multi-user.target
          # Ensure that network-online.target will not complete until the node has a real hostname.
          RequiredBy=network-online.target
        enabled: true
        name: node-valid-hostname.service
      - contents: |
          [Unit]
          Description=Writes IP address configuration so that kubelet and crio services select a valid node IP
          Wants=network-online.target
          After=network-online.target ignition-firstboot-complete.service
          Before=kubelet.service crio.service

          [Service]
          # Need oneshot to delay kubelet
          Type=oneshot
          # Would prefer to do Restart=on-failure instead of this bash retry loop, but
          # the version of systemd we have right now doesn't support it. It should be
          # available in systemd v244 and higher.
          ExecStart=/bin/bash -c " \
            until \
            /usr/bin/podman run --rm \
            --authfile /var/lib/kubelet/config.json \
            --net=host \
            --volume /etc/systemd/system:/etc/systemd/system:z \
            quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:0d89cb912f132ded39de025d8c11e239bc3af83d845f17322112c8fc4b092123 \
            node-ip \
            set \
            --retry-on-failure; \
            do \
            sleep 5; \
            done"

          [Install]
          RequiredBy=kubelet.service
        enabled: true
        name: nodeip-configuration.service
      - enabled: true
        name: openvswitch.service
      - contents: |
          [Unit]
          Description=Configures OVS with proper host networking configuration
          # Removal of this file signals firstboot completion
          ConditionPathExists=!/etc/ignition-machine-config-encapsulated.json
          # This service is used to move a physical NIC into OVS and reconfigure OVS to use the host IP
          Requires=openvswitch.service
          Wants=NetworkManager-wait-online.service
          After=NetworkManager-wait-online.service openvswitch.service network.service
          Before=network-online.target kubelet.service crio.service node-valid-hostname.service

          [Service]
          # Need oneshot to delay kubelet
          Type=oneshot
          ExecStart=/usr/local/bin/configure-ovs.sh OpenShiftSDN
          StandardOutput=journal+console
          StandardError=journal+console

          [Install]
          WantedBy=network-online.target
        enabled: true
        name: ovs-configuration.service
      - dropins:
        - contents: |
            [Service]
            Restart=always
            ExecStartPre=-/bin/sh -c '/usr/bin/chown -R :$${OVS_USER_ID##*:} /var/lib/openvswitch'
            ExecStartPre=-/bin/sh -c '/usr/bin/chown -R :$${OVS_USER_ID##*:} /etc/openvswitch'
            ExecStartPre=-/bin/sh -c '/usr/bin/chown -R :$${OVS_USER_ID##*:} /run/openvswitch'
          name: 10-ovs-vswitchd-restart.conf
        name: ovs-vswitchd.service
      - dropins:
        - contents: |
            [Service]
            Restart=always
          name: 10-ovsdb-restart.conf
        enabled: true
        name: ovsdb-server.service
      - dropins:
        - contents: |
            [Unit]
          name: 10-mco-default-env.conf
        name: pivot.service
      - dropins:
        - contents: |
            [Unit]
            ConditionPathExists=/enoent
          name: mco-disabled.conf
        name: zincati.service
  extensions: []
  fips: false
  kernelArguments: []
  kernelType: default
  osImageURL: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:6ea6c6f23e0fe047c5813c0607c3bed53dc6bcf2c1064f8fc72235236aacc182
