首页 > 其他分享 >ansible-playbook一次执行多个playbook,并重新指定hosts组

ansible-playbook一次执行多个playbook,并重新指定hosts组

时间:2024-09-14 09:46:32浏览次数:12  
标签:指定 ansible hosts playbook import yml

Ansible 中,如果你有一个主 playbook 包含了多个 playbook,而这些子 playbook 指定的 hosts 不一样,你可以通过两种方式统一在主 playbook 中指定 hosts

1. 在主 playbook 中指定全局的 hosts

你可以在主 playbook 中通过顶层的 hosts 指定统一的目标主机。这种方式会覆盖子 playbook 中定义的 hosts

示例:

# main_playbook.yml
---
- hosts: all  # 在主 playbook 里统一指定 hosts
  import_playbook: playbook1.yml

- hosts: all  # 或者为每个 import_playbook 指定
  import_playbook: playbook2.yml

- hosts: all
  import_playbook: playbook3.yml

这样,所有子 playbook 将会使用 main_playbook.yml 中定义的 hosts: all,从而覆盖各个子 playbook 中定义的 hosts

2. 在 include 时动态传递 hosts

你可以在 import_playbookinclude_playbook 时显式为每个子 playbook 定义不同的 hosts。这样即使子 playbook 中有 hosts 定义,也会被覆盖。

示例:

# main_playbook.yml
---
- import_playbook: playbook1.yml
  hosts: webservers  # 指定 playbook1 的 hosts

- import_playbook: playbook2.yml
  hosts: dbservers  # 指定 playbook2 的 hosts

- import_playbook: playbook3.yml
  hosts: all  # 指定 playbook3 的 hosts

通过这种方式,你可以为每个子 playbook 动态指定不同的目标主机,而不必修改各个子 playbook 的内容。

3. 使用 limit 参数控制执行范围

除了在 playbook 中直接指定 hosts,你还可以使用 ansible-playbook 命令中的 --limit 选项来限制主机范围。例如:

ansible-playbook main_playbook.yml --limit webservers

这样可以只执行指定主机组 webservers 上的任务,而不需要修改 playbook 文件中的 hosts 设置。

总结:

  • 可以通过在主 playbook 中统一指定 hosts,覆盖各个子 playbookhosts 设置。
  • 也可以为每个子 playbook 单独指定 hosts,在 import_playbook 时动态传递。
  • 使用 ansible-playbook --limit 命令参数来指定目标主机,也是一种灵活的方式。

通过这些方法,可以灵活地控制多个 playbook 的主机范围,并在需要时统一管理。

标签:指定,ansible,hosts,playbook,import,yml
From: https://www.cnblogs.com/jasmine456/p/18413364

相关文章

  • 自动化工具ansible实战:一键部署k8s集群
    一、环境部署主机资源IP描述ansible2cpu、2G192.168.147.200ansiblek8s-master2cpu、2G192.168.147.210管理节点k8s-node12cpu、2G192.168.147.220node节点k8s-node22cpu、2G192.168.147.230node节点......
  • VCSA基于ansible批量创建虚拟机
    基于ansible批量创建虚拟机安装模块pipinstall--upgradeansiblepipinstallPyVmomiansible-galaxycollectioninstallcommunity.vmwareansiblevmware_guest如果需要配置IP和计算机名需要安装VMwaretools----hosts:localhost##在本机执行gather_facts:......
  • ansible批量修改主机名
    (1)hosts文件[task]IP地址1 hostname=主机名1IP地址2 hostname=主机名2IP地址3 hostname=主机名3[task:vars]ansible_become=yesansible_become_method=sudoansible_become_user=rootansible_become_password=密码ansible_user=用户ansible_password=密码ansible_python_int......
  • ansible模块编写
    目录1.程序为什么能识别模块a.模块是独立的脚本b.模块的路径与目录结构2.模块的工作特性a.ansible模块执行任务,会ssh到远程主机b.ansible.module_utils.basicc.核心模块(CoreModules)与插件(Plugins)的区别3.构建简单模块a.模块功能b.模块文档c.验证模块功能1.程序为什......
  • ansible
     介绍:1、基于python语言开发,自动化运维工具2、实现IT基础设施设备进行批量管控特性:1、开源的、跨平台的2、底层基于ssh协议通信3、noserver4、noagent5、支持playbook剧本6、提供API接口#vi/etc/ansible/ansibe.cfghost_key_checking=false:wq#vi/etc/ansib......
  • ansible playbook
    优势:便于功能的重用本质上就是.yml结尾的文件遵循YAML语法编写YAML语法注意事项:1、一个键对应一个值时   key:value2、一个键对应多个值时   key: value1 value23、同级别代码,缩进要一样,建议4个空格-hosts:被管理机 tasks:  -name:操作名......
  • ansible roles使用场景,现在有多台机器需要批量加入k8s集群,怎么实现
    AnsibleRoles是一种用于组织和重用Ansible任务的结构化方式。它们特别适合于大型项目,能够简化配置管理和自动化部署。使用AnsibleRoles可以有效地管理多台机器的配置和状态。使用场景模块化管理:将相关的任务、变量和文件组织到一起,提高可维护性。复用性:不同项目可以复......
  • 掌握 Ansible:高效自动化运维的完整教程
    Ansible自动化运维全解指南感谢浪浪云支持发布浪浪云活动链接:https://langlangy.cn/?i8afa52文章目录Ansible自动化运维全解指南一、Ansible概述1.Ansible特点二、Ansible的角色1.使用者2.Ansible工具集3.作用对象三、Ansible的配置1.Ansible安装1)通过......
  • Ansible教程
    1.安装ansible在有安装python情况下:pipinstallansible或者指定版本:pipinstallansible==2.7.2没有安装python情况下:ubuntu:aptinstallansiblecentos:yuminstallansible-y2.查看ansible版本及配置文件ansible--version 3.修改ansible配置cd/optnanoansibl......
  • Ansible_cron-管理定时任务模块
    Linux#Ansible_Modulecron模块使用此模块管理crontab和环境变量条目。这个模块允许您创建环境变量和命名为crontab的条目、更新或删除它们。当crontab作业被管理时:模块包含一行crontab条目的描述“#Ansible:<name>”’对应于传递给模块的“name”,它被未来的ansible/module......