Site icon Mr. 沙先生

Puppet facter 無法正確抓到 Ubuntu Container 的 OS 資訊

今天有同事回報在使用 Puppet 做模擬 LAB 的時候,一直出現 OS 版本判別錯誤的問題,安裝 Ubuntu container 卻判定為 Debian,然後少了許多 metadata 可以使用 …

 

嘗試在 Production 環境測試沒有沒有遇到問題,也在 Vagrant 上跑過。

 

只好找工程師的好朋友 Google 一下,果然馬上就找到 Puppet ticketIncorrectly detects OS in docker container」有相同的狀況

When running in a Docker container, facter incorrectly reports the OS.

To reproduce this, start a docker container with the “ubuntu” image, install Facter from the Puppet repository, run “puppet os” and notice it is reported as “Debian”.

 

這時才想到,Puppet 用來判別版本的資訊其中有包含 lsb-release 這個 package … 而 Container 的特點就是 “什麼都沒有” 所以能抓到的資訊自然就少了很多。

 

解決方法很簡單,就是安裝 lsb-release,讓環境有 lsb_release 這個 command

$ sudo apt-get install lsb-release

 

就正常了 …

 

不過 Puppet 有把該問題列為 bug 並且提出應該要使用 os-release 作為參考依據才對,所以之後要參考 OS 資訊的人可以往這個方向找問題

$ cat /etc/os-release

NAME="Ubuntu"
VERSION="16.04.5 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.5 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

 

 

Exit mobile version