• 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"
    

      

  • 相关阅读:
    4种定位的区别
    tab切换插件
    CPU的cache知识
    linux free命令详解
    关于登录linux时,/etc/profile、~/.bash_profile等几个文件的执行过程
    职业规范(运维)
    数据库的横表和纵表
    Linux下的xargs的用法
    LINUX ulimit命令
    防火墙并发连接数
  • 原文地址:https://www.cnblogs.com/wendyluo/p/13178846.html
Copyright © 2020-2023  润新知