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 vbo...@gmail.com wrote: > On Thu, 4 Aug 2022 23:43:59 -0700 (PDT) > farrukh ahmed <farrukha...@gmail.com> 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 ansible-project+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/0eaa1c36-727c-47a8-bebc-6f38db9f4971n%40googlegroups.com.