目录
一、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 | 任务脚本或命令 |
disabled | yes 禁用计划任务,no 启动计划任务 |
state | absent 删除计划任务 |
minute | 分钟 |
hour | 小时 |
day | 天 |
month | 月 |
weekday | 周 |
使用cron模块,名字叫test,命令为echo westos,每半分钟执行一次
查看定时任务列表
取消test这个定时任务
其实取消任务也就是加注释
开启test任务
开启也就是去掉注释
删除test任务
可以看到目前的时程表为空