Ответ 1
Вы можете использовать как это.
when: condition1 == "condition1" or condition2 == "condition2"
Ссылка на официальные документы: Заявление "Когда".
Также, пожалуйста, обратитесь к этой сути:https://gist.github.com/marcusphi/6791404
Я хочу оценить несколько условий в недоступном для использования, когда, вот моя 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
Может кто-нибудь указать мне, как мы можем использовать несколько условий с возможностью выполнения одной задачи.
благодаря
Вы можете использовать как это.
when: condition1 == "condition1" or condition2 == "condition2"
Ссылка на официальные документы: Заявление "Когда".
Также, пожалуйста, обратитесь к этой сути:https://gist.github.com/marcusphi/6791404
Проблема с вашим условным заключается в этой части sshkey_result.rc == 1
, потому что sshkey_result
не содержит атрибут rc
и весь условный сбой.
Если вы хотите проверить, существует ли файл, проверьте exists
атрибут.
Здесь вы можете узнать больше о модуле stat и о том, как его использовать.
Добавление ответа 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