ansible重要模块补充以及进阶playbook剧本

yum_repository :用于配置yum file: 指定文件名 其他选项,请与文件内容对照

# 在webservers组中的主机上,配置yum
[root@pubserver ansible]# ansible webservers -m yum_repository -a "file=myrepo name=myApp description='My App' baseurl=ftp://192.168.88.240/dvd/AppStream gpgcheck=no enabled=yes

[root@pubserver ansible]# ansible webservers -m yum_repository -a "file=myrepo name=BaseOS description='Base OS' baseurl=ftp://192.168.88.240/dvd/BaseOS gpgcheck=no enabled=yes"

[root@web1 ~]# cat /etc/yum.repos.d/myrepo.repo 
[myApp]
async = 1
baseurl = ftp://192.168.88.240/dvd/AppStream
enabled = 1
gpgcheck = 0
name = My App

[BaseOS]
async = 1
baseurl = ftp://192.168.88.240/dvd/BaseOS
enabled = 1
gpgcheck = 0
name = Base OS

yum模块: 用于rpm软件包管理,如安装、升级、卸载  name:包名   state:状态。present表示安装,如果已安装则忽略;latest表示安装或升级到最新版本;absent表示卸载

# 在webservers组中的主机上安装tar
[root@pubserver ansible]# ansible webservers -m yum -a "name=tar state=present"

service模块 : 用于控制服务。启动、关闭、重启、开机自启  name:控制的服务名  state:started表示启动;stopped表示关闭;restarted表示重启  enabled:yes表示设置开机自启;no表示设置开机不要自启

# 在test主机上安装nginx
[root@pubserver ansible]# ansible webservers -m yum -a "name=nginx state=latest"

逻辑卷相关模块

-逻辑卷可以动态管理存储空间。可以对逻辑卷进行扩容或缩减。
可以把硬盘或分区转换成物理卷PV;再把1到多个PV组合成卷组VG;然后在VG上划分逻辑卷LV。LV可以像普通分区一样,进行格式化、挂载。

lvg模块:创建、删除卷组,修改卷组大小  vg:定义卷组名。vg:volume group  pvs:由哪些物理卷构成。pvs:physical volumes

# 在web1上安装lvm2,state不写,默认是present
[root@pubserver ansible]# ansible web1 -m yum -a "name=lvm2"
# 手工在web1上对vdb进行分区
[root@web1 ~]# fdisk /dev/vdb
Command (m for help): g    # 创建GPT分区表
Command (m for help): n    # 新建分区
Partition number (1-128, default 1):    # 回车,使用1号分区
First sector (2048-41943006, default 2048):   # 起始位置,回车
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943006, default 41943006): +5G   # 结束位置+5G

# 在web1上创建名为myvg的卷组,该卷组由/dev/vdb1组成
[root@pubserver ansible]# ansible web1 -m lvg -a "vg=myvg pvs=/dev/vdb1"

# 在web1上查看卷组
[root@web1 ~]# vgs

lvol模块:创建、删除逻辑卷,修改逻辑卷大小  vg:指定在哪个卷组上创建逻辑卷 lv:创建的逻辑卷名。lv:logical volume   size:逻辑卷的大小,不写单位,以M为单位

# 在web1上创建名为mylv的逻辑卷,大小为2GB
[root@pubserver ansible]# ansible web1 -m lvol -a "vg=myvg lv=mylv size=2G"

# 在web1上查看逻辑卷
[root@web1 ~]# lvs

filesystem模块:用于格式化,也就是创建文件系统   fstype:指定文件系统类型   dev:指定要格式化的设备,可以是分区,可以是逻辑卷

#  在web1上,把/dev/myvg/mylv格式化为xfs
[root@pubserver ansible]# ansible web1 -m filesystem -a "fstype=xfs dev=/dev/myvg/mylv# 在web1上查看格式化结果
[root@web1 ~]# blkid /dev/myvg/mylv

mount模块:用于挂载文件系统  path:挂载点。如果挂载点不存在,自动创建  src:待挂载的设备  fstype:文件系统类型   state:mounted,表示永久挂载

# 在web1上,把/dev/myvg/mylv永久挂载到/data
[root@pubserver ansible]# ansible web1 -m mount -a "path=/data src=/dev/myvg/mylv state=mounted fstype=xfs"

# 在web1上查看
[root@web1 ~]# tail -1 /etc/fstab 
/dev/myvg/mylv /data xfs defaults 0 0

Playbook剧本常用于复杂任务的管理,以及管理经常要完成的任务
playbook也是通过模块和它的参数,在特定主机上执行任务
playbook是一个文件,该文件中需要通过yaml格式进行书写

yaml语法规范:

yaml文件的文件名,一般以yml或yaml作为扩展名
文件一般以---作为第一行,不是必须的,但是常用
键值对使用冒号:表示,冒号后面必须有空格。
数组使用-表示,-后面必须有空格。
相同的层级必须有相同的缩进。如果缩进不对,则有语法错误。每一级缩进,建议2个空格。
全文不能使用tab,必须使用空格。

配置vim适应yaml语法

# 文件位置和名字是固定的,用于设置vim的格式
[root@pubserver ansible]# vim ~/.vimrc
set ai        # 设置自动缩进
set ts=2      # 设置按tab键,缩进2个空格
set et        # 将tab转换成相应个数的空格

编写playbook
一个剧本(即playbook),可以包含多个play每个play用于在指定的主机上,通过模块和参数执行相应的任务 每个play可以包含多个任务。任务有模块和参数构成。#多看ansible-doc 帮助

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

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

[root@pubserver ansible]# ansible-playbook f1.yml

parted模块:用于硬盘分区管理  device:待分区的设备  number:分区编号  state:present表示创建,absent表示删除  part_start:分区的起始位置,不写表示从开头  part_end:表示分区的结束位置,不写表示到结尾

# 在web1主机上,对/dev/vdc进行分区,创建1个1GB的主分区
[root@pubserver ansible]# vim disk.yml
---
- name: disk manage
  hosts: web1
  tasks:
    - name: create a partition
      parted:
        device: /dev/vdc
        number: 1
        state: present
        part_end: 1GiB

[root@pubserver ansible]# ansible-playbook disk.yml

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

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


# 继续编辑disk.yml,格式化my_lv为ext4
[root@pubserver ansible]# vim disk.yml 
... ...
    - name: mkfs my_lv
      filesystem:
        dev: /dev/my_vg/my_lv
        fstype: ext4

# 继续编辑disk.yml,将my_lv挂载到/data
[root@pubserver ansible]# vim disk.yml 
... ...
    - name: mount my_lv
      mount:
        path: /data
        src: /dev/my_vg/my_lv
        fstype: ext4
        state: mounted

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值