ansible 自动化运维工具 2 (ansible命令运行方式、常用模块)

一、ansible实现管理的方式

Ad-Hoc :利用ansible命令直接完成管理,主要用于临时命令使用场景
playbook :ansible脚本,主要用于大型项目场景,需要前期的规划

(1)Ad-Hoc执行方式中如何获得帮助:
ansible-doc :显示模块帮助的指令
格式:ansible-doc [参数] [模块…]
常用参数:
ansible-doc -l: 列出所有模块
ansible-doc 名称: 列出指定模块
ansible-doc -s :简要列出指定模块
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
(2)playbook,ansible脚本,主要用于大型项目场景,需要前期的规划
请添加图片描述
编写test.yaml,执行test.yaml
请添加图片描述

二、ansible命令运行方式及常用参数

格式:
ansible 清单 -m 模块 -a 模块参数
常用参数
--version 显示版本
-m module 指定模块,默认为command模块
-v 详细过程 -vv -vvv更详细过程
--list 显示主机列表,也可以用--list-hosts
-k 提示输入ssh连接密码,默认key认证
-C 预执行检测
-T 执行命令的超时时间,默认10s
-u 指定远程执行的用户
-b 执行sudo切换身份操作
-become-user=USERNAME 指定sudo的用户
-K 提示输入sudo密码

-v显示详细信息
请添加图片描述
继续编辑test.yml文件
请添加图片描述
请添加图片描述
-vv -vvv显示更详细过程
请添加图片描述
请添加图片描述
-k 提示输入ssh连接密码,默认key认证
请添加图片描述
-u 指定远程执行的用户
请添加图片描述
不指定-u时显示也为root用户
请添加图片描述
这是因为设定了身份信息,连接后自动切换用户
请添加图片描述
将其注释
请添加图片描述
此时默认为devops用户
请添加图片描述
-C 预执行检测
请添加图片描述
真实执行,显示报错,是因为未设定提权,devops用户不具有删除/mnt下文件的权限
请添加图片描述
进行提权,-become-user=USERNAME 指定sudo的用户
请添加图片描述
-T 执行命令的超时时间,默认10s
请添加图片描述
还原设定
请添加图片描述
ansible的基本颜色代表信息
绿色,执行成功但为对远程主机做任何改变;
请添加图片描述
黄色,执行成功并对远程主机做改变;
红色,执行失败
请添加图片描述

三、ansible中的常用模块[1]

1.command

功能: 在远程主机执行命令,此模块为默认模块
常用参数
chdir 执行命令前先进入到指定目录
cmd 运行命令指定
creates 如果文件存在将不运行
removes 如果文件存在将运行
free_form 在远程主机中执行的命令,此参数不需要加

进入mnt目录,创建文件file1/2;
成功创建
请添加图片描述
进入mnt目录,删除文件file1/2;
请添加图片描述
进入mnt目录,创建文件file1/2;
请添加图片描述

removes参数 :与 creates 参数的作用正好相反,它的作用是当指定的文件不存在时,就不执行对应命令,比如,如果 /mnt/file1 文件不存在,就不执行我们指定的命令,此参数并不会帮助我们删除文件。

removes :如果/mnt/file1文件存在将运行
请添加图片描述

creates参数 :看到 creates,你可能会从字面上理解这个参数,但是使用这个参数并不会帮助我们创建文件,它的作用是当指定的文件存在时,就不执行对应命令,比如,如果 /mnt/file1文件存在,就不执行我们指定的命令。

creates :如果/mnt/file1文件存在将不运行,不存在将运行创建指令
请添加图片描述
creates :如果/mnt/file1文件存在将不运行删除指令;
文件依然存在
请添加图片描述
node节点的文件也存在
请添加图片描述

2.shell

功能: 和command功能类似,主要有两点不同
常用参数
chdir 执行命令前先进入到指定目录
cmd 运行命令指定
creates 如果文件存在将不运行
removes 如果文件存在在将运行
free_form 在远程主机中执行的命令,此参数不需要加
executable 指定执行环境,默认为

在这里插入代码片

(1)shell中支持通配符* ,command不支持通配符*
如下图,command中无法删除/mnt,shell中可以删除/mnt
请添加图片描述
请添加图片描述
chdir 执行命令前先进入到指定目录
请添加图片描述
文件成功建立
请添加图片描述
cmd 运行命令指定
请添加图片描述
creates 如果文件存在将不运行
请添加图片描述
removes 如果文件存在在将运行
请添加图片描述
请添加图片描述
(2)shell多了executable模块,默认使用的执行环境为sh,加入executable模块,可以指定执行环境为bash;
$$是当前bash进程的pid
请添加图片描述
请添加图片描述

3.script

功能:在ansible主机中写好的脚本在受控主机中执行;
示例:先在ansible主机里创建一个test.sh脚本文件
请添加图片描述
使用script模块,受控机执行test.sh脚本
请添加图片描述

4.copy

功能:从ansible主机复制文件到受控主机
在这里插入图片描述
请添加图片描述
请添加图片描述
此时node主机/mnt目录下为空
请添加图片描述
使用copy模块,从ansible主机复制test.sh文件到被控主机的/mnt/test.sh文件,拥有者为westos,权限为755
请添加图片描述
进入受控机,查看文件权限为755,拥有者为westos
请添加图片描述
修改test.sh文件,再次执行copy模块,添加backup参数,可以备份之前的同名文件
在这里插入图片描述
请添加图片描述
在这里插入图片描述
copy模块,还可以直接输入文件内容,发给受控主机的/mnt/westos文件
请添加图片描述
受控主机的westos文件的内容的确是hello word
请添加图片描述

