阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

运维自动化工具Ansible的简单介绍

462次阅读
没有评论

共计 5483 个字符,预计需要花费 14 分钟才能阅读完成。

一、简介

ansible 是个什么东西呢?官方的 title 是“Ansible is Simple IT Automation”——简单的自动化 IT 工具。这个工具的目标有这么几项:让我们自动化部署 APP;自动化管理配置项;自动化的持续交付;自动化的(AWS)云服务管理。

所有的这几个目标本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。就像我之前有介绍过的 Fabric,以及我们基于 Fabric 开发的自动化应用部署的工具:Essay。都是做了这么个事——批量的在远程服务器上执行命令。

那么 fabric 和 ansible 有什么差别呢?简单来说 fabric 像是一个工具箱,提供了很多好用的工具,用来在 Remote 执行命令,而 Ansible 则是提供了一套简单的流程,你要按照它的流程来做,就能轻松完成任务。这就像是库和框架的关系一样。

当然,它们之间也是有共同点的——都是基于 paramiko 开发的。这个 paramiko 是什么呢?它是一个纯 Python 实现的 ssh 协议库。因此 fabric 和 ansible 还有一个共同点就是不需要在远程主机上安装 client/agents,因为它们是基于 ssh 来和远程主机通讯的。

Ansible 快速上手  http://www.linuxidc.com/Linux/2013-11/92255.htm

二、安装及初步使用

    2.1、编译安装,本处使用 yum 安装   

[root@localhost ~]# yum install -y ansible

    说明:如果想要 yum 安装的话,请配置 epel 源

    2.2、准备配置文件

    修改 /etc/ansible/hosts 文件

[webservers]

172.16.130.2

172.16.130.3

可以用主机名也可以用 ip 地址

可以定于多个

  2.2、简单应用

    ansible 通过 ssh 实现配置管理、应用部署、任务执行等功能,因此,需要事先配置 ansible 端能基于密钥认证的方式联系各被管理节点。

    ansible <host-pattern> [-f forks] [-m module_name] [-a args]

    例如:要查看两台机器的时间

[root@localhost ansible]# ansible all -a “date”

192.168.1.201 | success | rc=0 >>

Fri Mar 28 16:02:25 CST 2014

192.168.1.200 | success | rc=0 >>

Sat Apr 19 20:55:25 CST 2014

  -m module:默认为 command

    ansible-doc 查看 ansible 的模块

        -l 列出所有的 ansible 模块

        -s 列出该模块的相关指令

    2.3、YAM

    YAML 是一个可读性高的用来表达资料序列的格式。YAML 参考了其他多种语言,包括:XML、C 语言、Python、Perl 以及电子邮件格式 RFC2822 等。Clark Evans 在 2001 年在首次发表了这种语言,另外 Ingy  Net 与 Oren Ben-Kiki 也是这语言的共同设计者。

    YAML Ain’t Markup Language,即 YAML 不是 XML。不过,在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言)。其特性:

    YAML 的可读性好

    YAML 和脚本语言的交互性好

    YAML 使用实现语言的数据类型

    YAML 有一个一致的信息模型

    YAML 易于实现

    YAML 可以基于流来处理

    YAML 表达能力强,扩展性好

    YAML 的官方网站 http://www.yaml.org。

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-04/100810p2.htm

2.4、YAML 语法

YAML 的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。其结构(Structure)通过空格来展示,序列(Sequence)里的项用 ”-“ 来代表,Map 里的键值对用 ”:” 分隔。下面是一个示例。

name: John Smith

age: 41

gender: Male

spouse:

name: Jane Smith

age: 37

gender: Female

children:

– name: Jimmy Smith

age: 17

gender: Male

– name: Jenny Smith

age 13

gender: Female

YAML 文件扩展名通常为.yaml,如 example.yaml。

2.5 ansible playbooks

playbook 是由一个或多个“play”组成的列表。play 的主要功能在于将事先归并为一组的主机装扮成事先通过 ansible 中的 task 定义好的角色。从根本上来讲,所谓 task 无非是调用 ansible 的一个 module。将多个 play 组织在一个 playbook 中,即可以让它们联同起来按事先编排的机制同唱一台大戏

hosts: webnodes

vars:

http_port: 80

max_clients: 256

remote_user: root

tasks:

– name: ensure apache is at the latest version

yum: name=httpd state=latest

– name: ensure apache is running

service: name=httpd state=started

handlers:

– name: restart apache

service: name=httpd state=restarted

2.6 playbook 基础组建

①、HOSTS 和 Users

playbook 中的每一个 play 的目的都是为了让某个或某些主机以某个指定的用户身份执行任务。hosts 用于指定要执行指定任务的主机,其可以是一个或多个由冒号分隔主机组;remote_user 则用于指定远程主机上的执行任务的用户。如上面示例中的

-hosts: webnodes

remote_user: root

不过,remote_user 也可用于各 task 中。也可以通过指定其通过 sudo 的方式在远程主机上执行任务,其可用于 play 全局或某任务;此外,甚至可以在 sudo 时使用 sudo_user 指定 sudo 时切换的用户。

– hosts: webnodes

remote_user: wangfeng7399

tasks:

– name: test connection

