Ansible Playbook的定义

Georgia ·
更新时间:2024-09-21
· 744 次阅读

Ansible的Playbook使用YAML编写,YAML的语法规则如下:

YAML文件中的第一行为“---”,表示这是一个YAML文件; YAML中的字段大小写敏感; YAML与Python一样,使用缩进表示层级关系; YAML的缩进不允许使用Tab键,只允许使用空格,且空格的数目不重要,只要相同层级的元素左侧对齐即可; “#”表示注释,从这个字符一直到行尾都会被解析器忽略。

 

YAML支持三种格式的数据,分别是:

对象:键值对的集合,又称为映射,类似于Python中的字典; 数组:一组按次序排列的值,又称为序列(sequence),类似于Python中的列表; 纯量(scalars):单个的、不可再分的值,如字符串、布尔值与数字。

Playbook示例一:

针对centos6系统安装mysql-server,使用shell模块启动mysql服务;

centos7系统安装mariadb-server,使用yum模块启动mariadb服务;

---
 - hosts: web
#   gather_facts: True
   tasks:
    - name: install mariadb in centos7
      yum: name=mariadb-server state=present
      when: ansible_distribution_major_version == "7"
    - name: start mariadb in centos7
      service: name=mariadb state=started enabled=yes
      when: ansible_distribution_major_version == "7"
    - name: install mysql in centos6 
      yum: name=mysql-server state=present 
      when: ansible_distribution_major_version == "6"
    - name: start mysql-server in centos6
      shell: /etc/init.d/mysqld start
      when: ansible_distribution_major_version == "6"
hosts: 需要对哪些远程服务器执行操作(此处为默认inventory hosts文件/etc/ansible/hosts定义的主机组web,含两台机器,一台centos7,一台centos6) tasks: 需要在这些服务器上执行的任务列表 name: 下面执行的操作任务名称(自定义),playbook执行时显示 yum: 调用yum模块执行任务,name为服务名称,state为软件包状态,present为安装此软件包 when: 为判断条件,判断主机系统是否为6或7系统,ansible_distribution_major_version为ansible内部变量,直接使用,具体内部有哪些变量可执行ansible web -m setup来查看输出信息 service: 调用service模块执行任务,name为服务名称,state为服务状态,started为启动此服务,enabled为yes代表开机自启 shell: 调用shell模块执行此任务,后接shell命令即可
作者:老板,给我来块大一点的砖丶



playbook ansible

需要 登录 后方可回复, 如果你还没有账号请 注册新账号