That "when:" should be
when: item.line is not search(omit)
On Friday, August 5, 2022 at 8:03:34 AM UTC-4 Todd Lewis wrote:
> - name: "Update Redis Parameters in {{ redis_config_path }}"
> lineinfile:
> path: "{{ redis_config_path }}"
> backrefs: yes
> regexp: "{{ item.regexp }}"
> line: "{{ item.line }}"
> when: item.line is match(omit)
> with_items:
> - { regexp: '^maxmemory', line: "maxmemory {{ MAX_MEM | d(omit)
> }}mb" }
> - { regexp: '^tcp-keepalive', line: "tcp-keepalive {{ TCP_KEEPALIVE |
> d(omit) }}" }
> - { regexp: '^tcp-backlog', line: "tcp-backlog {{ TCP_BACKLOG |
> d(omit) }}" }
> - { regexp: '^maxclients', line: "maxclients {{ MAX_CLIENTS |
> d(omit) }}" }
> - { regexp: '^timeout', line: "timeout {{ TIMEOUT }}" }
>
>
>
> On 8/5/22 7:31 AM, farrukh ahmed wrote:
>
> Thanks for your reply Vladimir Botka.
>
> This is my actual case:
>
> defaults > main.yml
> ---
> # defaults file for redis_configs
> redis_config_path: /etc/redis/redis.conf
>
> # Default Params Values
> MAX_MEM: 3000
> TCP_KEEPALIVE: 0
> TCP_BACKLOG: 511
> MAX_CLIENTS: 15000
> TIMEOUT: 1500
>
>
> And this is:
>
> Tasks > main.yml
>
> ---
>
> - name: "Update Redis Parameters in {{ redis_config_path }}"
> lineinfile:
> path: "{{ redis_config_path }}"
> backrefs: yes
> regexp: "{{ item.regexp }}"
> line: "{{ item.line }}"
> with_items:
> - { regexp: '^maxmemory', line: "maxmemory {{ MAX_MEM }}mb", when: {{
> MAX_MEM }} is defined }
> - { regexp: '^tcp-keepalive', line: "tcp-keepalive {{ TCP_KEEPALIVE
> }}", when: {{ TCP_KEEPALIVE }} is defined }
> - { regexp: '^tcp-backlog', line: "tcp-backlog {{ TCP_BACKLOG }}",
> when: {{ TCP_BACKLOG }} is defined}
> - { regexp: '^maxclients', line: "maxclients {{ MAX_CLIENTS }}", when:
> {{ MAX_CLIENTS }} is defined}
> - { regexp: '^timeout', line: "timeout {{ TIMEOUT }}" }
>
>
> I want this to check if each variable inside an item is defined then make
> the changes to the line in the file, otherwise skip only those items which
> variables is not defined.
> For Instance, If I comment out the variable MAX_MEM from the defaults >
> main.yml. like below:
>
> # Default Params Values
> ##MAX_MEM: 3000
> TCP_KEEPALIVE: 0
> TCP_BACKLOG: 511
> MAX_CLIENTS: 15000
> TIMEOUT: 1500
>
> Then the execution should skip changes to the line where MAX_MEM is
> undefined, and the rest lines should be changed as they defined.
>
> Is it possible?
>
>
> On Friday, August 5, 2022 at 2:18:05 PM UTC+5 [email protected] wrote:
>
>> On Thu, 4 Aug 2022 23:43:59 -0700 (PDT)
>> farrukh ahmed <[email protected]> wrote:
>>
>> > with_items:
>> > - { regexp: '^text1', line: "text1 = {{ VAR1 }}", when: VAR1 is defined
>> }
>> > - { regexp: '^text2', line: "text2 = {{ VAR2 }}" }
>> > - { regexp: '^text3', line: "text3 = {{ VAR3 }}" }
>>
>> Set *default* to avoid errors, add attribute *def*, and select lines.
>> For example,
>>
>> shell> cat pb.yml
>> ---
>> - hosts: localhost
>> gather_facts: false
>> vars:
>> lines:
>> - regexp: '^text1'
>> line: 'text1 = {{ VAR1|d("undef") }}'
>> def: '{{ VAR1 is defined }}'
>> - regexp: '^text2'
>> line: 'text2 = {{ VAR2|d("undef") }}'
>> def: '{{ VAR2 is defined }}'
>> - regexp: '^text3'
>> line: 'text3 = {{ VAR3|d("undef") }}'
>> def: '{{ VAR3 is defined }}'
>> tasks:
>> - debug:
>> var: item
>> loop: "{{ lines|selectattr('def') }}"
>>
>> gives
>>
>> shell> ansible-playbook pb.yml -e VAR1=test
>>
>> PLAY [localhost]
>> *********************************************************************
>>
>> TASK [debug]
>> *********************************************************************
>> ok: [localhost] => (item={'regexp': '^text1', 'line': 'text1 = test',
>> 'def': True}) => ansible_loop_var: item item:
>> def: true
>> line: text1 = test
>> regexp: ^text1
>>
>> --
>> Vladimir Botka
>>
>
>
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/456b1d18-766b-4da2-9d1f-c7f0e1b37d36n%40googlegroups.com.