【Ansible】ad-hoc与常用模块

举报
子都爱学习 发表于 2022/01/16 18:53:29 2022/01/16
【摘要】 什么是ad-hocad-hoc 简而言之就是 “临时命令”,执行完即结束,并不会保存;ansible工具通过 ssh 协议 ,实现对远程主机的配置管理,应用部署、任务执行等功能; 命令使用格式; ansible <host-pattern> [-m module_name] [-a args]--version #ansible版本信息 -v #显示详细信息 -i #主机清单文件路径,默认是...

什么是ad-hoc

ad-hoc 简而言之就是临时命令,执行完即结束,并不会保存;
ansible工具通过 ssh 协议 ,实现对远程主机的配置管理,应用部署、任务执行等功能;
命令使用格式;
ansible <host-pattern> [-m module_name] [-a args]
  • --version #ansible版本信息
  • -v #显示详细信息
  • -i #主机清单文件路径,默认是在/etc/ansible/hosts
  • -m #使用的模块名称,默认使用command模块
  • -a #使用的模块参数,模块的具体动作
  • -k #提示输入ssh密码,而不使用基于ssh的密钥认证
  • -C #模拟执行测试,但不会真的执行
  • -T #执行命令的超时
  • --become-user #指定sudo时的用户名称,默认为root

命令示例
ansible 'groups' -m command -a 'df -h' 

执行过程:
1.加载自己的配置文件,默认 /etc/ansible/ansible.cfg
2.查找对应的主机配置文件,找到要执行的主机或者组;
3.加载自己对应的模块文件,如 command
4.通过 ansible 将模块或命令生成对应的临时 py 文件,并将该文件传输至远
程服务器对应执行用户 $HOME/.ansible/tmp/ansible-tmp-number/XXX.PY
5.执行用户家目录的 `` 文件;
6.给文件 +x 执行;
7.执行并返回结果;
8.删除临时 py 文件, sleep 0 退出;

执行状态
使用 ad-hoc 执行一次远程命令,注意观察返回结果的颜色;
绿色: 代表被管理端主机没有被修改
黄色: 代表被管理端主机发现变更
红色: 代表出现了故障,注意查看提示

常用模块

查看所有的模块
[root@manger ~]# ansible-doc -l
查看模块的详细文档
[root@manger ~]# ansible-doc copy
查看模块的所有方法
[root@manger ~]# ansible-doc -s copy

模块介绍

command模块
功能:在远程主机执行 Shell 命令;此为默认模块,可忽略 -m 选项;
  • chdir chdir /opt 执行ansible时,切换到指定的目录
  • creates creates /data/file 如果文件存在,则跳过执行
  • removes removes /data/file 如果文件存在,则执行
shell模块
功能:在远程主机执行 Shell 命令,执行管道等特殊符号的操作;
  • chdir chdir /opt 执行ansible时,切换到指定的目录
  • creates creates /data/file 如果文件存在,则跳过执行
  • removes removes /data/file 如果文件存在,则执行
script模块
功能:在被控节点,运行 Ansible 主机的脚本;

yum模块
功能:管理各个操作系统的软件包;
  • name: httpdnginx... 指定安装软件包名或软件URL
  • state:present(Defaults)absentlatest   指定yum对应的方法
  • enablerepo: epelbase... 允许从哪些仓库获取软件
  • disablerepo :epelbase... 禁止从哪些仓库获取软件
  • exclude :kernel... 排除某些软件包
  • download_only: yesno 仅下载软件包,不安装
copy模块
功能:从 ansible 服务端主控端复制文件到远程主机;
  • src 复制本地目录下的文件至远程服务器
  • dest 文件复制到远程的绝对路径
  • owner root(Defaults) 文件复制到远程并设定属主
  • group root(Defaults) 文件复制到远程并设定属组
  • mode file=644directory=755 文件复制到远程并设定权限
  • backup yes 备份被修改前的配置文件
  • content 新建文件并给文件添加内容
file模块
功能:为被控端创建文件或目录,设定权限属性;
  • path 指定远程服务器的路径
  • recurse 递归方式(可以是递归授权)
  • state touchdirectorylinkabsent 文件复制到远程的状态
  • owner root(Defaults) 文件复制到远程并设定属组
  • group root(Defaults) 备份被修改前的配置文件
  • mode file=644directory=755 文件复制到远程并设定权限
lineinfile模块
功能:修改或删除文件内容,与系统中的 sed 命令类似;
  • path 指定要操作的文件
  • regexp 使用正则表达式匹配对应的行
  • line 修改为新的内容
  • insertafter 将文本插入到指定的行之后
  • insertbefore 将文本插入到指定的行之前
  • state absentpresentDefaults删除对应的文本时,需要
  • state=absent
  • backrefs yesno 1.支持后向引用、2.当未匹配到内容则不操作文件
  • backup 是否在修改文件之前对文件进行备份
  • create 当要操作的文件并不存在时,是否创建对应的文件
systemd模块
功能:管理服务启动与停止,与 service 模块用法一致;
  • name httpdnginx... 定义要启动服务的名称
  • state startedstoppedrestarted
  • reloaded 指定服务状态
  • enabled yesno 允许服务开机自启或禁止服务开机自启
group模块
功能:管理被控端用户组;
  • name 指定创建的组名
  • gid 为组设置可选gid
  • state present(Default)absent 是否将组创建在远程主机上
  • system yesno(Default) 是否创建系统组
user模块
功能:管理被控端用户;
  • name 创建或删除的用户名
  • uid 为用户设置可选uid
  • group 为用户设置主要的组
  • groups 为用户设置附加的组
  • shell present(Default)absent 为用户设置登陆时的Shell
  • create_home yes(Default)no 为用户创建主目录
  • state present(Default)absent 用户是否应该存在
  • remove yesno(Default) 删除与用户关联的目录,只有当 state=absent时生效
  • generate_ssh_key yesno(Default) 为相关用户生成ssh密钥。不会覆盖现有的ssh密钥
  • ssh_key_bits 2048 创建用户ssh密钥中位数
  • ssh_key_file .ssh/id_rsa(Default) 可以实现ssh密钥改名,或变更存ssh密钥位置

cron模块
功能:管理被控端计划任务;
  • name 定时任务基本描述
  • job 定时任务要执行的命令
  • minute (Default)、0-59 分
  • hour (Default)、0-23 时
  • day (Default)、1-31 日
  • month (Default)、1-12 月
  • weekday (Default)、0-6 周

mount模块
功能:管理被控端设备挂载;
  • src 本地或远程设备的路径
  • path 设备挂载至本地的路径
  • fstype xfsnfs... 文件系统类型
  • opts defaultsro... 挂载的参数
  • state absentmountedunmounted 挂载的状态

hostname模块
功能:管理被控端主机名称;

archive模块
功能:打包与压缩;
  • path 要压缩的文件或目录
  • dest 压缩后的文件
  • format bz2gztarxzzip 指定打包压缩的类型

unarchive模块
功能:解包与解压缩;
  • src 要解压的软件包路径
  • dest 解压到目标位置
  • remote_src yesno(default) yes:要解压的包在被控端、no:要解压的包 在控制

selinux模块
功能:管理 SELINUX 防火墙;
  • state enforcingpermissivedisabled Selinux模式
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。