zoukankan      html  css  js  c++  java
  • 自动化运维工具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配置

  • 相关阅读:
    高斯消元学习
    HDU 4596 Yet another end of the world(解一阶不定方程)
    Codeforces Round #318 div2
    HDU 4463 Outlets(一条边固定的最小生成树)
    HDU 4458 Shoot the Airplane(计算几何 判断点是否在n边形内)
    HDU 4112 Break the Chocolate(简单的数学推导)
    HDU 4111 Alice and Bob (博弈)
    POJ 2481 Cows(线段树单点更新)
    HDU 4288 Coder(STL水过)
    zoj 2563 Long Dominoes
  • 原文地址:https://www.cnblogs.com/Job123/p/13757334.html
Copyright © 2011-2022 走看看