YAML 非标记语言

1、简介:

YAML:非标记语言(YAML Ain't Markup Language),YAML 允许将复杂的数据结构,如列表、映射、字符串、整数、浮点数等,以一种可读的方式进行序列化和表示。

Ansible 使用 YAML 作为配置的标准格式,可以定义和管理复杂的基础设施和应用程序配置。

2、语法:

(1) 列表:YAML 可用列表表示一组相关的值

fruits:

  - apple

  - banana

  - orange

(2) 键值对:YAML 允许表示键值对的数据,用于表示配置项或属性

name: John

age: 30

3、示例:

通过 YAML 编写剧本,完成 web 的部署和配置

(1) ansible 服务器配置(准备 apache 配置文件):

yum install -y httpd

mkdir apache

cd apache

cp -rf /etc/httpd/conf/httpd.conf  .  

YAML 非标记语言_第1张图片

将监听端口修改为 8080:

(2) 编写剧本:

vim apache.yaml

- hosts: host1

  tasks:

  - name: install apache

    yum: name=httpd state=present

  - name: copy apache conf

    copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf

  - name: ensure apache is running

    service: name=httpd state=started enabled=yes

YAML 非标记语言_第2张图片

(3) 测试剧本:

ansible-playbook  apache.yaml  --syntax-check

● --syntax-check:一个命令行选项,用于指定的 playbook 文件的语法是否正确,而不实际执行它。如果 playbook 中存在语法错误,Ansible 将显示错误消息。

ansible-playbook  apache.yaml  --list-tasks

● --list-tasks:查看 playbook 中包含哪些任务以及它们的顺序。

YAML 非标记语言_第3张图片

(4) 执行剧本:

ansible 服务器:ansible-playbook apache.yaml

YAML 非标记语言_第4张图片

查看客户机上的配置:

查看 apache 是否运行:

YAML 非标记语言_第5张图片

(5) handlers:

① 作用:

handlers 模块用于定义和管理处理器,用于在特定条件下触发任务,例如服务状态的更改或配置文件的变化。处理器充当响应机制,可确保在需要时执行特定的操作,如重启服务或执行其他维护任务。

② 配置文件发生变化:

在 ansible 服务器上将 apache 监听端口改成 9000,再执行剧本,配置会从 ansible 服务器拷到客户机,但不会生效

YAML 非标记语言_第6张图片

不能直接将剧本里的服务模块改成 restarted,这样不管配置文件有没有更新,每次调用剧本,都会重启 apache 服务器。

③ 修改剧本:

- hosts: host1

  tasks:

  - name: install apache

    yum: name=httpd state=present

  - name: copy apache conf

    copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf

    notify: restart apache service

  - name: ensure apache is running

    service: name=httpd state=started enabled=yes

  handlers:

  - name: restart apache service

    service: name=httpd state=restarted

● handlers:定义一个重启 apache 服务器的特定任务;

● notify:当剧本的任务状态变为 "changed",Ansible 将自动触发与名称匹配的程序(restart apache service),notify 后面跟的内容必须与 handlers 定义的程序名称一致。

YAML 非标记语言_第7张图片

④ 将端口修改为 9009,执行剧本:

YAML 非标记语言_第8张图片

查看客户机上的端口,可发现端口修改已生效:

YAML 非标记语言_第9张图片

你可能感兴趣的:(Ansible,ansible,http,apache,linux,网络)