When var1 == "yes" and var2 == "no"

So,

I’m having fits with when conditionals matching strings
No matter what I do, it applies each conditional, the combination of the variables doesn’t seem to count for … anything.

what the heck am I doing wrong? additionally, is there a better way to do this?

`

  • name: H - Set FIM Flag - RW
    win_domain_group:
    when: share_fim_managed == “yes” and share_azure_managed == “no”
    domain_server: “{{ h_domain_server }}”
    domain_username: “{{ h_domain_username }}”
    domain_password: “{{ h_domain_password }}”
    scope: global
    name: “{{ h_g_prefix }}{{ g_name }}{{suffix_RW}}”
    attributes:
    NCHIDMMGI: FIM Managed - ‘{{ dateformat }}’

  • name: H - Set Azure Flag - RW
    win_domain_group:
    domain_server: “{{ h_domain_server }}”
    domain_username: “{{ h_domain_username }}”
    domain_password: “{{ h_domain_password }}”
    scope: global
    name: “{{ h_g_prefix }}{{ g_name }}{{suffix_RW}}”
    attributes:
    NCHIDMMGI: Azure Managed - ‘{{ dateformat }}’
    when: share_fim_managed == “no” and share_azure_managed == “yes”

  • name: R - Set FIM/Azure Flag - RW
    win_domain_group:
    domain_server: “{{ r_domain_server }}”
    domain_username: “{{ r_domain_username }}”
    domain_password: “{{ r_domain_password }}”
    scope: global
    protect: yes
    name: “{{ r_g_prefix }}{{ g_name }}{{suffix_RW}}”
    attributes:
    NCHIDMMGI: FIM / Azure Managed - ‘{{ dateformat }}’
    when: share_fim_managed == “yes” and share_azure_managed == “yes”

from the include file

share_fim_managed: “no”
share_azure_managed: “yes”
`

So,

I'm having fits with when conditionals matching strings
No matter what I do, it applies each conditional, the combination of the variables doesn't seem to count for ... anything.

what the heck am I doing wrong? additionally, is there a better way to do this?

Hello Jessie,

it looks like your indentation is wrong. when is a task parameter and not a module parameter:

- name: ...
  win_domain_group:
    domain_server:"{{ h_domain_server }}"
    ...
  when: share_fim_managed =="yes"andshare_azure_managed =="no"

Regards
         Racke

Perfect!

I didn’t realize the indentation had to be outside the module parameter, the example I was using was poorly written it seems.

I appreciate the help Stefan!

Are you actually comparing the strings "yes" and "no" to the variables? If they're actual booleans, you will be better off by doing:

when: share_fim_managed and not share_azure_managed

when: not share_fim_managed and share_azure_managed

when: share_fim_managed and share_azure_managed

All nonempty strings are true, even if they contain the strings "false" or "true", you should be careful when comparing truth values. See here: