Ansible:分布式场景下的自动化运维利器实战!!!

项目背景:

实验环境:

软件介绍

Ansible是一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台,它是基于python语言,由Paramiko和PyYAML两个关键模块构建。集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

ansible软件的一些特性:

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

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

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

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

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

ansible特点:

部署简单,只需要在主控端部署Ansible环境,被控端不用做任何操作。#这个特点我就爱死了!!

(1)、no agents:不需要在被管控主机上安装任何客户端;

(2)、no server:无服务器端,使用时直接运行命令即可;

(3)、modules in any languages:基于模块工作,可使用任意语言开发模块;

(4)、yaml,not code:使用yaml语言定制剧本playbook;

(5)、ssh by default:基于SSH工作;          #SSH2

(6)、strong multi-tier solution:可实现多级指挥。

软件的常用命令:

实验流程 :

一、

epel源配置:

http://www.centoscn.com/CentOS/config/2014/0920/3793.html

一个很好的线上文档。(如果有问题的话,可以在下面留言,我看到的话会回复。)

二、ansible软件安装

yum安装:

1、软件安装

[[email protected]_server01 ~]# yum install ansible  -y

2、查看已安装的ansible软件

[[email protected]_server01 ~]# rpm -q ansible

ansible-1.9.4-1.el6.noarch

可以看到安装成功了!

3、查看软件的使用:

[[email protected]_server01 ~]# ansible          #我们直接在命令行里输入ansible,回车。

Usage: ansible <host-pattern> [options]

Options:

-a MODULE_ARGS, --args=MODULE_ARGS

module arguments

--ask-become-pass     ask for privilege escalation password

-k, --ask-pass        ask for SSH password

--ask-su-pass         ask for su password (deprecated, use become)

-K, --ask-sudo-pass   ask for sudo password (deprecated, use become)

--ask-vault-pass      ask for vault password

-B SECONDS, --background=SECONDS

run asynchronously, failing after X seconds

(default=N/A)

-b, --become          run operations with become (nopasswd implied)

--become-method=BECOME_METHOD

privilege escalation method to use (default=sudo),

valid choices: [ sudo | su | pbrun | pfexec | runas ]

--become-user=BECOME_USER

run operations as this user (default=None)

-C, --check           don‘t make any changes; instead, try to predict some

of the changes that may occur

-c CONNECTION, --connection=CONNECTION

connection type to use (default=smart)

-e EXTRA_VARS, --extra-vars=EXTRA_VARS

set additional variables as key=value or YAML/JSON

-f FORKS, --forks=FORKS

specify number of parallel processes to use

(default=5)

-h, --help            show this help message and exit

-i INVENTORY, --inventory-file=INVENTORY

specify inventory host file

(default=/etc/ansible/hosts)

-l SUBSET, --limit=SUBSET

further limit selected hosts to an additional pattern

--list-hosts          outputs a list of matching hosts; does not execute

anything else

-m MODULE_NAME, --module-name=MODULE_NAME

module name to execute (default=command)

-M MODULE_PATH, --module-path=MODULE_PATH

specify path(s) to module library (default=None)

-o, --one-line        condense output

-P POLL_INTERVAL, --poll=POLL_INTERVAL

set the poll interval if using -B (default=15)

--private-key=PRIVATE_KEY_FILE

use this file to authenticate the connection

-S, --su              run operations with su (deprecated, use become)

-R SU_USER, --su-user=SU_USER

run operations with su as this user (default=root)

(deprecated, use become)

-s, --sudo            run operations with sudo (nopasswd) (deprecated, use

become)

-U SUDO_USER, --sudo-user=SUDO_USER

desired sudo user (default=root) (deprecated, use

become)

-T TIMEOUT, --timeout=TIMEOUT

override the SSH timeout in seconds (default=10)

-t TREE, --tree=TREE  log output to this directory

-u REMOTE_USER, --user=REMOTE_USER

connect as this user (default=root)

--vault-password-file=VAULT_PASSWORD_FILE

vault password file

-v, --verbose         verbose mode (-vvv for more, -vvvv to enable

connection debugging)

--version             show program‘s version number and exit

可以看到会有大量的输出,我们就是根据自己的需求灵活应用上面的命令。

三、对/etc/ansible/hosts 进行修改,用来符合我们的需求。

[[email protected]_server01 ~]# cat  /etc/ansible/hosts

# This is the default ansible ‘hosts‘ file.

#

# It should live in /etc/ansible/hosts

#

#   - Comments begin with the ‘#‘ character

#   - Blank lines are ignored

#   - Groups of hosts are delimited by [header] elements

