Ansible的安装与使用

ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。

运维工具常见的工作模式  
1. agent模式: 基于ssl实现。代理工作在被监控端。像puppet。  
2. agentless模式: 基于ssh服务实现工作在被监控端。监控端是ssh的客户端。 

ansible是工作在agentless模式下具有幂等性。ansible在控制端只需要告诉监控端的期望状态就可以实现批量部署。

1. 幂等性不会重复执行相同的指令。例如不会重复安装软件  
2. 期望状态只需要告诉被监控端的期望状态 

ansible是基于模块工作的ansible本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块ansible只是提供一种框架。架构包括

* 连接插件connection plugins负责和被监控端实现通信。

* Host Inventory:指定操作的主机,是一个配置文件里面定义监控的主机

* 各种模块核心模块command模块自定义模块

* 借助于插件完成记录日志邮件等功能

* 

PlayBooks:剧本执行多个任务时。并非必需可以让节点一次性运行多个任务

具体可以参见:
http://os.51cto.com/art/201409/451927_all.htm

  1. 安装软件yum install ansible -y
  2. 配置需要被监控的主机IP或者是hostname(hostname要用域名来标志,并有DNS服务器),总之,确保能ping通
  3. 在装有Ansible的监控主机中配置Host Inventory信息($sudo vim /etc/ansible/hosts). 可以将同一个主机同时归并到多个不同的组中此外当如若目标主机使用了非默认的SSH端口还可以在主机名称之后使用冒号加端口号来标明。
    比如我想建一个组叫[webhosts],当然也可以添加用户名和密码如果有的话。则可以如下添加信息。另外,如果是采用SSH的无密码方式访问的话,请自行配置ssh,具体网上一大堆。

[webhosts]
172.16.10.22 ansible_ssh_user=root ansible_ssh_pass=guoting
172.16.10.33:5050 ansible_ssh_user=root ansible_ssh_pass=guoting 解释 ansible_ssh_user=root 是ssh登陆用户 ansible_ssh_pass=guoting
是ssh登陆密码3、测试各个模块 注意每个模块的用法可以使用 ansible-doc MOD 来查看例如ansible-doc copy

ansible命令最常用的用法
ansible <Host-partten> -m MOE -a 'MOD_ARV'
所支持的模块可以使用ansible-doc -l来查看
11 # Ex 1: Ungrouped hosts, specify before any group headers.
12
13 green.example.com
14 blue.example.com
15 192.168.100.1
16 192.168.100.10
17
18 # Ex 2: A collection of hosts belonging to the ‘webservers’ group
19 [webhosts]
20 10.221.75.134
21 10.221.75.136:5050
22
23 [webservers]
24 alpha.example.org
25 beta.example.org
26 192.168.1.100
27 192.168.1.110
28
29 # If you have multiple hosts following a pattern you can specify
30 # them like this:
31
32 www[001:006].example.com

  1. 然后我们可以使用ansible webhosts -m shell -a 'ifconfig | grep eth0' 来与被监控机进行通讯,因为ansible是采用agentless的方式工作的,即比如我们可以采用ssh协议通讯的方式。
    [root@chenqiang-master-dev001-shgq downloads]# ansible webhosts -m shell -a ‘ifconfig | grep eth0’
    10.221.75.134 | success | rc=0 >>
    eth0 Link encap:Ethernet HWaddr FA:16:3E:8A:CA:91

10.221.75.136 | success | rc=0 >>
eth0 Link encap:Ethernet HWaddr FA:16:3E:8D:8C:2B

ansible命令最常用的用法
ansible <Host-partten> -m MOE -a 'MOD_ARV'所支持的模块可以使用ansible-doc -l来查看

未完,待续

原文地址:https://www.cnblogs.com/qianggezhishen/p/7349425.html