文章目录
- [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 模块
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'