#   - You can enter hostnames or ip addresses

#   - A hostname/ip can be a member of multiple groups

# Ex 1: Ungrouped hosts, specify before any group headers.

#这里用户或者域名!!!!

ansible.client.com

192.168.0.21

#green.example.com

#blue.example.com

#192.168.100.1

#192.168.100.10

# Ex 2: A collection of hosts belonging to the ‘webservers‘ group

#这里定义用户组,用户可以写主机名,或者主机ip,定义到组里的就是一个整体了。

[webservers]

ansible.client.com

192.168.0.21

#alpha.example.org

#beta.example.org

#192.168.1.100

#192.168.1.110

# If you have multiple hosts following a pattern you can specify

# them like this:

#www[001:006].example.com      #定义有规律的一段主机

# Ex 3: A collection of database servers in the ‘dbservers‘ group

#这里也是定义用户组,我们操作的时候直接对用户组名操作

[dbservers]

ansible.client.com

192.168.0.21

#db01.intranet.mydomain.net

#db02.intranet.mydomain.net

#10.25.1.56

#10.25.1.57

# Here‘s another example of host ranges, this time there are no

# leading 0s:

#db-[99:101]-node.example.com   #定义有规律的一段主机     

四、查看ansible的模块列表

因为ansible是模块化的,所以你如果想用好它,那么肯定得会查吧

1、获取模块列表!

[[email protected]_server01 ~]# ansible-doc -l

less 436

Copyright (C) 1984-2009 Mark Nudelman

less comes with NO WARRANTY, to the extent permitted by law.

For information about the terms of redistribution,

see the file named README in the less distribution.

Homepage: http://www.greenwoodsoftware.com/less

a10_server                    Manage A10 Networks AX/SoftAX/Thunder/vThunder devices

a10_service_group             Manage A10 Networks AX/SoftAX/Thunder/vThunder devices

a10_virtual_server            Manage A10 Networks AX/SoftAX/Thunder/vThunder devices

acl                           Sets and retrieves file ACL information.

add_host                      add a host (and alternatively a group) to the ansible-playbook in-memory inve...

airbrake_deployment           Notify airbrake about app deployments

alternatives                  Manages alternative programs for common commands

apache2_module                enables/disables a module of the Apache2 webserver

apt                           Manages apt-packages

apt_key                       Add or remove an apt key

apt_repository                Add and remove APT repositories

apt_rpm                       apt_rpm package manager

assemble                      Assembles a configuration file from fragments

assert                        Fail with custom message

at                            Schedule the execution of a command or script file via the at command.

authorized_key                Adds or removes an SSH authorized key

azure                         create or terminate a virtual machine in azure

bigip_facts                   Collect facts from F5 BIG-IP devices

bigip_monitor_http            Manages F5 BIG-IP LTM http monitors

bigip_monitor_tcp             Manages F5 BIG-IP LTM tcp monitors

:                        #你回车的话会一直展示

2、获取制定模块的使用信息

[[email protected]_server01 ~]# ansible-doc -s  acl

less 436

Copyright (C) 1984-2009 Mark Nudelman

less comes with NO WARRANTY, to the extent permitted by law.

For information about the terms of redistribution,

see the file named README in the less distribution.

Homepage: http://www.greenwoodsoftware.com/less

- name: S e t s   a n d   r e t r i e v e s   f i l e   A C L   i n f o r m a t i o n .

action: acl

default                # if the target is a directory, setting this to yes will make it the default acl f

entity                 # actual user or group that the ACL applies to when matching entity types user or

entry                  # DEPRECATED. The acl to set or remove.  This must always be quoted in the form of

etype                  # the entity type of the ACL to apply, see setfacl documentation for more info.

follow                 # whether to follow symlinks on the path if a symlink is encountered.

name=                  # The full path of the file or object.

permissions            # Permissions to apply/remove can be any combination of r, w and  x (read, write a

state                  # defines whether the ACL should be present or not.  The `query‘ state gets the cu

如果我们想知道如何使用某一个模块的话我们可以这样查看。


四、设置ssh免密码登录

http://9399369.blog.51cto.com/9389369/1750915

《配置ssh的双机信任》这篇博文是我前段时间写的,你可以参考一下。

项目总结:

时间: 2024-10-24 11:52:24

Ansible:分布式场景下的自动化运维利器实战!!!的相关文章

Linux下的自动化运维ansible工具

