Linux之ansible的playbook剧本(yaml文件)

playbook剧本

一个剧本(即playbook),可以包含多个play

每个play用于在指定的主机上,通过模块和参数执行相应的任务

每个play可以包含多个任务。

任务有模块和参数构成。

paly要建立在ansible文件夹下才能使用

因为yaml文件对格式要求很严格所有本人在编写时会设置一下vim编译器的一些功能

格式

R 复制代码
set ai:自动缩进

set ts=2:设置tab键缩进两个空格

set et:将tab键转换为相应的空格

set cursorcolumn:设置光标列
R 复制代码
---
- 名字(name): 自己起名
  职员表(hosts): 要执行的主机
  场景(tasks):
      - 名字(name): 任务名称
        模块名:
        选项:
      - 名字(name): 任务名称2
        模块名:
        选项:

yaml语法

  1. yaml文件的文件名,一般以yml或yaml作为扩展名
  2. 文件一般以---作为第一行,不是必须的,但是常用
  3. 键值对使用冒号:表示,冒号后面必须有空格。
  4. 数组使用-表示,-后面必须有空格。
  5. 相同的层级必须有相同的缩进。如果缩进不对,则有语法错误。每一级缩进,建议2个空格。
  6. 全文不能使用tab,必须使用空格。
    下面用例子帮助大家了解并介绍一些模块
    例
yaml 复制代码
# 编写用于测试连通性的playbook,相当于执行ansible all -m ping
[root@server ansible]# vim test.yml
---[root@server ansible]# vim test.yml
---
- hosts: all
  tasks:
    - ping:
- hosts: all
  tasks:
    - ping:

# 在dbs组的主机和web1上创建/tmp/demo目录,权限是0755。将控制端/etc/hosts拷贝到目标主机的/tmp/demo中
[root@server ansible]# vim fileop.yml
---
- name: create dir and copy file
  hosts: dbs,web1    # 这里的名称,必须出现在主机清单文件中
  tasks:
    - name: create dir
      file:
        path: /tmp/demo
        state: directory
        mode: '0755'
    
    - name: copy file
      copy:
        src: /etc/hosts
        dest: /tmp/demo/hosts

特殊符号 | >

|和>的区别:|它保留换行符,>把多行合并为一行

例

yaml 复制代码
# 通过copy模块创建/tmp/1.txt,文件中有两行内容,分别是Hello World和ni hao
[root@server ansible]# vim f1.yml
---
- name: play 1
  hosts: webservers
  tasks:
    - name: mkfile 1.txt
      copy:
        dest: /tmp/1.txt
        content: |
          Hello World!
          ni hao.
          
          
# 通过copy模块创建/tmp/2.txt,文件中有一行内容,分别是Hello World! ni hao
[root@server ansible]# vim f2.yml 
---
- name: play 1
  hosts: webservers
  tasks:
    - name: mkfile 2.txt
      copy:
        dest: /tmp/2.txt
        content: >
          Hello World!
          ni hao.

硬盘管理

常用的分区表类型有:MBR(主引导记录)、GPT(GUID分区表)

MBR最多支持4个主分区,或3个主分区加1个扩展分区。最大支持2.2TB左右的硬盘GPT最多支持128个主分区。支持大硬盘

parted模块

用于硬盘分区管理

常用选项:

device:待分区的设备

number:分区编号

state:present表示创建,absent表示删除

part_start:分区的起始位置,不写表示从开头

part_end:表示分区的结束位置,不写表示到结尾

编写逻辑卷创建以及挂载

下面通过一个例子介绍该模块一般如何使用

yaml 复制代码
# 在web1主机上,对/dev/vdc进行分区,创建1个1GB的主分区
---
- name: disk manage
  hosts: web1
  tasks:
    - name: create a partition
      parted:
        device: /dev/vdc
        number: 1
        state: present
        part_end: 1GiB

# 继续编辑disk.yml,对/dev/vdc进行分区,创建1个新的5GB的主分区


    - name: add a new partition
      parted:
        device: /dev/vdc
        number: 2
        state: present
        part_start: 1GiB
        part_end: 6GiB


# 继续编辑disk.yml,创建名为my_vg的卷组,它由上面创建的vdc1和vdc2构成
... ...
    - name: create my_vg
      lvg:
        vg: my_vg
        pvs: /dev/vdc1,/dev/vdc2

# 继续编辑disk.yml,在my_vg卷组上创建名为my_lv的逻辑卷,大小1G
... ...
    - name: create my_lv
      lvol:
        vg: my_vg
        lv: my_lv
        size: 1G


# 继续编辑disk.yml,格式化my_lv为ext4
... ...
    - name: mkfs my_lv
      filesystem:
        dev: /dev/my_vg/my_lv
        fstype: ext4


# 继续编辑disk.yml,将my_lv挂载到/data
... ...
    - name: mount my_lv
      mount:
        path: /data
        src: /dev/my_vg/my_lv
        fstype: ext4
        state: mounted
相关推荐
打工仔折腾 AI6 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
yyuuuzz6 小时前
跨境站点日志时区混乱的排查记录
运维·服务器·网络·云计算·aws·1024程序员节
‎ദ്ദിᵔ.˛.ᵔ₎6 小时前
关于Linux 线程局部存储的认识
linux·运维
GlobalInfo6 小时前
全球及中国风电叶片检测机器人行业研究报告(2026版):市场现状、行业前景与占有率分析
运维·网络·人工智能·机器人
数字新视界7 小时前
一体化机柜在数据中心运维中的创新应用与优势分析
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
隔窗听雨眠7 小时前
KingbaseES平替全链路实践:从迁移评估到可持续运维
运维
skywalk81638 小时前
登到192.168.1.5那台机器,看看今天白天,大约从早晨到晚上,都卡住了。看看因为什么卡住,为什么卡住而没有杀死那个导致卡死的进程,为什么
运维·系统·freebsd
运维行者_8 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php
小小de风呀8 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习
2401_868534788 小时前
陈冲2026年上海纽约大学全英文毕业演讲
服务器·网络