• 自动化运维工具Ansible


    介绍

    更加简洁的自动化运维工具,不需要再客户端上安装,

    基于python开发,

    安装简单,centos上直接yum,

    可以实现批量操作系统配置、批量程序的部署、批量运行命令。

    Ansible常用命令参数

    -a:制定模块所需的参数

    -i:文件路径

    -m:要使用的模块的名称

    -h:帮助信息

    -v:详细信息

    all:针对hosts定义的所有主机执行

    1、Ansible安装部署

    (1)安装ansible

    直接yum安装

    yum install ansible -y

    版本信息

    2ssh免密钥登录设置(只在主控制端使用)

    ansible服务器上生成公钥和私钥

    [root@mycat ansible]# ssh-keygen -t rsa-t rsa:表示使用rsa算法进行加密)

     //会让你设置密钥生成路径和密钥(可以不设置默认路径和自动生成密钥)

    3)将公钥发送给客户端

    [root@mycat ansible]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.200.41

    //将公钥发送到客户端41上(提示输入是否连接yes,和客户端登陆密码)

    4)测试登录客户端

    使用scp命令也可以

    [root@mycat ansible]# scp /root/.ssh/id_rsa.pub root@192.168.200.42:/root/.ssh

    //将公钥复制到客户端42

    如果出现报错可能是

    1)检查selinux是否关闭

    2)公钥文件的权限是否为600

    3)Python的版本是否一致

    5)测试登陆到客户端42

    2、编辑hosts文件(/etc/anside/hosts

    添加组名(服务)组内可以有多个ip

    [webservers]

    192.168.200.41

    [dbservers]

    192.168.200.42

    1)测试主机连通性

    只测试web

    全部测试

    常用模块

    1.     查看所有模块:ansible-doc -l

    2.     查看具体某个模块:ansible-doc -s (模块的名)

    格式

    1、远程命令模块

    commond:默认模块(可省略)用于远程执行命令(不能使用变量)

    示例:查看远程主机名

    [root@mycat ansible]# ansible all -m command -a "hostname"

    1chdir:执行命令前,进入到指定目录

    //进入到41home目录下查看

    2creates:判断文件是否存在,如果存在不执行(先在41home下创建1.txt

    //判断1.txt存在,就不执行后面的内容,skip跳过

    //判断3.txt不存在就执行后面的,在41上创建2.txt

    3removes:判断文件是否存在,如果存在就执行

    //判断到2.txt就创建4.txt

    //判断没有6.txt就不创建

     

    shell:执行远程主机上的脚本(在远程主机上调用shell解释器运行命令,支持shell的各种功能)

    示例:执行41主机上的3.sh

    [root@mycat ansible]# ansible 192.168.200.41 -m shell -a "/home/3.sh"

    scripts:远程主机执行主控服务器ansible上的脚本(把本地脚本复制到远程主机,并执行)

    示例:执行ansible上的test1,输出41的主机名

    2ping:测试连接可通性

    [root@mycat ansible]# ansible webservers -m ping

    3、文件模块

    copy:复制文件(主要用于将管理主机上的数据信息传送给多台主机)

    常用参数

    1)Src:指定将本地管理主机的什么数据信息进行远程复制

    //test1复制到41data

     

    2)backup:默认数据复制到远程主机,会覆盖原有文件(选项yes/no是否将原文件进行备份)

    //修改一下test1的内容,然后执行backup=yes覆盖原文件,并且备份原文件

    查看41data生成了test1的备份

    3content:(可以代替src)在文件中添加信息,直接设定文件的值

    //test1中加入123内容

    //content添加的内容不会添加回车符

    //41上查看test1

    4group:文件数据复制到远程主机,设置文件/目录的属组
    owner:文件数据复制到远程主机,设置文件/目录的属主
    mode:文件数据复制到远程主机,设置文件/目录的权限

    //创建test2,复制test241上它的组为www,用户为qqq,权限为755

    查看

    5destrequired):为必须使用的参数,必选项。将数据复制到远程节点的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录

    4、管理任务计划

    cron:定时任务模块

    常用参数

    1Weekday/mouth/day/hour/minute(周///小时/分钟)

    //*代表一周都执行,*/2一周执行两次

     

    2Job:设置定时执行任务
    3Name:设定定时任务注释描述
    //每五分钟同步一次(ntpdate 同步更新时间)

    查看41crontab -l查看定时任务的列表

    4state:删除/创建指定的定时任务absent/present

    再查看41上的定时任务就没有了

    5disabled:将指定定时任务进行注释

    //注释和取消注释时必须填写job和时间参数

    查看41(内容被注释)

    取消注释disabled=no

    再次查看

    5、用户模块

    group:批量创建组

    常用参数

    1gid:创建的组ID

    2Name:创建组的名称

    3State:删除/创建组

    创建组abcgid1055

    [root@mycat ~]# ansible 192.168.200.41 -m group -a "name=abc gid=1055"

    删除指定组abcgid1055

    [root@mycat ~]# ansible 192.168.200.41 -m group -a "name=abc gid=1055 state=absent"

    user:批量创建用户

    常用参数

    1Groups:指定用户的属组

    2Uid:指定用户的uid

    3Passwd:指定用户的密码(不能使用明文,只能使用密文方式)

    4Name:指定用户名

    5Home:指定用户的家目录()

    6Createhome:是否创建家目录yes/no

    7System:是否为系统用户

    8Remove:是否连同家目录一起删掉yes/no

    9State:创建/删除absent/present

     

    示例:创建www1

    [root@mycat ~]# ansible 192.168.200.41 -m user -a "name=www1 comment=lqb uid=1001 group=root"

    删除www1用户(及其家目录)

    [root@mycat ~]# ansible 192.168.200.41 -m user -a "name=www1 state=absent remove=yes"

    6Rsynchronize:使用rsync同步文件

    常用参数

    1archive:归档,相当于同时开启recursive(递归)linkspermstimesowner

    2group-D选项都为yes ,默认该项为开启

    3checksum: 跳过检测sum值,默认关闭

    4compress:是否开启压缩

    5copy_links:复制链接文件,默认为no ,注意后面还有一个links参数

    6delete: 删除不存在的文件,默认no

    7dest:目录路径

    8dest_port:默认目录主机上的端口 ,默认是22,走的ssh协议

    9dirs:传速目录不进行递归,默认为no,即进行目录递归

    10rsync_optsrsync参数部分

    11set_remote_user:主要用于/etc/ansible/hosts中定义或默认使用的用户与rsync使用的用户不同的情况

    12mode: pushpull 模块,push模的话,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件,pull 模式用于从远程主机上取文件

    //首先需要在远程客户端下载rsync

    ansiblehosts同步到41tmp目录下

    查看41tmp/hosts

    Get_url该模块主要用于从httpftp ,https等服务器上下载文件类似于wget

     sha256sum:下载完成后进行sha256 check

     timeout:下载超时时间,默认10s

     url:下载的URL

     url_passwordurl_username:主要用于需要用户名密码进行验证的情况

     use_proxy:是事使用代理,代理需事先在环境变更中定义

    //从网站下载页面到data/1

    查看是否下载成功

    Yum:软件包管理

     Stat:获取远程文件信息

     Service:远程主机系统服务管理

     Sysctl:远程主机sysctl配置

  • 相关阅读:
    hive:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
    spark报错:Class org.apache.mapreduce.io.compress.GzipCodec not found
    flink操作mysql
    kettle解除同步条数限制
    hdfs上传文件报错,org.apache.hadoop.fs.ChecksumException:
    spark程序运行报错:java.lang.NoSuchMethodError:
    git merge的三种操作merge, squash merge, 和rebase merge
    高人制作的CocosCreator分包插件
    Android Studio 编译构建报错总结
    Mac OSX下修改 ulimit 参数
  • 原文地址:https://www.cnblogs.com/Job123/p/13757334.html
Copyright © 2020-2023  润新知