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
  • 相关阅读:
    “XXXXX” is damaged and can’t be opened. You should move it to the Trash 解决方案
    深入浅出 eBPF 安全项目 Tracee
    Unity3d开发的知名大型游戏案例
    Unity 3D 拥有强大的编辑界面
    Unity 3D物理引擎详解
    Unity 3D图形用户界面及常用控件
    Unity 3D的视图与相应的基础操作方法
    Unity Technologies 公司开发的三维游戏制作引擎——Unity 3D
    重学计算机
    windows cmd用户操作,添加,设备管理员组,允许修改密码
  • 原文地址:https://www.cnblogs.com/654wangzai321/p/8045968.html
Copyright © 2011-2022 走看看