ansible03-ansible模块

所有模块一览

https://blog.csdn.net/sj349781478/article/details/106898574?utm_source=app&app_version=4.13.0

command模块

默认模块 可以不写

ansible  host  -a  'chdir=/data ls'
ansible  host  -a  'creates=/root/test ls'
ansible  host  -a  'remove=/root/test ls'

选项
chdir    执行命令前,先切换到该目录
creates  指定的文件存在,则不执行命令
remove   指定的文件不存在,则不执行命令

command 模块不能解析变量(如$HOSTNAME)和某些特殊字符(<  >  |  &), 带这些符号的命令用shell模块

script模块

远程主机运行本地脚本
在执行脚本前,ansible会将本地脚本传输到远程主机,执行后删除.在执行脚本的时候,采用的是远程主机上的shell环境
ansible host -m script -a /tmp/test.sh

copy模块

拷贝本地文件到远程
ansible host -m copy -a 'src=/etc/passwd dest=/etc/passwd backup=yes mode=600 owner=root group=root'
ansible host -m copy -a 'src=/root/user.sh dest=/tmp backup=yes'
ansible host -m copy -a 'content="hello\nworld" dest=/tmp/f1'

当src采用相对路径时,该路径表示当前用户家目录

选项
backup   当远程主机存在同名但内容不同的文件时,在目标目录将原文件重命名,名称含有时间戳信息
content  以content选项给定的内容作为拷贝至远程主机的文件内容,相当于在远程主机创建文件

fetch模块

从远程主机拿文件到本地

存储为/tmp/fstab,最常用
ansible host10 -m fetch -a "src=/etc/fstab dest=/tmp/ flat=yes"

存储为/tmp/host10/etc/fstab
ansible host10 -m fetch -a "src=/etc/fstab dest=/tmp"

存储为/tmp/fstab-host10
ansible host10 -m fetch -a "src=/etc/fstab dest=/tmp/fstab-{{inventory_hostname}} flat=yes"

file模块

管理⽂件、⽬录的属性,也可以创建⽂件或⽬录。
需要注意的是, file模块可以递归创建⽬录,但是不能在不存在的⽬录中创建⽂件,只能先创建⽬录,再在此⽬录中创建⽂件。

选项
group             file/directory的所属组
owner             file/directory的所有者
mode              修改权限,格式可以是0644'u+rwx''u=rw,g=r,o=r'等
path                指定待操作的⽂件,可使⽤别名'dest''name'来替代path
recurse           (默认no)递归修改⽂件的属性信息,要求state=directory
src                  创建链接时使⽤,指定链接的源⽂件
state               他有以下几个选项             
                       touch:创建文件或修改文件属性
                       directory:如果⽬录不存在则递归创建
                       absent:⽬录和其中的⽂件会被递归删除,⽂件或链接将取消链接状态
                       link:修改或创建软链接
                       hard:修改或创建硬链接
                       file:⽂件不存在时,不会被创建(默认值)

path和dest有时可以替换使用

递归创建目录并附加相应权限
ansible host10 -m file -a 'path=/tmp/xyz state=directory owner=root group=root mode=0755 recurse=yes'

承上,修改目录权限
ansible host10 -m file -a 'path=/tmp/xyz state=touch mode=0644'

创建文件
ansible host10 -m file -a 'path=/tmp/xyz/a.txt state=touch mode=0644

创建软连接
ansible host10 -m file -a 'src=/etc/fstab dest=/data/fstab.link state=link'

删除软连接
ansible host10 -m file -a 'dest=/data/fstab/fstab.link state=absent'

hostname模块

ansible host -m hostname -a 'name=server10'

该命令会立即生效
修改/etc/hostname文件后,建议再修改/etc/hosts文件中的主机名(127.0.0.1那一行)

cron模块

创建计划任务, 每2分钟进⾏⼀次时间同步,并且⾃定义cron_file
ansible host10 -m cron -a 'name="ntpdate" job="/usr/sbin/ntpdate ntp1.aliyun.com" cron_file=ntpdate_cron minute=*/2'

ansible host10 -m cron -a  'minute=10 hour=10 day=* month=* weekday=* name="My-NTP" job="ntpdate ntp1.aliyun.com"'

验证
ansible host10 -m shell -a 'cat /etc/cron.d/ntpdate_cron'

移除⼀个job,要求name必须匹配。如有必要,需要同时指定cron_file和user。
ansible host10 -m cron -a 'name="ntpdate" state=absent cron_file=ntpdate_cron user=root' -o

禁用一个job
ansible host10 -m cron -a 'disabled=true job="/usr/sbin/ntpdate ntp1.aliyun.com" name=ntpdate'

yum模块

name需要配合state来使⽤,如果state指定为present/installed/latest将安装包,其中latest是安装最新包,默认
为present。如果指定为absent/removed则⽤于卸载包。
在ansible中,很多地⽅都会出现present和absent的状态,它们⼀般都表示⽬标是否应该存在还是不存在,也就是
要进⾏的动作是创建和删除

选项
disable_gpg_check                 # 安装包时禁⽌gpgcheck,仅在state=present或latest时生效
disablerepo                            # 禁⽤指定的repoid,多个repoid使⽤逗号分隔
enablerepo                            # 明确使⽤该repoid
exclude                                  # 排除哪些包不安装,仅在state=present或latest时⽣效
list                                          # 类似于yum list
name=                                   # 指定安装的包名,可带上版本号。多个包可使⽤逗号分隔
update_cache=                     # 强制更新yum的cache    yes或no
state                                      # 状态 present、installed、latest⽤于安装包
                                              # absent、removed ⽤于移除已安装包

安装,安装多个时,包名用逗号间隔
ansible host10 -m yum -a 'name=httpd state=latest'

安装本地指定的包
ansible host10 -m yum -a '/root/vsftpd-3.0.2-22.e17.x86_64.rpm'

卸载,卸载多个时,包名用逗号间隔
ansible host10 -m yum -a 'name=httpd state=removed'

service模块

选项
name=       服务名
state=      started 或 stopped 或 reloaded
enabled=    yes 或 no

user模块

新建账号
ansible host10 -m user -a 'name=nginx shell=/sbin/nologin home=/home/nginx system=yes  groups=nginx '

删除账号,和家目录
ansible host10 -m user -a 'name=nginx state=absent remove=yes'

修改密码
ansible host10 -m user -a "name=caolixun password=$6$GD8Q update_password=always"   #password 后面接的是加密以后的密码。

get_url

下载文件到指定目录:
ansible all -m get_url -a "url=http://www.guojinbao.com dest=/tmp/guojinbao mode=0440 force=yes"
需要添加登录名密码的网站,使用url_password、url_username参数来定义

unarchive

目标目录不存在报错

解压ansible主机上的文件到远程主机
ansible all:\!host114 -m unarchive -a 'src=/root/server_info_2.tgz dest=/root/ mode=0755 copy=yes'

解压远程主机上的文件
ansible all:\!host114 -m unarchive -a 'src=/root/server_info_2.tgz dest=/root/ mode=0755 copy=no'
posted @   立勋  阅读(11)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示