基础知识:

  • ansible简介

ansible 是个什么东西呢?基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令执行操作。这个工具的目标有这么几项:自动化部署APP;自动化管理配置项;自动化的持续交互;自动化的(AWS)云服务管理。所有的这几个目标从本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。通俗的说就是批量的在远程服务器上执行命令 。当然,最主要的是它是基于 paramiko 开发的。这个paramiko是什么呢?它是一个纯Python实现的ssh协议库。因此fabric和ansible还有一个共同点就是不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。

  • ansible特点
  1. 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可。
  2. 批量任务执行可以写成脚本,而且不用分发到远程就可以执行。
  3. 使用python编写,维护更简单,ruby语法过于复杂。
  4. 支持sudo。
  • ansible提供的框架
  1. 连接插件connection plugins:负责和被监控端实现通信。
  2. host inventory:指定操作的主机,是一个配置文件里面定义监控的主机。
  3. 各种模块核心模块、command模块、自定义模块。
  4. 借助于插件完成记录日志邮件等功能。
  5. playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
  • 类似的自动化运维工具有很多常用的还有
  1. Puppet:基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱。
  2. SaltStack:基于 Python 开发,采用 C/S 架构,相对 puppet 更轻量级,配置语法使用 YMAL,使得配置脚本更简单。

ansible安装与使用

1、ssh的安装与配置

1)安装

相关命令:

  1. sudo apt-get install openssh-server

2)配置

相关命令:

  1. su -
  2. ssh localhost
  3. cd .ssh
  4. ssh-keygen //生成密钥
  5. ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@主机名

注意:可能会遇到如下问题

解决:

编辑sshd_config文件,我们输入:vim /etc/ssh/sshd_config

默认不允许root登录SSH,所以我们要进行相应设置,替换为如下:

  1. # Authentication:
  2. LoginGraceTime 120
  3. #PermitRootLogin without-password
  4. PermitRootLogin yes
  5. StrictModes yes

重启ssh服务,我们输入: /etc/init.d/ssh restart

2、Ansible的安装

centos6.8的相关命令:

# yum install http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

# yum install ansible

ubuntu的相关命令:

$ sudo apt-get install software-properties-common

$ sudo apt-add-repository ppa:ansible/ansible

$ sudo apt-get update

$ sudo apt-get install ansible

注意:只要在一个节点安装即可。

3、编辑hosts文件

相关命令与内容:

  1. vim /etc/ansible/hosts
  2. ------------------------------内 容------------------------------
  3. [web] //组名自定义
  4. slave1 //用相应主机名代替IP
  5. slave2
  6. ------------------------------内 容------------------------------

4、连通测试

1)查看web组中的主机

相关命令:

  1. ansible web --list-hosts

2)测试是否连通

相关命令:

  1. ansible web -m ping

5、常用操作

1)创建文件夹

参数说明:

  1. -u 指定运行的用户(默认为root)
  2. -s 使用sudo权限

相关命令:

  1. 用户和权限
  2. ansible spark_cluster -a "mkdir /usr/xx/xx" -s -u userName

2)复制

将本地文件/文件夹发送到远程主机,ansible的copy模块是围绕rsync的包装,所以它是增量而不是全量的拷贝。

参数说明:

  1. src 本地文件/文件夹位置
  2. dest 发送到远程主机的位置
  3. owner(可选) 所属用户
  4. group(可选) 所属用户组
  5. mode(可选) 权限

将本地文件/etc/ansible/ansible.cfg复制到远程服务器

相关命令:

  1. ansible web -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=root group=root mode=0644"

3)批量执行脚本

在远程批量执行本地脚本

在装有ansible的节点执行内容:

  1. vim hello.sh
  2. ------------------------------内 容------------------------------
  3. echo "hello world!!!"
  4. ------------------------------内 容------------------------------
  5. ansible spark_cluster -m script -a "hello.sh"

