{"id":976,"date":"2018-03-04T23:10:23","date_gmt":"2018-03-04T21:10:23","guid":{"rendered":"https:\/\/www.mediamill.de\/blog\/?p=976"},"modified":"2018-03-04T23:10:23","modified_gmt":"2018-03-04T21:10:23","slug":"ansible-verwenden-einer-variable-als-name-einer-liste-mit-with_items","status":"publish","type":"post","link":"https:\/\/www.mediamill.de\/blog\/2018\/03\/04\/ansible-verwenden-einer-variable-als-name-einer-liste-mit-with_items\/","title":{"rendered":"Ansible: Verwenden einer Variable als Name einer Liste mit with_items"},"content":{"rendered":"<p>Nach dem Update von Ansible 1.7 auf Ansible 2.4 funktionierte eine Ansble Rolle nicht mehr. Bei dieser Rolle wird der Wert einer Variable als Namen einer Liste in einem with_items Konstrukt verwendet.<\/p>\n<p>In Ansible 1.7 funktionierte folgender Syntax noch:<\/p>\n<pre class=\"brush:plain\">VARS main.yml\r\n---\r\nchooselist: list1\r\n\r\nlist1:\r\n- { port: '443', src: 'any', proto: 'tcp'}\r\n- { port: '80', src: 'any', proto: 'tcp'}\r\n\r\nlist2:\r\n- { port: '22', src: 'any', proto: 'tcp'}\r\n- { port: '53', src: 'any', proto: 'tcp'}\r\n\r\nTASK:main.yml\r\n---\r\n- name: with_items_test\r\n  debug: msg=\"{{ item.port }}|{{ item.src }}|{{ item.proto }})\"\r\n  with_items: \"{{ chooselist }}\"<\/pre>\n<p>In Ansible 2.4 wird bei obigen Syntax ein Fehler ausgegeben: &#8222;The task includes an option with an undefined variable.&#8220;<\/p>\n<p>Nach einiger Suche fand ich in folgenden Beitrag &#8222;<a href=\"https:\/\/github.com\/ansible\/ansible\/issues\/14032\">SOLVED: ansible 2.0: with_items: &#8222;{{ variable }}_fixstring&#8220; resolve issue #14032<\/a>&#8220; die L\u00f6sung.<\/p>\n<p>Damit nun Variablen als Namen von Listen mit with_items verwendet werden k\u00f6nnen, muss man statt<\/p>\n<pre class=\"brush:plain\">with_items: \"{{ chooselist }}\"<\/pre>\n<p>folgenden Syntax mit dem <strong>vars<\/strong> Schl\u00fcsselwort verwenden:<\/p>\n<pre class=\"brush:plain\">with_items: \"{{ vars[chooselist] }}\"<\/pre>\n<p>Der komplette, in Ansible 2.4, funktionierende Task sie dann wie folgt aus aus:<\/p>\n<pre class=\"brush:xml\">---\r\n- name: with_items_test\r\n  debug: msg=\"{{ item.port }}|{{ item.src }}|{{ item.proto }})\"\r\n  with_items: \"{{ vars[chooselist] }}\"<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Nach dem Update von Ansible 1.7 auf Ansible 2.4 funktionierte eine Ansble Rolle nicht mehr. Bei dieser Rolle wird der Wert einer Variable als Namen einer Liste in einem with_items Konstrukt verwendet. In Ansible 1.7 funktionierte folgender Syntax noch: VARS main.yml &#8212; chooselist: list1 list1: &#8211; { port: &#8218;443&#8216;, src: &#8218;any&#8216;, proto: &#8218;tcp&#8216;} &#8211; { [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,5],"tags":[80],"class_list":["post-976","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-linux","tag-ansible"],"_links":{"self":[{"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/posts\/976","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/comments?post=976"}],"version-history":[{"count":6,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/posts\/976\/revisions"}],"predecessor-version":[{"id":982,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/posts\/976\/revisions\/982"}],"wp:attachment":[{"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/media?parent=976"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/categories?post=976"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mediamill.de\/blog\/wp-json\/wp\/v2\/tags?post=976"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}