ansible批量执行命令

批量管理linux服务器指的是:批量执行命令、下发文件等等

安装ansible

  • 1.1: 安装epel源

    yum install epel-release -y
                                          #编辑/etc/yum.repos.d/epel.repo,注释mirrorlist,打开baseurl
  • 1.2: 安装ansible
    yum list ansible       #ansible版本,如果这个命令运行有问题的话,多运行几次
    yum install ansible -y
  • 1.3: ansible查看帮助
    ansible-doc -l             #查看总帮助
    ansible-doc -s shell    #查看shell模块的帮助
    ansible-doc -s raw

配置主机组(/etc/ansible/hosts)

[testgroup]
192.168.56.40
192.168.56.41
192.168.56.42

[test41]
192.168.56.41

[test42]
192.168.56.42

配置ssh免密码登录

ssh-keygen -t rsa#一直按回车即可
ssh-copy-id -i .ssh/id_rsa.pub ip #上传公钥到服务器

ansible模块

    1. ansible语法

      ansible 主机组或者主机 -m 模块 -a 命令
  • 2 ansible语法测试
    ansible testgroup -m ping
    ansible testgroup -m command -a "pwd"
  • 3 : ansible模块command(不支持管道,不建议使用)
    ansible testgroup -m command -a "pwd"
    ansible testgroup -m command -a "echo testa|grep a" #这个不能正常使用
    ansible testgroup -m command -a "echo bb >>/tmp/testansible" #重定向也无法正常使用

    6: ansible模块shell(支持管道)

    ansible testgroup -m shell -a "echo testa|grep a" #支持管道
    ansible testgroup -m shell -a "echo bb >>/tmp/testansible" #支持重定向
    ansible testgroup -m shell -a "cat /etc/passwd|awk -F‘:‘ ‘{print \$1}‘" #遇到特殊符号需要加入\转义,这样子ansible才能正常运行

    7: ansible模块raw(如果运行命令,一般使用shell模块)
    说明为什么会有raw,由于ansible依赖python环境,例如需要有python-simplejson之类的包,如果没安装的话,就无法使用shell等模块,就需要先用raw安装一下。

    ansible testgroup -m raw -a "yum install python-simplejson -y"
    ansible testgroup -m raw -a "yum install libselinux-python -y"
  • 8.1 ansible模块copy(下放文件)
    ll -h /usr/local/src/
    cat /tmp/testdir/test.txt
    ansible testgroup -m copy -a "src=/tmp/testdir/test.txt dest=/usr/local/src/"
    #src指定本地的文件
    #dest指定远程主机的目录或者文件
  • 8.2 拷贝文件夹
    ll -h /usr/local/src/
    ansible testgroup -m copy -a "src=/tmp/testdir/ dest=/usr/local/src/" #testdir文件夹没拷贝
    ansible testgroup -m copy -a "src=/tmp/testdir dest=/usr/local/src/" #testdir文件夹也拷贝了
  • 8.3 备份文件
    ansible testgroup -m copy -a "src=/tmp/testdir/test.txt dest=/usr/local/src/ backup=yes"?
  • 8.4 指定用户和权限
    ansible testgroup -m copy -a "src=/tmp/testdir/test.txt dest=/usr/local/src/ backup=yes owner=nobody group=nobody mode=0600"
  • 9: ansible模块script(远程机器运行ansible主控端的脚本)
    实现的方案:把脚本下发到所有的服务器,然后再运行脚本。copy+shell+delete
cat /usr/local/src/script
chmod a+x /usr/local/src/script
ansible testgroup -m script -a "/usr/local/src/script"
  • 10: ansible-playbook(把ansible执行命令写入文件中)
#cat /usr/local/src/test.yaml
- hosts: testgroup
  tasks:
  - name: test ansible
    shell: echo "shell 1" >>/tmp/a
  - name: test2
    shell: echo "shell 2" >>/tmp/a

运行:ansible-playbook /usr/local/src/test.yaml

#cat /usr/local/src/test_copy.yaml
- hosts: testgroup
  tasks:
  - name: test ansible
    shell: echo "shell 1" >>/tmp/a
  - name: test copy
    copy: src=/tmp/a dest=/usr/local/src/

#下发nginx配置,对nginx进行检测

