ansible实现管理的方式:
管理方式 含义
Ad-Hoc 利用ansible命令直接完成管理,主要用于临时命令使用场景
playbook ansible脚本,主要用于大型项目场景,需要前期的规划
Ad-Hoc:
playbook:
ad-hoc执行方式中获得帮助:
ansible-doc 显示模块帮助的指令
-l 列出可用模块
-s 显示指定模块的playbook片段
ansible命令运行方式及常用参数:
ansible +清单 +-m+模块+-a+模块参数
--version 显示版本
-m moudle指定模块,默认为command模块
-v 详细过程,-vv,-vvv更详细过程
--list 显示主机列表,也可用--list-hosts
-k 提示输入ssh连接密码,默认key认证
-C 预执行检测
-T 执行命令的超时时间,默认10s
-u 指定远程执行的用户
-b 执行sudo切换身份操作
-become-user=USERNAME 指定sudo的用户
-K 提示输入sudo密码
ansible-doc -l列出可用模块:
ansible-doc -s列出指定模块的常用参数:
语法格式:
ansible 清单 -m 模块 -a 模块参数
查看版本号:
-v显示命令行运行的详细过程:
-vv显示命令行运行的更详细过程:
-vvv显示命令行运行的更更更详细过程。
v越多,显示命令行运行的过程越详细。
-m表示指定模块,-k参数表示指定输入ssh连接时输入的密码:
-C 表示预执行检测,只检测命令运行的正确与否,但不会执行只做检测:
-b表示指定sudo切换用户身份操作,–become-user=USERNAME表示指定用户:
-u表示指定远程执行的用户:
ansible的基本颜色代表:
绿色 执行成功但对远程主机未作任何改变
黄色 执行成功并对远程主机做改变
红色 执行失败
ansible中的常用模块:
1.command中在远程主机执行命令
chdir 执行命令前先进入到指定目录
creates 如果文件存在将不运行
removes 如果文件存在将运行
2.shell功能
chdir 执行命令前先进入到指定目录
cmd 运行命令指定
creates 如果文件存在将运行
free_from 在远程主机中执行的命令,此参数不需要加
executable 指定执行环境。默认为sh
3.script在ansible主机中写好的脚本在受控主机中执行
4.copy从ansible主机复制文件到受控主机
owner 指定目的地文件所有人
group 指定文件所有组
mode 指定目的地文件权限
backup=yes 当受控主机中存在文件时备份原文件
content 指定文本内容直接在受控主机中生成文件
5.fetch从受控主机把文件复制到ansible主机,但不支持目录
src 受控主机的源文件
dest 本机目录
flat 复制文件时,不复制文件的路径,只复制文件本身
6.file:设置文件的属性
path 指定文件名称
state 指定操作状态
7.unarchive:解压缩
copy 默认为yes,从ansible主机复制文件到受控主机,设定为no,从受控主机中寻找src源文件
remote_src 功能同copy相反,设定为yes,表示包在受控主机,设定为no表示包在ansible主机
src 包路径,可以使ansible主机也可以使受控主机
dest 受控主机目录
mode 加压后文件权限
8.archive
path ##打包目录名称
dest ##声称打包文件名称
format ##打包格式
owner ##指定文件所属人
mode ##指定文件权限
command模块:
在远程主机执行命令,该模块为默认模块。
chdir 执行命令前先进入到指定目标
cmd 运行命令指定
creates 如果文件存在将不运行
removes 如果文件存在将运行
free_form 在远程主机中执行的命令,此参数不需要加
查看command模块的常用参数:
chdir表示进入到目录进行操作:
removes表示如果文件存在,就运行后面的指令。如果文件不存在,则不运行后面的命令:
creates表示如果文件存在就不运行,不存在就运行:
在受控主机中查看,发现文件file:
shell:
功能和command功能类似,可以实现在远程主机执行命令。
chdir 执行命令前先进入到指定目标
cmd 运行命令指定
creates 如果文件存在将不运行
removes 如果文件存在将运行
free_form 在远程主机中执行的命令,此参数不需要加
executable 指定运行环境,默认为sh
查看shell模块常用参数:
可见,基本与command模块类似。
executable指定运行环境,可见默认使用/bin/sh:
指定运行环境,将默认的/bin/sh改为/bin/bash然后查看:
script:
功能为将ansible主机中写好的脚本在受控主机中执行。
查看script模块常用参数:
编写一个脚本,将在ansible主机中写好的脚本在受控主机中执行:
copy:
功能为从ansible主机复制文件到受控主机。
参数 含义
src 源文件
dest 目的地文件
owner 指定目的地文件所有人
group 指定目的地文件的所有组
mode 指定目的地文件权限
backup=yes 当受控主机中存在文件时备份源文件
content 指定文本内容直接在受控主机中生成文件
将本机的/mnt/test文件复制到受控主机的/mnt下:
受控主机查看:
不传文件,直接传文本,并且更改文件拥有者和拥有组为root:
受控主机中查看,可见默认是不换行的,需要添加\n换行符:
fetch:
功能为从受控文件把文件复制到ansible主机,但不支持目录。
参数 含义
src 受控主机的源文件
dest 本机目录
flat 基本名称功能
ansible westos -m fetch -a 'src=/etc/hostname dest=/mnt/westos flat=yes'
ansible westos -m fetch -a 'src=/etc/hostname dest=/mnt/westos'
有flat参数,表示westos是一个文件而不是目录,没有flat参数表示test是一个目录而不是文件。
file:
设置文件的属性。
参数 含义
path 指定文件名称
state 指定操作状态
touch 建立
absent 删除
directory 建立目录
link 建立链接
hard 建立硬链接
mode 设定权限
owner 设定文件用户
group 设定文件组
src 源文件
dest 目标文件
recurse=yes 递归更改
1.清空/mnt中的内容,方便观察实验效果:
2.path指定文件名称,state指定操作状态为建立,该命令表示建立/mnt/westos文件:
3.path指定文件名称,state指定操作状态为absent删除,该命令表示删除/mnt/westos文件:
4.删除后查看/mnt,发现没有文件:
5.path指定名称,state指定操作状态为directory,表示建立/mnt/westos目录:
成功建立:
6.建立文件westosfile,权限为777,拥有者为westos:
查看westosfile文件权限信息;
7.源文件为westosfile,目标文件为westos,建立软链接,注意源文件westosfile一定要存在。
软链接成功建立:
8.recurse=yes参数,表示递归更改:
lr递归查看:
9.建立硬链接:
unarchive:
功能为解压缩。
常用参数:
参数 含义
copy 默认为yes,从ansible主机复制文件到受控主机;设定为no表示从受控主机寻找src源文件
remote_src 功能通copy相反,两个中选一个使用即可;设定为yes表示包在受控主机;设定为no表示包在ansible主机
src 包路径,可以使用ansible主机也可以使用受控主机
dest 受控主机目录
mode 加压后文件权限
1.将etc中的内容打包为/mnt/westos.tar.gz:
打包完成后,查看打包文件:
2.src代表ansible主机中的路径,dest表示受控主机目录,以777权限解压到受控主机的/mnt下:
查看受控主机的/mnt:
archieve:
功能为压缩
常用参数:
参数 含义
path 打包目录名称
dest 生成打包文件名称
format 打包格式
owner 指定文件所属人
mode 指定文件权限
1.将受控主机中的/mnt内容删除,搭建实验环境:
2.将ansible主机的/etc下的内容打包到受控主机的/mnt中:
3.查看受控机的/mnt,发现生成了压缩包: