diff options
author | Phil Dibowitz <phil@ipom.com> | 2020-06-29 18:09:52 -0700 |
---|---|---|
committer | Phil Dibowitz <phil@ipom.com> | 2020-06-30 10:08:42 -0700 |
commit | 7b867b20c2586db0dab0f0ba4f94c6a0c13d9033 (patch) | |
tree | eca41c86df63e4b15b389e7105ed489b6739cff3 | |
parent | 7bd12469af0ba7227d77124dce4cdf7b9051e331 (diff) | |
download | ohai-7b867b20c2586db0dab0f0ba4f94c6a0c13d9033.tar.gz |
Fix docker detection in ohai virtualization
We ran into an issue where when running in docker containers on GH
Actions (which is on azure which is on HyperV), we were getting detected
as being run on a hyperv guest... which is indirectly true, but not
really the most correct answer.
It turns out we were being a bit too strict in this regex. I think.
So here's the `/proc/self/cgroup`:
```
12:blkio:/actions_job/4ab5ebdc794956d804d03db04557c8b79fa985cbf54bc25f51f2b0848e3f58bd
11:devices:/actions_job/4ab5ebdc794956d804d03db04557c8b79fa985cbf54bc25f51f2b0848e3f58bd
10:memory:/actions_job/4ab5ebdc794956d804d03db04557c8b79fa985cbf54bc25f51f2b0848e3f58bd
9:freezer:/actions_job/4ab5ebdc794956d804d03db04557c8b79fa985cbf54bc25f51f2b0848e3f58bd
8:cpuset:/actions_job/4ab5ebdc794956d804d03db04557c8b79fa985cbf54bc25f51f2b0848e3f58bd
7:pids:/actions_job/4ab5ebdc794956d804d03db04557c8b79fa985cbf54bc25f51f2b0848e3f58bd
6:rdma:/
5:hugetlb:/actions_job/4ab5ebdc794956d804d03db04557c8b79fa985cbf54bc25f51f2b0848e3f58bd
4:perf_event:/actions_job/4ab5ebdc794956d804d03db04557c8b79fa985cbf54bc25f51f2b0848e3f58bd
3:cpu,cpuacct:/actions_job/4ab5ebdc794956d804d03db04557c8b79fa985cbf54bc25f51f2b0848e3f58bd
2:net_cls,net_prio:/actions_job/4ab5ebdc794956d804d03db04557c8b79fa985cbf54bc25f51f2b0848e3f58bd
1:name=systemd:/actions_job/4ab5ebdc794956d804d03db04557c8b79fa985cbf54bc25f51f2b0848e3f58bd
0::/system.slice/docker.service
```
As you can see the second field (or 1st field if you 0-index) is empty,
and it's still docker.
Signed-off-by: Phil Dibowitz <phil@ipom.com>
-rw-r--r-- | lib/ohai/plugins/linux/virtualization.rb | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/ohai/plugins/linux/virtualization.rb b/lib/ohai/plugins/linux/virtualization.rb index 1cb125aa..828c2e63 100644 --- a/lib/ohai/plugins/linux/virtualization.rb +++ b/lib/ohai/plugins/linux/virtualization.rb @@ -190,8 +190,11 @@ Ohai.plugin(:Virtualization) do # Kernel docs, https://www.kernel.org/doc/Documentation/cgroups if File.exist?("/proc/self/cgroup") cgroup_content = File.read("/proc/self/cgroup") - if cgroup_content =~ %r{^\d+:[^:]+:/(lxc|docker)/.+$} || - cgroup_content =~ %r{^\d+:[^:]+:/[^/]+/(lxc|docker)-?.+$} + # These two REs catch many different examples. Here's a specific one + # from when it is docker and there is no subsystem name. + # https://rubular.com/r/dV13hiU9KxmiWB + if cgroup_content =~ %r{^\d+:[^:]*:/(lxc|docker)/.+$} || + cgroup_content =~ %r{^\d+:[^:]*:/[^/]+/(lxc|docker)-?.+$} logger.trace("Plugin Virtualization: /proc/self/cgroup indicates #{$1} container. Detecting as #{$1} guest") virtualization[:system] = $1 virtualization[:role] = "guest" |