ansible 模块

ansible 命令格式

ansible 目标主机 [-f N][-m module_name] [-a args]
  • -f N :每次向N 个主机发送指令
  • -m 模块名:指定使用的模块名称 ,默认为command模块
  • -a args :指模块专用的参数 ,args一般是key=value格式

ansible 模块

 1.command模块

  • 功能:在远程主机上执行命令
  • 格式:-m command -a "命令"

 案例:在每个主机上执行free -m命令

[root@centos6-1 ~]# ansible myserver -m command -a "free -m"  

注意1:因为默认为command模块,可以省略 

注意2:指定目标主机可以用all表示,all表示主机清单里的全部主机和主机组

[root@centos6-1 ~]# ansible myserver  -a "free -m"

[root@centos6-1 ~]# ansible all -a "free -m"

 2.shell模块

  • 作用:执行命令,和command类似
  • 区别:command只能执行简单命令, shell模块可以执行带参数和变量的命令
  • 格式:-m shell -a “命令”

案例:在所有被管理节点上创建用户tom,然后修改tom密码为123

[root@centos6-1 ~]# ansible all -m shell -a "echo 123 | passwd --stdin tom"

3.user模块

  • 功能:管理用户
  • 格式:-m -user -a "选项"
    1. password:指定用户密码
    2. name:指定用户名
    3. groups:指定用户的属组
    4. createhome:是否创建家目录 yes|no
    5. system:是否为系统用户
    6. remove:当state=absent时,remove=yes则表示连同家目录一起删除
    7. state:是创建还是删除

 案例:在所有被管理节点创建用户jerry,密码设为123

[root@centos6-1 ~]# ansible all -m user -a "name=jerry password=123"
[root@centos6-1 ~]# ansible all -m shell -a "tail -n1 /etc/passwd"

 

 4.copy模块

  • 功能:复制文件和目录到远程主机
  • 格式:-m copy -a"选项"
  • 选项:
  1. src:源文件或源目录
  2. dest:指定目标主机的目录
  3. mode:指定将文件复制过去后,将权限修改为多少
  4. force:是否强制覆盖同名文件,yes/no

案例:将/tmp/a.txt分发到所有被管理节点的/home下,复制后,将权限改为700

[root@centos6-1 ~]# ansible all -m copy -a "src=/tmp/a.txt dest=/ mode=700"

5、file模块

  • 作用:创建空文件、拷贝、移动、删除、创建连接
  • 格式:-m file -a "选项"
  • 选项: name:文件名
  1. src:源文件
  2. path:指定目标路径
  3. mode:相当于执行chmod
  4. force:是否强制覆盖同名文件,yes/no
  5. state:表示文件的类型
  • link:表示软链接文件
  • hard:表示硬链接文件
  • directory:表示目录
  • touch:创建空文件
  • absent:删除文件

案例:在每个被管理主机的tmp下创建空文件abc.txt  

方法1
[root@centos6-1 ~]# ansible all -m file -a "name=/tmp/abc.txt state=touch"
方法2
[root@centos6-1 ~]# ansible all -m file -a "path=/tmp/abc.txt state=touch"

6、ping模块

  • 作用:检查被管理服务器示是否在线
  • 格式:-m ping

案例:检查被管理节点是否在线  

[root@centos6-1 ~]# ansible all -m ping

7、reboot模块

  • 作用:重启操作系统的模块
  • 格式:-m reboot  

 案例:重启所有被管理节点

方法1:
[root@centos6-1 ~]# ansible all -m reboot
方法2:
[root@centos6-1 ~]# ansible all -m shell -a "reboot"

8、yum模块

  • 作用:安装、卸载软件
  • 格式:-m yum -a "选项"
  • 选项
  1. name:指定软件名称
  2. state:设置安装、卸载
  3. present:安装
  4. absent:卸载

案例:在所有被管理节点安装zsh  

[root@centos6-1 ~]# ansible all -m yum -a "name=zsh state=present
[root@centos6-1 ~]# ansible all -m shell -a "rpm -q zsh"

9.service模块

  • 作用:管理系统中的各个服务
  • 格式:-m service -a "选项"
  • 选项:
  1. name:指定服务名
  2. state:设置服务状态
  3. started启动服务
  4. stopped停止服务
  5. restarted重启服务
  6. reloaded重载服务
  7. enabled设置服务开机自动启动
  8. runlevel设置服务的运行级别

案例:在所有被管理主机上安装apache  

[root@centos6-1 ~]# ansible all -m yum -a "name=httpd state=present"

10、systemd模块

  • 作用:centos7管理服务的方法,和service类似
  • 格式:-m systemd -a "选项"
  • 选项:
  1. name:指定服务名
  2. state:设置服务状态
  3. started启动服务
  4. stopped停止服务
  5. restarted重启服务
  6. reloaded重载服务
  7. enabled设置服务开机自动启动
  8. runlevel设置服务的运行级别  

 

11、script模块

  • 作用:将一个脚本文件发送到远程主机,并自动执行
  • 格式:-m script -a “脚本”

案例:在被管理节点的/home、/tmp、/root分别创建一个文件,文件名 时间.txt

oot@centos6-1 ~]# cat my.sh
#!/bin/bash
for dir in /home /tmp /root
do
touch $dir/`date +%F-%T`.txt
done
[root@centos6-1 ~]# chmod +x my.sh
[root@centos6-1 ~]# ansible all -m script -a "/root/my.sh"

12、unarchive模块

  • 作用:将压缩包解压到指定的位置下
  • 格式:-m unarchive -a "选项"
  • 选项
  1. src:指定本地的压缩吧
  2. dest:指定将压缩包解压到目标主机的哪个路径

案例:将nginx的源码包解压到被管理节点的home下 

[root@centos6-1 ~]# ansible all -m unarchive -a "src=/root/nginx-1.16.1.tar.gz
dest=/home/"

13、cron模块

  • 作用:周期完成特定的工作
  • 格式:-m cron -a “选项”
  • 选项
  1. minute:以分钟为单位来执行
  2. state:添加或是删除计划任务
  3. present:添加计划任务
  4. abent:删除计划任务
  5. special_time:在特殊时间节点执行
    • reboot重启的时候执行
    • daily每天执行一次

案例:每隔2分钟在/tmp/a.txt中写入一行数据

[root@centos6-1 .ssh]# ansible all -m cron -a "name=mycron state=present
job='echo 123>>/tmp/a.txt' minute=*/2"

  

 

posted @ 2020-06-22 20:07  luowendy  阅读(453)  评论(0编辑  收藏  举报