zoukankan      html  css  js  c++  java
  • ansible module

    ansible ad-hoc模式常用模块
    ansible-doc常用命令
    ansible-doc -h    #ansible-doc命令使用帮助
    -j    #以json格式显示所有模块信息
    -l    #列出所有的模块,可加 wc -l统计
    -s    #查看模块常用参数

    1、命令相关的模块
    1.1、command 默认模块,执行命令,shell中的"<", ">", "|", ";", "&","$"等特殊字符不能在command模块中使用,如需使用则用shell模块
    ansible-doc -s command    #查看模块参数
    ansible 192.168.10.186 -a 'ls'            #在主机上执行ls命令,默认是在当用户家目录/root
    ansible 192.168.10.186 -a 'chdir=/tmp pwd'            #切到工作目录,再执行后面命令,编译时可使用
    ansible 192.168.10.186 -a 'creates=/tmp ls /etc/passwd'        #如果创建的文件或目录已存在,则不执行后面的命令
    ansible 192.168.10.186 -a 'creates=/tmp1 ls /etc/passwd'      #tmp1文件不存在,则执行后面的ls命令
    #removes, 和creates相反,如果removes的文件存在,才执行后面的操作
    ansible 192.168.10.186 -a 'removes=/tmp ls /etc/passwd'        #tmp文件存在,则执行后面的ls命令
    ansible 192.168.10.186 -a 'removes=/tmp1 ls /etc/passwd'      #tmp1文件不存在,则不执行后面ls命令

    1.2、shell, 专门用来执行shell命令的模块,chdir,creates,removes等参数
    ansible-doc -s shell    #查看模块参数
    ansible 192.168.10.186 -m shell -a 'mkdir /root/tmp'
    ansible 192.168.10.186 -m shell -a 'ls /root/'
    ansible 192.168.10.186 -m shell -a 'cd /root/tmp && touch 1.txt && ls'    #每次执行都会更新文件的时间戳
    ansible 192.168.10.186 -m shell -a 'creates=/root/tmp/1.txt cd /root/tmp && touch 1.txt && ls'    #判断如果存在文件,就不执行后面的创建,保留文件的时间戳

    1.3、script, 用于在被管理的机器上执行shell脚本的模块,脚本无需在被管理机器上面存在
    ansible-doc -s script    #查看模块参数
    cat test.sh    #服务端创建脚本
    #!/bin/bash
    echo `hostname`
    ansible all -m script -a '/root/test.sh'    #在所有被管理机器上执行该脚本

    2、文件相关的模块
    2.1、file, 用于对文件的处理,创建,删除,权限控制等
    ansible-doc -s file    #查看模块相关参数
    path    #要管理的文件路径
    recurse    #递归
    state:    directory #创建目录,如目标不存在则创建目录及其子目录
        touch    #创建文件,如果文件存在,则修改文件属性
        absent    #删除文件或目录
        mode    #设置文件或目录权限
        owner    #设置文件或目录属主信息
        group    #设置文件或目录属组信息
        link    #创建软连接,需要和src配合使用
        hard    #创建硬连接,需要和src配合使用

    ansible 192.168.10.186 -m file -a 'path=/root/test1 state=directory'    #创建目录
    ansible 192.168.10.186 -m file -a 'path=/root/test1/1.txt state=touch'    #创建文件
    ansible 192.168.10.186 -m file -a 'src=/root/test1 path=/root/test10 state=link'    #创建软链接(src表示源文件,path表示目标文件)
    ansible 192.168.10.186 -m file -a 'path=/root/test10 state=absent'    #删除文件
    ansible 192.168.10.186 -m file -a 'path=/root/test1/2.txt state=touch mode=775 owner=root group=jenkins'    #创建文件时同时设置权限属主属组信息

    2.2、copy, 用于管理端复制文件到远程被管理主机,并可以设置权限,属主组等
    ansible-doc -s copy    #查看模块参数
    src    #需要copy的文件的源路径
    dest    #需要copy的文件的目标路径
    backup    #对copy的文件进行备份
    content    #直接在远程主机被管理文件中添加内容,会覆盖源文件内容
    mode    #对copy到远端文件设置权限
    owner    #对copy到远端文件设置属主
    group    #对copy到远端文件设置属组

    ansible 192.168.10.186 -m copy -a 'dest=/root/test1/aa.sh src=/root/test.sh backup=yes'
    #复制文件到远程主机并改名,并备份远程文件,(安装时间信息备份文件,当更新文件内容后,重新copy时用到)

    ansible 192.168.10.186 -m copy -a 'dest=/root/test1/aa.sh content="#!/bin/bash echo `uptime`"'
    #直接在远程主机aa.sh中添加内容

    ansible 192.168.10.186 -m copy -a 'dest=/root/test1/passwd src=/etc/passwd mode=700 owner=jenkins group=postfix'
    #复制文件到远程主机,并设置权限和属主组信息

    2.3、fetch, 用于从被管理主机上面拉取文件,拉取下来的内容会保留目录结构,一般用于收集被管理机器的日志文件等
    ansible-doc -s fetch
    src    #指定需要从远端机器拉取的文件路径
    dest    #指定从远端机器拉取下来后文件的存放路径
    ansible 192.168.10.186 -m fetch -a 'dest=/root/test1 src=/var/log/messages'    #从被管理机器上拉取messages日志文件,默认会以管理节点的ip创建目录
    tree test1
    test1
    └── 192.168.10.186
        └── var
            └── log
                ├── cron
                └── messages

    3、用户相关的模块
    3.1、user,用于对系统用户的管理,用户的创建,删除,家目录,属组等设置
    ansible-doc -s user
    name    #指定用户的名字
    home    #指定用户的家目录
    uid    #指定用户的uid
    group    #指定用户的用户组
    groups    #指定用户的附加组
    password    #指定用户的密码
    shell    #指定用户的登录shell
    create_home    #是否创建用户家目录,默认是yes
    remove    #删除用户时,指定是否删除家目录
    state: absent    #删除用户

    ansible 192.168.10.186 -m user -a 'name=test1 shell=/bin/nologin uid=1003 group=root create_home=no'
    #创建用户指定uid及组,不创建家目录并且不允许登录

    ansible 192.168.10.186 -m shell -a 'id test1 && tail -l /etc/passwd'
    #创建用户指定uid及组,不创建家目录并且不允许登录

    ansible 192.168.10.186 -m shell -a 'id test1 && tail -l /etc/passwd'
    #查看创建的用户信息

    ansible 192.168.10.186 -m user -a 'name=test1 state=absent
    #删除用户,加上remove=yes 则删除家目录


    3.2、group, 当创建用户时需要指定组,如不存在则可以通过group先创建组
    ansible-doc -s group    #查看模块参数
    name    #指定组的名字
    gid    #指定组的id
    state:    absent#删除组    present#创建组(默认此状态)

    ansible 192.168.10.186 -m group -a 'name=test2 gid=1005'
    #创建组,指定id

    ansible 192.168.10.186 -m group -a 'name=test2 state=absent'
    #删除组

    4、软件包相关模块
    4.1、yum, 对软件包管理,下载,安装,卸载,升级等操作
    ansible-doc -s yum    #查看模块参数
    name    #指定要操作的软件包名字
    download_dir    #指定下载软件包存放路径,需跟download_only一起使用
    download_only    #只下载软件包,不安装
    list:    installed    #列出所有已安装的软件包
        updates        #列出所有可更新的软件包
        repos        #列出所有的yum仓库
    state:    installed,present    #安装软件包
        removed,absent        #卸载软件包
        latest            #安装最新软件包

    ansible 192.168.10.186 -m yum -a 'list=installed'
    #列出所有已安装的软件包

    ansible 192.168.10.186 -m yum -a 'list=updates' |more
    #列出所有可更新的软件包

    ansible 192.168.10.186 -m yum -a 'list=repos' |more
    #列出所有的yum仓库

    ansible 192.168.10.186 -m yum -a 'name=httpd download_only=yes download_dir=/tmp'
    #下载软件包到指定目录

    ansible 192.168.10.186 -m yum -a 'name=httpd state=installed'
    #安装软件包

    ansible 192.168.10.186 -m yum -a 'name=httpd state=removed'
    #卸载软件包

    ansible 192.168.10.186 -m yum -a 'name="@Development Tools" state=installed'
    #安装包组,类似 yum groupinstall 'Development Tools'

    4.2、pip, 用于安装python中的包
    ansible-doc -s pip    #查看模块参数
    ansible 192.168.10.186 -m yum -a 'name=epel-release state=installed'
    #先安装扩展源EPEL

    ansible 192.168.10.186 -m yum -a 'name=python-pip state=installed'
    #下载安装pip

    ansible 192.168.10.186 -m pip -a 'name=flask'
    #安装flask

    4.3、service, 服务模块,对服务进行管理,启动,关闭,开机自启等
    ansible-doc -s service    #查看模块参数
    name    #指定需要管理的服务名
    enabled    #指定是否开机自启动
    state:    started    #启动服务
        stopped    #停止服务
        restarted    #重启服务
        reloaded    #重载服务

    ansible 192.168.10.186 -m service -a 'name=crond state=started enabled=yes'
    #启动服务,设定开机自启

    5、计划任务相关模块
    5.1、cron, 用于指定计划任务,和crontab -e一样
    ansible-doc -s cron    #查看模块参数
    job    #指定需要执行的任务
    minute    #分钟
    hour    #小时
    day    #天
    month    #月
    weekday    #周
    name    #对计划任务进行描述
    state:    absent    #删除计划任务

    ansible 192.168.10.186 -m cron -a "name='第一个测试的计划任务' minute=* hour=* day=* month=* weekday=* job='/bin/bash /root/test1/aa.sh'"
    #创建计划任务,添加描述(如不需描述可去除name字段)

    ansible 192.168.10.186 -m shell -a 'crontab -l'
    #查看远程主机计划任务列表

    ansible 192.168.10.186 -m cron -a "name='第一个测试的计划任务' job='/bin/sh /root/test1/aa.sh' state=absent"
    #删除计划任务

    6、系统相关信息模块
    6.1、setup, 用于获取系统信息的模块
    ansible-doc -s setup    #查看模块参数
    ansible 192.168.10.186 -m setup    #查看远程主机系统所有信息
    ansible 192.168.10.186 -m setup -a 'filter=ansible_all_ipv4_addresses'
    #对系统信息进行过滤

    # 常用的过滤选项
    ansible_all_ipv4_addresses         所有的ipv4地址
    ansible_all_ipv6_addresses         所有的ipv6地址
    ansible_architecture               系统的架构
    ansible_date_time                  系统时间
    ansible_default_ipv4               系统的默认ipv4地址
    ansible_distribution               系统名称
    ansible_distribution_file_variety  系统的家族
    ansible_distribution_major_version 系统的版本
    ansible_domain                     系统所在的域
    ansible_fqdn                       系统的主机名
    ansible_hostname                   系统的主机名,简写
    ansible_os_family                  系统的家族
    ansible_processor_cores            cpu的核数
    ansible_processor_count            cpu的颗数
    ansible_processor_vcpus            cpu的个数


  • 相关阅读:
    Beta冲刺 5
    Beta冲刺 4
    Beta冲刺 3
    Beta冲刺 2
    Beta冲刺 1
    项目评测博客
    Beta冲刺前准备
    Alpha 冲刺11——总结
    Alpha冲刺10
    Alpha冲刺9
  • 原文地址:https://www.cnblogs.com/xiefugui/p/12172658.html
Copyright © 2011-2022 走看看