本次实验环境是在之前编写playbook时配置过的实验环境,在普通用户devops家目录下的ansible目录中进行实验。已经提前配置好ansible及两台hosts主机的免密及用户授权,三台机子均拥有普通用户devops。具体方法详情见前篇《云计算自动化运维——Ansible详解及inventory文件配置》
附链接:云计算自动化运维——Ansible详解及inventory文件配置
playbook实现磁盘分区挂载实验
实验环境:
虚拟机名称 | ip | 版本 | 角色 |
---|---|---|---|
server1 | 172.25.1.1 | 7.5 | ansible |
server2 | 172.25.1.2 | 7.5 | 远程主机hosts |
server3 | 172.25.1.3 | 7.5 | 远程主机hosts |
实验:
步骤一:编写playbook
vim fdisk.yml
---
- hosts: localhost #对localhost组内主机执行
tasks:
- shell: test -b /dev/vda #【1】调用shell模块,判断/dev/vda是否存在
register: result #【2】result接收调试结果
ignore_errors: True #忽略错误信息
- debug: #【3】
msg: "/dev/vda not exists" #调试输出的消息
when: result.rc != 0 #当调试结果result的值不为0时,执行debug
- name: create partations #磁盘分区
block:
- name: create a new primary partition with a size of 2GiB
parted:
device: /dev/vda
number: 1 #分区个数
state: present
part_end: 2GiB
- name: Create a ext4 filesystem on /dev/vda1 #格式化
filesystem:
fstype: ext4
dev: /dev/vda1
- name: Mount up device #挂载
mount:
path: /media
src: /dev/vda1
fstype: ext4
opts: noatime
state: mounted
when: result.rc == 0 #当调试结果result的值为0时,执行create partations
【1】test测试文件或设备是否存在,通过返回值判断
用法:
man test #可查看用法
使用:
【2】register
用于注册一个变量,保存命令的结果(shell或command模块),这个变量可以在后面的task、when语句或模板文件中使用。此处为使用的是result变量接收结果。
【3】
debug模块在执行期间打印语句,并且可用于调试变量或表达式,而不必停止playbook。
步骤二:在hosts文件中定义localhost组
这里我定义的主机是server1主机
。
步骤三:给server1主机添加一块磁盘
我的server1虚拟机上没有磁盘/dev/vda
server1上fdisk -l 查看:
步骤四:运行测试
测试:
步骤五:debug测试
server2虚拟机没有/dev/vda磁盘
将fdisk.yml文件中的组修改为test,包含主机server2
运行:
附ansible官网学习链接:https://docs.ansible.com/ansible/latest/user_guide/