【自动化部署】Ansible 基础命令行模块

文章目录

  • [Ansible 命令行模块](#Ansible 命令行模块)
    • [1. 查看所有已安装的模块](#1. 查看所有已安装的模块)
    • [2. command 模块](#2. command 模块)
    • [3. shell 模块](#3. shell 模块)
    • [4. cron 模块](#4. cron 模块)
    • [5. user 模块](#5. user 模块)
    • [6. group 模块](#6. group 模块)
    • [7. copy 模块](#7. copy 模块)
    • [8. file 模块](#8. file 模块)
    • [9. hostname 模块](#9. hostname 模块)
    • [10. ping 模块](#10. ping 模块)
    • [11. yum/apt 模块](#11. yum/apt 模块)
    • [12. service/systemd 模块](#12. service/systemd 模块)
    • [13. script 模块](#13. script 模块)
    • [14. mount 模块](#14. mount 模块)
    • [15. archive 模块](#15. archive 模块)
    • [16. unarchive 模块](#16. unarchive 模块)
    • [17. replace 模块](#17. replace 模块)
    • [18. setup 模块](#18. setup 模块)

Ansible 命令行模块

1. 查看所有已安装的模块

bash 复制代码
ansible-doc -l

2. command 模块

  • 在远程主机执行命令,不支持管道、重定向等 shell 特性。
bash 复制代码
ansible <host> -m command -a 'command_to_run'
# 示例
ansible 192.168.80.11 -m command -a 'date'
ansible webservers -m command -a 'date'
ansible all -m command -a 'date'
# 使用chdir参数
ansible all -m command -a "chdir=/home ls ./"

3. shell 模块

  • 在远程主机执行命令,支持管道符号等功能。
bash 复制代码
ansible <host> -m shell -a 'shell_command'
# 示例
ansible dbservers -m shell -a 'echo 123456 | passwd --stdin test'
ansible dbservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print $2}") | cut -d " " -f2'

4. cron 模块

  • 在远程主机定义任务计划。
bash 复制代码
ansible <host> -m cron -a 'minute="*/1" job="command_to_run" name="cron_name" [user="user_name"]'
# 示例
ansible webservers -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test crontab"'
ansible webservers -m cron -a 'name="test crontab" state=absent'

5. user 模块

  • 用户管理模块。
bash 复制代码
ansible <host> -m user -a 'name="user_name" [state=present|absent] [system=yes|no] [uid=UID] [group=GROUP] [groups=GROUPS] [shell=SHELL] [create_home=yes|no] [password=ENCRYPTED_PASSWORD] [remove=yes|no]'
# 示例
ansible dbservers -m user -a 'name="test01"'
ansible dbservers -m user -a 'name="test01" state=absent'

6. group 模块

  • 用户组管理模块。
bash 复制代码
ansible <host> -m group -a 'name=GROUP_NAME [gid=GID] [system=yes|no]'
# 示例
ansible dbservers -m group -a 'name=mysql gid=306 system=yes'

7. copy 模块

  • 用于复制文件到远程主机。
bash 复制代码
ansible <host> -m copy -a 'src=SOURCE_FILE dest=DESTINATION_PATH [owner=OWNER] [group=GROUP] [mode=MODE] [content="CONTENT"]'
# 示例
ansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=root mode=640'
ansible dbservers -m copy -a 'content="helloworld" dest=/opt/hello.txt'

8. file 模块

  • 设置文件属性。
bash 复制代码
ansible <host> -m file -a 'path=PATH [owner=OWNER] [group=GROUP] [mode=MODE] [state=touch|absent|link] [src=SOURCE_LINK]'
# 示例
ansible dbservers -m file -a 'owner=test01 group=mysql mode=644 path=/opt/fstab.bak'
ansible dbservers -m file -a 'path=/opt/fstab.link src=/opt/fstab.bak state=link'
ansible dbservers -m file -a "path=/opt/abc.txt state=touch"
ansible dbservers -m file -a "path=/opt/abc.txt state=absent"

9. hostname 模块

  • 管理远程主机上的主机名。
bash 复制代码
ansible <host> -m hostname -a "name=NEW_HOSTNAME"
# 示例
ansible dbservers -m hostname -a "name=mysql01"

10. ping 模块

  • 检测远程主机的连通性。
bash 复制代码
ansible <host> -m ping
# 示例
ansible all -m ping

11. yum/apt 模块

  • 在远程主机上安装与卸载软件包。
bash 复制代码
ansible <host> -m yum -a 'name=PACKAGE_NAME [state=present|absent]'
# 示例
ansible webservers -m yum -a 'name=httpd'
ansible webservers -m yum -a 'name=httpd state=absent'

12. service/systemd 模块

  • 管理远程主机上的服务运行状态。
bash 复制代码
ansible <host> -m service -a 'name=SERVICE_NAME [state=started|stopped|restarted|reloaded] [enabled=yes|no]'
# 示例
ansible webservers -m service -a 'enabled=true name=httpd state=started'

13. script 模块

  • 远程批量运行本地的 shell 脚本。
bash 复制代码
ansible <host> -m script -a 'SCRIPT_PATH'
# 示例
ansible webservers -m script -a 'test.sh'

14. mount 模块

  • 挂载文件系统。
bash 复制代码
ansible <host> -m mount -a 'src=SOURCE_PATH path=MOUNT_POINT fstype=FILESYSTEM_TYPE [state=mounted|absent|unmounted] [opts=OPTIONS]'
# 示例
ansible dbservers -m mount -a 'src=/dev/sr0 path=/mnt state=mounted fstype=iso9660'

15. archive 模块

  • 打包压缩。
bash 复制代码
ansible <host> -m archive -a 'path=SOURCE_PATH dest=DESTINATION_PATH format=FORMAT [remove=yes|no]'
# 示例
ansible dbservers -m archive -a "path=/etc/yum.repos.d/ dest=/opt/repo.zip format=zip"

16. unarchive 模块

  • 解包解压缩。
bash 复制代码
ansible <host> -m unarchive -a 'src=SOURCE_PATH dest=DESTINATION_PATH [copy=yes|no] [remote_src=yes|no]'
# 示例
ansible dbservers -m unarchive -a "src=/opt/abc.tar.gz dest=/root copy=yes"
ansible dbservers -m unarchive -a "src=/opt/123.tar.gz dest=/root copy=no"

17. replace 模块

  • 基于正则进行匹配和替换。
bash 复制代码
ansible <host> -m replace -a 'path=FILE_PATH regexp=REGEXP replace=REPLACEMENT [backup=yes|no] [before="BEFORE_TEXT"] [after="AFTER_TEXT"]'
# 示例
ansible dbservers -m replace -a "path=/opt/test.txt regexp='33' replace='cc'"

18. setup 模块

  • 收集被管理节点信息。
bash 复制代码
ansible <host> -m setup [-a 'filter=FILTER']
# 示例
ansible webservers -m setup
ansible dbservers -m setup -a 'filter=*ipv4'
相关推荐
这个DBA有点耶5 小时前
NULL不是空——数据库里最反直觉的设计,90%新人踩过的坑
数据库·mysql·代码规范
这个DBA有点耶7 小时前
AI写的SQL跑崩了生产库,这锅谁背?
数据库·人工智能·程序员
阿里云大数据AI技术7 小时前
阿里云 EMR AI 助手正式发布:从问答工具到全栈智能运维助手
运维·人工智能
镜舟科技7 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
Databend8 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局
大数据·数据库·agent
辉的技术笔记9 小时前
Dify 自部署为什么跑不动?6 层瓶颈诊断法教你定位
docker
ClouGence11 小时前
SQL Server CDC 能放到 Always On 备库读吗?一文讲透原理与实践
数据库·sql server
你好潘先生13 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
先吃饱再说1 天前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?
数据库
Nturmoils1 天前
字段太多看不全,ksql 的展开模式和输出控制怎么用
数据库·后端