zoukankan      html  css  js  c++  java
  • 企业——自动化部署 ansible 中的一些常用命令及常用模块

    一.ansible 命令详解

      可以通过 ansible -h 来查看帮助,下面我们列出一些比较常用的选项,并解释其含义:

      -a MODULE_ARGS   ##模块的参数,如果执行默认COMMAND的模块,即是命令参数,如: “date”,“pwd”等等
      -k--ask-pass   #ask for SSH password。登录密码,提示输入SSH密码而不是假设基于密钥的验证
        --ask-su-pass   #ask for su password。su切换密码
      -K--ask-sudo-pass  #ask for sudo password。提示密码使用sudo,sudo表示提权操作
        --ask-vault-pass  #ask for vault password。假设我们设定了加密的密码,则用该选项进行访问
      -B SECONDS    #后台运行超时时间
      -C   #模拟运行环境并进行预运行,可以进行查错测试
      -c CONNECTION   #连接类型使用
      -f FORKS   #并行任务数,默认为5
      -i INVENTORY   #指定主机清单的路径,默认为/etc/ansible/hosts
      --list-hosts   #查看有哪些主机组
      -m MODULE_NAME   #执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数
      -o   #压缩输出,尝试将所有结果在一行输出,一般针对收集工具使用
      -S   #用 su 命令
      -R SU_USER   #指定 su 的用户,默认为 root 用户
      -s   #用 sudo 命令
      -U SUDO_USER   #指定 sudo 到哪个用户,默认为 root 用户
      -T TIMEOUT   #指定 ssh 默认超时时间,默认为10s,也可在配置文件中修改
      -u REMOTE_USER   #远程用户,默认为 root 用户

      -v   #查看详细信息,同时支持-vvv-vvvv可查看更详细信息

    二.常用的一些模块

    1.检测连通性 ping:

      ansible all -m ping

    2.command模块:

      这个模块可以直接在远程主机上执行命令,并将结果返回本主机。即 ssh 连接了远程的操控的主机,因为之前配置了免密登录,因此可以连接。然后登录到远程主机之后,在远程主机上执行后面的操作的命令。

      ansible web -m command -a 'hostname'

     下面来看一看该模块下常用的几个命令:

      chdir    ##在执行命令之前,先切换到指定的目录下

      executable   ##切换shell来执行命令,需要使用命令的绝对路径

      free_form     ##要执行的Linux指令,一般使用Ansible的-a参数代替。

      creates    ##一个文件名,当这个文件存在,则该命令不执行,可以用来做判断

      removes   ##一个文件名,这个文件不存在,则该命令不执行

    示例:

      ansible web -m command -a 'chdir=/data/ ls'   ##先切换到 /data/ 目录下,再执行 ls 命令

      ansible web -m command -a 'creates=/data/aaa.jpg ls'  ##如果 /data/aaa.jpg 存在,则不执行 ls 命令

      ansible web -m command -a 'removes=/data/aaa.jpg cat /data/a'  ##如果/data/aaa.jpg存在,则执行 cat 后面的操作

    3.shell模块:

      shell模块可以在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道等。只要是shell命令,都可以通过这个模块在远程主机上运行。

      示例:ansible web -m shell -a ' cat /etc/passwd |grep root '

    4.copy模块:

      这个模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等。

      其相关选项如下:

      src    #被复制到远程主机的本地文件。可以是绝对路径,也可以是相对路径。如果路径是一个目录,则会递归复制,用法类似于"rsync"
      content  #用于替换"src",可以直接指定文件的值
      dest    #必选项,将源文件复制到的远程主机的绝对路径

      backup   #当文件内容发生改变后,在覆盖之前把源文件备份,备份文件包含时间信息

      directory_mode    #递归设定目录的权限,默认为系统默认权限
      force    #当目标主机包含该文件,但内容不同时,设为"yes",表示强制覆盖;设为"no",表示目标主机的目标位置不存在该文件才复制。默认为"yes"
      others    #所有的 file 模块中的选项可以在这里使用

    示例:

      ansible web -m copy -a 'src=/mnt/hello dest=/data/hello'  ##将本机的 /mnt/hello 文件复制到远程主机的 /data/hello 下

      ansible web -m copy -a 'content="I am keer " dest=/data/name mode=666'

      ansible web -m shell -a 'ls -l /data/'  ##可以查看上面的文件的权限是否是设定的 666

      ansible web -m copy -a 'content="I am keerya " backup=yes dest=/data/name mode=666'   ##覆盖源文件前,backup 备份一下

    5.file模块:

      该模块主要用于设置文件的属性,比如创建文件、创建链接文件、删除文件等。

      下面是一些常见的命令:

      force  ##需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
      group  ##定义文件/目录的属组。后面可以加上mode:定义文件/目录的权限
      owner  ##定义文件/目录的属主。后面必须跟上path:定义文件/目录的路径
      recurse  ##递归设置文件的属性,只对目录有效,后面跟上src:被链接的源文件路径,只应用于state=link的情况
      dest  ##被链接到的路径,只应用于state=link的情况


      state  ##状态,有以下选项:

        directory:如果目录不存在,就创建目录
        file:即使文件不存在,也不会被创建
        link:创建软链接
        hard:创建硬链接
        touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
        absent:删除目录、文件或者取消链接文件

    示例:

      ansible web -m file -a 'path=/data/bbb.jpg src=aaa.jpg state=link'

      ansible web -m file -a 'path=/data/a state=absent'  ##删除前面的文件

      

    6.fetch模块:

      该模块用于从远程某主机获取(复制)文件到本地。

      dest:用来存放文件的目录
      src:在远程拉取的文件,并且必须是一个file,不能是目录

    示例:

      ansible web -m fetch -a 'src=/data/hello dest=/data'

      

  • 相关阅读:
    Bash快捷键
    Java Web学习笔记--JSP for循环
    Python学习笔记--简介
    Java学习笔记-数组
    JavaScript学习笔记一
    Java数组
    MongoDB学习---安装配置
    Java Web学习笔记-Servlet不是线程安全的
    Java Web学习笔记-重定向Redirect
    获取汇率的BAPI
  • 原文地址:https://www.cnblogs.com/wf-aiyouwei/p/10877137.html
Copyright © 2011-2022 走看看