blob: 33adbd7487d378a7c4a396dc6dff9e09bdf07b41 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# loop-var-prefix
This rule avoids conflicts with nested looping tasks by configuring a variable
prefix with `loop_var`. Ansible sets `item` as the loop variable. You can use
`loop_var` to specify a prefix for loop variables and ensure they are unique to
each task.
This rule can produce the following messages:
- `loop-var-prefix[missing]` - Replace any unsafe implicit `item` loop variable
by adding `loop_var: <loop_var_prefix>...`.
- `loop-var-prefix[wrong]` - Ensure loop variables start with
`<loop_var_prefix>`.
This rule originates from the [Naming parameters section of Ansible Best
Practices guide][cop314].
## Settings
You can change the behavior of this rule by overriding its default regular
expression used to check loop variable naming. Keep in mind that the `{role}`
part is replaced with the inferred role name when applicable.
```yaml
# .ansible-lint
loop_var_prefix: "^(__|{role}_)"
```
This is an opt-in rule. You must enable it in your Ansible-lint configuration as
follows:
```yaml
enable_list:
- loop-var-prefix
```
## Problematic Code
```yaml
---
- name: Example playbook
hosts: localhost
tasks:
- name: Does not set a prefix for loop variables.
ansible.builtin.debug:
var: item
loop:
- foo
- bar # <- These items do not have a unique prefix.
- name: Sets a prefix that is not unique.
ansible.builtin.debug:
var: zz_item
loop:
- foo
- bar
loop_control:
loop_var: zz_item # <- This prefix is not unique.
```
## Correct Code
```yaml
---
- name: Example playbook
hosts: localhost
tasks:
- name: Sets a unique prefix for loop variables.
ansible.builtin.debug:
var: zz_item
loop:
- foo
- bar
loop_control:
loop_var: my_prefix # <- Specifies a unique prefix for loop variables.
```
[cop314]:
https://redhat-cop.github.io/automation-good-practices/#_naming_parameters
|