什么是自动化运维     随着信息时代的持续发展,IT运维已经成为IT服务内涵中重要的组成部分.面对越来越复杂的业务, 面对越来越多样化的用户需求,不断扩展的IT应用需要越来越合理的模式来保障IT服务能灵活便捷.安 全稳定地持续保障,这种模式中的保障因素就是IT运维(其他因素是更加优越的IT架构等).从初期的 几台服务器发展到庞大的数据中心,单靠人工已经无法满足在技术.业务.管理等方面的要求,那么标 准化.自动化.架构优化.过程优化等降低IT服务成本的因素越来越被人们所重视.其中,自动化最开始作

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战网盘地址:https://pan.baidu.com/s/1bZ1Ju0mld3KLZawdxZ7m6Q 密码: 5k9x备用地址(腾讯微云):https://share.weiyun.com/5E7aUWv 密码:wzfdrn 本课程将带你从项目实践角度出发,围绕自动化资产扫描和发现.Ansible自动化任务执行的内容展开,让运维更简单.更高效,Hold住高薪! 适合人群:如果你是一位运维党,对Python运维自动化

云计算开发教程:Python自动化运维开发实战流程控制

今天这篇文章是给大家分享一些云计算开发教程,今天讲解的是:Python自动化运维开发实战流程控制. Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false. if 语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句-- else: 执行语句-- 其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范

自动化运维利器---pssh

有的公司,机房有60台服务器,有的公司机房有3000台服务器,还有的更多!这么多的服务器,要执行相同的系统配置操作,怎么办? 答案1:   一台一台的部署,有点活活累死的感觉! 答案2:  写SHELL脚本,一回车,全部机器就都执行了.是个办法,但是效率很低,不是吗?! 答案3 :    用pssh,它是运维利器啊! pssh:   parallel-ssh ,即并行ssh,是一个用Python编写的工具,作用就是并行在多台服务器上执行命令.比如,在晚上12:00 分这个时间,同时在3000台服

云计算学习教程,Python自动化运维开发实战

都忘记是什么时候知道python的了,我是搞linux运维的,早先只是知道搞运维必须会shell,要做一些运维自动化的工作,比如实现一些定时备份数据啊.批量执行某个操作啊.写写监控脚本什么的. 后来发现工作量大的时候shell开始变慢,实现某个功能使用shell感觉力不从心,听人说python能实现shell能做的一切功能,而且开发效率高,速度快,慢慢的就认识了python,多多少少看点简单的东西. 印象最深的是花几天时间把<python简明手册>看完后,感觉python很简单,特二的认为自己

Saltstack自动化运维工具 实战与部署

自动化工具比较 Puppet也许是四款工具中最深入人心的.就可用操作.模块和用户界面而言,它是最全面的.Puppet呈现了数据中心协调的全貌,几乎涵盖每一个运行系统,为各大操作系统提供了深入的工具.初始设置比较简单,只需要在需要加以管理的每个系统上安装主服务器和客户端代理软件.命令行接口(CLI)简单直观,允许通过puppet命令下载和安装模块.然后,需要对配置文件进行更改,好让模块适合所需的任务;应接到指令的客户端与主服务器联系时,会更改配置文件,或者客户端通过立即触发更改配置文件的推送(pu

Centos 6.5下企业级自动化运维部署-Ansible

一.Ansible 介绍 Ansible和目前市面上一些其它的项目管理工具有很大的不同,它的设计初衷就是为了更方便.快捷的进行配置管理.它易于安装和使用.语法也非常简单易学.你可以用Ansible将平常复杂的配置工作变得简单,变得更加标准化更容易控制. Ansible只需要在一台普通的服务器上运行即可,不需要在被管控的服务器上安装客户端.因为它是基于SSH的,Linux服务器离不开SSH,所以Ansible不需要为配置工作添加额外的支持. 你可以通过命令行来使用Ansible,运行Ansible

云计算Python自动化运维开发实战:行和缩进

学习Python时,遇到的第一个需要注意的地方是,不使用括号来表示代码的类和函数定义块或流程控制.代码块是由行缩进,这是严格执行表示方式. 缩进位的数目是可变的,但是在块中的所有语句必须缩进相同的量.在这个例子中,两个功能块都很好使用: if True: print "True" else: print "False" 在本例中的第二块将产生一个错误: if True: print "Answer" print "True"

好程序员分享Python自动化运维开发实战五-运算符与表达式

导语: 1.什么是运算符 2.什么是表达式 3.python运算符分类 4.python运算符优先级 什么是运算符: 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”. 什么是表达式: 表达式,是由数字.运算符.数字分组符号(括号).自由变量和约束变量等以能求得数值的有意义排列方法所得的组合.约束变量在表达式中已被指定数值,而自由变量则可以在表达式之外另行指定数值. PYTHON运算符分类: 算术运算符 比较(关系)运算符 赋值运