ThankNeko's Blog ThankNeko's Blog
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)

Hoshinozora

尽人事,听天命。
首页
  • 操作系统

    • Linux基础
    • Linux服务
    • WindowsServer笔记
    • Ansible笔记
    • Shell笔记
  • 容器服务

    • Docker笔记
    • Kubernetes笔记
    • Git笔记
  • 数据库服务

    • MySQL笔记
    • ELK笔记
    • Redis笔记
  • 监控服务

    • Zabbix笔记
  • Web服务

    • Nginx笔记
    • Tomcat笔记
  • 数据处理

    • Kettle笔记
  • Python笔记
  • Bootstrap笔记
  • C笔记
  • C++笔记
  • Arduino笔记
  • 分类
  • 标签
  • 归档
  • 随笔
  • 关于
GitHub (opens new window)
  • 操作系统

    • Linux基础

    • Linux服务

    • Windows Server笔记

    • Shell笔记

    • Ansible笔记

      • Ansible介绍与部署
      • Ansible常用模块
        • Ansible常用模块
          • ansible-doc
        • 命令类模块
          • command
          • shell
          • script
        • 文件类模块
          • copy
          • template
          • fetch
          • file
          • replace
          • unarchive
        • 管理类模块
          • yum
          • service
          • mount
          • cron
          • user
          • ping
          • setup
          • debug
      • Ansible剧本编写
  • 虚拟化服务

  • 数据库服务

  • 监控服务

  • Web服务

  • 数据处理

  • Ops
  • 操作系统
  • Ansible笔记
Hoshinozora
2023-03-14
目录

Ansible常用模块

# Ansible常用模块

# ansible-doc

  • ansible-doc [参数] [模块名] - 查看ansible模块说明的命令。
    • 无参数 - 查看指定模块在剧本中的应用方法。
    • -s [模块名] 查看指定模块的详细说明。
    • -l 列出所有模块使用简介。

# 命令类模块

# command

  • # command模块用于使远程主机执行命令。
    • -m command -a "命令"
    • 它ansible的默认模块,命令行中可不使用-m指定。
    • 需要注意的是,它无法识别变量如$HOME,和<>|;&等字符。
  • # 参数
    • 无参数 - 直接执行Linux命令,-a "[命令]"。
    • chdir - 在执行命令之前先切换目录,-a "chdir=[目录路径] [命令]"。
      • 不指定则默认是在用户家目录执行。
    • creates - 如果指定的远程主机文件不存在则执行命令,-a "creates=~/test touch test"。
    • removes - 如果指定的远程主机文件已存在则执行命令,-a "removes=~/test touch test"。

# shell

  • # shell模块也是用于使远程主机执行命令(万能模块)。
  • shell模块同样是在远程机器上执行命令,但在执行命令时,shell模块指定的命令会由远程主机上的/bin/sh程序进行处理。

  • 因此shell模块支持更多的操作符,如变量和<>|;&等字符。

  • # 参数
    • 无参数 - 直接执行Linux命令。
    • chdir - 在执行命令之前先切换目录,不指定则默认在用户家目录执行。
    • creates - 如果指定的远程主机文件不存在则执行命令。
    • removes - 如果指定的远程主机文件已存在则执行命令。

# script

  • # script模块用于在远程主机上运行管理端本地的Shell脚本。
  • # 参数
    • 无参数 - 直接指定要执行的本地Shell脚本路径

    • chdir - 在执行脚本之前先切换目录,不指定则默认在用户家目录执行。

    • creates - 如果指定的远程主机文件不存在则执行命令。

    • removes - 如果指定的远程主机文件已存在则执行命令。

# 文件类模块

