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

如何确认ansible任务不在运行列表中的原因

程祯
2023-03-14
playbook: test.yaml

  play #1 (lab): lab    TAGS: []
    tasks:
      Install pip       TAGS: []

当我执行剧本时,这确实是正常的

PLAY [lab] *****************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************
ok: [my_ipaddress]

TASK [Install pip] *********************************************************************************************************************
ok: [my_ipaddress]

PLAY RECAP *****************************************************************************************************************************
my_ipaddress              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

并且在/var/log/ansible.log中也看起来和执行输出一样正常

所以问题是,我必须做更少的设置吗?为什么有一个任务不在执行列表中,或者有其他调试输出可以显示更详细的输出信息?

以下是我的ansible配置
OS版本:Ubuntu 18.04.5LTS
ansible版本:

ansible 2.9.12
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/primula/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/primula/.local/lib/python3.6/site-packages/ansible
  executable location = /home/primula/.local/bin/ansible
  python version = 3.6.9 (default, Jul 17 2020, 12:50:27) [GCC 8.4.0]
---
- hosts: lab
  roles:
    - { role: apache2, become: yes }
    - { role: pip, become: yes }
---
  - name: Install apache2
    apt:
      name: apache2
      update_cache: yes
---
  - name: Install pip
    apt:
      name: python-pip
      update_cache: yes
[lab]
<ipaddress> ansible_ssh_user=<user_name> ansible_ssh_pass='<ssh_pass>'  ansible_become_user=<root_user> ansible_become=true  ansible_become_pass='<root_pass>'

ansible.cfg

[defaults]
private_key_file = /root/.ssh/id_rsa
roles_path = /etc/ansible/roles
inventory      = /etc/ansible/hosts
timeout = 10
log_path = /var/log/ansible.log
deprecation_warnings = False
strategy = debug
any_errors_fatal = True

共有1个答案

白越
2023-03-14

使用ansible-playbook--list-tasks your_playbook.yml时,不在执行列表中的任务是与由setup模块完成的事实收集相关的任务

它是一个隐式自动任务,默认情况下为您播放中的所有主机打开。如果是隐式的,则不由上述命令报告。

您可以使用gather_factsplay关键字在播放级别控制事实收集,例如。

---
- name: Some play without facts gathering
  hosts: my_group
  gather_facts: false

  tasks:
    - name: dummy demo task
      debug:
        msg: I am dummy task
 类似资料:
  • 我在build.gradle中创建了一个新的gradle任务: 哪个应该运行rerun.sh: 我使用IntelliJ作为IDE。如何运行此任务? 我尝试在zshell控制台中运行并收到此错误: gradle调用CL zsh:找不到命令:gradle 但是在 IDE 中,我一直使用 gradle,因此必须安装它。 我怎么才能解决这个问题?我的写作还好吗?

  • 我有一大堆Scalaz任务。创建方式如下: 我希望这些任务并行运行。以随机顺序打印数字,不要花5秒钟(每个任务有50个任务和100毫升睡眠)。 但是,很明显,每个任务需要100毫秒,所有任务都需要5秒钟,并且创建的列表是有序的。 如何并行运行它们?任务在哪里运行线程?

  • 我已经为我的ansible Playbooks设置了基本目录架构。我定义了两个角色:-1)www:-管理所有的站点部署2)root:-执行与root相关的任务 我的根角色包含以下任务:-1)在目标服务器上设置一个新站点2)启动web服务器(apache,nginx) 我想在站点部署后重新启动我的apache服务器,为此,我在root roles的tasks下创建了一个名为apache-restar

  • 我刚接触Ansible(Ansible2.9.6),最近开始研究一个项目的设计/目录结构。我的任务是配置测试实验室中的设备(特别是不同的思科设备)以支持测试用例。 我希望有一个site.yml文件,包含所有20+测试用例。这个想法是,用户可以根据参数,通过site.yml针对特定的供应商设备类型(Cisco4507、Cisco3850等)执行所有、多个或单个测试用例。 Ansible-Playbo

  • 我面临的问题是,有时可能有大量的数据,这可能需要工作执行超过10分钟。在这种情况下,我希望检测是否有任何作业已经在运行?如果没有,那么只有我会重新运行一个新的作业实例。如果该作业已经在运行,那么我将跳过“新作业实例调用”。我写了一些代码,如下所示。 一些事情,这段代码是检查以前所有正在运行的作业。我所假设的是,如果我启动服务器,那么在服务器启动之前不会有其他作业在运行,如果我在检查之前的作业是否在