Ansible系列命令详解
Posted 云技术实践
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible系列命令详解相关的知识,希望对你有一定的参考价值。
2.4.1 Ansible
//检查服务器存活
ansible web1 –m ping
//复制本地文件到远程
ansible web1 –m copy –a “src=/etc/fstab dest=/tmp/fstab owner=root group=root mode=644 backup=yes”
图2-2 Ansible执行结果错误的结果返回
图2-3 Ansible执行结果正确的结果返回
ansible-galaxy [init|info|install|list|remove] [--help] [options] ...
(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|--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.
*/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
输入预设的密码后方式解密:
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 Ansible-console命令用法1
如图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这时是最佳选择。
作者介绍:
李松涛《Ansible权威指南》作者,华章签约作者。
腾讯游戏部门资深运维、原九城游戏部门运维平台架构师,维护过上千节点游戏服务器,手下的几款游戏每年给公司带来上亿收入,对自动化、平台架构、服务平台安全、云平台框架有着深刻的理解和丰富的经验,带零LINUX基础同学实现职业转换;成功支持数十万CCU游戏,由自己完全设计和开发到上线的自动化平台,使得某业务成功由全手动到全自动的进阶,节省50%人力,为项目节省海量资金,多次在公司专家讲座学院做课程分享,深受一致好评。
李老师确认出席运维前线沙龙,分享主题:《Ansible运维实战》
《运维前线》新书发布,十三位前线运维专家倾力奉献,现场送出30本。云技术社区、华章书院、优云联手倾力精彩奉献!现场另有云技术社区定制数据线、北极熊袋子等精美礼品!2017年首场专业运维会议,一线专家解密当前运维前线,扫码或者点击阅读原文立即报名!
加入云技术社区技术交流微信群,联系北极熊微信:hadxiaer(加的时候请备注:姓名-城市-公司)
交流 分享 提升
以上是关于Ansible系列命令详解的主要内容,如果未能解决你的问题,请参考以下文章