5.fetch

功能:从受控主机把文件复制到ansible主机,但不支持目录
在这里插入图片描述
查看node节点的网卡配置文件
请添加图片描述
请添加图片描述
使用fetch模块,从受控主机复制/etc/sysconfig/network-scripts/ifcfg-ens3文件到ansible主机的lr用户的家目录,可以看到层层的子目录也复制过来了
请添加图片描述
多加flat参数,表示只要这个文件,不要层层目录
请添加图片描述

6.file

功能:设置文件的属性
常用参数:
1、path 指定文件名称
2、state 指定操作状态
touch 建立
absent 删除
directory 递归
link 建立链接
hard
3、mode 设定权限
4、owner 设定文件用户
5、group 设定文件组
6、src 源文件
7、dest 目标文件
8、recurse=yes 递归更改

请添加图片描述
请添加图片描述
请添加图片描述
首先将node主机/mnt目录清空
请添加图片描述
使用file模块,受控主机建立/mnt/westosfile文件
请添加图片描述
可以看到受控主机已建立westosfile文件
请添加图片描述
继续将node主机/mnt目录清空
请添加图片描述
受控主机建立westosdir目录(为了实验方便看到效果,westos组受管主机此时只有一个westosb主机)
请添加图片描述
可以看到已建立westosdir目录
请添加图片描述
受控主机的/mnt/westosdir目录下建立westosdir目录
请添加图片描述
建立成功
请添加图片描述
设定westosfile文件的拥有者为westos
请添加图片描述
成功设定/mnt/westosfile文件的拥有者为westos
请添加图片描述
设定westosdir目录的拥有者为westos
请添加图片描述
设定成功
请添加图片描述
设定westosdir目录的组为devops;
recurse=yes :递归更改并设定westosdir目录下的文件的组为devops
请添加图片描述
设定成功
请添加图片描述
用westosfile文件,创建受控主机的linuxfile软连接
请添加图片描述
设定成功
请添加图片描述
用westosfile文件,创建受控主机的westosfile1硬连接
请添加图片描述
查看硬连接,编号一样
请添加图片描述
删除受控主机的linuxfile文件
请添加图片描述
已成功删除
请添加图片描述
删除受控主机的westosdir目录
请添加图片描述
已成功删除
请添加图片描述

7.archive

作用:压缩
常用参数
path 打包目录名称
dest 声称打包文件名称
format 打包格式
owner 指定文件所属人
mode 指定文件权限

查看node主机的/media目录
请添加图片描述
将受控主机/usr/local/bin目录打包到/mnt目录下,名为bin.tar.gz,格式为gz格式
请添加图片描述
查看bin.tar.gz压缩包
请添加图片描述
受控主机把/usr/local/bin打包为etc.tar.bz2压缩包,格式为bz2格式,权限为755,拥有者为westos,组为westos
请添加图片描述
进行查看
请添加图片描述

8.unarchive

功能:解压缩
常用参数:
copy :默认为yes ,从ansible主机复制文件到受控主机;设定为no 从受控主机中寻找src源文件。
remote_src :功能同copy且相反,设定为yes 表示包在受控主机;设定为no表示包在ansible主机。
src :包路径,可以使ansible主机也可以使受控主机
dest :受控主机目录
mode :加压后文件权限 <copy=yes>

首先在ansible主机创建压缩包
在这里插入图片描述
使用ansible主机的压缩包(可以使用相对路径),解压到受控主机的/media下
请添加图片描述
解压成功
请添加图片描述
删除收受控主机/media目录下的内容
请添加图片描述
使用ansible主机的压缩包,解压到受控主机的/media下,解压后文件拥有者为westos
请添加图片描述
查看解压后bin目录拥有者为westos
请添加图片描述
使用ansible主机的压缩包,解压到受控主机的/media下,解压后文件权限为755,拥有者为westos
请添加图片描述
进行查看
请添加图片描述
在ansible的受控主机创建压缩包
请添加图片描述
使用受控主机的压缩包(绝对路径),解压到受控主机的/media下,解压后文件权限为755,拥有者为westos
请添加图片描述
解压成功
请添加图片描述

清空node主机/mnt目录
请添加图片描述

9.hostname

作用为修改主机名称
修改受控主机的主机名称为westos_node2
在这里插入图片描述
成功修改
在这里插入图片描述
恢复受控主机的主机名称为westos_node1
在这里插入图片描述

10.cron

参数含义
name任务名称
job任务脚本或命令
disabledyes 禁用计划任务,no 启动计划任务
stateabsent 删除计划任务
minute分钟
hour小时
day
month
weekday

使用cron模块,名字叫test,命令为echo westos,每半分钟执行一次
请添加图片描述
查看定时任务列表
请添加图片描述
取消test这个定时任务
请添加图片描述
其实取消任务也就是加注释
请添加图片描述
开启test任务
请添加图片描述
开启也就是去掉注释
请添加图片描述
删除test任务
请添加图片描述
可以看到目前的时程表为空
请添加图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值