Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Github 当Ansible任务失败时,如何打印自定义错误消息?_Github_Ssh_Ansible - Fatal编程技术网

Github 当Ansible任务失败时,如何打印自定义错误消息?

Github 当Ansible任务失败时,如何打印自定义错误消息?,github,ssh,ansible,Github,Ssh,Ansible,以下Ansible playbook验证用户是否可以访问GitHub: - name: Generate SSH keypair become: true user: name: '{{ system_user }}' generate_ssh_key: yes - name: Register public key of user {{ system_user }} become: true slurp: src: '/home/{{ system_u

以下Ansible playbook验证用户是否可以访问GitHub:

- name: Generate SSH keypair
  become: true
  user:
    name: '{{ system_user }}'
    generate_ssh_key: yes

- name: Register public key of user {{ system_user }}
  become: true
  slurp:
    src: '/home/{{ system_user }}/.ssh/id_rsa.pub'
  register: pubkey

- name: Verify the user {{ system_user }} can access GitHub
  become: true
  become_user: '{{ system_user }}'
  shell:
    cmd: 'ssh git@github.com 3>&2 2>&1 1>&3- | grep -q "successfully authenticated"'
    executable: /bin/bash
当前,此播放失败,并显示以下错误消息:

TASK [Gathering Facts] *******************************************************************************
ok: [example.com]

TASK [Generate SSH keypair] **************************************************************************
ok: [example.com]

TASK [Register public key of user myuser] ************************************************************
ok: [example.com]

TASK [Verify the user myuser can access GitHub] ******************************************************
fatal: [example.com]: FAILED! => {"changed": true, "cmd": "ssh git@github.com 3>&2 2>&1 1>&3-
| grep -q \"successfully authenticated\"", "delta": "0:00:00.682593", "end": "2020-09-24 13:21:52.2524
73", "msg": "non-zero return code", "rc": 1, "start": "2020-09-24 13:21:51.569880", "std
err": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}

PLAY RECAP *******************************************************************************************
example.com    : ok=3    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
当此任务失败时,我希望指示用户手动将公钥添加到他们的GitHub帐户。因此,我想自定义上面的错误消息,以包括必要的说明和
pubkey.content
的值,我如何才能做到这一点?下面这样的东西会很棒:

- name: Verify the user {{ system_user }} can access GitHub
  become: true
  become_user: '{{ system_user }}'
  shell:
    cmd: 'ssh git@github.com 3>&2 2>&1 1>&3- | grep -q "successfully authenticated"'
    executable: /bin/bash
  custom_error_message: >
    Oops, it seems that {{ system_user }} cannot access GitHub!
    Please add the following key to your GitHub account:
    {{ pubkey.content | b64decode }} 

此外,如果任务不只是检查用户是否可以登录,而是检查它是否至少对特定存储库具有读取权限,那就太好了。

多亏了commenter,我想出了以下解决方案:

- name: generate SSH keypair
  become: true
  user:
    name: '{{ system_user }}'
    generate_ssh_key: yes

- block:
    - name: verify the user {{ system_user }} can access the repository
      become: true
      become_user: '{{ system_user }}'
      shell:
        cmd: 'ssh git@github.com 3>&2 2>&1 1>&3- | grep -q "successfully authenticated"'
        executable: /bin/bash
  rescue:
    - name: register public key of user {{ system_user }}
      become: true
      slurp:
        src: '/home/{{ system_user }}/.ssh/id_rsa.pub'
      register: pubkey
    - fail:
        msg: >
          Oops, it seems that {{ system_user }} cannot access GitHub!
          Please add the following key to your GitHub account:
          {{ pubkey.content | b64decode }}
例如,查看可在何处对自定义消息使用
fail
任务。