diff --git a/docs/containers.conf.5.md b/docs/containers.conf.5.md index ac21c7ed4..638c393d2 100644 --- a/docs/containers.conf.5.md +++ b/docs/containers.conf.5.md @@ -621,15 +621,23 @@ Number of CPU's a machine is created with. The size of the disk in GB created when init-ing a podman-machine VM -**image**="testing" +**image**="" Default image used when creating a new VM using `podman machine init`. -Options: `testing`, `stable`, `next`, or a custom path or download URL to an image +Options: On Linux/Mac, `testing`, `stable`, `next`. On Windows, the major +version of the OS (e.g `35`). For all platforms you can alternatively specify +a custom path or download URL to an image. The default is `testing` on +Linux/Mac, and `35` on Windows. **memory**=2048 Memory in MB a machine is created with. +**user**="" + +Username to use and create on the podman machine OS for rootless container +access. The default value is `user`. On Linux/Mac the default is`core`. + # FILES **containers.conf** diff --git a/pkg/config/config.go b/pkg/config/config.go index 29c505e9c..f419601e9 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -512,6 +512,8 @@ type MachineConfig struct { Image string `toml:"image,omitempty"` // Memory in MB a machine is created with. Memory uint64 `toml:"memory,omitempty,omitzero"` + // Username to use for rootless podman when init-ing a podman machine VM + User string `toml:"user,omitempty"` } // Destination represents destination for remote service diff --git a/pkg/config/containers.conf b/pkg/config/containers.conf index 84b49b7e4..4e8ad21f8 100644 --- a/pkg/config/containers.conf +++ b/pkg/config/containers.conf @@ -587,6 +587,11 @@ default_sysctls = [ # #memory=2048 +# The username to use and create on the podman machine OS for rootless +# container access. +# +#user = "core" + # The [machine] table MUST be the last entry in this file. # (Unless another table is added) # TOML does not provide a way to end a table other than a further table being diff --git a/pkg/config/default.go b/pkg/config/default.go index 8821aa91e..cd7fea4a1 100644 --- a/pkg/config/default.go +++ b/pkg/config/default.go @@ -227,8 +227,9 @@ func defaultMachineConfig() MachineConfig { return MachineConfig{ CPUs: 1, DiskSize: 100, - Image: "testing", + Image: getDefaultMachineImage(), Memory: 2048, + User: getDefaultMachineUser(), } } diff --git a/pkg/config/default_linux.go b/pkg/config/default_linux.go index c68c0b130..9446d3ff9 100644 --- a/pkg/config/default_linux.go +++ b/pkg/config/default_linux.go @@ -13,6 +13,17 @@ const ( oldMaxSize = uint64(1048576) ) +// getDefaultMachineImage returns the default machine image stream +// On Linux/Mac, this returns the FCOS stream +func getDefaultMachineImage() string { + return "testing" +} + +// getDefaultMachineUser returns the user to use for rootless podman +func getDefaultMachineUser() string { + return "core" +} + // getDefaultRootlessNetwork returns the default rootless network configuration. // It is "slirp4netns" for Linux. func getDefaultRootlessNetwork() string { diff --git a/pkg/config/default_unsupported.go b/pkg/config/default_unsupported.go index e38fb810d..b6ee286ec 100644 --- a/pkg/config/default_unsupported.go +++ b/pkg/config/default_unsupported.go @@ -1,7 +1,18 @@ -// +build !linux +// +build !linux,!windows package config +// getDefaultMachineImage returns the default machine image stream +// On Linux/Mac, this returns the FCOS stream +func getDefaultMachineImage() string { + return "testing" +} + +// getDefaultMachineUser returns the user to use for rootless podman +func getDefaultMachineUser() string { + return "core" +} + // getDefaultRootlessNetwork returns the default rootless network configuration. // It is "cni" for non-Linux OSes (to better support `podman-machine` usecases). func getDefaultRootlessNetwork() string { diff --git a/pkg/config/default_windows.go b/pkg/config/default_windows.go new file mode 100644 index 000000000..5f8dd1a28 --- /dev/null +++ b/pkg/config/default_windows.go @@ -0,0 +1,28 @@ +package config + +// getDefaultImage returns the default machine image stream +// On Windows this refers to the Fedora major release number +func getDefaultMachineImage() string { + return "35" +} + +// getDefaultMachineUser returns the user to use for rootless podman +func getDefaultMachineUser() string { + return "user" +} + +// getDefaultRootlessNetwork returns the default rootless network configuration. +// It is "cni" for non-Linux OSes (to better support `podman-machine` usecases). +func getDefaultRootlessNetwork() string { + return "cni" +} + +// isCgroup2UnifiedMode returns whether we are running in cgroup2 mode. +func isCgroup2UnifiedMode() (isUnified bool, isUnifiedErr error) { + return false, nil +} + +// getDefaultProcessLimits returns the nofile and nproc for the current process in ulimits format +func getDefaultProcessLimits() []string { + return []string{} +}