1.什么是Ansible

部署参考连接:http://www.ansible.com.cn/

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。

1.1.Ansible框架

真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

(1)、连接插件connection plugins:负责和被监控端实现通信;

(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)、各种模块核心模块、command模块、自定义模块;

(4)、借助于插件完成记录日志邮件等功能;

(5)、playbook:同时执行多个任务时,非必需可以让节点一次性运行多个任务。

1.2.Ansilbe特点

(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.3.Ansilbe优点

(1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;

(2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;

(3)、使用python编写,维护更简单,ruby语法过于复杂;

(4)、支持sudo。

2.部署环境

主机名

操作系统

IP地址

应用

Host01

Ubuntu14.04

192.168.20.10

Ansibe服务器

Host02

Ubuntu14.04

192.168.20.11

客户端

Host03

Ubuntu14.04

192.168.20.12

客户端

3.配置ssh免密码登录

3.1生成秘钥

在host01上面生成公钥分发到host02和host03

ssh-keygen -t rsa -P

默认一直回车

3.2.切换到host02和host03将生成的公拷贝下来

scp nick@192.168.20.10:~/.ssh/id_rsa.pub /home/nick/

cat id_rsa.pub >> .ssh/authorized_keys

3.3测试在host01是否无需密码登录到host02和host03

4.安装Ansible

4.1Ubuntu 编译版

Ubuntu编译版可在PPA中获得: ` <https://launchpad.net/~ansible/+archive/ansible>`_.

4.2开始安装Ansible

sudo apt-get install software-properties-common

sudo apt-add-repository ppa:ansible/ansible  #按Enter键添加

sudo apt-get update

sudo apt-get install ansible

4.3Ansible配置

Ansilbe安装完成后配置文件位于/etc/ansible/

定义一个主机组

sudo vim /etc/ansible/hosts

[hostgroup]  #定义一个主机组,名称为:hostgroup

192.168.20.11

192.168.20.12

4.4.Ansible简单测试

测试语法ansible  xxx -m ping

xxx 为你定义主机组名称也可以是all,all代表你配置文件定义的所有主机

-m 指定你要加载的测试模块,如ping模块

如: ansible hostgroup -m ping

4.5.Ansilbe常用模块

(1)、setup

   用来查看远程主机的一些基本信息

    ansible storm_cluster -m setup

(2)、ping

用来测试远程主机的运行状态

# ansible storm_cluster -m ping

(3)、file

## 设置文件的属性

  相关选项如下:

  force:需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no

  group:定义文件/目录的属组

  mode:定义文件/目录的权限

  owner:定义文件/目录的属主

  path:必选项,定义文件/目录的路径

  recurse:递归设置文件的属性,只对目录有效

  src:被链接的源文件路径,只应用于state=link的情况

  dest:被链接到的路径,只应用于state=link的情况

  

state:

directory:如果目录不存在,就创建目录

file:即使文件不存在,也不会被创建

link:创建软链接

hard:创建硬链接

touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间

absent:删除目录、文件或者取消链接文件 

示列:

(1)远程符号链接创建

ansible hostgroup -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link

 

(2)远程文件信息查看

ansible hostgroup -m command -a "ls -al /tmp/resolv.conf"

(3)远程文件链接符删除

ansible hostgroup -m file -a "path=/tmp/resolv.conf state=absent"

4.6.copy

## 复制文件到远程主机

相关选项如下:

  backup:在覆盖之前,将源文件备份,备份文件包含时间信息。有两个选项:yes|no

content:用于替代“src”,可以直接设定指定文件的值

  dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录

  directory_mode:递归设定目录的权限,默认为系统默认权限

  force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes

  others:所有的file模块里的选项都可以在这里使用

src:被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync。

示列:

将test.txt拷贝到远程服务器,并设置属主和属组为nick,权限为644

ansible hostgroup -m copy -a "src=/home/nick/test.txt dest=/tmp/test.txt owner=nick group=nick mode=0644"

远程文件信息查看

ansible hostgroup -m command -a "ls -al /tmp/test.txt"

4.7.command

## 在远程主机上执行命令

相关选项如下:

creates:一个文件名,当该文件存在,则该命令不执行

 free_form:要执行的linux指令

 chdir:在执行指令之前,先切换到该目录

 removes:一个文件名,当该文件不存在,则该选项不执行

 executable:切换shell来执行指令,该执行路径必须是一个绝对路径

示列:

查看系统启动时间:ansible hostgroup -m command -a "uptime"

4.8.shell

示列:

#vim /tmp/test.sh  #创建一个脚本

#!/bin/bash

HOSTP_DIR=/etc/ansible/src

date +%F_%H:%M:%S

chmod +x $HOSTP_DIR/hostgroup.sh

## 将创建的脚本文件分发到远程

ansible hostgroup -m copy -a "src=/etc/ansible/src/hostname.sh dest=/tmp/ owner=root group=root mode=0755" -s

#-s表示sudo 执行

# 远程执行

ansible hostgroup -m shell -a "/tmp/hostname.sh" -s

4.9.更多模块

其他常用模块,比如:service、cron、yum、synchronize

service:系统服务管理

cron:计划任务管理

 yum:yum软件包安装管理

 synchronize:使用rsync同步文件

 user:系统用户管理

 group:系统用户组管理

命令:

ansible xiamen_flx --list-hosts  #列出xiamen_flx组的所有主机

src=指明本地文件路径

dest=远程主机上用来引用的路径,通常是绝对路径

mode=指定权限

onwer=指定属主

group=指定数组

   更多模块和支持可以参考:http://www.ansible.com.cn/

ansible常用配置的更多相关文章

  1. CentOS 6.5环境使用ansible剧本自动化部署Corosync + pacemaker环境及corosync常用配置详解

    环境说明: 192.168.8.39 node2.chinasoft.com 192.168.8.42 node4.chinasoft.com 192.168.8.40 ansible管理服务器 19 ...

  2. Ansible常用模块命令

    Ansible常用模块命令 一.安装ansible yum install epel-release yum install ansible 二.配置文件配置 vi /etc/ansible/ansi ...

  3. centos ansible常用命令

    ansible在日常运维中经常使用,特别是批量执行多台服务器的时候,有效减小重复的操作成本,以下从安装到使用仅讲解工作中常用的几种方式,模块很多功能很强大,但不做全面讨论. ansible安装 在ce ...

  4. Ansible 使用配置

    1.配置 /etc/ansible/hosts 文件,添加被管控主机ip #vim /etc/ansible/hosts   文件末尾添加组[group1]和被管控主机的IP [group1] 192 ...

  5. ansible 三配置和命令集

    一.Ansible配置 Ansible安装好之后的配置文件有如下两种: 1.yum安装,配置文件默认路径为: /etc/ansible/ansible.cfg 2.源码包安装,配置文件路径需要从软件包 ...

  6. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  7. 【转】logback logback.xml常用配置详解(三) <filter>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1110008, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  8. 【转】logback logback.xml常用配置详解(二)<appender>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101260, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  9. 【转】logback logback.xml常用配置详解(一)<configuration> and <logger>

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101260, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

随机推荐

  1. Raspberry Pi - Huawei HiLink E3256 3G modem to ethernet adapter

    Raspberry Pi - Huawei HiLink E3256 3G modem to ethernet adapter This page documents how to configure ...

  2. 如何激活 Trend Micro Deep Security Agent

    Deep Security 即服务包括反恶意软件保护.防火墙.入侵防御系统和完整性监视.Trend Micro Deep Security Agent (DSA) 可以配合 Deep Security ...

  3. Visual Staudio 2015 打开指定文件,定位到指定文件目录下

    Visual Staudio 2015 项目定位文件位置 每次使用的Visual Staudio 2015 写代码的时候总是打开了.cs文件或xaml文件时, 还要手动去找该 文件位置,每次都要翻好大 ...

  4. .NET中怎么有效的使用Cache

    Cache 即高速缓存 ,我想非常多人对他的第一印象一定像我相同,感觉他一定能提高系统得性能和运行速度.的确.Net推出cache的初衷确实是这样的.那么cache是怎么提高系统性能和运行速度呢?是不 ...

  5. CSS学习---css基础知识0105

    CSS, Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离. 举例:颜色,大小,高度.宽度.内外边距.边框.浮动.定位.字 ...

  6. Asp.Net MVC 开发技巧(二)

    Linq查询 Linq的使用大体分为两种:语句表达式   和  方法 首先,我们要在控制器中定义好context private ApplicationDbContext db = new Appli ...

  7. MVC中使用EF的技巧集(二)——分部验证

    1.从数据库生成模型后,再次更新模型时,之前设置的验证规则会丢失. 解决方法:在Models文件夹中新建一个空白类,把它命名为shujuyanzh.cs(类名可以自定),然后把Models中自动生成的 ...

  8. July 27th 2017 Week 30th Thursday

    A smile is the most charming part of a person forever. 微笑永远是一个人身上最好看的东西. Smile in the mirror, and yo ...

  9. 021.6 IO流 练习

    #######################################################################################获取指定目录下所有的.ja ...

  10. 关于options请求的一点理解

    最近最项目改造,对所有的ajax请求统一做了一点处理,发现原来很正经的ajax请求突然不正常了,每个ajax之前都多了一个相应的method为options的请求.虽然之前知道ajax的请求中meth ...