ansible 模块

第一个模块:command模块
作用说明:命令模块    (默认模块)
使用方法:ansible nfs -m command(可省略) -a "free -h"
    不能够识别符号 < > | ; & *等
    模块参数
    chdir   :   在执行批量管理命令时,先进行目录切换
        ansible nfs -m command -a "chdir=/tmp pwd" 显示为/tmp
    creates :    判断文件是否存在,如果不存在则执行后面命令,存在则跳过
        ansible nfs -m command -a "creates=/tmp/wyd.txt touch /tmp/wyd.txt" 
    removes :    当该文件不存在,则该选项不执行
第二个模块:shell模块 (万能模块)
作用说明:可以批量执行命令    (和command区别,可以识别特殊符号)
使用方法:和command模块用法,参数一样
需求:实现批量执行脚本
利用shell模块
1)ansible本地编写脚本
2)将脚本推送到受控端
ansible nfs -m copy -a "src=/server/scripts/test.sh dest=/serv/scripts/"
3)将脚本文件权限进行设置
ansible nfs -m shell -a 'chmod +x /server/scripts/test.sh'
4)批量执行脚本
ansible nfs -m shell -a '/server/scripts/test.sh'
第三个模块:script (执行脚本文件模块)
作用说明:批量执行脚本模块
使用方法:
    1)ansible本地编写脚本
    2)批量执行脚本
    ansible nfs -m script -a "/server/scripts/test.sh"
第四个模块:copy
作用说明: 1)将管理主机数据批量分发到管理主机上
         2)将被管理主机数据进行备份
使用方法:
    ①src=源,dest=目标
        ansible nfs -m copy -a "src=/etc/selinux/config dest=/tmp"
    ②将被管理主机进行备份 remote_src  backup
        ansible nfs -m copy -a "src=/tmp/wyd.txt dest=/tmp/wyd.txt.bak remote_src=yes"
    remote_src:将被管理主机上文件进行本地备份保存
        ansible nfs -m copy -a "src=/tmp/wyd.txt dest=/tmp/wyd.txt.bak backup=yes"
    backup  :类似于sed -i.bak方法,改变的同时生成一个根据日期的备份文件 (不好还原)
    ③ 指定分发权限    mode    owner   group
        ansible nfs -m copy -a "src=/etc/selinux/config dest=/tmp mode=400 owner=wyd group=wyd"
    mode:匹配分发文件时,修改文件权限信息
    owner:匹配分发文件时,修改文件属主信息  (前提需要用户提前存在)
    group:匹配分发文件时,修改文件属组信息  (前提需要用户组提前存在)
    directory_mode:递归设定目录权限
    ④ 其他参数
        ansible nfs -m copy -a "content='wyd75' dest=/tmp/wyd.txt"
    content:在批量管理主机上创建新的文件,并填写内容
    force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes
    others:所有的file模块里的选项都可以在这里使用
第五个模块:file
作用说明:1)修改已有文件属性信息(权限,属主,属组)
            path=文件目标   mode=权限   owner=属主   group=属组  recurse= 是否递归目录处理    false=是否删除时连带软连接一起删除
        2)用于创建新的数据信息/删除数据信息
        state=(动作)
            创建普通文件:state=touch
            ansible all -m file -a "path=/wyd/a.txt state=touch"
            创建目录文件:state=directory
            ansible all -m file -a "path=/wyd/a.txt state=directory"
            创建软连接文件:state=link
            ansible all -m file -a "src=/wyd/a.txt dest=/wyd/a_soft.txt state=link"
            创建硬链接文件:state=hard
            ansible all -m file -a "src=/wyd/a.txt path=/wyd/a_soft.txt state=hard"
            删除文件:state=absent
            ansible all -m file -a "path=/wyd/a_soft.txt state=absent"
                    (目录文件都可以删除)
第六个模块:fetch
作用说明:将受控端主机数据进行拉取
    ansible all -m fetch -a "src=/wyd/a.txt dest=/tmp/"
第七个模块:yum
作用说明:安装更新卸载软件
模块说明:批量安装软件包    (并行)
        name=安装的软件名 state=installed安装 (latest和present效果一样)  removed卸载 (absent效果一样)
   name:              指定下载软件名称信息
   state:             指定下载或是卸载软件
   installed/present              下载安装软件   rsync-2.0   
   absent/removed                 卸载软件程序
   latest             更新软件程序   rsync-3.0
   enablerepo:                  指定下载源信息
   disablerepo:                 指定不用哪个下载源
   download_only:               只下载软件包不进行安装
第八个模块:service
作用说明:管理服务运行状态
模块使用:开启关闭服务
        name=服务名    state=stoped停止  state=started开始 state=restarted重启 state=reloaded重新加载
        开机运行状态:
        name=服务名    enabled=no是否开机自启

