小机灵鬼|自动化运维工具:ansible(二)


小机灵鬼|自动化运维工具:ansible(二)接(上篇)自动化运维工具:ansible(一)
13、ansible系列命令1>ansible-galaxy
连接下载相应的roles(角色)
列出所有已安装的galaxy

  • ansible-galaxy list
安装galaxy
  • ansible-galaxy install geerlingguy.redis
删除galaxy
  • ansible-galaxy remove geerlingguy.redis
2>ansible-pull推送命令至远程 , 效率无限提升 , 对运维要求较高
3>Ansible-playbook
(1)playbook是由一个或多个 "play" 组成的列表 , 采用YAML语言编写 。play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色 。 从根本上来讲 , 所谓task无非是调用ansible的一个module 。 将多个play组织在一个playbook中 , 即可以让它们联同起来按事先编排的机制同唱一台大戏 。
(2)YAML是一个个可读性高的用来表达资料序列的格式 。 YAML参考了其他多种语言 , 包括:XML、C语言、Python、 Perl以及电子邮件格式RFC2822等 。YAML Ain't Markup Language , 即YAML不是XML 。 不过 , 在开发的这种语言时 , YAML的意思其实是:"Yet Another Markup Language" (仍是一种标记语言)
特性:
  • YAML的可读性好
  • YAML和脚本语言的交互性好
  • YAML使用实现语言的数据类型
  • YAML有一个一致的信息模型
  • YAML易于实现
  • YAML可以基于流来处理
  • YAML表达能力强 , 扩展性好
更多的内容及规范参见
(3)在单一档案中 , 可用连续三个连字号(一)区分多个档案 。 另外 , 还有选择性的连续三个点号(...)用来表示档案结尾次行开始正常写Playbook的内容 , 一般建议写明该Playbook的功能使用#号注释代码
  • 缩进必须是统一的 , 不能空格和tab混用
  • 缩进的级别也必须是一致的 , 同样的缩进代表同样的级别 , 程序判别配置的级别是通过缩进结合换行来实现的
  • YAML文件内容和Linux系统大小写判断方式保持一致 , 是区别大小写的 , k/v的值均需大小写敏感
  • k/v的值可同行写也可换行写 。 同行使用:分隔
  • v可是个字符串 , 也可是另一个列表
  • 一个完整的代码块功能需最少元素需包括name: task
  • 一个name只能包括一个task
  • YAML文件扩展名通常为yml或yaml
(4)List:列表 , 其所有元素均使用"-"打头
示例:[root@ansible ansible]#cat file.yml ---- hosts: webserver#一个hosts列表 , 定义针对的列表主机remote_user: roottasks:#任务- name: create new file#任务列表1file: name=/root/newfile state=touch- name: create new user#任务列表2user: name=test system=yes shell=/sbin/nologin(5)Dictionary:字典 , 通常由多个key与value构成
示例:# An employee recordname: Example Developerjob: Developerskill: Elite也可以将key:value放置于{}中进行表示 , 用","分隔多个key:value
# An employee record{name: Example Developer, job: Developer, skill: Elite}
(6)Hosts:执行的远程主机列表
playbook中的每一个play的目的都是为了让某个或某些主机以某个指定的用户身份执行任务 。 hosts用于指定要执行指定任务的主机 , 须事先定义在主机清单中 。
可以是如下形式: