首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

单个主机上的delegate_to不能在ansible角色下工作

在Ansible中,delegate_to是一个用于指定任务在远程主机上执行的选项。它允许我们将任务委托给指定的主机,而不是在当前主机上执行。然而,在Ansible角色中,delegate_to选项可能无法正常工作。

Ansible角色是一种可重用的任务和变量的组织方式,可以在不同的剧本中多次使用。角色通常包含一个主任务(main task)和相关的变量、处理器、模板等文件。当我们在角色中使用delegate_to选项时,它会尝试在当前主机上执行任务,而不是委托给指定的主机。

这是因为Ansible角色的执行是在控制节点上进行的,而不是在远程主机上。因此,delegate_to选项无法直接在角色中生效。

解决这个问题的一种方法是在角色的主任务中使用条件判断。我们可以使用when语句来检查当前主机是否符合我们希望委托的条件,如果符合,则执行相应的任务。例如:

代码语言:txt
复制
- name: Delegate task to another host
  command: some_command
  delegate_to: delegate_host
  when: inventory_hostname == 'target_host'

在上面的示例中,我们使用when语句检查当前主机的inventory_hostname是否等于我们希望委托的目标主机。如果相等,则执行委托任务。

另一种解决方法是在剧本中直接使用delegate_to选项,而不是在角色中使用。这样可以确保委托任务在指定的主机上执行。例如:

代码语言:txt
复制
- name: Execute role with delegate_to
  hosts: target_host
  roles:
    - role: my_role
      delegate_to: delegate_host

在上面的示例中,我们在剧本中指定了委托任务的目标主机,确保任务在指定的主机上执行。

总结起来,单个主机上的delegate_to不能在Ansible角色下工作。我们可以通过在角色中使用条件判断或在剧本中直接使用delegate_to选项来解决这个问题。这样可以确保任务在指定的主机上执行,而不是在当前主机上执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

自动化运维利器Ansible要点汇总

工作流程   ansible.cfg主要配置指定host文件路径,指定roles_path参数,其它参数默认。   ...控制节点交互一般采用公钥认证,这需要将主机节点公钥发放到所有被管节点,也可采用密码形式通讯,但由于需要在hosts文件中明文标出不安全 推荐,配置密码: /etc/ansible/hosts 192.168.0.200...delegate_to: "192.168.0.9"   若委派给本机时候,还可以使用更快捷方法local_action - name: get status local_action...: command 'get k8s status' run_once   run_once: true来指定该task只能在某一台机器上执行一次....值就是别名   如只给k8s节点分发配置文件 - name: 分发kubeconfig配置文件 copy: src=cluster_dir/item dest=/etc/kubernetes/item

2K30
  • 现代 IT 人一定要知道 Ansible系列教程:持续交付和滚动升级

    此示例使用了许多 Ansible 功能:角色、模板和组变量,并且它还附带了一个编排剧本,可以对 Web 应用程序堆栈进行零停机滚动升级。...可重用内容:角色 到目前为止,我们应该对角色以及它们在 Ansible工作方式有一定了解。角色是一种组织方式内容:任务、处理程序、模板和文件,转化为可重用组件。...如何组织这些角色取决于我们应用程序,但大多数站点都会有一个或多个适用于常见角色所有系统,然后是一系列特定于应用程序角色,用于安装和配置站点特定部分。...如果未指定,Ansible 会将这些操作并行化,直至达到配置文件中指定默认“forks”限制。但是,对于零停机时间滚动升级,我们更多可能不希望同时在这么多主机上操作。...如果不是很熟悉情况使用起来还是有很多坑,所以在使用 Ansiable 时候可以多做些练习,更多去参考官方文档。

    28410

    Ansible管理你OpenStack cloud

    通过使用Ansible,一种无代理IT自动化技术,系统管理员可以创建Ansible剧本,提供一致性和减少复杂性。...OpenStack提供了丰富API来管理资源,这导致了许多Ansible模块创建,这些模块可以很容易地适应任何自动化工作流。...与OpenStack实例中任务自动化功能相结合,操作员可以在内部和外部工作,以协调针对环境复杂操作。 “第一天”操作是指在环境初始配置和部署期间执行任务。...而不是一个合适Ansible模块。...在某些情况,用于任务模块可能不存在,但Ansible足够灵活,允许在开发模块之前调用剧本中任意命令。觉得你可以写缺少模块?考虑通过贡献到Ansible项目来创建它。

    91700

    03 实战 Ansible-Playbook之初始化服务器

    配置 配置ssh密钥认证 在主控节点/etc/ansible/hosts配置节点 $ vim /etc/ansible/hosts [new] 192.168.56.12 192.168.56.13...命令执行模块 以下四个模块不满足幂等性 command:执行简单shell命令 shell: 和command相同,但支持管道富豪 raw: 执行底层shell命令,通常在目标主机上安装python...时才使用这个模块 script: 在远程主机上执行脚本 以下命令具备幂等性: creates: 当指定文件或者目录不存在时执行,存在执行 removes:当指定文件或者目录不存在时执行,存在执行...: localhost authorized_key模块 特点: 分发ssh公钥 不负责主机认证阶段 前提需要配置好hostsansible_passwd字段 [new] 192.168.56.11...ansible_hostname="centos7-node1" 192.168.56.12 ansible_hostname="centos7-node2" [new:vars] ansible_password

    1.7K20

    k8s 学习(2)——使用 ansible-playbook 搭建 k8s 环境

    步骤梳理 代码结构 安装流程 安装 docker(所有节点) 配置 k8s 环境信息(所有节点) 节点安装 k8s node 节点安装 k8s 上一篇博客记录了一在 CentOS 搭建 k8s 环境方式...步骤梳理 首先在介绍 ansible 编排之前,先梳理一搭建 k8s 环境步骤(之前 shell 脚本部署方式有详细步骤注释)。...node 节点安装 k8s 看过之前手动部署 k8s 文章应该记得一个步骤:当 node 节点安装完 k8s 之后需要执行 join 主机点集群命令,而这个命令需要去节点查询得到,所有当时是手动查询然后执行...所以 ansible 如何做到在当前执行机操作步骤时候到另外执行机执行步骤,我当时查到了一种方案就是使用 delegate_to 参数,在模块中添加这个参数,就可以将该步骤到这个参数指向 IP 主机上面执行步骤...我这做就是去节点查询命令,然后注册成一个键值对给后面的步骤使用。

    1.4K20

    如何在OpenStack-Ansible上集成Tungsten Fabric

    本文将在较高级别涵盖OpenStack-Ansible(Rocky)分支一些补丁,以及Juniper和TF社区提供用于部署Tungsten Fabriccontrail-ansible-deployer...角色修改 对使用OpenStack-Ansible部署OpenStack云进行更改,通常意味着对构成部署Ansible角色进行更改。这包括对任务、模板、变量等更改。...需要修改角色包括: ·os_neutron ·os_nova 是否所有这些角色更改都是必需,还有待观察,这里只是为了更好地说明。...这是一个具有单个NICAIO节点,这意味着机会很不错,playbooks会自动确定要使用接口。我们继续前进,同时在此处进行了标注。...总结 对于学习了解Tungsten Fabric运行方式,以及围绕如何在基于OpenStack-Ansible云中部署构建最佳实践,还有很多工作要做。

    1.4K30

    Ansible之 AWX 管理清单和凭据一些笔记

    通过清单访问控制来看一清单角色,下面为为该清单添加团队角色 清单角色 清单可用角色列表: 管理员/Admin:清单 Admin 角色授予用户对清单完全权限。...「注意:如果项目有 host_vars 和 group_vars 文件,不能在 AWX 中进行编辑这些文件。...自定义凭据:管理员可以定义自定义凭据类型,建议修改 创建计算机凭据 凭据通过位于左侧导航栏上 AWX 凭据 链接下页面进行管理。任何用户都可以创建凭据,并被视为该凭据所有者。...创建后,该凭据可供支持人员用于在受管主机上启动作业,而无需知道 SSH 密钥 或 sudo 密码。...通过清单ad hoc方式 查看下节点中kubelet服务 状态 选择之前创建凭据 执行作业:通过输出可以查看 工作节点 kubelet 状态 可以对输出日志进行查询 刚才任务状态信息

    2.4K10

    Ansible自动化运维学习笔记1

    比如:每当有新服务器加入工作环境时,你都要为新服务器部署redis服务,也就是说你需要经常重复完成相同工作。...”是否与”目标状态”一致,如果一致,则不进行任何操作,如果不一致那么就将”当前状态”变成”目标状态” 剧本 模板 角色 其他一些运维配置管理工具还有puppet或者saltstack而ansible相比较于他们优点...: 使用puppet管理100台主机,就要在这100台主机上安装puppet对应agent(客户端代理程序),比较繁琐; 不同之处在于ansible只需要依赖ssh即可正常工作,不用在受管主机上安装agent...(剧本) 描述:将我们前面所学到模块知识点应用到工作场景,进一步理解与使用ansible 剧本yml语法 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下...state=started" 但是在实际工作环境中我们可能需要经常在新主机上安装nginx,难道每次有新服务器加入工作环境,我们都要修改上述3条命令中主机名并且重新将每一条命令执行一遍吗?

    4.1K31

    如何控制Ansible Playbook执行顺序、运行选定剧本资源

    include_tasks加载所有任务都与此标签关联。 角色,角色所有任务都与此标签关联。 任务块,块中所有任务都与此标签关联。 看一个Demo,上面的标记依次来看体验。...如果有些剧本资源,你希望它始终运行,或是希望它始终运行,即使在你使用tags、skip-tags指定标签情况,Ansible 这两种场景中提供了特殊标记: always:带有 always 标记资源始终都会运行...为了剧本可读性,一般情况,剧本任务是写在角色后面的,整个书写顺序也就是执行顺序。...缺点是,在没有仔细检查情况,可能不太清楚您剧本使用是哪些角色,因为角色切入了任务内部 import和include 有些许区别 使用include_role模块可以动态包含角色, 使用import_role...由于Ansible通常在多个主机上并行运行每个任务,因此 ansible-playbook 命令输出可能无法反映预期顺序:输出显示是任务完成顺序,而不是执行顺序。

    2.6K10

    基于Ansible和Devops一键测试环境部署实践

    如何选择一个合适工具,实现多样化环境部署同时保证部署操作易用性。下面分享一我们基于Ansible和Devops实现一键式测试环境部署过程。...Ansible是基于模块工作,具有丰富内置模块,同时也支持自定义模块开发。以下是对Ansible和其他常见运维工具对比: ? 而ansible在自动化运维过程时具有如下优势: 1....Ansible主要有ad-hoc和playbook两种执行方式,Ansible Ad-hoc是一次性命令,适合执行单个、简单任务,一次只调用一个模块执行,如执行: ansible -m yum -...vars: 定义此角色用到变量 defaults:为当前角色设定默认变量 Playbook模式在安装有ansible 机器上执行如下命令即可: ansible-playbook -ilinux.inventory...在实际部署中可将不同类型关联操作定义在相同task或role中,执行中根据参数动态加载,如windows和linux模块定义不一样,将windows和linux操作定义在不同task中,根据执行时传入

    1.6K20

    大神带你 20 分钟学会 Ansible

    ansible # yum -y install ansible Ansible配置文件 /etc/ansible/ansible.cfg 配置文件 /etc/ansible/hosts...不过,这些变量只能在ansible-playbook中使用,而ansible不支持。...play主要功能在于将事先归并为一组主机装扮成事先通过ansibletask定义好角色。从根本上来讲,所有task无非是调用ansible一个module。...task list中各任务按次序逐个在hosts中指定所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。...、meta、tasks、templates和vars目录;用不到目录可以创建为空目录,也可以创建 在playbook文件中,调用各角色 8.2 role内各目录中可应用文件 task目录:至少应该包含一个为

    3.5K20

    Ansible极简教程

    不过,这些变量只能在ansible-playbook中使用,而ansible不支持。...play主要功能在于将事先归并为一组主机装扮成事先通过ansibletask定义好角色。从根本上来讲,所有task无非是调用ansible一个module。...task list中各任务按次序逐个在hosts中指定所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。...role是使ansible状态管理可复用很重要一个概念,很多时候你只需要在自己playbook里引用别人role即可,大家写role可以相互共享,相互参考。...handlers、meta、tasks、templates和vars目录;用不到目录可以创建为空目录,也可以创建 在playbook文件中,调用各角色 8.2 role内各目录中可应用文件 task

    4.1K30

    Ansible自动化运维学习笔记1

    比如:每当有新服务器加入工作环境时,你都要为新服务器部署redis服务,也就是说你需要经常重复完成相同工作。...”是否与”目标状态”一致,如果一致,则不进行任何操作,如果不一致那么就将”当前状态”变成”目标状态” 剧本 模板 角色 其他一些运维配置管理工具还有puppet或者saltstack而ansible相比较于他们优点...: 使用puppet管理100台主机,就要在这100台主机上安装puppet对应agent(客户端代理程序),比较繁琐; 不同之处在于ansible只需要依赖ssh即可正常工作,不用在受管主机上安装agent...用于配置对应主机上sshd服务端口号默认22号端口, # ansible_user 用于配置连接到对应主机时所使用用户名称。..."name=nginx state=started" 但是在实际工作环境中我们可能需要经常在新主机上安装nginx,难道每次有新服务器加入工作环境,我们都要修改上述3条命令中主机名并且重新将每一条命令执行一遍吗

    1.9K20

    IT运维面试问题总结-运维工具、开源应用(Ansible、Ceph、Docker、Apache、Nginx等)

    同时Ansible是基于模块工作,其实现批量部署ansible所运行模块。...Ansible模块被设计成幂等,即在一个适当编写剧本中,剧本及其任务可以在更改受管主机情况多次运行,除非它们需要进行更改以使受管主机达到所需状态。...默认情况,当一个任务失败时,Ansible会立即中止该主机上其他操作,并跳过所有后续任务。...它是一个包含数千个Ansible角色归档文件,并且有一个可搜索数据库,帮助Ansible用户识别可能帮助他们完成管理任务角色。...通过在所有主机上并行运行任务,Ansible可以对剧本执行进行更多控制。默认情况Ansible默认最多并行5个,因此它将同时在5台不同机器上运行一个特定任务。

    3.5K10

    如何在Ubuntu 18.04上使用Kubeadm创建Kubernetes 1.11集群

    第1步 - 设置工作区目录和Ansible清单文件 在本节中,您将在本地计算机上创建一个用作工作目录。您将在本地配置Ansible,以便它可以与远程服务器上命令进行通信并执行命令。...~/kube-cluster/hosts将是您库存文件,并且您已向其添加了两个Ansible组(服务器和工作服务器),用于指定集群逻辑结构。...第二个游戏包含安装kubectl在节点上单个任务。 完成后保存并关闭文件。...您现在可以从本地计算机添加工作程序。 第5步 - 设置工作节点 将工作程序添加到集群涉及在每个集群上执行单个命令。此命令包括必要群集信息,例如服务器API服务器IP地址和端口以及安全令牌。...在安排应用程序之前,让我们验证群集是否按预期工作。 第6步 - 验证群集 集群有时可能在安装过程中失败,因为节点已关闭或服务器与工作服务器之间网络连接无法正常工作

    2.8K00
    领券