Ansible Configuration Management

安装ansible

只需要将管理节点安装ansible ,被管理节点不需要安装

但如果使用yum安装的话,必须配置epel源

rpm -Uvh  http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

安装依赖关系包

yum -y install python-dev python-yamlpython-paramiko python-jinja2 git

确保无误,使用yum安装absible

yum install ansible

ansbible配置文件

安装后的配置文件位于/etc/ansible

[[email protected]]# pwd

/etc/ansible

[[email protected]]# ll
total 20
-rw-r--r--. 1 root root 5507 May  1 17:53 ansible.cfg     #主配置文件
-rw-r--r--. 1 root root  965 Mar 15 13:07 hosts            #目标主机

目标被管理主机要定义在host中,否则只能一个一个去手写了

查看配置文件ansible.cfg常用参数:

hostfile  = /etc/ansible/hosts      #默认目标主机文件
library = /usr/share/ansible       #库文件,装载模块时候其模块装载的路径,因为ansible是模块化的工具

module_name =command              #模块的名称,意思是没有使用指定模块的时候其默认使用的模块,默认是命令,意为只执行命令

forks = 5                            #启动的子进程

remote_port  = 22                    #被管理主机的端口,默认为22,如果ssh端口有变动则需要修改此参数

sudo_user = root                      #如果以普通用户登录进行sudo那么sudo的默认账户是root

host配置文件

一般按照安全性要求,应该禁止 root 登录,禁用密码登录,一律使用证书登录。 ansible 支持通过 sudo 来执行

所有管理主机,每个被管理主机都可以使用主机名或者ip地址都可以

使用中括号可以组,紧跟着中括号下面的都是同一组内被管理的主机

[[email protected]shiningliliang]# grep -v "^#" hosts | grep -v "^$"

[linux]
192.168.100.1
192.168.100.10
[webservers]
192.168.1.100
192.168.1.110
[dbservers]
10.25.1.56
10.25.1.57

使用absible批量管理节点

假如这个配置文件不符合我们的意向,可以cp一份作为参考模板,方便以后借鉴

[[email protected]]# cp hosts hosts.bak

这里我们定义2台被管理节点

#使用[]指定分组

[[email protected]shiningliliang]# grep -v ‘#‘  hosts
[idc]
10.0.10.62
10.0.10.61

要基于ssh工作,所以本地要生成一对ssh秘钥,然后让其基于秘钥认证方式来管理节点

创建秘钥

[[email protected]]# ssh-keygen -t rsa

传送至被管理控节点上去

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]


尝试ansible是否可用

-f forks      表示我们可以明确指明启动多少个子进程去连接这些主机默认不定义为5个forks,如果节点比较多,可以将forks参数调大

-m           指定使用的模块,每个模块都需要接受特定参数

-a           来指定使用参数

比如我们想让所有主机显示当前系统时间

[[email protected]shiningliliang~]#ansible all -m command -a ‘date‘
10.0.10.61 | success | rc=0 >>
Thu May  1 18:49:18 CST 2014

-m command 为指定模块,默认为command,如果默认执行命令的话,可以不加这个模块,如下所示

[[email protected]shiningliliang ~]#ansible all -a ‘date‘
10.0.10.60 | success | rc=0 >>
Mon Apr 28 22:18:06 CST 2014

10.0.10.62 | success | rc=0 >>
Thu May  1 02:50:05 CST 2014

10.0.10.61 | success | rc=0 >>
Thu May  1 18:49:27 CST 2014

可以看到,时间不同步,但是命令是同时进行的,因为会发起N个子进程分别与每个被监控节点进行交互的

如果节点比较多,可以将forks参数调大

现在期望多个节点自动的去ntp服务器同步时间

[[email protected]shiningliliang ~]#ansible all -a ‘crontab -l‘
10.0.10.60 | FAILED | rc=1 >>
no crontab for root

10.0.10.62 | success | rc=0 >>
00 * * * * ntpdate time.windows.com

10.0.10.61 | FAILED | rc=1 >>
no crontab for root

定义单独组

[[email protected]shiningliliang]# cat hosts

[hac]
10.0.10.62
10.0.10.61
10.0.10.60

[crontab]
10.0.10.61
10.0.10.60

首先先来手动同步

[[email protected]shiningliliang]# ansible crontab -a ‘ntpdate time.windows.com‘
10.0.10.60 | success | rc=0 >>
30 Apr 18:57:02 ntpdate[2079]: step time server 65.55.56.206 offset160320.206233 sec

10.0.10.61 | success | rc=0 >>
30 Apr 18:57:02 ntpdate[3619]: step time server 65.55.56.206 offset-86361.207014 sec

将时间同步加入计划任务,我们可以使用命令追加的方式来写入计划任务

[[email protected]shiningliliang]# ansible crontab -a ‘echo ‘00 * * * * * ‘ >>/var/spool/cron/root‘