ping:

remote_user: wangfeng7399

sudo: yes

②、任务列表和 cation

play 的主体部分是 task list。task list 中的各任务按次序逐个在 hosts 中指定的所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。在运行自下而下某 playbook 时,如果中途发生错误,所有已执行任务都将回滚,因此,在更正 playbook 后重新执行一次即可。

task 的目的是使用指定的参数执行模块,而在模块参数中可以使用变量。模块执行是幂等的,这意味着多次执行是安全的,因为其结果均一致。

每个 task 都应该有其 name,用于 playbook 的执行结果输出,建议其内容尽可能清晰地描述任务执行步骤。如果未提供 name,则 action 的结果将用于输出。

定义 task 的可以使用“action: module options”或“module: options”的格式,推荐使用后者以实现向后兼容。如果 action 一行的内容过多,也中使用在行首使用几个空白字符进行换行。

tasks:

– name: make sure apache is running

service: name=httpd state=running

在众多模块中,只有 command 和 shell 模块仅需要给定一个列表而无需使用“key=value”格式,例如:

tasks:

– name: disable selinux

command: /sbin/setenforce 0

如果命令或脚本的退出码不为零,可以使用如下方式替代:

tasks:

– name: run this command and ignore the result

shell: /usr/bin/somecommand || /bin/true

或者使用 ignore_errors 来忽略错误信息:

tasks:

– name: run this command and ignore the result

shell: /usr/bin/somecommand

ignore_errors: True

③、handlers

 

用于当关注的资源发生变化时采取一定的操作。

“notify”这个 action 可用于在每个 play 的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之,仅在所有的变化发生完成后一次性地执行指定操作。在 notify 中列出的操作称为 handler,也即 notify 中调用 handler 中定义的操作。

– name: template configuration file

template: src=template.j2 dest=/etc/foo.conf

notify:

– restart memcached

– restart apache

handler 是 task 列表,这些 task 与前述的 task 并没有本质上的不同。

handlers:

– name: restart memcached

service: name=memcached state=restarted

– name: restart apache

service: name=apache state=restarted

一、简介

ansible 是个什么东西呢?官方的 title 是“Ansible is Simple IT Automation”——简单的自动化 IT 工具。这个工具的目标有这么几项:让我们自动化部署 APP;自动化管理配置项;自动化的持续交付;自动化的(AWS)云服务管理。

所有的这几个目标本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。就像我之前有介绍过的 Fabric,以及我们基于 Fabric 开发的自动化应用部署的工具:Essay。都是做了这么个事——批量的在远程服务器上执行命令。

那么 fabric 和 ansible 有什么差别呢?简单来说 fabric 像是一个工具箱,提供了很多好用的工具,用来在 Remote 执行命令,而 Ansible 则是提供了一套简单的流程,你要按照它的流程来做,就能轻松完成任务。这就像是库和框架的关系一样。

当然,它们之间也是有共同点的——都是基于 paramiko 开发的。这个 paramiko 是什么呢?它是一个纯 Python 实现的 ssh 协议库。因此 fabric 和 ansible 还有一个共同点就是不需要在远程主机上安装 client/agents,因为它们是基于 ssh 来和远程主机通讯的。

Ansible 快速上手  http://www.linuxidc.com/Linux/2013-11/92255.htm

二、安装及初步使用

    2.1、编译安装,本处使用 yum 安装   

[root@localhost ~]# yum install -y ansible

    说明:如果想要 yum 安装的话,请配置 epel 源

    2.2、准备配置文件

    修改 /etc/ansible/hosts 文件

[webservers]

172.16.130.2

172.16.130.3

可以用主机名也可以用 ip 地址

可以定于多个

  2.2、简单应用

    ansible 通过 ssh 实现配置管理、应用部署、任务执行等功能,因此,需要事先配置 ansible 端能基于密钥认证的方式联系各被管理节点。

    ansible <host-pattern> [-f forks] [-m module_name] [-a args]

    例如:要查看两台机器的时间

[root@localhost ansible]# ansible all -a “date”

192.168.1.201 | success | rc=0 >>

Fri Mar 28 16:02:25 CST 2014

192.168.1.200 | success | rc=0 >>

Sat Apr 19 20:55:25 CST 2014

  -m module:默认为 command

    ansible-doc 查看 ansible 的模块

        -l 列出所有的 ansible 模块

        -s 列出该模块的相关指令

    2.3、YAM

    YAML 是一个可读性高的用来表达资料序列的格式。YAML 参考了其他多种语言,包括:XML、C 语言、Python、Perl 以及电子邮件格式 RFC2822 等。Clark Evans 在 2001 年在首次发表了这种语言,另外 Ingy  Net 与 Oren Ben-Kiki 也是这语言的共同设计者。

    YAML Ain’t Markup Language,即 YAML 不是 XML。不过,在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言)。其特性:

    YAML 的可读性好

    YAML 和脚本语言的交互性好

    YAML 使用实现语言的数据类型

    YAML 有一个一致的信息模型

    YAML 易于实现

    YAML 可以基于流来处理

    YAML 表达能力强,扩展性好

    YAML 的官方网站 http://www.yaml.org。

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-04/100810p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计5483字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7964552
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...