From 1875213788f4472cc11ce8e732cd4780e99ca477 Mon Sep 17 00:00:00 2001 From: Pavel Moravec Date: Fri, 8 May 2020 15:38:36 +0200 Subject: [PATCH] [containers_common] collect rootless containers info Add the ability to collect data/info about rootless podman/buildah containers, in particular: - containers_common plugopt 'rootlessusers' as a list of users to inspect - for each user, collect: - its containers config - [podman|buildah] info and [UID|GID] map - collect user-status and few user-related config files Resolves: #2055 Signed-off-by: Pavel Moravec Signed-off-by: Jake Hunsaker --- sos/plugins/containers_common.py | 29 +++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/sos/plugins/containers_common.py b/sos/plugins/containers_common.py index 99ae88fe..9a878849 100644 --- a/sos/plugins/containers_common.py +++ b/sos/plugins/containers_common.py @@ -9,6 +9,7 @@ # See the LICENSE file in the source distribution for further information. from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin +import os class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): @@ -17,11 +18,39 @@ class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): plugin_name = 'containers_common' profiles = ('container', ) packages = ('containers-common', ) + option_list = [ + ('rootlessusers', 'colon-separated list of users\' containers info', + '', ''), + ] def setup(self): self.add_copy_spec([ '/etc/containers/*', '/usr/share/containers/*', + '/etc/subuid', + '/etc/subgid', ]) + self.add_cmd_output(['loginctl user-status']) + + users_opt = self.get_option('rootlessusers') + users_list = [] + if users_opt: + users_list = [x for x in users_opt.split(':') if x] + + user_subcmds = [ + 'info', + 'unshare cat /proc/self/uid_map', + 'unshare cat /proc/self/gid_map' + ] + for user in users_list: + # collect user's containers' config + self.add_copy_spec( + '%s/.config/containers/' % (os.path.expanduser('~%s') % user)) + # collect the user's podman/buildah info and uid/guid maps + for binary in ['/usr/bin/podman', '/usr/bin/buildah']: + for cmd in user_subcmds: + self.add_cmd_output([ + 'machinectl -q shell %s@ %s %s' % (user, binary, cmd) + ]) # vim: set et ts=4 sw=4 : -- 2.21.3 From c2d4c7d1f3ecf6ac59c665cb5138cb2ddda71b3d Mon Sep 17 00:00:00 2001 From: Pavel Moravec Date: Fri, 22 May 2020 08:17:30 +0200 Subject: [PATCH] [containers_common] fix user's home expansion Apply os.path.expanduser on ~[user], not ~%s . Relates to: #2082 Signed-off-by: Pavel Moravec Signed-off-by: Jake Hunsaker --- sos/plugins/containers_common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sos/plugins/containers_common.py b/sos/plugins/containers_common.py index 9a878849..da360c7e 100644 --- a/sos/plugins/containers_common.py +++ b/sos/plugins/containers_common.py @@ -45,7 +45,7 @@ class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): for user in users_list: # collect user's containers' config self.add_copy_spec( - '%s/.config/containers/' % (os.path.expanduser('~%s') % user)) + '%s/.config/containers/' % (os.path.expanduser('~%s' % user))) # collect the user's podman/buildah info and uid/guid maps for binary in ['/usr/bin/podman', '/usr/bin/buildah']: for cmd in user_subcmds: -- 2.21.3 From 569f261801d3a4da2852c0b40be78b701056edaa Mon Sep 17 00:00:00 2001 From: Pavel Moravec Date: Fri, 22 May 2020 08:20:11 +0200 Subject: [PATCH] [containers_common] Call machinectl on foreground Commands like: machinectl -q shell user1@ .. hang if not called on foreground / with terminal. Resolves: #2082 Signed-off-by: Pavel Moravec Signed-off-by: Jake Hunsaker --- sos/plugins/containers_common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sos/plugins/containers_common.py b/sos/plugins/containers_common.py index da360c7e..92c2e9e8 100644 --- a/sos/plugins/containers_common.py +++ b/sos/plugins/containers_common.py @@ -51,6 +51,6 @@ class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): for cmd in user_subcmds: self.add_cmd_output([ 'machinectl -q shell %s@ %s %s' % (user, binary, cmd) - ]) + ], foreground=True) # vim: set et ts=4 sw=4 : -- 2.21.3 From 2b158a5c2a963c52cf5a96b27cc07c73b5829d59 Mon Sep 17 00:00:00 2001 From: Pavel Moravec Date: Thu, 9 Jul 2020 15:38:47 +0200 Subject: [PATCH] [containers_common] collect user-related commands outputs podman and buildah commands should be collected on per-user basis, as declared by rootlessusers plugin option. Resolves: #2145 Signed-off-by: Pavel Moravec Signed-off-by: Jake Hunsaker --- sos/plugins/containers_common.py | 36 ++++++++++++++++++------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/sos/plugins/containers_common.py b/sos/plugins/containers_common.py index 92c2e9e8..08962a94 100644 --- a/sos/plugins/containers_common.py +++ b/sos/plugins/containers_common.py @@ -30,7 +30,6 @@ class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): '/etc/subuid', '/etc/subgid', ]) - self.add_cmd_output(['loginctl user-status']) users_opt = self.get_option('rootlessusers') users_list = [] @@ -38,19 +37,36 @@ class ContainersCommon(Plugin, RedHatPlugin, UbuntuPlugin): users_list = [x for x in users_opt.split(':') if x] user_subcmds = [ - 'info', - 'unshare cat /proc/self/uid_map', - 'unshare cat /proc/self/gid_map' + 'podman info', + 'podman unshare cat /proc/self/uid_map', + 'podman unshare cat /proc/self/gid_map', + 'podman images', + 'podman pod ps', + 'podman port --all', + 'podman ps', + 'podman ps -a', + 'podman stats --no-stream --all', + 'podman version', + 'podman volume ls', + 'buildah info', + 'buildah unshare cat /proc/self/uid_map', + 'buildah unshare cat /proc/self/gid_map', + 'buildah containers', + 'buildah containers --all', + 'buildah images', + 'buildah images --all', + 'buildah version', ] for user in users_list: # collect user's containers' config self.add_copy_spec( '%s/.config/containers/' % (os.path.expanduser('~%s' % user))) - # collect the user's podman/buildah info and uid/guid maps - for binary in ['/usr/bin/podman', '/usr/bin/buildah']: - for cmd in user_subcmds: - self.add_cmd_output([ - 'machinectl -q shell %s@ %s %s' % (user, binary, cmd) - ], foreground=True) + # collect user-status + self.add_cmd_output('loginctl user-status %s' % user) + # collect the user's related commands + self.add_cmd_output([ + 'machinectl -q shell %s@ /usr/bin/%s' % (user, cmd) + for cmd in user_subcmds + ], foreground=True) # vim: set et ts=4 sw=4 : -- 2.26.2