管理的方式、命令运行方式及常用参数、颜色代表信息、常用模块command、shell、script、copy、fetch、file、archive、unarchive
1、ansible实现管理的方式
(1)Ad-Hoc,利用ansible命令直接完成管理,主要用于临时命令使用场景,前面已经演示。
显示模块帮助的指令
ansible-doc -l
列出所有模块
ansible-doc 名称
列出指定模块
ansible-doc -s
简要列出指定模块
(2)playbook,ansible脚本,主要用于大型项目场景,需要前期的规划
编写test.yaml,执行test.yaml
2、ansible命令运行方式及常用参数
-v显示详细信息
-k是指定ssh的密钥,-u指定远程执行的用户
预执行检测
--bocome
在远程主机中,执行命令时使用sudo调用
--become-user=root
,sudo调用命令时,用到的用户身份
-K
是sudo的执行密钥,
3、ansible的基本颜色代表信息
绿色,执行成功但为对远程主机做任何改变
黄色,执行成功并对远程主机做改变
红色,执行失败
4、ansible中的常用模块
(1)command
功能为在远程主机执行命令,此模块为默认模块,常用参数有
|
执行命令前先进入到指定目录 |
---|---|
|
存在运行 |
|
存在不运行 |
进入mnt,创建文件file1file2file3
成功创建
/mnt/file5文件存在时,运行后面的删除指令,没有执行
/mnt/file1文件存在时,运行后面的删除指令,成功运行
/mnt/file1文件存在时,不运行后面的指令。第一条因为/mnt/file1文件不存在,执行创建文件。第二条因为/mnt/file1文件存在,不执行删除文件。
(2)shell
shell和command功能类似,主要有两点不同
-
shell中支持通配符
*
,command不支持通配符
*
如下图,command中无法删除/mnt,shell中可以删除/mnt
-
shell多了
executable
模块
默认使用的执行环境为sh,加入executable模块,可以指定执行环境为bash
(3)script
功能为指定脚本在被控主机中运行
为了方便操作,现在只留了200为受控主机
使用script模块,受控机执行test.sh脚本
(4)copy
从ansible主机复制文件到受控主机
常用参数 | 含义 |
---|---|
content | 指定文本内容直接在受控主机中生成文件 |
dest | 目的地文件 |
group | 指定目的地文件的组 |
mode | 指定目的地文件权限 |
owner | 指定目的地文件所有人 |
backup=yes | 当受控主机中存在文件时备份原文件 |
src | 源文件 |
使用copy模块,从ansible主机复制test.sh文件到被控主机的/mnt/test.sh文件,拥有者为westos,权限为755
进入受控机,查看文件权限为755,拥有者为westos
修改test.sh文件,再次执行copy模块,添加backup参数,可以备份之前的同名文件
查看,之前的文件备份了,接受了新的文件
copy模块,还可以直接输入文件内容,发给受控主机的/mnt/westos文件
受控主机的westos文件的内容的确是hello word
(5)fetch
从受控主机把文件复制到ansible主机,但不支持目录
src | 受控主机的源文件 |
---|---|
dest | 本机目录 |
flat | 基本名称功能,单纯只要文件,不要路径的层层目录 |
使用fetch模块,从受控主机复制
/etc/sysconfig/network-scripts/ifcfg-ens3
文件到ansible主机的lee用户的家目录,可以看到层层的子目录也复制过来了。
多加flat参数,表示只要这个文件,不要层层目录
(6)file
受控主机的文件管理,设置文件的属性
参数 | 含义 |
---|---|
path | 指定文件名称 |
state | 指定操作状态(touch建立文件、absent删除、directory建立目录、link建立软连接、hard建立硬连接) |
mode | 设定权限 |
owner | 设定文件的用户 |
group | 设定文件组 |
src | 源文件 |
dest | 目标文件 |
recurse=yes | 递归更改 |
使用file模块,受控主机建立/mnt/westosfile文件
已建立westosfile文件
受控主机建立westosdir目录
已建立westosdir目录
设定westosfile文件的拥有者为westos
成功设定westosfile文件的拥有者为westos
设定westosdir目录的组为westos
成功设定westosdir目录的组为westos
建立层级文件westosdir/westosfile
设定westosdir目录的组为devops,并设定westosdir目录下的文件的组为devops
成功设定westosdir目录以及里面的文件的组为devops
用westosfile文件,创建受控主机的linuxfile软连接
查看软连接
用westosfile文件,创建受控主机的hahafile硬连接
查看硬连接,编号一样
删除受控主机的linuxfile文件
已成功删除受控主机的linuxfile文件
删除受控主机的westosdir目录
已成功删除受控主机的westosdir目录
(7)archive
压缩
常用参数 | 含义 |
---|---|
path | 打包目录名称 |
dest | 声称打包文件名称 |
format | 打包格式 |
owner | 指定文件所属人 |
mode | 指定文件权限 |
使用archive模块,受控主机把/etc打包为etc.tar.gz压缩包,格式为gz格式
查看etc.tar.gz压缩包
受控主机把/etc打包为etc.tar.bz2压缩包,格式为bz2格式,权限为755,拥有者为westos,组为devops
查看etc.tar.bz2,权限为755,拥有者为westos,组为devops
(8)unarchive
解压缩
常用参数 | 含义 |
---|---|
copy | 默认为yes(从ansible主机复制文件到受控主机);设定为no,从受控主机中寻找src源文件 |
remote_src | 功能同copy且相反,设定为yes 表示包在受控主机,设定为no表示包在ansible主机 |
src | 包路径,可以使用ansible主机也可以使用受控主机 |
dest | 受控主机目录 |
mode | 解压后文件权限 |
首先在ansible主机创建压缩包
使用ansible主机的压缩包(可以使用相对路径),解压到受控主机的/media下
解压成功
使用ansible主机的压缩包,解压到受控主机的/media下,解压后文件权限为700,拥有者为westos
查看解压后文件权限为700,拥有者为westos
删除ansible主机的压缩包,使用受控主机的压缩包(绝对路径),解压到受控主机的/media下,解压后文件权限为700,拥有者为devops
解压后目录中的文件权限为700,拥有者为devops
(9)hostname
作用为修改主机名称
修改受控主机的主机名称为westos_node2
成功修改
恢复受控主机的主机名称为westos_node1
修复成功
还有更多模块,在下一篇文章介绍