使用Playbook管理复杂任务

2019-10-17 15:21:14 浏览数 (1)

1.Ansible-PlayBook

Playbook是通过yaml文件来配置实现

YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。其结构(Structure)通过空格来展示,序列(Sequence)里的项用"-"来代表,Map里的键值对用":"分隔。YAML文件扩展名通常为.yaml,如example.yaml。

Playbook可以用来管理复杂任务

对于需反复执行的、较为复杂的任务,我们可以通过定义 Playbook 来搞定。Playbook 是 Ansible 真正强大的地方,它允许使用变量、条件、循环、以及模板,也能通过角色 及包含指令来重用既有内容。下面我们来看看一些具体的实例。

实践1:批量安装MySQL数据库

编写yaml

代码语言:javascript复制
 - hosts: webserver   remote_user: root   tasks:     - name: mysql-server install       yum: name=mysql-server state=present

参数解析

代码语言:javascript复制
选项解析:hosts:webserver         #指定要执行指定任务的主机,其可以是一个或多个由冒号分隔主机组remote_user:root         #用于指定远程主机上的执行任务的用户tasks:#  任务-name:mysql-server  installing    # 给这个任务起的名字yum:name=mysql-server           #利用yum模块,安装软件的包名为mysql-serverstate=present                 #状态为安装  state=absent                  #状态为卸载

执行

代码语言:javascript复制
ansible all -a "/bin/rpm -q mysql-server"ansible-playbook mysql-server.yaml

看到结果,ok=2 changed=1 说明客户机上的mysql-server安装成功了!

验证一下 mysql-server是否成功

代码语言:javascript复制
ansible all -a "/bin/rpm -q mysql-server  "ansible all -a "/sbin/service mysqld start "     #启动mysqld

实践2:使用playbook创建计划任务

编写yaml

代码语言:javascript复制
 - hosts: webserver   remote_user: root   tasks:    - name: crontab      cron: name="testjob" day='10' job="sh /opt/backup.sh"

运行

代码语言:javascript复制
 ansible-playbook crond.yaml

看到结果,ok=2 changed=1 说明客户机上的crontab计划创建成功了!

代码语言:javascript复制
ansible all -a 'crontab -l '     #查看各个节点crontab


注:

"ansible-doc -l" 命令来查看它内置的有哪些模块。

"ansible-doc 模块名" 命令来查看具体模块的详细用法。

感谢查阅,欢迎你给我留言,也欢迎分享更多的朋友一起阅读!

0 人点赞