#cat /usr/local/src/test_nginx.yaml
- hosts: testgroup
  tasks:
  - name: copy nginx conf
    copy: src=/tmp/nginx.conf dest=/usr/local/nginx/conf/ backup=yes
  - name: nginx conf check
    shell: /usr/local/nginx/sbin/nginx -t
    register: nginx_result
  - debug: var=nginx_result
#可只输出stdout_lines或者stderr_lines

原文地址:http://blog.51cto.com/395469372/2133486

时间: 2024-10-09 06:12:47

ansible批量执行命令的相关文章

Ansible批量执行命令慢的解决思路

做运维的同学很多都用过ansible吧,开源批量部署工具排名前三的:puppet, saltstack, ansible. ansible的特点是没有agent,采用ssh协议来通讯,轻量级,采用python编写,既可以写playbook,也可以做一些ad-hoc的批量命令执行操作. 最近在两台ansible主机上执行ansible命令时发现对同样的客户机执行同样的命令,所用的时间相差却很大,两台ansible主机配置性能都一样.我感到很奇怪,于是想一探究竟. 当然首先是用time命令来查看准确

通过ansible批量管理Linux服务器:配置Inventory和批量执行命令

ansible是一款比较新的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括:(1).连接插件connection plugins:负责和被监控端实现通信:(2).host inventory:指定操作的主机,是一个配

Python脚本远程批量执行命令

摘要 本文主要写用python脚本远程连接多台服务器,然后批量执行命令,最终返回命令执行结果. 这个可以说是Ansible,Puppet等工具的最简单的雏形. 做运维的同学应该都知道的. 正文 multi_task.py #_*_coding:utf-8_*_ import  multiprocessing import paramiko import getpass import ConfigParser class MultiTask(object):     '''handles all 

使用ansible远程执行命令

使用ansible远程执行命令 1.ansible简介 ansible的官方定义:"Ansible is Simple IT Automation"--简单的自动化IT工具.这个工具的目标: 自动化部署APP 自动化管理配置项 自动化的持续交付 自动化的(AWS)云服务管理. 其本质上就是在远程在多台服务器执行一系列命令和文件同步,和以前的介绍的使用并行ssh提高工作效率功能类似,他们都是使用ssh协议进行远程操作,但ansible比pssh功能更强大,比如支持主机列表分组.支持pla

分发系统-expect-批量同步文件、批量执行命令

分发系统-批量同步 将指定文件传送到多个ip的相同目录下 创建expec脚本 rsync.expect代码: #!/usr/bin/expect set passwd "123456" set host [lindex $argv 0] set file [lindex $argv 1] spawn rsync -av --files-from=$file / [email protected]$host:/ expect { "yes/no" { send &qu

批量执行命令

Linux系统映像规模当超过30时,小小的变更也会浪费很多时间,Linux系统下有很多可用的集中管理方案,例如著名的puppet,这个是用ruby开发,号称可以管理以万计的服务器.不过对于大多数SA来说,这个不怎么轻量,设置有点复杂.这里推荐PSSH,比DSH更强大的批量管理工具,先来看下它的命令列表.pssh  包安装  5  个实用程序:parallel-ssh  (pssh)  在多个主机上并行地运行命令.parallel-scp  (pscp)把文件并行地复制到多个主机上.paralle

批量执行命令:fabric

Fabric 可以通过 SSH 在多台客户端主机上批量执行任务,是基于 paramiko 封装开发的,paramiko 更底层一些,安装方法如下: [[email protected] ~]$ yum install -y python-devel # 先安装 python 开发包 [[email protected] ~]$ pip install pycrypto==2.3 # 安装 paramiko 的依赖包,paramiko 使用 ssh 登录需要用到 pycrypto 来提供加密算法,

python批量执行命令发送文件

#!/usr/bin/python #-*- coding: utf-8 -*- import paramiko import datetime import os,tab,sys from multiprocessing import Process, Pool host_list = ( ('192.168.1.127','root','123456'), ('192.168.1.137','root','123456'), ('192.168.1.143','root','123456')

securecrt批量执行命令设置

首先sessions右键open sessions in a tab 点击view,勾选command(chat)window(会话窗口),此时下面会出现空白窗口 在下方空白窗口单击右键,勾选send commands to all sessions(发送命令到所有会话) 现在就可以批量管理linux服务器了.