From 2b37cf7a9ea0d936425cfceabbf80fc65a630d1e Mon Sep 17 00:00:00 2001
From: Clark Boylan <clark.boylan@gmail.com>
Date: Thu, 18 May 2023 14:25:52 -0700
Subject: [PATCH] Force cgroupfs cgroup manager with podman on ubuntu

Per https://github.com/containers/podman-compose/issues/209 it seems
this is a known thing with non root containers, podman, and Ubuntu. Just
apply the necessary woraround in a config file so that we don't have to
be aware of it every time we try to use podman in this way. It also
makes using podman-compose simpler.

Change-Id: Ic024e242d99b7f0d4fbd4cf2c3489022b364672d
---
 roles/ensure-podman/tasks/Ubuntu-18.04.yaml | 11 +++++++++++
 roles/ensure-podman/tasks/Ubuntu-22.04.yaml | 11 +++++++++++
 roles/ensure-podman/tasks/Ubuntu.yaml       | 11 +++++++++++
 3 files changed, 33 insertions(+)

diff --git a/roles/ensure-podman/tasks/Ubuntu-18.04.yaml b/roles/ensure-podman/tasks/Ubuntu-18.04.yaml
index 632fcf599..68af3e088 100644
--- a/roles/ensure-podman/tasks/Ubuntu-18.04.yaml
+++ b/roles/ensure-podman/tasks/Ubuntu-18.04.yaml
@@ -21,3 +21,14 @@
   file:
     state: absent
     path: /etc/containers/registries.conf
+
+- name: Create containers config dir
+  file:
+    path: '{{ ansible_user_dir }}/.config/containers'
+    state: directory
+- name: Force cgroup manager to cgroupfs for Ubuntu
+  copy:
+    content: |
+      [engine]
+      cgroup_manager = "cgroupfs"
+    dest: '{{ ansible_user_dir }}/.config/containers/containers.conf'
diff --git a/roles/ensure-podman/tasks/Ubuntu-22.04.yaml b/roles/ensure-podman/tasks/Ubuntu-22.04.yaml
index eff9ff18a..c5c7c4dd2 100644
--- a/roles/ensure-podman/tasks/Ubuntu-22.04.yaml
+++ b/roles/ensure-podman/tasks/Ubuntu-22.04.yaml
@@ -10,3 +10,14 @@
       - golang-github-containernetworking-plugin-dnsname
     state: present
   become: yes
+
+- name: Create containers config dir
+  file:
+    path: '{{ ansible_user_dir }}/.config/containers'
+    state: directory
+- name: Force cgroup manager to cgroupfs for Ubuntu
+  copy:
+    content: |
+      [engine]
+      cgroup_manager = "cgroupfs"
+    dest: '{{ ansible_user_dir }}/.config/containers/containers.conf'
diff --git a/roles/ensure-podman/tasks/Ubuntu.yaml b/roles/ensure-podman/tasks/Ubuntu.yaml
index b86a75f1f..556ef96ef 100644
--- a/roles/ensure-podman/tasks/Ubuntu.yaml
+++ b/roles/ensure-podman/tasks/Ubuntu.yaml
@@ -25,3 +25,14 @@
   file:
     state: absent
     path: /etc/containers/registries.conf
+
+- name: Create containers config dir
+  file:
+    path: '{{ ansible_user_dir }}/.config/containers'
+    state: directory
+- name: Force cgroup manager to cgroupfs for Ubuntu
+  copy:
+    content: |
+      [engine]
+      cgroup_manager = "cgroupfs"
+    dest: '{{ ansible_user_dir }}/.config/containers/containers.conf'