Ansible是一个轻量级的工具,基于python语言实现,通过python中的paramiko来连接并管理机器, 功能强大(YAML,PlayBook,模块化功能),不需要安装客户端,

通过ssh连接,推送命令到客户端,只有服务器端,就可以批量管理。

#安装 ,仅供Centos6系列系统

软件包链接:https://pan.baidu.com/s/1v8B6sCzm2BO8XO9ufgMu_w 密码:ifnb

下载后通过rpm安装即可,如有依赖包问题,yum那个依赖包

安装完毕后通过ansible --version 检查是否安装成功

#下面介绍我在工作中的常用用法,一下均在实际环境中实现,由于实际环境,需要管理的机器很多,所以,通常情况下,机器的端口,用户名,密码等都是一样的。

首先,建立一个文件,文件中存储你想管理的主机,主机端口,主机用户名,密码等等,ansible依赖这个文件,进行批量管理动作,我这边的文件如下。

[jenkins@host-10-124-198-75 shell]$ cat yatai_all

10.124.193.76 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.165.76 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc 
10.124.193.81 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc 
10.124.165.75 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.194.185 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.165.77 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.193.77 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.163.170 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.194.3 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.165.74 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.194.187 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.165.78 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.165.73 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.193.82 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.193.78 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.32 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.194.2 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.21 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.31 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.18 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.10 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.16 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.126 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.13 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc

#上方的配置横向解释依次是ip,port,user,passwd,sudo_passwd 相信看得懂

#我这有个简单的脚本,根据你的机器来生成端口,密码等信息,并创建这个主机信息文件,如果你懒得写,你可以直接复制过去,你只需要在脚本同级目录新建一个命名为ip的文件,里面每行1个ip地址即可,调整下脚本内容,指定连接的用户,密码等

#!/bin/bash
port='ansible_ssh_port=22'
user='ansible_ssh_user='admin''
passwd='ansible_ssh_pass='abc''
sudo_passwd='ansible_sudo_pass='abc'
new_hosts_filename='new_ip'
function run (){
for i in `cat ip`;
do
echo "$i $port $user $passwd $sudo_passwd " >> $new_hosts_filename
done }
cat $new_hosts_filename &> /dev/null
if [ $? != "" ] ; then
run
else
echo "file $new_hosts_filename already exists please check"
fi

ansible提供了默认的机器信息文件,但是里面是空的,只标注了一些配置介绍,有兴趣你也可以去看看。

/etc/ansible/hosts

 

下面开始执行命令,从简单开始。

#此命令是使用ping模块,对-i yatai_all文件里面all,所有机器,执行ping测试。

-i 指定hosts文件,就是上面创建的主机ip与密码对应的文件,直接执行,不用输入连接机器的密码,因为我在文件中已经定义过了,高效率就是这么来的。

ansible -i yatai_all  all -m ping

#有人第一次执行ansible命令的时候会报错,就算你在你的hosts文件中设置了主机ip,密码,端口等,这些都正确,也会报错,可能是因为第一次连接linux服务器是出现的交互式hostkey_check搞的鬼,如下,ansible默认可不会帮你输入yes or no ,你可以通过下方方式来解决:

永久跳过次检查,在/etc/ansible/ansiblt.cfg文件中配置如下参数。
host_key_checking = False

通过ansible在主机中批量执行命令

ansible -i yatai_all  all -m shell -a 'echo $USER'

#在yatai_all文件中指定的所有主机上执行命令“echo $USER”

使用shell模块,-a后面跟上被控机需要执行的命令

#在工作环境中,root用户权限一般是不能直接使用的,避免因权限太高导致的不可挽回的后果,所以我们应该尽量使用其他用户,那么,如果真有需要在多台机器上使用root用户执行的命令时怎么办呢(首先,你需要用root用户,在 /etc/sudoers文件中添加配置,允许用户进行提权,我使用的是admin用户,那么我用root用户在文件中放入admin ALL=(ALL:ALL) ALL )

首先,通过ansible使用root用户批量增加其他用户的sudo权限。#此时你的主机信息文件里面,对应的用户要改为root,以及root的密码。如下,或者使用上面脚本重新生成主机配置

(10.124.198.16 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=abc ansible_sudo_pass=abc )

ansible -i yatai_all  all -m shell -a 'echo “admin  ALL=(ALL)   ALL” '  

使用sudo提权执行命令

#yatai_all文件中给每台机器都定义了一个选项:ansible_sudo_pass=abc,作用就是定义sudo时输入的密码(如果不想定义ansible_sudo_pass选项,也可以通过交互式页面手动输入密码,执行时附带参数【-k】即可 )

提权操作很简单,只需要在你的用户已经有提权的权限时,加一个-s参数即可,让我们看看结果

ansible -i yatai_all  all -m shell -a 'echo $USER'  -s

加和不加-s的图中结果明显不同,-s选项加上后,使用的是root用户执行的命令。

ansible copy文件,操作也很简单,命令如下。

以下命令,是将本机的/etc/file1文件,copy到所有主机的/etc/下命名file2,copy时,还可以设置文件权限等(需将参数加到命令引号内)。

