您的位置:首页 > 其它

Ansible常用基础模块

2020-01-14 03:34 134 查看

ansible-doc & ping(ansible-doc文档,很重要)

command模块

shell模块

script模块

copy模块

lineinfile|replace模块

yum模块

service模块

setup模块

ansible-doc和ping模块

  • ansible-doc 模块的手册相当于shell的man,很重要
  • ansible-doc -l 列出所有模块
  • ansible-doc 模块名称 查看帮助
  • ping模块
      测试网络连通性,ping模块没有参数
    ansible all -m ping 	//ping测试连通性

    command模块

    • 默认模块,远程执行命令
    ansible all -m command -a 'uptime'	//查看所有机器负载
    ansible all -m command -a 'date +%F_%T'	//查看日期和时间
    • 注意事项: command模块不能解析系统变量
    • 该模块不启动shell直接在ssh进程中执行,所有使用到shell命令的执行都会失败

    shell模块

    • shell模块用法与command基本一致,区别是shell模块是通过/bin/bash进行执行命令,可以执行任意命令
    • 不能执行交互式的命令,例如vim top等
    ansible all -m shell -a 'uptime'	//查看负载
    ansible all -m shell -a "echo ${HOSTNAME}"	//所有输出ansible
    ansible all -m shell -a 'echo ${HOSTNAME}' 	//各自输出主机名
    • 注意:ansible执行命令是二次解析,第一次在本机解析,第二次在执行机器解析,需要第二次解析的变量的话要使用转义符\

    script模块

    • 在本地写脚本,然后使用script模块批量执行
    vim user.sh
    #!/bin/bash
    id nb
    if [ $? != 0 ];then
    useradd wk
    echo 456 | passwd --stdin wk
    fi
    ansible all -m script -a 'user.sh'

    yum模块

    • 使用yum包管理器来管理软件包
    • name:要进行操作的软件包名字
    • state:动作(installed,removed)
    ansible db -m yum -a 'name="mariadb-server" state=installed'	//给所有db主机安装mariadb
    ansible cache -m yum -a 'name="lrzsz" state=removed'	//cache主机删除lrzsz软件包

    service模块

    • name:必选项,服务名称
    • enabled:是否开机启动 yes|no (systemctl is-enabled httpd检测服务状态)
    • sleep:执行restarted,会在stop和start之间沉睡几秒钟
    • state:对当前服务执行启动,停止,重启,重新加载等操作(started,stopped,restarted,reloaded)
    ansible cache -m service -a 'name="sshd" enabled="yes" state="started" '

    copy模块

    • 复制文件到远程主机
    • src:复制本地文件到远程主机,绝对路径和相对路径都可,路径为目录时会递归复制.若路径以"/“结尾,只服务目录里的内容,若不以”/"结尾,则复制包含目录在内的整个内容,类似与rsync
    • dest:必选项.远程主机的绝对路径,如果源文件是一个目录,那该路径必须是目录
    • backup:覆盖前先备份文件,备份文件包含时间信息.有两个选项:yes|no
    • force:若目标主机包含该文件,但内容不容,如果设置为yes,则强制覆盖,设为no,则只有当目标主机的目标位置不存在该文件时才复制.默认为yes
    ansible all -m copy -a 'src=/etc/resolv.conf dest=/etc/resolv.conf'	//复制文件
    ansible all -m copy -a 'src=/etc/yum.repos.d/ dest=/etc/yum.repos.d/'	//复制目录

    lineinfile模块

    • 类似sed的一种行编辑替换模块
    • path 目标文件
    • regexp 正则表达式,要修改的行
    • line 最终修改的结果
    ansible db -m lineinfile -a '
    > path="/etc/my.cnf"
    > regexp="^binlog-format"
    > line="binlog-format=row" '

    replace模块

    • 类似sed的一种行编辑替换模块
    • path 目的文件
    • regexp 正则表达式
    • replace 替换后的结果
    ansible db -m lineinfile -a '
    > path="/etc/my.cnf"
    > regexp="=row"
    > line="=mixed" '

    setup模块

    • 主要用于获取主机信息,playbooks里经常会用的另一个参数gather_facts与该模块相关,setup模块下经常用的是filter参数
    ansible cache -m setup -a 'filter=ansible_distribution'	//filter过滤所需信息
    • 点赞 1
    • 收藏
    • 分享
    • 文章举报
    壹号炸弹 发布了19 篇原创文章 · 获赞 23 · 访问量 3953 私信 关注
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: