From 2e39661a26d881f1ff5991ae46e5cbf45b91cfe9 Mon Sep 17 00:00:00 2001 From: Brian Coca Date: Wed, 3 Jun 2015 11:15:13 -0400 Subject: [PATCH] made with_ examples have explicit templating --- docsite/rst/playbooks_loops.rst | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docsite/rst/playbooks_loops.rst b/docsite/rst/playbooks_loops.rst index 5456791f61..a76254a966 100644 --- a/docsite/rst/playbooks_loops.rst +++ b/docsite/rst/playbooks_loops.rst @@ -23,7 +23,7 @@ To save some typing, repeated tasks can be written in short-hand like so:: If you have defined a YAML list in a variables file, or the 'vars' section, you can also do:: - with_items: somelist + with_items: "{{somelist}}" The above would be the equivalent of:: @@ -58,12 +58,12 @@ Loops can be nested as well:: - [ 'alice', 'bob' ] - [ 'clientdb', 'employeedb', 'providerdb' ] -As with the case of 'with_items' above, you can use previously defined variables. Just specify the variable's name without templating it with '{{ }}':: +As with the case of 'with_items' above, you can use previously defined variables.:: - name: here, 'users' contains the above list of employees mysql_user: name={{ item[0] }} priv={{ item[1] }}.*:ALL append_privs=yes password=foo with_nested: - - users + - "{{users}}" - [ 'clientdb', 'employeedb', 'providerdb' ] .. _looping_over_hashes: @@ -89,7 +89,7 @@ And you want to print every user's name and phone number. You can loop through tasks: - name: Print phone records debug: msg="User {{ item.key }} is {{ item.value.name }} ({{ item.value.telephone }})" - with_dict: users + with_dict: "{{users}}" .. _looping_over_fileglobs: @@ -111,7 +111,7 @@ be used like this:: - copy: src={{ item }} dest=/etc/fooapp/ owner=root mode=600 with_fileglob: - /playbooks/files/fooapp/* - + .. note:: When using a relative path with ``with_fileglob`` in a role, Ansible resolves the path relative to the `roles//files` directory. Looping over Parallel Sets of Data @@ -130,21 +130,21 @@ And you want the set of '(a, 1)' and '(b, 2)' and so on. Use 'with_together' t tasks: - debug: msg="{{ item.0 }} and {{ item.1 }}" with_together: - - alpha - - numbers + - "{{alpha}}" + - "{{numbers}}" Looping over Subelements ```````````````````````` Suppose you want to do something like loop over a list of users, creating them, and allowing them to login by a certain set of -SSH keys. +SSH keys. How might that be accomplished? Let's assume you had the following defined and loaded in via "vars_files" or maybe a "group_vars/all" file:: --- users: - name: alice - authorized: + authorized: - /tmp/alice/onekey.pub - /tmp/alice/twokey.pub mysql: @@ -171,7 +171,7 @@ How might that be accomplished? Let's assume you had the following defined and It might happen like so:: - user: name={{ item.name }} state=present generate_ssh_key=yes - with_items: users + with_items: "{{users}}" - authorized_key: "user={{ item.0.name }} key='{{ lookup('file', item.1) }}'" with_subelements: @@ -329,7 +329,7 @@ Should you ever need to execute a command remotely, you would not use the above - name: Do something with each result shell: /usr/bin/something_else --param {{ item }} - with_items: command_result.stdout_lines + with_items: "{{command_result.stdout_lines}}" .. _indexed_lists: @@ -345,7 +345,7 @@ It's uncommonly used:: - name: indexed loop demo debug: msg="at array position {{ item.0 }} there is a value {{ item.1 }}" - with_indexed_items: some_list + with_indexed_items: "{{some_list}}" .. _flattening_a_list: @@ -370,8 +370,8 @@ As you can see the formatting of packages in these lists is all over the place. - name: flattened loop demo yum: name={{ item }} state=installed with_flattened: - - packages_base - - packages_apps + - "{{packages_base}}" + - "{{packages_apps}}" That's how! @@ -435,7 +435,7 @@ Subsequent loops over the registered variable to inspect the results may look li fail: msg: "The command ({{ item.cmd }}) did not have a 0 return code" when: item.rc != 0 - with_items: echo.results + with_items: "{{echo.results}}" .. _writing_your_own_iterators: