《Ansible权威指南 》一2.4 Ansible系列命令用法详解与使用场景介绍

 ansible
ansible-galaxy
ansible-pull
ansible-doc
ansible-playbook
ansible-vault
ansible-console

2.4.1 ansible

命令ansible是日常工作中使用率非常高的命令之一,man中是如此定义其功能的:run a command somewhere else,可见其灵活性。ansible命令主要在如下场景使用:
非固化需求
临时一次性操作
二次开发接口调用
那么什么是非固化需求和临时一次性操作呢?简单来讲,比如工作中我临时想查看web1服务器组是否存活,或我想临时复制本地的/etc/fstab到web服务器组的/tmp目录下做测试,类如这些没有规律的、临时需要做的任务,我们称之为非固化需求、临时一次性操作。具体的命令使用如下:

// 检查服务器存活
ansible web1 –m ping
// 复制本地文件到远程
ansible web1 –m copy –a "src=/etc/fstab dest=/tmp/fstab owner=root group=root mode=644 backup=yes"

Ansible的返回结果都非常友好,一般会用3种颜色来表示执行结果:红色、绿色、橘黄色。其中红色表示执行过程有异常,一般会中止剩余所有的任务,如图2-2所示的Ansible执行结果错误的结果返回;绿色和橘黄色表示执行过程没有异常,所有任务均正常执行,但橘黄色表示命令执行结束后目标有状态的变化。如图2-3所示,Ansible执行结果正确的结果返回中的圆圈1为橘黄色显示;而绿色表示命令执行结束后目标没有状态变化,如图2-3中的圆圈2显示。

不仅ansible命令的执行结果如此设置,Ansible系列命令均如此设置,所以判断Ansible系列命令的执行结果是否正常是一件非常容易的事情,只要看颜色即可。

2.4.2 ansible-galaxy

这里的galaxy和三星手机没有任何关系。ansible-galaxy的功能可以简单地理解为GitHub或PIP的功能,通过ansible-galaxy命令,我们可以根据下载量和关注量等信息,查找和安装优秀的Roles。Roles是Ansible非常重要的一项功能,关于Roles的详细功能会在第6章介绍。在ansible-galaxy上,我们可以上传和下载Roles,这里也是优秀Roles的聚集地。
ansible-galaxy命令使用格式如下:

ansible-galaxy [init|info|install|list|remove] [--help] [options] ...

ansible-galaxy命令分三大部分:
(1)[init|info|install|list|remove]

init:初始化本地的Roles配置,以备上传Roles至galaxy。
info:列表指定Role的详细信息。
install:下载并安装galaxy指定的Roles到本地。
list:列出本地已下载的Roles。
remove:删除本地已下载的Roles。

Ansible 2.0版本中,针对ansible-galaxy增加了login、import、delete、setup等功能,但这些功能需基于login在galaxy认证成功后方可执行,主要为了方便对galaxy上已有的Roles的配置工作。
(2)help用法显示[--help]
针对第一部分的init、info等功能,其后跟--help可单独显示该项用法。例如:

ansible-galaxy init ––help

执行后会返回ansible-galaxy init选项的用法说明。

Usage: ansible-galaxy init [options] role_name

Options:
    -f, --force           Force overwriting an existing role
    -h, --help            show this help message and exit
    -c, --ignore-certs    Ignore SSL certificate validation errors.
    -p INIT_PATH, --init-path=INIT_PATH
                          The path in which the skeleton role will be created.
                          The default is the current working directory.
    --offline             Don't query the galaxy API when creating roles
    -s API_SERVER, --server=API_SERVER
                          The API server destination
    -v, --verbose         verbose mode (-vvv for more, -vvvv to enable
                          connection debugging)
    --version             show program's version number and exit

其他选项与help用法一样。
(3)参数项[options]
该部分结合第一部分的参数完成ansible-galaxy完整的功能用法,如:
ansible-galaxy init [options] role_name即ansible-galaxy init后跟[-f|-h|-c|-p|--off?line|-s SERVER|-v|--version]参数,后跟role-name成为一条完整的命令。
具体可参考如下:

// 下载用户hectcastro的Nginx这个Role到本地并忽略错误(默认存放在/etc/ansible/roles/)
ansible-galaxy --ignore-errors install azavea.git

因为ansible-galaxy是对https://galaxy.ansible.com网站的上传、下载、配置类工作,如有类似如下报错,请确保该网站可正常访问。
the API server (galaxy.ansible.com) is not responding, please try again later.

2.4.3 ansible-pull

该指令的使用涉及Ansible的另一种工作模式:pull模式(Ansible默认使用push模式)。这和通常使用的push模式工作机理刚好相反,其适用于以下场景:①你有数量巨大的机器需要配置,即使使用高并发线程依旧要花费很多时间;②你要在刚启动的、没有网络连接的主机上运行Anisble。
ansible-pull命令使用格式如下:

ansible-pull [options] [playbook.yml]

通过ansible-pull结合Git和crontab一并实现,其原理如下:通过crontab定期拉取指定的Git版本到本地,并以指定模式自动运行预先制订好的指令。
具体示例参考如下:

/20    * root /usr/local/bin/ansible-pull -o -C 2.1.0 -d /srv/www/king-gw/ -i /etc/ansible/hosts -U git:// git.kingifa.com/king-gw-ansiblepull >> /var/log/ansible-pull.log 2>&1

ansible-pull通常在配置大批量机器的场景下会使用,灵活性稍有欠缺,但效率几乎可以无限提升,对运维人员的技术水平和前瞻性规划有较高要求。

2.4.4 ansible-doc

ansible-doc是Ansible模块文档说明,针对每个模块都有详细的用法说明及应用案例介绍,功能和Linux系统man命令类似。该命令使用方式如下:
ansible-doc [options] [module...]
ansible-doc命令后跟[options]参数或[模块名],显示模块用法说明,具体示例如下:

// 列出支持的模块
ansible-doc –l
// 模块功能说明
ansible-doc ping

2.4.5 ansible-playbook

ansible-playbook是日常应用中使用频率最高的命令,其工作机制是:通过读取预先编写好的playbook文件实现批量管理。要实现的功能与命令ansible一样,可以理解为按一定条件组成的ansible任务集。
ansible-playbook命令后跟YML格式的playbook文件,执行事先编排好的任务集,命令使用方式如下:

ansible-playbook playbook.yml

具体示例如下:

// 执行gw.yml这个playbook中定义的所有任务集
ansible-playbook gw.yml

Playbook具有编写简单、可定制性高、灵活方便,以及可固化日常所有操作的特点,运维人员应熟练掌握。

2.4.6 ansible-vault

ansible-vault主要用于配置文件加密,如编写的Playbook配置文件中包含敏感信息,不希望其他人随意查看,ansible-vault可加密/解密这个配置文件,具体使用方式如下:

Usage: ansible-vault [create|decrypt|edit|encrypt|rekey|view] [--help] [options] file_name

具体示例如下。
设定如下密码,加密a.yml文件。
ansible-vault encrypt a.yml
会有以下输入加密密码提示:

Vault password:
Confirm Vault password:
Encryption successful

这时,再打开a.yml文件后会发现该文件乱码,只有通过如下命令解密后方可正常查看。
ansible-vault decrypt a.yml
输入预设的密码后方可解密。

Vault password:
Decryption successful

此时a.yml文件可正常查看。
到此,我们对Ansible的用法及系列命令已经有了概念性的了解和掌握,接下来我们进一步了解Ansible Inventory文件的配置管理。

2.4.7 ansible-console

ansible-console是Ansible为用户提供的一款交互式工具,用户可以在ansible-console虚拟出来的终端上像Shell一样使用Ansible内置的各种命令,这为习惯于使用Shell交互方式的用户提供了良好的使用体验。ansible-console主要是针对1.X版本中ansible-shell工具而研发的,目前官网还没有对ansible-console进行详细的用法说明,最新版本的Ansible软件包也没有对应的man文档说明。经笔者实测,ansible-console命令的使用格式如下。
在终端键入ansible-console命令后,会进入如图2-4所示的类似Shell一样的交互式终端环境。

图2-4中的“root@all (4)[f:5]$”是提示符,该提示符表示“当前的使用用户@当前所在的Inventory中定义的组,默认是all分组(Inventory中all组所有主机的数量)[forks:线程数]$”。
使用cd命令可切换至指定Hosts或分组,同时提示符的相应信息也会随之变动,如图2-5所示。

如图2-5中的Ansible-console命令用法2所示,cd至webs分组后,原来的root@all (4)[f:5]$也相应地变更为root@webs (3)[f:5],表示当前分组为webs分组,该分组所拥有的主机总数为3台。执行forks 2后,提示符再次变更为root@webs (3)[f:2]$,表示设置并发的线程数为2。
所有的操作与Shell类似,而且支持Tab键补全,如启动httpd服务时,键入service后连续按两次Tab键后会自动补全剩余的命令选项。ansible-console命令用法3如图2-6所示。

如需启动httpd服务,使用命令service name=httpd state=started,命令用法与Ad-Hoc一致,只是格式上的使用习惯不同而已。如想获取service模块更详细的用法,输入help service命令即可。ansible-console命令用法4如图2-7所示。

使用完毕如希望退出,按快捷键Ctrl+D或Ctrl+C即可退出当前的虚拟终端。
ansible-console命令在实际工作中用于Ad-Hoc和Ansible-playbooks之间的场景,常用于集中一批临时操作或命令,使用Ad-Hoc要键入很多次但整体操作的复杂度又不至于使用Playbooks时,这时ansible-console是最佳选择。

时间: 2024-10-24 19:11:23

《Ansible权威指南 》一2.4 Ansible系列命令用法详解与使用场景介绍的相关文章

《Ansible权威指南》一2.4 Ansible系列命令用法详解与使用场景介绍

2.4 Ansible系列命令用法详解与使用场景介绍 如何获取Ansible的系列命令呢?在终端键入ansible后连续按两次Tab键,会补全所有以ansible字母开头的命令,这些命令均是Ansible系列命令.本节我们来逐一介绍Ansible的系列命令使用. ansible ansible-galaxy ansible-pull ansible-doc ansible-playbook ansible-vault ansible-console 2.4.1 ansible 命令ansible

《Ansible权威指南 》一Ansible命令用法详解

2.3 Ansible命令用法详解 Ansible命令行执行方式有Ad-Hoc.Ansible-playbook两种方式,Web化执行方式其官方提供了付费产品Tower(10台以内免费),个人的话可以基于其提供的API开发类似的Web化产品.关于命令行执行的两种方式Ad-Hoc和Ansible-playbooks.什么是Ad-Hoc及Ad-Hoc与Ansible-playbook的区别我们在第3章有详细介绍,这里不再赘述.需简要说明的是两者没有本质上的区别,Ad-Hoc主要用于临时命令的执行,A

《Ansible权威指南》一2.3 Ansible命令用法详解

2.3 Ansible命令用法详解 Ansible命令行执行方式有Ad-Hoc.Ansible-playbook两种方式,Web化执行方式其官方提供了付费产品Tower(10台以内免费),个人的话可以基于其提供的API开发类似的Web化产品.关于命令行执行的两种方式Ad-Hoc和Ansible-playbooks.什么是Ad-Hoc及Ad-Hoc与Ansible-playbook的区别我们在第3章有详细介绍,这里不再赘述.需简要说明的是两者没有本质上的区别,Ad-Hoc主要用于临时命令的执行,A

Ansible权威指南.

Linux/Unix技术丛书 Ansible权威指南 李松涛 魏 巍 甘 捷 著 图书在版编目(CIP)数据 Ansible权威指南 / 李松涛,魏巍,甘捷著. -北京:机械工业出版社,2016.11 (Linux/Unix技术丛书) ISBN 978-7-111-55329-8 I. A- II. ①李- ②魏- ③甘- III. 程序开发工具-指南 IV. TP311.561-62 中国版本图书馆CIP数据核字(2016)第258615号 Ansible权威指南 出版发行:机械工业出版社(北

《Ansible权威指南 》一 导读

前 言 为什么要写这本书 首次接触Ansible是缘于一次杭州出差.当时接触互联网3年左右,正是技能的储备阶段,看到Ansible这样的新兴自动化工具不免充满好奇.当时腾讯的蓝鲸还没有出来,但abs脚本和ijobs自动化体系已经应用多年,并在整个IEG中心广泛应用.大型企业讲究分工精细化,各司其职,强大的自我研发能力.但伴随业绩和KPI的压力,很多人其实是没有多余精力关注外界技术领域的发展,尤其是游戏行业,行业自身属性对开发人员的技术能力要求非常高,前沿开源技术与业务特殊性需求并不能很好地融合,

深入理解JavaScript系列(34):设计模式之命令模式详解

 这篇文章主要介绍了深入理解JavaScript系列(34):设计模式之命令模式详解,命令模式(Command)的定义是:用于将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及执行可撤销的操作,需要的朋友可以参考下     介绍 命令模式(Command)的定义是:用于将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及执行可撤销的操作.也就是说改模式旨在将函数的调用.请求和操作封装成一个单一的对象,然

《Ansible权威指南 》一 3.3 Ad-Hoc组管理和特定主机变更

3.3 Ad-Hoc组管理和特定主机变更 3.2节为大家介绍了Ansible模块列表及HELP说明获取方式.日常运维工作中,我们往往会将负责相同场景应用的主机划分为一个组,以方便统一管理.Ansible也提供了简洁但强大的组管理功能.同时,我们也可能遇到只针对这组主机中一台或某些主机做变更的场景,针对这些复杂多变的企业场景,本节我们将深入了解Ad-Hoc组管理和特定主机变更,进一步了解Ansible如何应对复杂多变的企业环境. 3.3.1 Ad-Hoc组定义 Ad-Hoc的组功能定义在Inven

《Ansible权威指南》一3.3 Ad-Hoc组管理和特定主机变更

3.3 Ad-Hoc组管理和特定主机变更 3.2节为大家介绍了Ansible模块列表及HELP说明获取方式.日常运维工作中,我们往往会将负责相同场景应用的主机划分为一个组,以方便统一管理.Ansible也提供了简洁但强大的组管理功能.同时,我们也可能遇到只针对这组主机中一台或某些主机做变更的场景,针对这些复杂多变的企业场景,本节我们将深入了解Ad-Hoc组管理和特定主机变更,进一步了解Ansible如何应对复杂多变的企业环境. 3.3.1 Ad-Hoc组定义 Ad-Hoc的组功能定义在Inven

《Ansible权威指南》一第2章

第2章 Ansible基础元素介绍 第1章介绍了Ansible的功能作用.通信发展史.基础的安装部署及处理Ansible安装问题所需的Python多环境管理工具Pyenv和Virutalenv.在前期基本工作准备妥当的基础上,本章进一步深入学习Ansible的基础元素,会相继接触Ansible目录结构简介.Ansible系列命令.Ansible Inventory配置规范.Ansible模式匹配规则等,其中部分内容,诸如Inventory.Ansible-playbook等在后续涉及章节会更深入