ansible -i yatai_all  all -m copy -a 'src=/etc/file1 dest=/etc/file2'

命令中的src=/etc/file1 如果替换为 content='abcabc', 代表将content中的内容放到对端主机的/etc/file2文件中,切,shell -a 'echo  "abcabc" > /etc/file2   ' 也可以实现

force 参数,如果对端机器上已经有/etc/file2了,是否覆盖,设置值force={no,yes},默认yes

mode 参数,当你希望文件在对端机器的权限是777时,你需要设置mode=0777,当你需要给属组增加执行权限时,mode=g+x

Ansible 快速安装配置,常用模块的更多相关文章

  1. CentOS6.9快速安装配置svn

    CentOS6.9快速安装配置svn 环境介绍: 操作系统:CentOS release 6.9 (Final)192.168.65.130 (svn服务器)192.168.65.129 (svn客户 ...

  2. ANSIBLE安装和常用模块模块使用详细教程

    目录 ANSIBLE安装和各种模块应用功能 安装配置ANSIBLE ANSIBLE使用 ansible-galaxy工具 ansible-pull工具 ansible-playbook ansible ...

  3. Ansible安装及常用模块

    配置文件:/etc/ansible/ansible.cfg 主机列表:/etc/ansible/hosts  安装anslibe  wget -O /etc/yum.repos.d/epel.repo ...

  4. ansible环境部署及常用模块总结 - 运维笔记

    一.  Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于py ...

  5. 10.Python之Ansible自动化运维常用模块

    Ansible中文权威文档:http://www.ansible.com.cn/docs/ Ansible从入门到精通:https://www.bilibili.com/video/av3361175 ...

  6. ansible简介安装配置

    ansible简介 ansible是一款,自动化运维管理工具.顾名思义是用于批量去管理及安装服务及批量管理主机. ansible与saltstack对比 ansible优点:配置简单,部署容易除主管理 ...

  7. ansible 的安装及常见模块使用

    ansible 基础keys的ssh协议配置的 特性:幂等性:一个任务执行1遍和执行n遍效果一样. ansible是个管理软件不是服务,不需要长期运行  一.通过epel源安装ansible, 1.下 ...

  8. CentOS7Linux中自动化运维工具Ansible的安装,以及通过模块批量管理多台主机

    使用自动化运维工具Ansible集中化管理服务器 Ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于saltstack和Puppet ...

  9. Saltstack 安装与常用模块

    一.介绍 saltstack是基于C/S服务模式,在该架构中,服务器端叫做Master,客户端叫做Minion.传统的C/S模式我们这样理解,客户端发送请求给服务器端,服务器端接受到来自客户端的请求并 ...

随机推荐

  1. Editplus code

    网上一大堆,垃圾也是一大堆,保留一个真正的,提高效率 原文链接:https://blog.csdn.net/anhldd/article/details/85088715 Vovan 3AG46-JJ ...

  2. 4 java 笔记

    1 javadoc工具默认只处理以public,protected修饰的类,接口,方法,成员变量,构造器和内部类之前的文档注释 2 文档注释以斜线后紧跟两个星号开始/**,以星号后紧跟一个斜线结束*/ ...

  3. 2.Struts2-Action

    struts.xml文件中 action 标签中几个属性的作用 1.name:为action命名,输入url访问时,需要带上action的name,通过name知道访问哪个action(通过class ...

  4. 解决IDEA报错Could not autowire. There is more than one bean of 'xxx' type

    更新项目之后IDEA突然出现了这样的报错信息.显示Could not autowire. There is more than one bean of 'xxx' type.这个错误的意思是xxx类型 ...

  5. webpack整合 .vue 文件,集成 vue-loader

    webpack集成vue-loader 创建一个文件夹 test_webpack_vue 在 test_webpack_vue 下新建目录 src 在 src 目录下 新建文件 index.html ...

  6. 纯净CentOS搭建harbor镜像私仓

    物理宿主机IP:  192.168.1.4 在官网下载 CentOS-7-x86_64-DVD-1810 用Hyper-v建立一代虚机,安装时遇分辨率问题无法继续,需要在选择启动界面按TAB键以编辑启 ...

  7. 第十章· Logstash深入-Logstash与Redis那点事

    Logstash将日志写入Redis 为什么要使用Redis 在企业中,日志规模的量级远远超出我们的想象,这就是为什么会有一家公司日志易专门做日志收集,给大型金融公司收集日志,比如银行,因为你有可能看 ...

  8. 逆向破解H.Koenig 遥控器 Part 2

    逆向破解H.Koenig 遥控器 Part 2 到目前为止,我们已经知道了RF收发器的安装过程,下面是我们所掌握的东西 : l 无线电收发器是一个Avantcom A7105 l 调制是FSK l 频 ...

  9. 对路径“xxxxx”的访问被拒绝。

    对路径“D:\\Weixin\\WechatWeb\\wapMxApi\\JsonFile\\WaterPrice.json”的访问被拒绝. 本地vs2013编译调试是没有问题的但是发布后就不能倍访问 ...

  10. Alpha版本

    这个作业属于哪个课程 [课程链接][ https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/] 这个作业要求在哪里 [作业要求][ ...