image:
  distribution: oracle

source:
  downloader: oraclelinux-http
  url: https://mirrors.kernel.org/oracle/

targets:
  lxc:
    create_message: |
      You just created a {{ image.description }} container.
    config:
    - type: all
      before: 5
      content: |-
        lxc.include = LXC_TEMPLATE_CONFIG/centos.common.conf

    - type: user
      before: 5
      content: |-
        lxc.include = LXC_TEMPLATE_CONFIG/centos.userns.conf

    - type: all
      after: 4
      content: |-
        lxc.include = LXC_TEMPLATE_CONFIG/common.conf

    - type: user
      after: 4
      content: |-
        lxc.include = LXC_TEMPLATE_CONFIG/userns.conf

    - type: all
      content: |-
        lxc.arch = {{ image.architecture_kernel }}

files:
- name: hostname
  path: /etc/hostname
  generator: hostname

- name: hosts
  path: /etc/hosts
  generator: hosts

- name: ifcfg-eth0
  path: /etc/sysconfig/network-scripts/ifcfg-eth0
  generator: dump
  templated: true
  content: |-
    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    HOSTNAME=LXC_NAME
    NM_CONTROLLED=no
    TYPE=Ethernet
    MTU=
    DHCP_HOSTNAME=`hostname`
  releases:
  - 7

- name: ifcfg-eth0.incus
  path: /etc/sysconfig/network-scripts/ifcfg-eth0
  generator: template
  content: |-
    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    HOSTNAME={{ container.name }}
    NM_CONTROLLED=no
    TYPE=Ethernet
    MTU=
    DHCP_HOSTNAME=`hostname`
  releases:
  - 7

- name: ifcfg-eth0
  path: /etc/sysconfig/network-scripts/ifcfg-eth0
  generator: dump
  templated: true
  content: |-
    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    HOSTNAME=LXC_NAME
    TYPE=Ethernet
    MTU=
    DHCP_HOSTNAME=`cat /proc/sys/kernel/hostname`
  releases:
  - 8
  - 9

- name: ifcfg-eth0.incus
  path: /etc/sysconfig/network-scripts/ifcfg-eth0
  generator: template
  content: |-
    DEVICE=eth0
    BOOTPROTO=dhcp
    ONBOOT=yes
    HOSTNAME={{ container.name }}
    TYPE=Ethernet
    MTU=
    DHCP_HOSTNAME=`cat /proc/sys/kernel/hostname`
    IPV6INIT=yes
  releases:
  - 8
  - 9

- name: network
  path: /etc/sysconfig/network
  generator: dump
  templated: true
  content: |-
    NETWORKING=yes
    HOSTNAME=LXC_NAME

- name: network.incus
  path: /etc/sysconfig/network
  generator: template
  content: |-
    NETWORKING=yes
    HOSTNAME={{ container.name }}

- name: meta-data
  generator: cloud-init
  variants:
  - cloud

- name: network-config
  generator: cloud-init
  content: |-
    {% if config_get("user.network-config", "") == "" %}version: 1
    config:
      - type: physical
        name: {% if instance.type == "virtual-machine" %}enp5s0{% else %}eth0{% endif %}
        subnets:
          - type: {% if config_get("user.network_mode", "") == "link-local" %}manual{% else %}dhcp{% endif %}
            control: auto
          - type: dhcp6
            control: auto{% else %}{{ config_get("user.network-config", "") }}{% endif %}
  variants:
  - cloud
  releases:
  - 8
  - 9

- name: user-data
  generator: cloud-init
  variants:
  - cloud

- name: vendor-data
  generator: cloud-init
  variants:
  - cloud

- name: fstab
  path: /etc/fstab
  generator: dump

- name: cloud-init-system_info-distro
  path: /etc/cloud/cloud.cfg.d/99_incus.cfg
  generator: dump
  content: |-
    # Set distro to Fedora as cloud-init doesn't support Oracle Linux.
    # If not set, it will use Ubuntu as the fallback distro, and fail.
    system_info:
        distro: fedora
  variants:
  - cloud
  releases:
  - 8
  - 9

packages:
  manager: yum
  update: true
  cleanup: true
  sets:
  - packages:
    - rsyslog
    - tcp_wrappers-libs
    action: install
    releases:
    - 7

  - packages:
    - attr
    - curl
    - dhclient
    - initscripts
    - openssh-clients
    - passwd
    - policycoreutils
    - rootfiles
    - sudo
    - systemd-udev
    - vim-minimal
    action: install

  - packages:
    - NetworkManager
    action: install
    releases:
    - 8
    - 9

  - packages:
    - cloud-init
    - hostname
    action: install
    variants:
    - cloud

  - packages:
    - openssh-server
    action: install
    variants:
    - cloud
    releases:
    - 7

  repositories:
  - name: AppStream
    url: |-
      [AppStream]
      name=Oracle Linux AppStream
      baseurl=http://yum.oracle.com/repo/OracleLinux/OL{{ image.release }}/appstream/$basearch/
      enabled=1
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
    releases:
    - 8
    - 9
    variants:
    - cloud

actions:
- trigger: post-unpack
  action: |-
    #!/bin/sh
    # Make sure we have our template targets
    touch /etc/hosts
    touch /etc/hostname

- trigger: post-packages
  action: |-
    #!/bin/sh
    set -eux

    # Disable SELinux
    mkdir -p /selinux
    echo 0 > /selinux/enforce

    # Disable loginuid in PAM stack
    sed -i '/^session.*pam_loginuid.so/s/^session/# session/' /etc/pam.d/*

# Strip security.ima from all files that have it set.
- trigger: post-files
  action: |-
    #!/bin/sh
    set -eu
    getfattr --absolute-names -RPh -n security.ima -e hex / 2>/dev/null | grep "^# file:" | cut -d" " -f3- | while read line; do
        setfattr -h -x security.ima "${line}" 2>/dev/null || true
    done
  types:
  - container
