zoukankan      html  css  js  c++  java
  • 自动化运维工具Ansible (一)

    Ansible 概念理解

    特点:基于python开发,有丰富的内置模块,一条命令影响上千台机器,无客户端,通信基于ssh 具有幂等性

    工具集: 

     如图:四种工具集

    1,lnventory:主机清单

    2,moudle : 模块

    3,playins :  插件

    4,API     : 接口

    使用流程: 

          使用者在使用式,在服务器终端输入命令或者playbooks,会通过预定好的规则将playbook拆解为play,再组织成ansible可以识别的任务,调用模块和插件,根据主机清单通过SSH将临时文件发给远程的客户端执行并返回结果,执行结束后自动删除

    服务端和客户端之间免密通讯

    用到一个命令:sshpass  (免交互连接)在yum安装ansible时,sshpass命令包已经安装了,后续不用再安装一次

    用法:

             (1) :   #sshpass  -p  远程客户端密码   ssh root@IP                                                       //跳过输入密码直接连接

             (2) :   #sshpass  -p  密码   ssh  -o  StricHostKeyChecking=no  root@IP                       //第一次连接直接跳过yes/no  其中的参数在/etc/ssh/ssh_config文件35行有

    安装后配置:

    vim   /etc/ansible/hosts    要控制的客户端都要写到这个文件夹下

    [组名]

    机器ip...........

    ####################

    之后测试一下:#ansible  组名  -a "df -hT"

    Ansible 语法:

    ansible   -i    指定ansible host 文件                                                                         

    ansible  组名   -m    模块                                                                          #指定模块

    ansible  组名   -m    模块    -a    "命令"   --limit    IP主机                            #-a : 给模块传参数

    ansible-playbook  +  文件名.yaml/yml                                                        #运行playbook文件

    基本常用的模块

    command模块在远程主机执行命令,不支持管道,重定向等shell的特性,常用到的参数(不支持管道)

    1,chdir:在远程主机上运行命令前提前进入目录

    2,creates: 在命令运行时创建一个文件,如果文件存在,则不会创建任务

    3,removes: 在命令运行时移除一个文件,如果文件不存在,则不会执行移除任务

    4,executeble: 指明运行命令的shell程序

    案例:ls查看所有客户机

    ansible all -m  command  -a "chdir=/home  ls ./"

    二,shell模块在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令(支持shell命令)

    案例:测试管道符

    ansible  组名  -m shell  -a   'ifconfig ens32 | awk "/ether/{print $2}"'

    ,raw模块,最原始的方式运行命令 (不依赖python,仅通过ssh实现)

    案例:清除yum缓存

    ansible  all -m  raw  -a "yum  clean  all "

    ,copy模块用于复制指定主机文件到远程主机的

    1,dest : 指出复制文件的目标及位置,使用绝对路径,如果是源目录,指目标也要是目录,如果目标文件已经存在会覆盖原有的内容

    2,src :指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录

    3,mode: 指出复制时,目标文件的权限 

    4,owner:指出复制时,目标文件的属主

    5,group: 指出复制时,目标文件的属组

    6,content:指出复制到目标主机上的内容,不能与src一起使用

    ,hostname 模块用于管理远程主机上的主机名

    案例:

    ansible  组名  -m hostname  -a "name=主机名"

    ,yum模块管理远程的安装包

    1,name : 程序包名,可以带上版本号

    2,state=present|latest|absent  : pressent表示安装包;latest表示安装最新版本的程序包;absent表示卸载程序包

    3,disablerepo :在用yum安装时禁用某个仓库ID

    4,enablerepo:在用yum安装时启用某个参考的ID

    5,conf_file:YUM运行时的配置文件,而不是使用默认的配置文件

    ,service 模块

    1,name:被管理的服务名称

    2,state=started|stopped|restarted:动作包含启动关闭或者重启

    3,enabled=yes|no  :表示是否设置该服务开机自启

    4,runlevel:如果设定了enabled开机自启去,则要定义在哪些运行目标下自启动

    案例:ansible  组名 -m service -a "name=httpd state=started  enabled=yes"

    ,User模块

    用户管理的模块

    1,name : 必选参数

    2,state=present|absent: 创建账号或者删除账号,present表示创建,absent 表示删除

    3,system=yes|no:是否为系统账号
    4,uid:用户uid

    5,group:用户基本组

    6,shell:默认使用的shell

    7,move_home=yse|no :如果设置的家目录已经存在,是否将已经存在的家目录进行移动

    8,password:用户的密码,建议使用加密后的字符串

    9,comment:用户的注释信息

    10,remove=yes|no  当state=absent时,是否删除用户的家目录

    ,script模块实现远程批量运行本地的shell脚本

    ansible 组名 -m script  -a "/root/脚本名.sh"

    十,PLAYBOOK:

    文件后缀.yaml

    这里介绍一个命令ansible-vault(加密文件)一般用于playbook写好后,防止敏感信息泄露,从而对此文件进行加密处理:用法: #ansible-vault  encrypt  文件.yml       (也可对其他后缀的文件进行加密)

    加密后不可运行文件,需先解密

    解密用法:ansible-vault decrypt 文件.yml    

    #ansible-vault view  文件.yml            //看加密后文件内容

    # ansible-vault edit   文件.yml            //修改加密后的文件

    #ansible-vault  rekey 文件.yml          //修改口令

    ============工具============

    交互工具
    #ansible-console

    Welcome to the ansible console.

    Type help or ? to list commands.

    root@all (0)[f:5]$                                  // “all”代表全部组  其中的()里是当前组有多少个主机  

                     //[]:表示可以支持多少并发

    并发可以修改:forks  10               //在后面输入即可改为10并发

    交互用法:

    root@all (0)[f:5]$       command(模块)    hostname(命令)                   //模块加命令即可实现对组主机操作

    单个进入一个主机操作:cd + IP 就可以

    playbook

    Playbook 是由一个或者多个play组成的列表(YAML语言编写)

    主要功能在于将事先归并为一组的主机装扮成事先通过ansible中task定义好的角色。

    工作流程:

    YAML语言简介

    • 使用#号注释代码
    • 缩进必须是统一的,不能空格和TAB混谈
    • 缩进的级别也必须是一致的,同样的缩进代表同样的级别,程序判别配置的级别通过缩进
    • 键值对可以同行写,或者分隔写
    • 一个完整的代码块功能需要包含name:task
    • 一个name只能包括一个task
    • YAML文件扩展名通常为yml或yaml
    • “-”开头
    #playbook书写规范
    #尽量用空格
    #
    #模板————————————————————————————-
    - host : hostname               #主机名
      remote_user : root            #远程主机用户
      tasks:                        #任务列表
        - name : test1              #任务名称
          user : name=user state=present  #执行user模块
          tages:                    #创建标签
            - testa                 #标签名
        - name : test2
          group : name=root system=yes
          tages:
            - testb              
        - name : test3
          command : hostname
          tages:
            - testb
    #----------------------------------------------------------------------------------------------
  • 相关阅读:
    9月22日 又上锁妖塔
    1396. 【2014年鄞州区】挖掘机(d.pas/c/cpp)
    栓奶牛——二分解法
    P6188 [NOI Online 入门组]文具订购 题解
    HDC.Cloud | 基于IoT Studio自助生成10万行代码的奥秘
    华为云API Explorer开发者生态平台正式上线
    【华为云技术分享】揭秘华为云DLI背后的核心计算引擎
    【华为云技术分享】ARM体系结构基础(2)
    【华为云技术分享】HDC.Cloud | 以数字资产模型为核心驱动的一站式IoT数据分析实践
    【华为云技术分享】数据赋能,如何精细化保障企业大数据安全
  • 原文地址:https://www.cnblogs.com/123456likun/p/13496093.html
Copyright © 2011-2022 走看看