Проверка нескольких условий с использованием "когда" на одной задаче в недоступном

Я хочу оценить несколько условий в недоступном для использования, когда, вот моя playbook:

- name: Check that the SSH Key exists
   local_action:
     module: stat
     path: "/home/{{ login_user.stdout }}/{{ ssh_key_location }}"
   register: sshkey_result

 - name: Generating a new SSH key for the current user it not exists already
   local_action:
      module: user
      name: "{{ login_user.stdout }}"
      generate_ssh_key: yes 
      ssh_key_bits: 2048
   when: sshkey_result.rc == 1 and  ( github_username is undefined or github_username |lower == 'none' )

вот мой файл var для справки:

---
vpc_region: eu-west-1
key_name: my_github_key
ssh_key_location: .ssh/id_rsa.pub

Когда я пытаюсь выполнить эту пьесу, я получаю эту ошибку:

TASK: [test | Check that the SSH Key exists] **********************************
ok: [localhost -> 127.0.0.1]

 TASK: [test | Generating a new SSH key for the current user it not exists already] ***
 fatal: [localhost] => error while evaluating conditional: sshkey_result.rc == 1 and  ( github_username is undefined or github_username |lower == 'none' )

        FATAL: all hosts have already failed -- aborting

Может кто-нибудь указать мне, как мы можем использовать несколько условий с возможностью выполнения одной задачи.

благодаря

Ответы

Ответ 2

Проблема с вашим условным заключается в этой части sshkey_result.rc == 1, потому что sshkey_result не содержит атрибут rc и весь условный сбой.

Если вы хотите проверить, существует ли файл, проверьте exists атрибут.

Здесь вы можете узнать больше о модуле stat и о том, как его использовать.

Ответ 3

Добавление ответа https://stackoverflow.com/users/1638814/nvartolomei, который, вероятно, исправит вашу ошибку.

Строго отвечая на ваш вопрос, я просто хочу отметить, что утверждение when:, вероятно, является правильным, но выглядело бы легче читать в многострочном режиме и при этом соответствовать вашей логике:

when: 
  - sshkey_result.rc == 1
  - github_username is undefined or 
    github_username |lower == 'none'

https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html#the-when-statement