zoukankan      html  css  js  c++  java
  • ansible一些基本操作

    一、介绍

    特性

    (1)、no agents:不需要在被管控主机上安装任何客户端;

    (2)、no server:无服务器端,使用时直接运行命令即可;

    (3)、modules in any languages:基于模块工作,可使用任意语言开发模块;

    (4)、yaml,not code:使用yaml语言定制剧本playbook;

    (5)、ssh by default:基于SSH工作;

    (6)、strong multi-tier solution:可实现多级指挥。

    优点

    (1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;

    (2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;

    (3)、使用python编写,维护更简单,ruby语法过于复杂;

    (4)、支持sudo。

    二、安装

    因为ansible已经被redhat收购,所以可以直接用yum安装,先通过yum list |grep ansible看一下yum源,然后安装

    yum install ansible ansible-doc -y

    安装好之后,通过ssh-keygen来创建密钥,把生成的公钥放到对应目标机器对应的用户下面。

    修改ansible配置文件,vim /etc/ansible/hosts,添加一个组(相当于是进行分组操作,如web、db组),组下面为对应机器ip或者主机名(需在/etc/hosts里面配置)

    三、ansible远程执行命令

    ansible testhost -m command -a "hostname" 

    PS:testhost 为定义的一个组(这个组下面所有机器都会执行),-m command 通过command这个模块来操作,-a "hostname"为操作的命令,也可以用shell来代替command

    shell模块,还支持远程执行命令并且带管道

    ansible testhost -m shell -a "cat /etc/passwd |wc -l"

    四、ansible拷贝文件或目录

    ansible testhost -m copy -a "src=/etc/passwd dest=/tmp/ansible/1.txt owner=root group=root mode=0755"

    PS:把文件分发到目标机器上面,如果目标机器不存在/tmp/ansible这个目录,则分发失败,如果存在则把passwd重命名为1.txt,如果dest=/tmp/ansible,则分发之后,文件名不变

    ansible testhost -m copy -a "src=/etc/ansible dest=/tmp/ansible owner=root group=root mode=0755"

    PS:把目录分发到目标机器上面,不管dest里面定义的ansible目录是否存在,都会把原目录放在该目录下面,相当于/tmp/ansible/ansible

    五、ansible远程执行脚本

    1.把脚本分发到各个机器上面去

    ansible testhost -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"

    2.批量执行该shell脚本

    ansible testhost -m shell -a "/tmp/test.sh"

    六、ansible管理任务计划

    1.添加cron计划

    ansible testhost -m cron -a "name='test cron' job='/bin/touch /tmp/1.txt' minute=10 month=12"

    PS: 表示在crontab里面添加一条记录为:

    #Ansible:test cron
    10 * * 12 * /bin/touch /tmp/1.txt

    minute表示分钟,hour表示小时,day表示日期,month表示月份,weekday表示周,如果没写则默认为 *

    2.删除cron计划

    ansible testhost -m cron -a "name='test cron' state=absent"

    PS: 只能删除该crontab,不能修改,也不能自己crontab -e去修改,不然ansible会操作不了该crontab

    七、ansible安装、删除rpm包等管理

    ansible testhost -m yum -a "name=nginx state=installed"

    PS: 相当于yum intall nginx -y,state默认为installed,如果state=removed表示卸载该rpm包

    ansible testhost -m service -a "name=nginx state=started enabled=yes"

    PS:启动nginx服务,state可以为started/restarted/stopped/reloaded,enabled为yes表示开机启动

    8、ansible-doc

    1. 列出所有的模块

    ansible-doc -l

    2.查看指定模块的文档

    ansible-doc modulename
  • 相关阅读:
    js对于Select的删除操作时需要注意的问题
    [转]使IIS支持PHP的配制方法
    Web工作流
    创建新的DOM节点以后,如何增加事件,和属性。
    Javascript attachEvent传递参数的办法
    [转]Javascript 操作Cookies类
    ASP SESSION莫名其妙丢失的原因及解决方法
    DataTable的2个方法;
    [推荐]美国网站兵败中国的10大思路性执行错误
    Blog from Office Word 2007
  • 原文地址:https://www.cnblogs.com/654wangzai321/p/8045968.html
Copyright © 2011-2022 走看看