# copy

  • # copy模块用于将本地文件复制到远程主机。
    • -m copy -a "src=[本地文件路径] dest=[远程主机路径]"
    • 复制目录注意事项
      • 源目录没有斜线/test,将目录本身及其子文件进行远程传输复制。
      • 源目录有斜线/test/,不传目录本身只将目录中的子文件进行远程传输复制。
  • # 参数
    • backup - 如果远程主机有源文件,传输前是否对源文件进行备份,backup=yes。

    • owner - 传输后修改文件属主,owner=[用户名]。

      • 需要目标主机有指定用户。
    • group - 传输后修改文件属组,group=[组名]。

      • 需要目标主机有指定组。
    • mode - 传输后修改文件的权限,mode=[权限数值]。

    • directory_mode - 传输后递归修改目录及其子文件的权限,directory_mode=[权限数值]。

    • content - 使用内容生成文件,不用指定源文件,content='[内容]' dest=[远程文件路径]。

    • remote_src - 使用管理主机本地或者远程主机自身的文件,remote_src=yes。

      • 等于yes则表示文件源使用远程主机自身的文件 (远程移动数据)。

      • 等于no则表示文件源使用管理主机本地的文件 (远程传输数据)。

# template

  • # 将文件数据复制到远程主机,同copy功能大致相同。不同之处在于用template传输文本时,可以替换其中的变量。
    • -m template -a "src=[本地文件路径] dest=[远程主机路径]"

    • 传输时会将其中的格式的内容替换成变量对应的值。

  • # 参数
    • backup - 如果远程主机有源文件则先将其进行备份。
    • owner - 传输后修改文件属主,需要目标主机有指定用户。
    • group - 传输后修改文件属组,需要目标主机有指定组。
    • mode - 传输后修改文件的权限。

# fetch

  • # 批量拉取远程主机的文件到管理主机本地。
    • -m fetch -a "src=[远程主机文件] dest=[本地保存目录]"
    • 会以远程主机作为本地保存文件用的目录名,例如 ~/10.0.0.6/test.txt。

# file

  • # 修改远程主机文件属性 / 创建指定属性远程主机文件
    • -m file -a "dest=[远程文件路径] [其他参数]"
  • # 参数
    • owner - 修改文件属主,需要目标主机有指定用户。
    • group - 修改文件属组,需要目标主机有指定组。
    • mode - 修改文件权限。
    • recurse - 递归修改文件属性,recurse=yes/no,默认为no。
    • state - 执行的动作。
      • directory - 创建一个目录。
      • touch - 创建一个文件。
      • hard - 创建一个远程文件的硬链接文件,需要使用src指定源。
      • link - 创建一个远程文件的软连接文件,需要使用src指定源。
      • absent - 删除一个文件或目录。
      • file - 检查文件是否存在,绿色表示存在。

# replace

  • # 使用正则表达式替换远程主机的文件内容。
    • -m replace -a "path=[远程主机文件] regexp='[匹配内容]' replace='[替换内容]'"
  • # 参数
    • path - 要替换内容的远程主机文件,path=[远程主机文件]。
    • regexp - 匹配的正则表达式,例如:regexp='HAHAHA'。
      • 要匹配的内容,可正则表达式。
    • replace - 最终要替换成的字符串内容,例如:replace='hahaha',会替换regexp匹配到的字符串。
      • 如果未指定该replace参数,则会删除匹配到的内容。
    • backup - 替换前是否对源文件进行备份。
    • owner - 传输后修改文件属主,需要目标主机有指定用户。
    • group - 传输后修改文件属组,需要目标主机有指定组。
    • mode - 传输后修改文件的权限。

# unarchive

  • 解压文件模块。
    • -m unarchive -a "src=[压缩文件路径] dest=[远程主机目标目录]"
  • 参数
    • remote_src - 使用管理主机本地或者远程主机自身的文件,默认为no。
      • 等于yes则表示压缩文件源使用远程主机自身的文件。

      • 等于no则表示压缩文件源使用管理主机本地的文件。

# 管理类模块

# yum

  • # 批量管理远程主机上yum软件
    • -m yum -a "name=[软件名] state=[执行的动作]"

      • state动作的参数单词主要以过去式形式出现。
    • # 参数
      • name - 目标软件名,例如:name=htop。
      • state - 执行的动作。
        • present - 安装软件(默认)。
        • absent - 卸载软件。

# service

  • # 批量管理远程主机的服务的运行状态
    • -m service -a "name=[服务名] state=[执行的动作]"

      • 如果服务名的扩展名有多个,则服务名需是完整。例如:rpcbind.service、rpcbind.soket多个扩展名则需要指定完整的服务名。
    • # 参数
      • state - 执行的动作。
        • started - 启动服务。
        • restarted - 重启服务。
        • stopped - 停止服务。
      • enabled - 指定服务是否开机自启动,enabled=yes/no。