PS:需要确认服务以及被systemctl命令管理,才能使用service模块
第九个模块:cron
作用说明:实现批量管理定时任务
模块参数:
    name    :   设置定时任务注释信息 (用于判断定时任务是否相同)
    minute  :   设置时间分钟信息 (0-59 * / - 表示)    (默认不设置代表*,以下都一样)
    hour    :   设置时间小时信息 (0-23 * / - 表示)
    day     :   设置时间日期信息 (1-31 * / - 表示)
    month   :   设置时间月份信息 (1-12 * / - 表示)
    weekday :   设置时间星期信息 (0- 6 * / - 表示)
    job     :   设置任务信息
    state   :   absent  (删除时,只需要指定名字name) 默认为present
    disabled:   yes     (注释时需将完整定时任务加上)
    user    :   指定运行定时任务的用户
第十个模块: user / group
作用说明:批量创建用户信息,也可以直接修改用户信息
模块参数:
    comment :   给添加用户设置注释信息 useradd -c
    name    :   指定管理的用户名            
create_home :    是否创建家目录 yes/no  useradd -M
    group   :   指定用户所属主要组信息 useradd -g
    groups  :   指定用户所属附属组信息 useradd -G
    home    :   指定用户家目录        useradd -b 
    password:   给用户设置密码 (必须是密文)
    shell   :   指定用户登录系统方式 useradd -s
    state   :   present创建  absent删除
    uid     :   指定用户家目录
    remove  :   删除时是否删除家目录 yes/no

group模块类似于user
如何设置密文密码
方法一: debug调试模块(all或者查询的主机地址)
ansible all  -m debug -a "msg={{ '123456' | password_hash('sha512', 'wyd')}}"
方法二: 1)下载安装pip
            yum -y install python-pip
        2)配置pip源,找到mirrors中pypi源
        3)pip install passlib
        4)python -c "from passlib.hash import sha512_crypt; import getpass;print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"
第十一个模块:unarchive
作用说明:解压数据模块
模块参数:
    src :   指定要解压的数据信息
    dest:   解压数据指定路径信息
    remote_src: 将被管理主机上压缩包进行解压
    ansible 172.16.1.7 -m unarchive -a "src=/data/wordpress-5.6-zh_CN.tar.gz dest=/html/test/"
第十二个模块:archive
作用说明:可以对远程主机数据进行压缩处理
      owner:          指定文件压缩后的属主信息
      group:        指定文件压缩后的属组信息
      mode:         指定文件压缩后的权限信息
      remove:(了解) 将进行压缩后的数据删除  (删除文件数据信息)
      path:        指定需要进行压缩数据信息
      dest:        指定压缩包文件保存路径
      format :     指定压缩数据方式  bz2 gz(默认) tar xz zip
      exclude_path:在压缩数据时进行指定数据信息排除
      force_archive 单独压缩一个文件信息时,也可以进行强制压缩处理 

      实践需求:需要将远程主机/etc/wyd01目录进行压缩处理
      ansible wyd -m archive -a "path=/etc/wyd01 dest=/etc/wyd01.tar.gz owner=wyd01 group=wyd01 mode=666 remove=yes format=gz"      
第十三个模块:lineinfile
      常用指令参数: 
      path:  指定要修改文件信息
      regexp:利用正则匹配出文件中指定行信息
      line:  对匹配行信息做修改
      state: 可以实现删除文件信息 
      insertafter: 匹配指定信息,并在指定信息下面新起一行添加信息
      insertbefore  匹配指定信息,并在指定信息上面新起一行添加信息
          create:       在指定文件后面追加新的信息  等价于  >>
第十四个模块:mount
      作用说明:实现存储服务批量挂载以及卸载
      常用指令参数:
      path:  指定挂载点目录信息
      src:   指定挂载存储设备信息
      fstype:指定挂载使用文件系统类型
      opts    指定挂载参数信息  rw ro suid nosuid auto noauto ...  defaults 
      state:  指定挂载或卸载操作
        实践操作:
        01. 主机批量挂载存储设备
      ansible wyd -m mount -a "src=172.16.1.31:/data/bbs path=/mnt fstype=nfs opts=defaults state=present"   实现重启系统进行永久挂载
      ansible wyd -m mount -a "src=172.16.1.31:/data/bbs path=/mnt fstype=nfs opts=defaults state=mounted"   实现立即挂载以及永久挂载
第十五个模块:setup
   收集
   作用说明:可以采集被管理主机系统和硬件信息
   常用指令参数信息:
   filter:    过滤筛选想关注信息
   ansible 172.16.1.7 -m setup -a "filter=ansible_eth0"
   PS:利用收集的信息做判断使用。