ansible常用模块使用及详细demo

文章详细介绍了Ansible中不同模块的使用,包括command和shell模块执行命令,script模块执行脚本,以及文件管理相关的copy、fetch和file模块。还提到了如何设置文件属性、安装卸载软件、管理服务状态、创建定时任务和挂载服务等操作。
摘要由CSDN通过智能技术生成
命令模块的应用
ansible 主机名称/主机组名称/主机地址信息/all -m(指定应用的模块信息) 模块名称 -a(指定动作信息) "执行什么动作"
  • command:在一个远程主机上执行一个命令,默认模块

    ansible ip -m command -a "hostname"
    
    • 有些符号无法识别:<、>、|、;、and、&
  • shell:在节点上执行命令,没有无法识别的

    ansible -m shell -a "cd /tmp;pwd"
    
    • 利用shell执行脚本
      • 编写脚本
      • 脚本发送远程主机
      • 修改权限
      • 执行脚本
  • script:万能模块

    • 编写一个脚本

    • 运行ansible命令执行脚本

      ansible -m script -a "./yum.sh"
      
  • 扩展

    • chdir:执行命令之前切换目录

      ansible ip -m command -a "chdir=/tmp touch old.txt"
      默认创建在家目录,加上chdir就是在切换的目录下创建文件
      
    • creates:如果文件存在则不执行命令

      ansible ip -m command -a "creates=/tmp/hosts touch old.txt"
      
    • removes:如果文件存在则执行命令

      ansible ip -m command -a "removes=/tmp/hosts chdir=/tmp touch old.txt"
      
    • free_from:-a参数后面必须写上一个合法的linux命令

文件类型的模块
  • copy:将数据信息进行批量分发

    ansible ip -m copy -a "src=/etc/hosts dest=/etc/"
    或进行重命名
    ansible ip -m copy -a "src=/etc/hosts dest=/etc/hosts.bak"
    
    • owner、group设置文件传输过去后的属主、属组

      ansible ip -m copy -a "src=/etc/hosts dest=/etc/ owner=oldboy group=oldboy"
      
    • mode:设置文件传输过去的权限

      ansible ip -m copy -a "src=/etc/hosts dest=/etc/ mode=1777"
      
    • backup:对原文件进行备份,防止传输的文件覆盖原文件

      ansible ip -m copy -a "src=/etc/hosts dest=/etc/ backup=yes"
      
    • content:创建一个文件并直接编辑文件信息

      ansible ip -m copy -a "content='oldboy1234' dest=/etc/rsync.password"
      
    • remote_src::把客户端下src的文件复制到客户端的dest路径下

      ansible ip -m copy -a "src='/tmp/old.txt' dest=/old remote_src=yes"
      
    • 复制目录信息的时候有斜线是将目录内容复制过去、没有斜线将目录本身也复制过去

  • fetch:将被控端数据传到管理端

    #将172.16.1.31里/tmp/oldboy.txt拉取到本地tmp目录下
    ansible 172.16.1.31 -m fetch -a "src=/tmp/oldboy.txt dest=/tmp"
    
  • file:设置文件属性信息

    • 基本用法

      ansible ip -m file -a "dest=/etc/hosts owner=oldboy group=oldboy mode=666"
      
    • state:创建数据信息(文件 目录 链接文件)

      • =absent:删除数据信息

        #文件
        ansible ip -m file -a "dest=/old.txt state=absent"
        
        #目录
        ansible ip -m file -a "dest=/old state=absent"
        
      • =directory:创建一个目录信息

        ansible ip -m file -a "dest=/old/old01/old02 state=directory"
        
      • =file:检测创建的数据是否存在,绿色存在,红色不存在

        ansible ip -m file -a "dest=/old/old.txt state=file"
        
      • =hard:创建一个硬链接文件

        ansible ip -m file -a "src=/old/1.txt dest=/old/old01/old_hard.txt state=hard"
        
      • =link:创建一个软链接文件

        ansible ip -m file -a "src=/old/1.txt dest=/old/old01/old_link.txt state=link"
        
      • touch:创建一个文件信息

        ansible ip -m file -a "dest=/old/1.txt state=touch"
        
安装卸载软件yum
ansible all -m yum -a "name=iotop state=installed"
  • name:指定安装软件名称

  • state:指定是否安装软件

    • installed:安装软件
    • absent:卸载软件
管理服务器的运行状态:service模块——停止、开启、重启
  • name:指定管理的服务名称

  • state:指定服务状态

    • started:启动

    • restarted:重启

    • stopped:停止

    • enable:指定服务是否开启自启动

ansible all -m service -a "name=nfs state=started enable=yes"
批量设置多个主机的定时任务信息:cron模块
  • minute:设置分钟信息(0-59)
  • hour:设置小时信息(0-23)
  • day:设置日期信息(1-31)
  • month:设置月份信息(1-12)
  • weekday:设置周信息(0-6)
  • job:用于定义定时任务需要干的事情
  • name:设置注释信息
  • state:
    • absent:删除定时任务
    • disable:是否注释定时任务(yes/no)

