【自动化部署】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'
相关推荐
福如意如我心意6 分钟前
ubuntu服务器重启,xinference自动加载模型脚本
服务器·ubuntu·ai
三坛海会大神55517 分钟前
K8S入门1.20版本部署
云原生·容器·kubernetes
友莘居士25 分钟前
高效处理 Excel 海量数据入库:编程脚本、CSV 中间件、图形工具优化全攻略
数据库·中间件·excel·csv·海量数据·入库
柳鲲鹏1 小时前
交叉编译:strip: Unable to recognise the format of the input file xx.c.o
linux·运维·服务器
Han.miracle1 小时前
数据库圣经第二章——简单的my.ini基础配置介绍
数据库
Le1Yu1 小时前
微服务拆分以及注册中心
linux·运维·服务器
zzzsde2 小时前
【Linux】linux基础指令入门(1)
linux·运维·学习
八怪2 小时前
KILL MTS的一个worker线程会怎么样
数据库
moxiaoran57532 小时前
nginx中proxy_pass配置
运维·服务器·nginx
风清再凯2 小时前
03-docker存储与网络
网络·docker·容器