当前位置: 首页 > 知识库问答 >
问题:

Ansible:无法访问主机时中止执行

卫松
2023-03-14

摘要:一个更好的方法,以中止ansible playbook立即,如果任何主机是无法访问。

如果任何一个主机无法访问,是否有方法中止Ansible playbook。我发现,如果它无法到达主机,它仍将继续运行,并执行剧本中的所有播放/任务。

我所有的剧本都指定max_fail_percent为0,但在本例中ansible不会抱怨,因为所有可访问的主机都可以执行所有的剧本。

目前我有一个简单但黑客的解决方案,但看看是否有一个更好的答案。

- name: Check Ansible connectivity to all hosts
  hosts: host_all
  user: "{{ remote_user }}"
  sudo: "{{ sudo_required }}"
  sudo_user: root
  connection: ssh # or paramiko
  max_fail_percentage: 0
  tasks:
    - name: check connectivity to hosts (Dummy task)
      shell: echo " {{ hostvars[item]['ansible_hostname'] }}"
      with_items: groups['host_all']
      register: cmd_output

    - name: debug ...
      debug: var=cmd_output

如果无法访问主机,您将得到如下错误:

TASK: [c.. ***************************************************** 
fatal: [172.22.191.160] => One or more undefined variables: 'dict object'    has no attribute 'ansible_hostname' 
fatal: [172.22.191.162] => One or more undefined variables: 'dict object' has no attribute 'ansible_hostname'

FATAL: all hosts have already failed -- aborting

共有1个答案

西门嘉石
2023-03-14

或者,这看起来更简单,更有表现力

- hosts: myservers
  become: true

  pre_tasks:
    - name: Check ALL hosts are reacheable before doing the release
      assert:
        that:
          - ansible_play_hosts == groups.myservers
        fail_msg: 1 or more host is UNREACHABLE
        success_msg: ALL hosts are REACHABLE, go on
      run_once: yes

  roles:
    - deploy

https://github.com/ansible/ansible/issues/18782#issuecomment-319409529

 类似资料:
  • 遥不可及!更改:false,msg:SSH错误:无法将数据发送到远程主机。确保可以通过ssh访问此主机,“不可访问”:true 主持人: ansible.cfg 我正在使用executeshell运行Jenkins的剧本`

  • 我正在尝试安装带有2个节点的kubernetes集群(1.7.2版)。并使用weave作为cni。当加入另一个节点时,kubeadm会报错主机名 我使用的是 centos 7.3 已安装的yum包 步骤: 跑步的时候 我在weave-kube pod中看到以下错误:

  • 我正在使用AWS Amplify设置AppSync GraphQL API。我有一个带有@model注释的模式,我正在尝试编写一个lambda解析器,它将读/写@model生成的DynamoDB表。然而,当我尝试使用进行本地测试时,我的JS函数抛出 我似乎根本找不到关于这个用例的太多文档(大多数lambda解析器的示例都是从其他表/api读取的,这些表/api不是放大应用程序的一部分),所以任何指

  • 我是Linux的新手,我能够在Manjaro上安装我的LAMP服务器。得到了一切的窍门,但现在有问题设置我的虚拟主机。我正在使用http://httpd.conf.中注释出"包含conf/额外/httpd-vhosts.conf",但在编辑httpd-vhosts.conf.后无法访问主机得是, 但是dummy.local没有加载并说, 无法访问此站点。找不到本地服务器的IP地址。 谢谢你。

  • 我正在努力理解我的错误在哪里。我看了各种答案并尝试了补救措施,结果发现他们的解决方案并没有纠正我的问题。我已经将所有内容剥离到最基本的部分,看看是否可以得到一个基本的PHP索引。php来展示自己。 以下是我试图在核心实现的目标: 我有docker compose站在1个网络上,2个服务连接到网络上。一个服务是PHP-FPM,另一个是为PHP-FPM服务的nginx。每次我站起来,不管我如何配置它,

  • 我有一个关于这个问题的问题https://hub.docker.com/r/jupyter/scipy-notebook.我正在尝试使用docker compose运行此图像: 组成: Dockerfile 我用手够不着它http://locahost:8888 .... 网址。我使用Windows10作为主机,并尝试从这个docker compose和这些工作中访问其他服务。