基本用法

ansible all -m cron -a "minute=0 hour=2 job='/usr/sbin/ntpdate ntpl.aliyun.com &>/dev/null'"

扩展用法:设置的时候加上注释,如果存在就不再新建任务

ansible all -m cron -a "name='time sync' minute=0 hour=2 job='/usr/sbin/ntpdate ntpl.aliyun.com &>/dev/null'"

删除定时任务

ansible all -m cron -a "name='time sync' state=absent"

PS:ansible可以删除的定时任务,只能是ansible设置好的定时任务

批量注释定时任务

ansible all -m cron -a "name='time sync' minute=0 hour=2 job='/usr/sbin/ntpdate ntpl.aliyun.com &>/dev/null' disbale=yes"
批量进行挂载服务:mount
  • src:需要挂载的存储设备或文件信息

  • path:指定目标挂载点目录

  • fstype:指定挂载时的文件系统类型

  • state

  • present/mounted:进行挂载

    • present:不会实现立即挂载,修改fstab文件,实现开机自动挂载
    • mounted:会实现立即挂载,并会修改fstab文件,开机自动挂载
    absible 172.16.1.7 -m mount -a "src=172.16.1.31:/data path=/mnt fstype=xfs state=mounted"
    
  • absent/unmounted:进行卸载

    • absent:会实现立即卸载,并且会删除fstab文件信息,禁止开机自动挂载
    • unmounted:会实现立即卸载,但是不会删除fstab文件信息
    absible 172.16.1.7 -m mount -a "src=172.16.1.31:/data path=/mnt fstype=xfs state=absent"
    
批量创建用户:user
ansible all -m user -a "name=oldboy uid=666 group=old"
  • 指定用户uid信息:uid

  • 指定用户组信息:

    • group:同时指定属组和其他组
    • groups:只指定其他组
  • 批量创建虚拟用户

    ansible all -m user -a "name=rsync create_home=no shell=/sbin/nologin"
    
  • 创建用户并创建密码(或给已有的用户修改密码)

    ansible all -m user -a  "name=old passwd=123456"
    

    PS:利用ansible程序user模块设置用户密码信息,需要将密码明文信息转换为密文信息进行设置。上面的命令会报错

    #查看密码信息
    cat /etc/shadow
    
    • 生成密文密码信息方法

      ansible all -i localhost, -m debug -a "msg={{ 'mypassword' | password_hash('sha512','mysecretsalt') }}"
      
      mypassword:密码信息
      mysecretsalt:加密校验信息
      
    • 执行命令

      #设置密码为123456,加密校验信息为oldboy
      ansible all -i localhost, -m debug -a "msg={{ '123456' | password_hash('sha512','oldboy') }}"
      
      localhost | SUCCESS => {
          "msg": "$6$oldboy$MVd3DevkLcimrBLdMICrBY8HF82Wtau5cI8D2w4Zs6P1cCfMTcnnyAmmJc7mQaE9zuHxk8JFTRgYMGv9uKW7j1"
      }
      
      
      #将生成的加密密码去生成用户并设置密码,注意要用单引号,双引号会解析$,以为是变量
      ansible all -m user -a  ’name=old passwd=$6$oldboy$MVd3DevkLcimrBLdMICrBY8HF82Wtau5cI8D2w4Zs6P1cCfMTcnnyAmmJc7mQaE9zuHxk8JFTRgYMGv9uKW7j1‘
      
      #客户端测试
      su - old
      输入密码:123456
      
获取内置变量模块:setup
  • 获取全部内置变量

    ansible rsync -m setup
    
  • 筛选进行查看

    ansible rsync -m setup -a "filter=ansible_hostname"
    
  • 常见主机信息:

    参数解释
    ansible_all_ipv4_addresses仅显示ipv4的信息
    ansible_devices仅显示磁盘设备信息
    ansible_distribution显示是什么系统,例:centos,suse等
    ansible_distribution_major_version显示是系统主版本
    ansible_distribution_version仅显示系统版本
    ansible_machine显示系统类型,例:32位,还是64位。
    ansible_eth0仅显示eth0的信息
    ansible_hostname仅显示主机名
    ansible_kernel仅显示内核版本
    ansible_lvm显示lvm相关信息
    ansible_memtotal_mb显示系统总内存
    ansible_memfree_mb显示可用系统内存
    ansible_memory_mb详细显示内存情况
    ansible_swaptotal_mb显示总的swap内存
    ansible_swapfree_mb显示swap内存的可用内存
    ansible_mounts显示系统磁盘挂载情况
    ansible_processor显示cpu个数(具体显示每个cpu的型号)
    ansible_processor_vcpus显示cpu个数(只显示总的个数)
  • 获取子信息方法:

    ansible_eth0[ipv4]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值