前言

最近看了一下ansible,挺火的一个配置管理工具,对比老大哥puppet,使用起来要简单一些,并且可以批量执行命令,对比同是python语言编写的saltstack,不需要安装客户端(基于paramiko),也更灵活一些,尤其我们现有的登录方式,通过跳板机加密钥,改造成ansible成本很低,准备学习一下以后在生产上使用。

ansible已被红帽收购,目前出到2.0了,和红帽的朋友聊了一下,这个配合现在大火的openstack(红帽是其代码最大贡献者之一),看来以后会成为自动化运维的一个趋势。

官网地址http://docs.ansible.com/

安装

最简单的epel之后,yum install ansible

也可以用pip的方式

pip install ansible即可

如果像我们一样服务器不能连接公网,需要手动下载一下python模块ecdsa, pycrypto, paramiko, MarkupSafe, jinja2, PyYAML, ansible

目前安装的版本是1.9.4

ansible --version
ansible 1.9.4

入门使用

首先把ssh密钥搞好,这里就不说了,保证master和minion之间不通过密码

定义主机和组:

vim /etc/ansible/hosts  #默认的文件位置,也可执行ansible时手动指定hosts文件,通过-i参数

[test]
10.199.2.45
10.199.2.46 [web]
10.199.2.[42:47] #=10.199.2.42\43\44\45\46\47
test.case.com #主机名定义

使用第一个模块:

ansible test -m ping -u sre -s #-m接模块名,因为我们使用的是sre账户登录后通过sudo的方式,-u接用户,-s表示sudo方式执行
ansible test:\!10.199.2.46 -m ping -u sre -s #:\!排除某个主机
ansible 10.199.2.46 -m ping -u sre -s #当然也可以直接接ip而不使用组进行

ansible自带了很多模块

可以通过ansible-doc -l 查看总共有哪些模块,ansible-doc ping 显示某个模块的用法,ansible-doc -s ping 显示某个模块在playbooks中的代码片段

远程执行命令模块:

远程执行命令可能是ansible最常用也是最方便的一个功能,这里举几个例子

1.执行minion操作系统命令

ansible test -a 'w' -u sre -s #默认模块command,实现执行远程命令,-a接模块参数

2.minion上执行master上脚本

master先创建脚本1.sh

#!/bin/bash

ls /tmp/
ansible test -m script -a '1.sh' -u sre -s  #script模块相当于scp+shell,将本地脚本在远端minion进行执行

3.minion执行minion上脚本,2.45远端存在minion.sh,2.46不存在

ansible test -m shell -a '/tmp/minion.sh' -u sre -s

shell和command模块很类似,看帮助信息了解到command和shell功能基本一致,但shell可以使用环境变量、管道等,功能更强大

copy模块 

ansible test -m copy -a 'src=1.sh dest=/tmp/ owner=root group=root mode=0755' -u sre -s
#将本地1.sh文件传到远端,如第二次执行此命令,如无更新,则远端无更新,有更新,则远端更新

yum模块

ansible test -m yum -a "name=nc state=latest" -u sre -s

cron模块

ansible test -m cron -a "name='test' job='ls /tmp' minute=*/2 hour=3,4,5" -u sre -s
#对端服务器crontab -l
#Ansible: test
*/2 3,4,5 * * * ls /tmp ansible test -m cron -a "name='test' state=absent" -u sre -s #删除该条cron

service模块

ansible test -m service -a "name=ntpd state=started" -u sre -s
ansible test -m service -a "name=ntpd state=stopped" -u sre -s

user模块

ansible test -m user -a "name=test123" -u sre -s  #创建用户
ansible test -m user -a "name=test123 state=absent remove=yes" -u sre -s #删除用户并删除家目录

lineinfile模块

#用于文件内的内容处理
ansible ctx-lf -m lineinfile -a "dest=/tmp/sudoers line='appuser ALL=(ALL) NOPASSWD:ALL' insertafter=^sre" -u sre -s -i host #在sudo文件中sre开头之后加入line=的内容,insertafter可以写正则或EOF(结尾),同理还有insertbefore也可以写正则或BOF(开头)
ansible ctx-lf -m lineinfile -a "dest=/tmp/sudoers state=absent regexp=^appuser" -u sre -s -i hosts #去掉正则匹配的所有行
ansible ctx-lf -m lineinfile -a "dest=/tmp/sudoers regexp=^sre line='#sre ALL=(ALL) NOPASSWD:ALL'" -u sre -s -i hosts #将sre开头的最后匹配的一行前边加上#
#也可以用()形式做替代变更,类似sed
ansible ctx-lf -m lineinfile -a "dest=/tmp/sudoers regexp=^(sre.*)$ line='#\1' backrefs=yes" -u sre -s -i hosts #\1表示第一个()里的内容,注意这种用法需要backrefs为yes,开启扩展正则匹配
ansible ctx-lf -m lineinfile -a "dest=/tmp/sudoers regexp=^(sre.*)$ line='123123' validate='visudo -cf %s'" -u sre -s -i hosts #加入validate的验证,比如sudo文件如果改错了,可能影响整个系统的管理,加入验证之后,如果修改的sudo文件格式错误,将不会保存

进阶一下,请看下一篇ansible playbook的基本介绍 http://www.cnblogs.com/caseast/p/5181910.html

ansible入门的更多相关文章

  1. [转帖]Ansible 入门秘诀

    Ansible 入门秘诀 作者: Jose Delarosa 译者: LCTT jdh8383 | 2019-03-08 09:24   收藏: 2 用 Ansible 自动化你的数据中心的关键点. ...

  2. Ansible 入门指南 - 学习总结

    概述 这周在工作中需要去修改 nginx 的配置,发现了同事在使用 ansible 管理者系统几乎所有的配置,从数据库的安装.nginx 的安装及配置.于是这周研究起了 ansible 的基础用法.回 ...

  3. Ansible 入门指南 - ansible-playbook 命令

    上篇文章Ansible 入门指南 - 安装及 Ad-Hoc 命令使用介绍的额是 Ad-Hoc 命令方式,本文将介绍 Playbook 方式. Playbook 译为「剧本」,觉得还挺恰当的. play ...

  4. Ansible 入门指南 - 安装及 Ad-Hoc 命令使用

    安装及配置 ansible Ansilbe 管理员节点和远程主机节点通过 SSH 协议进行通信.所以 Ansible 配置的时候只需要保证从 Ansible 管理节点通过 SSH 能够连接到被管理的远 ...

  5. 一、Ansible入门篇

    一.Ansible简介 Ansible是一个自动化运维的工具 基于python语言编写,因此机器需要具备python环境. 通过ssh的连接方式进行自动化部署,ansible优先使用OpenSSH,在 ...

  6. Ansible 入门 (1) - 安装和配置

    本文参考 <Ansible 自动化运维和最佳实践>,这两天刚读这本书,写写总结.主控机环境是 centos 7,被控机均是 centos 6.8 . 确保 python 版本大于 2.6 ...

  7. Ansible入门篇:playbook的使用

    playbooks介绍 playbooks是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活.简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在 ...

  8. ansible入门及组件介绍

    Ansible简介 Ansible是自动化运维的工具,基于Python开发,实现了批量系统配置.批量程序部署.批量运行命令等功能.Ansible是基于模块工作的,ansible提供一个框架,通过模块实 ...

  9. Ansible入门与实践

    一.ansible介绍 Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用.配置.编排task(持续交付.无 ...

随机推荐

  1. 在Ubuntu13.04中配置Jexus+Mono3.2运行Asp.Net Mvc 4站点 (二)

    开始写这篇前看了看日期,写下这个序列的前一半竟是两个月前的事情了,无比惭愧.这段时间尝试重新组织Mvc4的项目引用,创建了两个项目模板,一个是简单模式,即仅包含Mvc基本功能.另一个是包含了Mvc4 ...

  2. 强大好用的"文本"编辑器

    1 editplugs 说明:EditPlus是一款由韩国 Sangil Kim (ES-Computing)出品的小巧但是功能强大的可处理文本.HTML和程序语言的Windows编辑器,你甚至可以通 ...

  3. 关于公司内部的Nuget服务

    简介 公司内部搭建的Nuget服务,私有安全,局域网,速度快. 使用方法 VS -> 工具 -> 库程序包管理器 -> 程序包管理器设置 -> 程序包源 -> 新增以下配 ...

  4. GitHub详解(GitHub for Windows)

    GitHub详解 GitHub 是一个共享虚拟主机服务,用于存放使用Git版本控制的软件代码和内容项目.它由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath ...

  5. Web Essentials之Browser Link

    返回Web Essentials功能目录 本篇目录 功能 当Browser Link运行时,会有一个菜单注入到你的网站上,Web Essentials可以使用该菜单上所有可用的一套Browser Li ...

  6. Microsoft Dynamics CRM 2013 and 2011 Update Rollups and Service Packs

      Microsoft Dynamics CRM 2013   BTW: RC stands for Release for Candidate, and RTM stands for Release ...

  7. 每天一个linux命令(57):ss命令

    ss是Socket Statistics​的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的 ...

  8. Atitit 教育与培训学校 的计划策划 v2

    Atitit 教育与培训学校 的计划策划 1. 历史大趋势,教育的普及化1 2. 我们的目标,人人可以接受硕士博士教育,确保全球60亿人的普世化教育1 3. 学校的注册,可以选择在全球费用最优惠的地方 ...

  9. WPF入门教程系列四——Dispatcher介绍

    一.Dispatcher介绍 微软在WPF引入了Dispatcher,那么这个Dispatcher的主要作用是什么呢? 不管是WinForm应用程序还是WPF应用程序,实际上都是一个进程,一个进程可以 ...

  10. Chrome清除dns缓存

    Chrome清除dns缓存 为了加快访问速度,Google Chrome浏览器采用了预提DNS记录,在本地建立DNS缓存的方法,加快网站的连接速度.你在谷歌Chrome浏览器的地址栏中输入about: ...