# mount

  • # 批量管理远程主机挂载操作。
    • -m mount -a "src=[挂载源] path=[目标挂载点] fstype=[挂载类型] state=[执行的动作]"
  • # 参数
    • src - 指定远程主机的挂载源,可指定远程主机本地的设备文件,也可指定远程NFS目录,例如10.0.0.41:/data。
    • path - 指定远程主机的目标挂载点目录。
    • fstype - 挂载的文件系统类型。
    • state - 执行的动作。
      • mounted - 立即挂载,同时写入fstab文件实现开机自动挂载。
      • absent - 立即卸载,同时删除fstab文件内的对应挂载信息。
      • unmounted - 立即卸载,但不删除fstab文件内的挂载信息。

# cron

  • # 批量设置远程主机的定时任务
    • -m cron -a "name='[注释名]' [时间参数] job='[命令]'"
  • # 参数
    • name - 指定定时任务注释名。
      • 可防止重复添加,如果已有一样的注释,则不会再添加。
      • 另外我们也可用注释名管理远程主机的定时任务,但ansible只能管理使用ansible定义的定时任务。
    • 时间参数 - 作用同crontab一样,如果想要某个时间为*,则不指定对应时间参数即可。
      • minute=[分钟]
      • hour=[小时]
      • day=[日期]
      • month=[月份]
      • weekday=[星期]
    • job - 指定定时任务要执行的命令,job='[命令]'。
    • state - 执行的动作。
      • 不指定动作 - 则默认为添加
      • absent - 删除定时任务(需指定注释名)。
    • disabled - 是否注释定时任务命令,disabled=yes/no。
      • 注释同等于关闭,需同时指定job参数及其命令,例如:job='/bin/ls /etc &> /dev/null'。

# user

  • # 实现批量创建远程主机的用户
    • -m user -a "name=[用户名] [其他参数]"
    • 默认为创建用户。
  • 参数

    • uid - 指定用户UID,uid=[指定值]。

    • group - 指定用户默认组,group=[指定值]。

    • groups - 指定用户扩展组,groups=[指定值]。

    • create_home - 指定是否创建家目录,create_home=yes/no,默认为yes。

    • shell - 指定用户的shell,shell=[shell方式],例如虚拟用户shell=/sbin/nologin。

    • password - 指定用户密码。

      • 利用user模块指定密码的话,需要将明文转换为密文进行设置。

      • 另外密文由于有$符号,所以需要使用单引号引起动作所有参数,-a '[参数]'。

        # 密码密文信息生成方法
        yum install python-pip
        pip install passlib
        python -c "form passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass(密码信息)))"
        
        
        
        
        1
        2
        3
        4
        5
        6
        7

# ping

  • # 远程管理连接测试
    • ansible [IP] -m ping

# setup

  • # 获得主机的详细信息
    • ansible [主机] -m setup
  • # 参数
    • filter - 过滤指定信息,但只能过滤出大项,filter=[过滤信息]。
      • 例如:filter=ansible_hostname
      • 剧本中可以获得子项:filter=ansible_eth0[ipv4]

# debug

  • # 在控制端上输出其他动作的返回信息 - 用于剧本
    • 原理是将其他动作执行返回的内容注册成变量,然后执行debug显示变量内容。

      - name: date
        # 执行的命令
        shell: date
        # 将执行输出的信息作为值给一个变量
        register: [变量名]
        
      - name: print var
        # ".stdout_lines"的作用是只输出结果中stdout_lines的值,去掉可以看到完整的输出结果。
        debug: msg={{ [变量名].stdout_lines }}
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
#Linux#主机编排#Ansible
Ansible介绍与部署
Ansible剧本编写

← Ansible介绍与部署 Ansible剧本编写→

最近更新
01
二〇二五年四月十七日随笔
04-17
02
二〇二五年四月十六日随笔
04-16
03
二〇二五年四月九日随笔
04-09
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Hoshinozora | MIT License
湘ICP备2022022820号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式