火炬之光2控制台命令,火炬之光2指令台

文史通2年前历史故事问答322

目录:

2.4.1 Ansible

2.4.2 Ansible-galaxy

2.4.3 Ansible-pull

2.4.4 Ansible-doc

2.4.5 Ansible-playbook

2.4.6 Ansible-vault

2.4.7 Ansible-console

2.4.1 Ansible

2.4.2 Ansible-galaxy

2.4.3 Ansible-pull

2.4.4 Ansible-doc

2.4.5 Ansible-playbook

2.4.6 Ansible-vault

2.4.7 Ansible-console

此文章共计1900字左右,阅读时间约为5分钟,今天推荐给大家的文章主要讲解了Ansible系列命令,并对每一个能使用到的命令进行了详细的解说,也为更多的Ansible初学者带来更好的引导。如有什么问题,大家可以公众号中直接留言。

如何获取Ansible的系列命令是什么呢?在终端键入ansible后连续两次Tab补全会补全所有以ansible字母开头的命令,这些命令均是Ansible系列命令,本节我们来逐一为大家介绍Ansible的系列命令使用。

ansible

ansible-galaxy

ansible-pull

ansible-doc

ansible-playbook

ansible-vault

ansible-console

展开全文

ansible

ansible-galaxy

ansible-pull

ansible-doc

ansible-playbook

ansible-vault

ansible-console

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

图2-2 Ansible执行结果错误的结果返回

图2-3 Ansible执行结果正确的结果返回

不仅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。

init:初始化本地的Roles配置,以备上传Roles至galaxy。

info:列表指定Role的详细信息。

install:下载并安装galaxy指定的Roles到本地。

list:列出本地已下载的Roles。

remove:删除本地已下载的Roles。

Ansible2.0版本中,针对ansible-galaxy增加了login、import、delete、setup等功能,但这些功能需基于login在galaxy认证成功后方可执行,主要方便了对galaxy上的已有Roles的配置工作。

(2) 第二部分的help用法显示[—help]

针对第一部分的init、info等功能,其后—help后可显示单独显示该项用法。如:

针对第一部分的init、info等功能,其后—help后可显示单独显示该项用法。如:

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

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

其它选项的该help用法一样。

其它选项的该help用法一样。

该部分结合第一部分的参数完成ansible-galaxy完整的功能用法,如:

ansible-galaxy init [options] role_name即ansible-galaxy init后跟[-f|-h|-c|-p|--offline|-s SERVER|-v|--version] 后跟rolename表示一条完整的命令。

具体可参考如下:

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

因为ansible-galaxy是对

the API server (galaxy.ansible.com) is not responding, please try again later. 2.4.3 Ansible-pull

该指令使用需要谈到Ansible的另一种工作模式:pull 模式(Ansible默认使用push模式)。这和通常使用的push模式工作机理刚好相反,其适用于以下场景:

(1)你有数量巨大的机器需要配置,即使使用高并发线程依旧要花费很多时间;

(2)你要在刚启动的没有网络连接的主机上运行Anisble。

(1)你有数量巨大的机器需要配置,即使使用高并发线程依旧要花费很多时间;

(2)你要在刚启动的没有网络连接的主机上运行Anisble。

通过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 具体示例如下:

1)执行如下密码,加密a.yml文件:ansible-vault encrypt a.yml

2)会有提示输入加密密码:Vault password: Confirm Vault password: Encryption successful

这里再打开a.yml后会发现该文件乱码,只有通过如下命令解密后方可正常查看:

ansible-vault decrypt a.yml

输入预设的密码后方式解密:

这里再打开a.yml后会发现该文件乱码,只有通过如下命令解密后方可正常查看:

火炬之光2控制台命令,火炬之光2指令台

ansible-vault decrypt a.yml

输入预设的密码后方式解密:

此时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 Ansible-console命令用法1

如图2.4中“root@all (4)[f:5]$ ”是提示符,该提示符分别表示“当前的使用用户@当前所在的Inventory中定义的组,默认是all分组 (Inventory中all组所有主机的数量)[forks:线程数]$”

如图2.4中“root@all (4)[f:5]$ ”是提示符,该提示符分别表示“当前的使用用户@当前所在的Inventory中定义的组,默认是all分组 (Inventory中all组所有主机的数量)[forks:线程数]$”

使用cd命令可切换至指定Hosts或分组,如图2-5同时提示符的相应信息也会随之变动:

图2-5 Ansible-console命令用法2

如图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键后会自动补全剩余的命令选项,如图2-6所示Ansible-console命令用法3所示:

图2-6 Ansible-console命令用法3

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

图2-7 Ansible-console命令用法4

使用完毕如希望退出,Ctrl+d或Ctrl+c即可退出当前的虚拟终端。

Ansible-console在实际工作中是间于Ad-Hoc和Ansible-playbooks之间的场景使用,常用于集中一批临时操作或命令,使用Ad-Hoc要键入很多次但整体操作的复杂度又不至于复杂要使用Playbooks时,Ansible-console这时是最佳选择。

火炬之光2控制台命令,火炬之光2指令台