Ansible可以使用命令行方式进行自动化管理,且ansible的命令行管理工具都是由一系列模块、参数支持的,我们可以通过ansible-doc工具查看模块帮助信息。本篇博文将详细讲述ansible模块功能及操作。

Ansible命令参数:

  • -v:输出详细信息(可以使用多个v)
  • -i PATH:指定hosts文件位置
  • -f NUM :指定开启的进程数(默认为5)
  • -m MOULE :指定module的名称(默认为command)
  • -m DIRECTORY:指定module的目录来加载module,默认是/usr/share/ansible
  • -a,MODULE_ARGS:指定module模块的参数
  • -k:提示输入ssh的密码,而不是使用基于ssh的密钥认证
  • -u USERNAME:指定移动端的执行用户

    Ansible模块:

    1、command模块

    这个模块可以直接在远程主机上执行命令,并将结果返回本主机。注意,该命令不支持 | 管道命令

    命令:ansible [主机] [-m 模块] [-a args]
    ansible-doc -l #列出所有安装模块(q退出)
    ansible-doc -s yum #列出yum模块描述信息和操作动作
    ansible all -m command -a 'date' #查询date
    ansible all -a 'ls /' #如果不加-m模块,默认运行command模块

Ansible常用模块详解_第1张图片
Ansible常用模块详解_第2张图片

2、cron模块

该模块适用于管理cron计划任务的。

两种状态(state):present表示添加        absent 表示移除
ansible-doc -s cron                      #查看cron模块信息
ansible all -m cron -a 'minute="*/1" job="/usr/bin/echo heihei >> /opt/test.txt" name="test cron"'          
#-a: 指定添加参数     */1:每分钟执行      job:执行内容

Ansible常用模块详解_第3张图片

ansible mysql -a 'crontab -l'        #查看crontab信息
ansible mysql -m cron -a 'name="test cron" state=absent'

Ansible常用模块详解_第4张图片

3、user模块

该模块主要是用来管理用户账号。

ansible-doc -s user
ansible all -m user -a 'name=test' #创建用户

Ansible常用模块详解_第5张图片
操作成功后,到被管理服务器上查看结果:
Ansible常用模块详解

ansible mysql -m command -a 'tail /etc/passwd'
ansible mysql -m user -a 'name=test01 state=absent' #删除用户

Ansible常用模块详解_第6张图片
操作成功后,到mysql服务器上查看结果:
Ansible常用模块详解

4、group模块

该模块主要用于添加或删除组。

ansible mysql -m group -a 'name=mysql gid=330 system=yes'
ansible mysql -a 'tail /etc/group'

Ansible常用模块详解_第7张图片

ansible mysql -m user -a 'name=test02 uid=330 group=mysql system=yes'
#新建用户test02;设定UID=306;将test02添加到mysql组
ansible mysql -a 'id test02'

Ansible常用模块详解_第8张图片

5、copy模块

这个模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等。

ansible-doc -s copy
ansible all -m copy -a 'src=/etc/fstab dest=/opt/fstab.bk owner=root mode=644'
#src:原文件 dest:复制后目标文件 owner:属主 mode:权限
ansible mysql -a 'ls -l /opt' #在控制主机上查看

Ansible常用模块详解_第9张图片
操作成功后,到被管理服务器上相应目录下查看结果:
Ansible常用模块详解_第10张图片

ansible mysql -m copy -a 'content="hello world!" dest=/opt/hello.txt'
#复制文件hello.txt中写入“hello world!”
ansible mysql -a 'cat /opt/test.txt' #在控制主机上查看

Ansible常用模块详解_第11张图片
操作成功后,到mysql服务器上相应目录下查看结果:
Ansible常用模块详解_第12张图片

6、file模块

该模块主要用于设置文件的属性,比如创建文件、创建链接文件、删除文件等。

ansible-doc -s file
touch /opt/file.txt
ansible mysql -m file -a 'path=/opt/file.txt owner=test02 group=mysql mode=666'
#对test文件设置属主、属组、权限

Ansible常用模块详解_第13张图片
操作完成后,到mysql服务器下检查结果:
Ansible常用模块详解_第14张图片

ansible mysql -m file -a 'src=/opt/test.txt path=/opt/test.txt.link state=link'
#将src指的文件链接到path指的路径下

Ansible常用模块详解_第15张图片
操作完成后,到mysql服务器相应目录下检查结果:
Ansible常用模块详解

当然,也可以创建空文件,操作相对简单
ansible mysql -m file -a 'path=/opt/abc.txt state=touch' #创建空文件
ansible mysql -m file -a 'path=/opt/abc.txt state=absent' #删除

7、ping模块

//测试被管理主机是否在线
ansible all -m ping

Ansible常用模块详解_第16张图片

8、yum模块

ansible-doc -s yum
ansible webserver -m yum -a 'name=httpd' #安装httpd
ansible webserver -m yum -a 'name=httpd state=absent' #移除httpd

Ansible常用模块详解

9、shell模块

shell模块可以在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道等。

ansible-doc -s shell
ansible webserver -m user -a 'name=jerry'
ansible webserver -m shell -a 'echo abc123 | passwd --stdin jerry'
#创建用户,免交互设置密码

Ansible常用模块详解_第17张图片

10、script模块

该模块用于将本机的脚本在被管理端的机器上运行。

在自己服务器设置脚本,其他服务器去执行
ansible-doc -s script
#!/bin/bash
echo "this is test script" > /opt/script.txt
chmod 666 /opt/script.txt #设置权限
chmod +x test.sh #为脚本添加执行权限
ansible all -m script -a 'test.sh'

Ansible常用模块详解_第18张图片
操作完成后,到被管理服务器上查看执行结果:
Ansible常用模块详解

11、setup模块

该模块主要用于收集信息,是通过调用facts组件来实现的。
  facts组件是Ansible用于采集被管机器设备信息的一个功能,我们可以使用setup模块查机器的所有facts信息,可以使用filter来查看指定信息。整个facts信息被包装在一个JSON格式的数据结构中,ansible_facts是最上层的值。

ansible-doc -s setup
ansible mysql -m setup #查看mysql服务器上所有信息

12、service模块

该模块用于服务程序的管理。

ansible-doc -s service
ansible webserver -m service -a 'name=httpd enabled=true state=started'
#开启httpd服务 ; enabled:开机自启动
ansible webserver -m service -a 'name=httpd enabled=true state=stopped' #关闭httpd服务