{"id":2508,"date":"2020-02-11T13:50:14","date_gmt":"2020-02-11T12:50:14","guid":{"rendered":"http:\/\/blog.datentraeger.li\/?p=2508"},"modified":"2020-03-06T10:43:28","modified_gmt":"2020-03-06T09:43:28","slug":"legacy-facts","status":"publish","type":"post","link":"https:\/\/blog.datentraeger.li\/?p=2508","title":{"rendered":"Legacy Facts&#8230;"},"content":{"rendered":"\n<p>Upgrade auf Buster&#8230;und wieder die selbe Scheisse mit puppet wie immer. Diesmal sind es die &#8220;<a rel=\"noreferrer noopener\" aria-label=\"Legacy Facts (opens in a new tab)\" href=\"https:\/\/tickets.puppetlabs.com\/browse\/FACT-1075\" target=\"_blank\">Legacy Facts<\/a>&#8221; wie $::operatingsystem oder $::lsbdistrelease. Die zeigt <a href=\"https:\/\/puppet.com\/docs\/facter\/3.11\/release_notes.html\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"facter (opens in a new tab)\">facter<\/a> nur noch an, wenn mit dem Flag &#8211;show-legacy ausgef\u00fchrt. &#8230;und dann ist os.release.major ein String ?! wtf<\/p>\n\n\n\n<p>Aus <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>if $::operatingsystem == 'Debian' and $::lsbdistrelease &lt; '9.0' <\/code><\/pre>\n\n\n\n<p>wird nun<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$major_release = $::facts['os']['release']['major']\n$operatingsystem = $::facts['os']['family']\nif $operatingsystem == 'Debian' and Integer($major_release) &lt; 9 {<\/pre>\n\n\n\n<p>Und nein, wenn man keine Variabeln draus macht, klappt das nicht mit der Umwandlung zu einem Integer&#8230;<\/p>\n\n\n\n<p>Super, ist das nicht in vielen Modulen verbaut. Und nat\u00fcrlich ist das bei alten Versionen nat\u00fcrlich nicht mehr kompatibel. Geile Sache, argh..<\/p>\n\n\n\n<p>Abgefragt wird das ganze nun auch ein bisschen anders, anstatt einfach zu greppen (was noch geht, aber wegen der Hashes weniger \u00fcbersichtlich ist bzw. gewisse Sachen nicht anzeigt&#8230;). jetzt fragt man das  manuell etwa so ab:<\/p>\n\n\n\n<p><code>facter os.release.major<\/code><\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># facter os\n\n{\n  architecture =&gt; \"amd64\",\n  distro =&gt; {\n    codename =&gt; \"buster\",\n    description =&gt; \"Debian GNU\/Linux 10 (buster)\",\n    id =&gt; \"Debian\",\n    release =&gt; {\n      full =&gt; \"10\",\n      major =&gt; \"10\"\n    }\n  },\n  family =&gt; \"Debian\",\n  hardware =&gt; \"x86_64\",\n  name =&gt; \"Debian\",\n  release =&gt; {\n    full =&gt; \"10.3\",\n    major =&gt; \"10\",\n    minor =&gt; \"3\"\n  },\n  selinux =&gt; {\n    enabled =&gt; false\n  }\n}<\/pre>\n\n\n\n<p>Naja, nicht so tragisch, aber es nervt trotzdem bei jedem Upgrade, dass an grosser Teil vom Aufwand drauf geht, weil beim Configmanagement wieder alles anders wurde. Echt mal an der Zeit, das Ansible-Buch zu lesen&#8230;vielleicht ist es da ja besser.<\/p>\n","protected":false},"excerpt":{"rendered":"Upgrade auf Buster&#8230;und wieder die selbe Scheisse mit puppet wie immer. Diesmal sind es die &#8220;Legacy Facts&#8221; wie $::operatingsystem oder $::lsbdistrelease. Die zeigt facter nur noch an, wenn mit dem Flag &#8211;show-legacy ausgef\u00fchrt. &#8230;und dann ist os.release.major ein String ?! wtf Aus if $::operatingsystem == &#8216;Debian&#8217; and $::lsbdistrelease &lt; &#8216;9.0&#8217;&hellip;\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-2508","post","type-post","status-publish","format-standard","hentry","category-puppet"],"_links":{"self":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/2508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2508"}],"version-history":[{"count":16,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/2508\/revisions"}],"predecessor-version":[{"id":2525,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=\/wp\/v2\/posts\/2508\/revisions\/2525"}],"wp:attachment":[{"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2508"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2508"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.datentraeger.li\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}