当前位置: 首页 > news >正文

ansible 模块进阶及变量

yum 模块进阶

- name: install pkgs
  hosts: webservers
  tasks:
    - name: install web pkgs  # 此任务通过yum安装三个包
      yum:
        name: httpd,php,php-mysqlnd
        state: present
# 根据功能等,可以将一系列软件放到一个组中,安装软件包组,将会把很多软件一起安装上。比如gcc、java等都是开发工具,安装开发工具包组,将会把它们一起安装。
[root@node1 ~]# yum grouplist   # 列出所有的软件包组
[root@node1 ~]# yum groupinstall "Development Tools"
# 如果列出的组名为中文,可以这样进行:
[root@node1 ~]# LANG=C yum grouplist

ansible变量

  • 常用的facts变量

    • ansible_all_ipv4_addresses:所有的IPV4地址
    • ansible_bios_version:BIOS版本信息
    • ansible_memtotal_mb:总内存大小
    • ansible_hostname:主机名
  • facts变量是一个大的由{}构成的键值对字典。在{}中,有很多层级的嵌套。可以通过参数过滤出第一个层级的内容。

[root@pubserver ansible]# ansible web1 -m setup |less

自定义变量

  • 引入变量,可以方便Playbook重用。比如装包的playbook,包名使用变量。多次执行playbook,只要改变变量名即可,不用编写新的playbook。

  • ansible支持10种以上的变量定义方式。常用的变量来源如下:

    • inventory变量。变量来自于主机清单文件
    • facts变量。
    • playbook变量。变量在playbook中定义。
    • 变量文件。专门创建用于保存变量的文件。推荐变量写入单独的文件。
    • 变量文本  >   playbook变量  >   inventory变量

firewalld模块

    • port:声明端口
    • permanent:永久生效,但不会立即生效
    • immediate:立即生效,临时生效
    • state:enabled,放行;disabled拒绝
  • 防火墙一般默认拒绝,明确写入允许的服务。

template模块
  • copy模块可以上传文件,但是文件内容固定

  • template模块可以上传具有特定格式的文件(如文件中包含变量)

  • 当远程主机接收到文件之后,文件中的变量将会变成具体的值

  • template模块上传的文件,使用的语法叫Jinja2。

  • src:要上传的文件
  • dest:目标文件路径

进阶语法

触发执行任务

  • 通过handlers定义触发执行的任务
  • handlers中定义的任务,不是一定会执行的
  • 在tasks中定义的任务,通过notify关键通知handlers中的哪个任务要执行
  • 只有tasks中的任务状态是changed才会进行通知。

when条件

  • 只有满足某一条件时,才执行任务

  • 常用的操作符:

    • ==:相等
    • !=:不等
    • >:大于
    • <:小于
    • <=:小于等于
    • >=:大于等于
  • 多个条件或以使用and或or进行连接

  • when表达式中的变量,可以不使用{{}}

# 当dbs组中的主机内存大于2G的时候,才安装mysql-server
[root@pubserver ansible]# vim when1.yml
---
- name: install mysql-server
  hosts: dbs
  tasks:
    - name: install mysql-server pkg
      yum:
        name: mysql-server
        state: present
      when: ansible_memtotal_mb>2048
# 如果目标主机没有2GB内存,则不会安装mysqld-server

相关文章:

  • JS学习总结
  • 安卓开发拉起其他应用的常用方式
  • 项目经理究竟一年能挣多少钱?一起来看看
  • 人力资源招聘社会校企类型招聘系统校园招聘小程序
  • 基于PLC的全自动洗衣机控制系统课设
  • WDC西部数据闪存业务救赎之路,会成功吗?
  • 嵌入式实验---实验一 通用GPIO实验
  • 行列视(RCV)在生产数据监督中的优势
  • enum库
  • SSM实现设置商品秒杀券的后端设计思路
  • 互联网广告相关概念
  • Pyinstaller 打包exe后,打开出现can‘t find package tkdnd 报错
  • 科技云报道:推进工业新质生产力机器人有望成为AI下一个新引擎?
  • 如何制作 PDF 文件
  • 测速小车模块
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 自己简单写的 事件订阅机制
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • CSS 专业技巧
  • Fundebug计费标准解释:事件数是如何定义的?
  • js对象的深浅拷贝
  • js中forEach回调同异步问题
  • Lsb图片隐写
  • ReactNativeweexDeviceOne对比
  • ubuntu 下nginx安装 并支持https协议
  • Yii源码解读-服务定位器(Service Locator)
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 力扣(LeetCode)56
  • 前端
  • 如何实现 font-size 的响应式
  • 原生js练习题---第五课
  • MyCAT水平分库
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ‌内网穿透技术‌总结
  • # 飞书APP集成平台-数字化落地
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • $NOIp2018$劝退记
  • (1)(1.9) MSP (version 4.2)
  • (ZT)薛涌:谈贫说富
  • (二)springcloud实战之config配置中心
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)Mysql的优化设置
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET 直连SAP HANA数据库
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @RestController注解的使用
  • [20190401]关于semtimedop函数调用.txt