ad-hoc:
ad-hoc 点对点指的就是主控直接在被控上去执行命令,所以在这里 ad-hoc 被称为 ansible 的临时指令,如下所示,从这里可以看出 ad-hoc 每一次只能完成一个任务,对于一些复杂的需求 ad-hoc会使用起来很困难
ad-hoc的语法及模块
ansible 主机/主机组 -m 模块名 -a '模块的参数' ansible 的参数
ansible-doc -l 查询当前所有的模块
ansible-doc -s 模块名 #查询模块的参数
ansible-doc 模块名 #查询模块的详细用法(查询到模块后可直接搜索EXANMPES来查看示例用法,下图所查询的是file模块)
示例:删除node2上的/opt/hello.txt
ansible node2 -m file -a 'path=/opt/hello.txt state=absent'
注:通常使用ansible ad-hoc 去执行某条指令时如果不指定模块,那么默认使用的就是command这个模块
ad-hoc的命令执行模块
command,shell,raw,script ==》这四个模块都是可以使用ansible 在linux 上执行命令
四个模块的差异:
command : 在command模块中是不识别 >,<,|,& 这种特殊符号
shell :相当于在本机上执行bash shell的指令,支持所有的特殊符号
raw:仅仅只能执行命令,缺少高级参数,例如切换目录以及判断文件是否存在等
script:不执行单条命令,他是将主控端的shell复制到被控端执行(注:这里是将shell文件中的内容拷贝到被控端去执行)
command,shell支持的参数(raw不支持以下参数):
chdir 切换目录(如果指定了目录,那么就会在指定的目录执行操作,如果没有执行目录,那么就会在被控用户的家目录执行)
creates 文件存在命令不执行
removes 文件不存在命令不执行
file模块:
file 模块主要用于操作远程主机上的文件,选项如下:
path:必选项,定义文件/目录的路径
state(动作):
file:查看文件的状态,默认选项,如果文件不存在会报错文件不存在
touch:如果文件不存在就会创建一个新的文件,如果已存在则更新时间戳
absent:删除目录,文件或取消链接文件
directory:如果目录不存在则创建目录
link:创建软连接
hard:创建硬链接
owner:定义文件或者目录的拥有人
group:定义文件或者目录的拥有组
mode:定义文件或者目录的权限
src:被链接的源文件的路径
dest:被连接到的目标路径
copy模块:
src:需要复制到远程主机的文件在本地的地址,绝对目录相对路径均可(如果是目录,则递归复制)。
dest:必选项,将源文件复制到源站主机上的觉得路径
force:是否进行强制覆盖,如果设置为yes则覆盖,如果为no则只有当目标主机的目标位置不存在这个文件的时候才复制,默认是yes。
backup:在即将覆盖之前将原文件备份,备份的文件包含了时间信息
content:用于替代src,可以设定为指定文件的值==》直接往文件中写值,还可以将不存在的文件创建出来
others:所有的file模块中的相关文件属性选项都可以在这里使用
remote_src:复制被控主机的文件
yum_repository(yum仓库的管理模块)模块:
file:配置文件的名字,不包含repo
name:yum仓库的名字
description:仓库的描述信息
baseurl:yum源的地址
enabled:是否开启yum仓库
gpgcheck:是否检查软件包的完整性,yus/no
gpgkey:公钥的地址
yum模块:
name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径
state:动作==》present 安装,absent 卸载,latest更新到最新版本
#注:如果包本身没有安装,而去执行latest则会默认安装最新版
service模块(redhat9已经被彻底干掉了):
name:服务名字
state:对当前服务的动作
enable:是否开机自启
systemd模块:
name:服务名字
state:对当前服务的动作
enabled:是否开机自启
daemon_reload:当服务配置文件发生变更时重载服务
cron模块:
该模块目前主要用于管理计划任务,常见选项如下
name:服务名字
state:动作,present 创建,absent 删除
user:指定某个用户的身份执行
day:日
hour:时
minute:分
month:月
weekday:周
job:需要执行的任务
cron_file:指定配置文件
user模块:
user模块主要请求的为 useradd,usermod,userdel 三个指令:
state:动作
name:用户名
uid:用户uid
group:用户组
groups:用户的附加组
comment:定义用户描述的信息
create_home:是否创建家目录
home:指定用户的家目录
shell:指定用户的shell环境
password:指定用户的密码
remove:当选择为yes时,等价与userdel -r
group模块:
group 用户组模块主要是 groupadd,groupdel,groupmod三个指令:
gid:指定组id
name:指定组名
state:动作(present|absent)
fetch模块:
fetch 模块与 copy 相反。fetch 是将被控端的文件复制到主控端。并且在主控端指定的目录下用被控端主机名的形式来组织目录接口,常用选项如下:
src:被控端要复制的文件地址,这里注意不能是目录
dest:主控段存放文件的地址
flat:默认是no。代表在主控端目录下以被控端主机名的形式来组织目录结构。yes 表示不会以被控端主机名的形式来组织目录结构,dest必须以/结尾。
get_url模块:
get_url类似与wget,主要是从http,ftp,https服务器上下载文件,常用选项如下:
url:下载的url
url_password,url_username:主要用于需要用户名密码进行验证的场景
dest:目标目录
mode:权限
owner:拥有人
group:拥有组
unarchive模块:
该模块主要用于解压,常用选项如下:
src:指定压缩文件的源路径(主控)
dest:被控端上文件解压的路径
remote_src:如果为no,则文件会从主控端复制到被控端。否则会直接尝试从被控端查找文件。默认为no
owner:解压后文件的拥有人权限
group:拥有组权限
mode:文件的权限
creates:指定一个文件名,如果这个文件已存在,那么解压命令不执行
list_files:如果为yes,则会列出压缩包里的文件,默认是no
synchronize模块:
synchronize主要是使用rsync来同步文件,常用参数如下:
src:要复制的文件
dest:目录路径
archive:归档
compress:是否开启压缩
rsync_opts:rsync的选项
delete:删除不存在的文件,默认是 no
dest_port:目录主机上的端口,默认是22
mode:主要用来确认使用的是push模块还是pull模块