ansible了解的更多相关文章

  1. 如何利用ansible callback插件对执行结果进行解析

    最近在写一个批量巡检工具,利用ansible将脚本推到各个机器上执行,然后将执行的结果以json格式返回来. 如下所示: # ansible node2 -m script -a /root/pyth ...

  2. 《Ansible权威指南》笔记(2)——Inventory配置

    四.Inventory配置ansible通过Inventory来定义主机和组,使用时通过-i指定读取,默认/etc/ansible/hosts.可以存在多个Inventory,支持动态生成.1.定义主 ...

  3. useful Ansible commands

    This article includes some useful Ansible commands. I will try to write blogs by English. You may wa ...

  4. 《Ansible权威指南》笔记(4)——Playbook

    七.Playbook1.语法特性如下:(1)"---"首行顶格开始(2)#号注释(3)缩进统一,不同的缩进代表不同的级别,缩进要对齐,空格和tab不能混用(4)区别大小写,键值对k ...

  5. 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块

    五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options]    -v,--verbose  ...

  6. 《Ansible权威指南》笔记(1)——安装,ssh密钥登陆,命令

    2016-12-23 读这本<Ansible权威指南>学习ansible,根据本书内容和网上的各种文档,以及经过自己测试,写出以下笔记.另,这本书内容很好,但印刷错误比较多,作者说第二版会 ...

  7. 自动化运维工具ansible部署以及使用

    测试环境master 192.168.16.74webserver1 192.168.16.70webserver2 192.168.16.72安装ansiblerpm -Uvh http://ftp ...

  8. Ansible Ubuntu 安装部署

    一.安装: $ sudo apt-get install ansible 二.配置: a.基本配置 $ cd /etc/ansible/ $ sudo cp hosts hosts_back 备份一个 ...

  9. Ansible 模块命令介绍

    copy模块: 目的:把主控端/root目录下的a.sh文件拷贝到到指定节点上 命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/' ...

  10. 用Vagrant和Ansible搭建持续交付平台

    这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...

随机推荐

  1. Django 上下文管理器的应用

    使用场景:模板继承可以减少页面内容的重复定义,实现页面内容的重用.个人博客右侧的导航栏都是继承base页面从而让代码得到最大程度的复用.但是当父模板中有动态数据的话,这些动态数据在子模版中是不会显示的 ...

  2. 解决Ubuntu与Windows双系统时间不同步问题

    目录 1.Windows修改法 1.1设置UTC 1.2恢复LocalTime 2.Ubuntu修改法 2.1设置LocalTime 2.2恢复UTC 切换系统后,往往发现时间差了8小时.这恰恰是北京 ...

  3. spring注解开发:容器中注册组件方式

    1.包扫描+组件标注注解 使用到的注解如下,主要针对自己写的类 @Controller @Service @Repository @Component @ComponentScan 参考 spring ...

  4. 服务器oracle数据库定时备份

    首先要先建立一个.bat的文件  然后执行这个bat文件 测试是否能得到这个收据库的打包文件. bat文件内容: @echo off@color bdel /f /s /q D:\oracle\bac ...

  5. vue中给请求来的数据List ,添加属性false 后,赋值不上问题解决办法

    data() { return { list:[ // 添加属性fale 后的值 ], // 测试数据 goList:[ { name:'张三', phone:'18621958665' }, { n ...

  6. python学习笔记--类(一)

    # 类是为了代码重用 class First: #类 pass #实例 = 类名() obj = First() # 类是一种产生实例的工厂# 类和模块的差异在于,内存中特定的模块只有一个实例(所以我 ...

  7. mongedb主从

    1.mongodb安装 1.将mongodb上传到linux系统 1.解压 tar -zxvf mongodb-linux-x86_64- -C /usr/local/ 这里默认安装到usr/loca ...

  8. 高逼格企业级MySQL数据库备份方案,原来是这样....

    很多人,这里说的是运维工程师们,一提到写某某方案,很是头疼.不是上某度一统搜索,就是同样一句话在N个群全部群发一遍:“有没有某某方案,可以共享一下的吗??求助,各位大佬们”,估计十有八九,全部石沉大海 ...

  9. org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query

    原因: 这个问题的解决方案很简单,主要是因为数据库中不存在相关的表或者列. org.springframework.dao.InvalidDataAccessApiUsageException: Pa ...

  10. go语言从例子开始之Example5.for循环

    for 是 Go 中唯一的循环结构.这里有 for 循环的三个基本使用方式. package main import "fmt" func main() { 最常用的方式,带单个循 ...