Ich möchte mehrere Zustände in Ansible bewerten, indem ich Folgendes verwende:
- 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's 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' )
hier ist meine var-Datei als Referenz:
---
vpc_region: eu-west-1
key_name: my_github_key
ssh_key_location: .ssh/id_rsa.pub
Wenn ich versuche, dieses Playbook auszuführen, erhalte ich folgende Fehlermeldung:
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's 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
Kann mich jemand darauf hinweisen, wie man mit ansible mehrere Bedingungen auf einmal bearbeiten kann.
Vielen Dank
Sie können so verwenden.
when: condition1 == "condition1" or condition2 == "condition2"
Link zu offiziellen Dokumenten: The When Statement .
Bitte beachten Sie auch dieses Gist: https://Gist.github.com/marcusphi/6791404
Das Problem mit Ihrer Bedingung ist in diesem Teil sshkey_result.rc == 1
, weil sshkey_result
enthält kein rc
Attribut und die gesamte Bedingung schlägt fehl.
Wenn Sie überprüfen möchten, ob die Datei existiert, überprüfen Sie das exists
Attribut.
Hier können Sie lesen Sie mehr über das stat-Modul und wie man es benutzt .
Hinzufügen zu https://stackoverflow.com/users/1638814/nvartolomei Antwort, die wahrscheinlich Ihren Fehler beheben wird.
Ich beantworte Ihre Frage streng und möchte Sie nur darauf hinweisen, dass der when:
Aussage ist wahrscheinlich korrekt, würde aber in mehrzeiliger Form einfacher zu lesen sein und trotzdem Ihre Logik erfüllen:
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