zoukankan      html  css  js  c++  java
  • ansible常用模块简介

    rpm和yum的区别

    yum 自动解决包的依赖关系
    

    查看软件包是否安装

    rpm -qa | grep python2-pip 
    rpm -q nginx
    

    yum

    [epel] # 组名
    name=Extra Packages for Enterprise Linux 7 - $basearch # 名字
    baseurl=http://mirrors.aliyun.com/epel/7/$basearch  # url
    failovermethod=priority 
    enabled=1  # 是否启动
    gpgcheck=0  # 是否校验gpgkey,0表示不校验,1表示校验
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    
    # 查询包组
    yum grouplist
    
    # 安装包组
    yum groupinstall -y '包组名'
    

    ansible

    查看ansible生成的文件

    # rpm -ql ansible | more
    /etc/ansible
    /etc/ansible/ansible.cfg  # ansible配置文件
    /etc/ansible/hosts
    /etc/ansible/roles
    

    host-pattern

    Usage: ansible <host-pattern> [options]
    
    

    查看主机联通性

    ansible 主机ip -m ping
    ansible 主机1 ip, 主机2 ip -m ping
    ansible 分组名 -m ping
    ansible 分组一,分组二 -m ping	
    ansible "分组一:分组二" -m ping	# 并集
    ansible "分组一:&分组二" -m ping	# 交集
    ansible "分组一:!分组二" -m ping	# 差集
    

    显示可用模块

    ansible-doc -l
    
    Usage: ansible-doc [-l|-s] [options] [-t <plugin type] [plugin]
    
    plugin documentation tool
    
    Options:
      -a, --all             **For internal testing only** Show documentation for all plugins.
      -h, --help            show this help message and exit
      -l, --list            List available plugins
      -M MODULE_PATH, --module-path=MODULE_PATH
                            prepend colon-separated path(s) to module library
                            (default=[u'/root/.ansible/plugins/modules',
                            u'/usr/share/ansible/plugins/modules'])
      -s, --snippet         Show playbook snippet for specified plugin(s)
      -t TYPE, --type=TYPE  Choose which plugin type (defaults to "module")
      -v, --verbose         verbose mode (-vvv for more, -vvvv to enable connection debugging)
      --version             show program's version number and exit
    
    
    # 统计总个的模块个数
    ansible-doc params | wc -l
    
    # 查看某个模块参数的用法(如:查看command模块中的-s参数)
    ansible-doc -s command
    

    command模块

    ansible-doc -s command
    
    - name: Executes a command on a remote node
      command:
          chdir:                 # Change into this directory before running the command.
          creates:               # A filename or (since 2.0) glob pattern, when it already exists, this step
                                   will *not* be run.
          free_form:             # (required) The command module takes a free form command to run.  There is
                                   no parameter actually named 'free form'.
                                   See the examples!
          removes:               # A filename or (since 2.0) glob pattern, when it does not exist, this step
                                   will *not* be run.
          stdin:                 # Set the stdin of the command directly to the specified value.
          warn:                  # If command_warnings are on in ansible.cfg, do not warn about this
                                   particular line if set to `no'.
    
    # 注意:
    variables like `$HOME' and operations like `"<"', `">"', `"|"', `";"' and `"&"' will not work.
    

    shell模块

    # 修改用户密码
    ansible 主机id/分组 -m shell -a "echo 'passwd' | passwd --stdin 用户名"
    
    # 远程执行脚本
    ansible 主机id/分组 -m shell -a "./1.py"
    

    script模块

    # 在其他机器上执行管控机上的文件
    ansible 主机id/分组 -m script -a "./2.py"
    

    copy模块

    # 复制文件到远程主机
    ansible 主机id/分组 -m copy -a "src=源文件路径 dest=目标文件路径"
    
    # 复制文件到远程主机,并对远程主机上的原文件进行备份
    ansible 主机id/分组 -m copy -a "src=源文件路径 dest=目标文件路径 backup=yes"
    
    # 复制文件到远程主机,并修改属主和权限
    ansible 主机id/分组 -m copy -a "src=源文件路径 dest=目标文件路径 owner=用户名 mode=700"
    
    # 将content中的内容覆盖写入到指定文件中
    ansible 主机id/分组 -m copy -a "dest=目标文件路径 owner=用户名 mode=700 content=nihao"
    

    file模块

    # 在远程主机上创建一个文件
    ansible 主机id/分组 -m file -a "path=路径 state=touch"
    
    # 在远程主机上创建一个文件夹
    ansible 主机id/分组 -m file -a "path=路径 state=directory"
    
    # 在远程主机上创建软连接
    ansible 主机id/分组 -m file -a 'path=目标 state=link src=源文件'
    
    # 在远程主机上创建硬连接
    ansible 主机id/分组 -m file -a 'path=目标 state=hard src=源文件'
    
    # 在远程主机上删除文件
    ansible 主机id/分组 -m file -a 'path=文件路径 state=absent'
    

    fetch模块

    # 拉取被管控机的文件或目录到本地,以被管控机的ip作为目录名,并保留原有的目录结构
    ansible 主机id/分组 -m fetch -a "src=/var/log/cron dest=/root"
    

    yum模块

    # 在被控机上安装软件包
    ansible 主机id/分组 -m yum -a "name=软件名"
    
    # 在被控机上安装软件包组
    ansible 主机id/分组 -m yum -a "name=@包组名"
    
    # 在被控机上卸载软件包
    ansible 主机id/分组 -m yum -a "name=软件名 state=absent"
    

    pip模块

    # 安装指定模块
    ansible 主机ip/分组 -m pip -a "name=模块名"
    

    service模块

    # 开启nginx
    ansible 主机ip/分组 -m service -a "name=nginx state=started"
    
    # 关闭nginx
    ansible 主机ip/分组 -m service -a "name=nginx state=stoped"
    

    cron模块

    分 时 日 月 周 job
    1  0  *  *  *
    *  *  *  *  * 
    
    # 创建定时任务
    ansible 主机ip/分组 -m cron -a "minute=58 job='touch 1.txt' name=nihao"
    
    # 删除定时任务
    ansible 主机ip/分组 -m cron -a "minute=58 job='touch 1.txt' name=nihao disable=yes"
    

    user模块

    # 用户
    - 超级用户 root 0
    - 系统用户 不能登录 201-999 centos7 1-499 centos6
    - 普通用户 可以登录 1000-60000 centos7 500-65535 centos6
    
    # 组
    - 超级组 root 0
    - 系统组 201-999 centos7 1-499 centos6
    - 普通组 1000-60000 centos7 500-65535 centos6
    
    
    
    # 新建用户并指定组
    ansible db -m user -a "name=test groups=root"
    
    # 删除用户但是不删除家目录
    ansible db -m user -a "name=test state=absent"
    
    # 删除用户同时删除家目录
    ansible db -m user -a "name=test state=absent remove=yes"
    

    group模块

    # 创建普通组
    ansible 主机ip/分组 -m user -a "name=组名"
    
    # 删除普通组
    ansible 主机ip/分组 -m user -a "name=组名 state=absent"
    

    setup模块

    # 查看ansible收集的信息
    ansible 主机ip/分组 -m setup
    
  • 相关阅读:
    从yield关键字看IEnumerable和Collection的区别
    Windows Azure Developer Guidance Map(含PDF下载)
    关于CLR内存管理一些深层次的讨论[上篇]
    关于CLR内存管理一些深层次的讨论[下篇]
    当你的博客文章的作者变成“编辑整理”,你作何感想?
    我看周马,以及3Q大战背后的社会问题
    一个完整的用于追踪数据改变的解决方案
    与VS集成的若干种代码生成解决方案[博文汇总(共8篇)]
    如果在BackgroundWorker运行过程中关闭窗体…
    采用一个自创的"验证框架"实现对数据实体的验证[扩展篇]
  • 原文地址:https://www.cnblogs.com/tmdhhl/p/11131595.html
Copyright © 2011-2022 走看看