一、什么样的情形需要批量部署

1、操作系统的安装

常见的有collber,red hat satelite(redhat)系统专用。

2、操作系统的配置

常见的有cfengine,puppet,chef,func。其中puppet最受欢迎

3、批量程序的部署

4、批量命令的运行查看状态信息

二、ansible介绍

ansible的架构大致如下
Linux下的自动化运维工具ansible初探
ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量程序的部署、批量运行命令等功能。

运维工具常见的工作模式 
1、agent模式: 基于ssl实现。代理工作在被监控端。像puppet。 
2、agentless模式: 基于ssh服务实现工作在被监控端。监控端是ssh的客户端。
ansible是工作在agentless模式下具有幂等性。ansible在控制端只需要告诉监控端的期望状态就可以实现批量部署。

名词解释 
幂等性不会重复执行相同的指令。例如不会重复安装软件 
期望状态只需要告诉被监控端的期望状态
ansible是基于模块工作的ansible本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块ansible只是提供一种框架。架构包括

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

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

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

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

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

三、基本使用方法
 
在管理集群时,ansible需要先配置集群hosts列表以方便集群操作

复制代码代码如下:
$ cat /etc/ansible/hosts
[local]
# 配置密码登陆,需要ansible本机安装sshpass
192.168.213.135 ansible_ssh_user=root ansible_ssh_pass=root
[zabbix]
# 密钥登陆
172.17.0.2:49154 ansible_ssh_user=root
172.17.0.4:49155 ansible_ssh_user=root
[vpn]
172.17.0.10
 
测试连接登陆是否OK

复制代码代码如下:
$ ansible local -m ping
192.168.213.135 | success {
"changed": false,
"ping": "pong"
}
 
ansible常见用法为ansible host-pattern -m 模块 -a 命令,host-pattern类似于简化的正则表达式,而模块可以通过ansible-doc -l命令来查询。下面是一些常用模块的使用方法:
安装软件:
复制代码代码如下:ansible local -m apt -a ‘name=gcc state=present’或者
复制代码代码如下:ansible local -m yum -a “name=nmap state=installed”
执行命令:
复制代码代码如下:ansible local -m shell -a ‘uptime’
拷贝文件:
复制代码代码如下:ansible local -m copy -a “src=/tmp/server dest=/tmp/server”
文件属性:
复制代码代码如下:ansible local -m file -a “dest=/tmp/server mode=755 owner=root group=root”
*
 
playbook
 
playbook是由一个或多个“play”组成的列表。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。
 
一个简单的playbook配置如下:

复制代码代码如下:
- hosts: local
remote_user: root
tasks:
- name: echo hi
shell: echo "hi"
 
ansible还支持设置handlers,handlers是在执行tasks之后服务器发生变化之后可供调用的handler,使用起来如下:

复制代码代码如下:
# playbook.yml
---
- hosts: local # hosts中指定
remote_user: root # 如果和当前用户一样,则无需指定
tasks:
- name: whoami
copy: src=~/hosts dest=~/hosts.dest # 本地拷贝到远端
notify: # 如果copy执行完之后~/hosts.dest文件发送了变化,则执行
- clear copy # 调用handler
handlers:
- name: clear copy
shell: 'mv ~/hosts.dest hosts.del' # 假装删除

标签:
Linux,ansible

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
评论“Linux下的自动化运维工具ansible初探”
暂无“Linux下的自动化运维工具ansible初探”评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。