这样一来可以实现,但是实在是太麻烦了,为此,ansible有专门计划任务管理的模块,可以使用内置模块来实现以最简单的命令方式来轻松批量管理

定义crontab的参数有很多,可以在官方去查找帮助文档,这里不再一一介绍

使用ansible批量安装程序

我们工作场景中,如果想安装程序的话,只要我们的yum源无问题,那么则可以完全使用yum来安装

那我们来man一下其模块

man的使用方法比较独特如果想man查看ansible模块的话必须加符号.

[[email protected]]# man ansible.yum

安装vsftpd服务

[[email protected]]# ansible crontab -m yum -a‘name=vsftpd state=present‘

state=present 状态判断其是安装还是卸载的,这里也可以使用install

对于ansible来讲的话,很难生成yum配置文件,但可以使用wget将其批量下载

再查看端口是否被监听

[[email protected]]# ansible crontab -a ‘netstat -lnt ‘ | grep 21
tcp        0      00.0.0.0:21                 0.0.0.0:*                  LISTEN    
tcp        0      00.0.0.0:21                 0.0.0.0:*                  LISTEN

Ansible Configuration Management,布布扣,bubuko.com

时间: 2024-12-19 23:58:42

Ansible Configuration Management的相关文章

CONFIGURATION MANAGEMENT(第一部分)

CONFIGURATION MANAGEMENT(第一部分) salt有一个强大而灵活的配置框架,它建立在远程执行模块的核心上,可以通过指定语言编写的sls文件轻易的在上万台主机上执行. states的介绍: 使用一个精简容易阅读和理解的配置文件表示主机状态. Full list of states 包含一系列的states模块,譬如pkg,group功能模块等 Pillar System 关于pillar变量系统的描述 Highstate data structure 高级state文件的结构

《Continuous Delivery》 Notes 2: Configuration Management

What is Configuration Management? Configuration Management refers to the process by which all artifacts relevant to your project, and the relationships between them, are stored, retrieved, uniquely identified and modified. As a good configuration man

Configuration Management

本来一直想做一个配置管理方面的工具,目的是能根据配置项自动生成配置页面.这样就可以省去很多编写配置界面的工作.但是根据最近的一些研究,发现这样的需求并不是很大,因为: 如果是简单的配置项,现在有很多开源的工具可以做这样的配置.例如Disconf 如果是比较复杂的配置,并不建议用配置页面.原因有两: 复杂配置不易暴露给客户.不然客户的抱怨会远大于这些配置带给他们的灵活度. 如果配置只是内部使用,那么更建议用SQL Script去做配置.这样更便于环境建的配置复制. 因为部署环境间有许多差别,如果用

ansible工作原理以及使用详解

内容: 1.ansible的作用以及工作结构 2.ansible的安装以及使用 3.ansible的playbook使用 一.ansible的作用以及工作结构 1.ansible简介: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,

Ansible configure management--翻译(一)

---      Ansible is the simplest way to automate apps and IT infrastructure 这是Ansible官方网站的介绍,本着学习的态度我决定一边学习一边翻译Ansible configure management这本书,原文下载稍后放出 #一些自解释的文字,我会忽略,或者按照自己的理解简单翻译一下,并非每行每句都是一一对应. Preface Since CFEngine was first created by Mark Burg

[email protected]一个高效的配置管理工具--Ansible configure management--翻译(一)

未经书面许可,请勿转载 ---      Ansible is the simplest way to automate apps and IT infrastructure 这是Ansible官方站点的介绍,本着学习的态度我决定一边学习一边翻译Ansible configure management这本书.原文下载稍后放出 #一些自解释的文字,我会忽略.或者依照自己的理解简单翻译一下,并不是每行每句都是一一相应. Preface Since CFEngine was first created

Ansible configure management--翻译(二)

一. Getting Started with Ansible Ansible is profoundly different from other configuration management tools available today. It has been designed to make configuration easy in almost every way, from its simple English configuration syntax to its ease o

ansible install

简介: 引用官方介绍,ansible 是IT自动化工具.它可以配置系统,部署软件和编排高级IT任务,例如连续部署或零停机更新. ansible 主要目标是简单易用,同时还强调安全性和可靠性. ansible 适用于所有类型人员使用:开发人员.系统管理员.发布人员.IT经理中的任何人.ansible适用于管理所有环境,少量实例到上千实例设置. ansible 通过openssh 以无代理方式管理机器.永远不会有如何升级远程守护程序或无法管理系统的问题. ansible 公司大约每两个月发布一个新的

ansible 文档

Ansiable Ansiable的核心组件   Ansible core        Host inventory        Core modules        Custom modules        Playbooks(yaml.jinjia2)        Connect pluginAnsible特性        基于 python 语言实现,由paramike,pyyaml和jinjia2三个关键模块组成部署简单,agentless默认使用ssh协议主从模式,