10、ansible-YAML-非标记语言-剧本的编写-.yaml -剧本执行ansible-playbook-handlers触发

 

============================================================剧本的编写==================================================

通过YAML编写一个剧本,完成web的部署,配置,启动的全过程

1、先将目标主机的网站服务卸载

ansible all -m yum -a 'name=httpd state=removed' -o

·all 表示所有的主机

 

2、在本机安装httpd

yum install -y httpd

3、配置本机的httpd配置文件、自己准备一个配置文件

  ·新建一个文件夹放配置文件,方便给其它目标主机统一发过去

    ··mkdir apache    //这里我在/home目录下新建

    ··将httpd的配置文件拷进去   cp /etc/httpd/conf/httpd.conf   /home/apache

    ··修改配置文件里的 监听端口  改成8080    

          

 

4、编写剧本  就是以.yaml为后缀的文本

  · 剧本后缀要以yaml结尾  

  ·vim  apache.yaml

- hosts: webserver                    //针对的目标主机  这里webserver是一个组 组下有四台主机
  tasks:                          //task  是下边要执行的任务
  - name: intall apache packages            //任务1的名字:描述任务的信息(描述的信息自己随意编辑,但是name是固定的)
    yum: name=httpd state=present           // yum:  意思是执行yum模块 的任务 
  - name: copy apache conf
    copy: src=/home/apache/httpd.conf dest=/etc/httpd/conf/httpd.conf    //执行copy模块 的任务
  - name: ensure apache is running
    service: name=httpd state=started enabled=yes              //执行serivce 模块的任务


#注意:每一个空格都很重要

 

5、测试剧本     playbook

  ·可以先看一眼文本   cat  apache.yaml

  ·使用playbook检查剧本语法

  ansible playbook apache.yaml --syntax-check

·playbook 只是检查语法,不保证参数有没有错误
·--syntax-check 检查语法

   ·列出剧本任务的名字

ansible-playbook apache.yaml --list-task

·--list-task  列出剧本任务的名字

   ·列出剧本的目标主机

ansible-playbook apache.yaml --list-hosts

 以上三步都没问题后、下边执行剧本

 

6、执行剧本

ansible-playbook apache.yaml

 

 

7、查看其他主机的配置文件是否是更改过的

8、访问网页

  ·ip:8080

 

 

=======================================================handlers 触发、通知、操作模块=================================================

"handlers" 是 Ansible 中的一个关键字,它用于定义在任务执行过程中需要执行的操作。在 Ansible 中,handlers 通常用于在任务执行完成后,执行一些额外的操作,比如重启服务、重新加载配置等。

handlers 的定义方式与 tasks 类似,但是它们不会在 playbook 执行过程中立即执行。相反,handlers 只有在它们所依赖的任务执行完成后才会执行。

 

- hosts: webserver
  tasks:
  - name: intall apache packages
    yum: name=httpd state=present
  - name: copy apache conf
    copy: src=/home/apache/httpd.conf dest=/etc/httpd/conf/httpd.conf
    natify: restart apache service for me        //notify 通知  ,就是当上一个模块发生改变时,才会执行notify  notify就会去通知 后面绿色的语句  就会寻找到下面的handlers下的name
  - name: ensure apache is running
    service: name=httpd state=started enabled=yes
  handlers:                               //当触发时才要执行  、就是当上面的notify被触发时才会执行相对应的   name:
  - name: restart apache service for me
    service: name=httpd state=restarted

 

 这里测试将httpd.conf 的端口改为9090

  ·在剧本文件  apache.yaml  不加hanlers 的时候改配置文件的端口  执行yaml文件

    ··ansible-playbook apache.yaml    发现目标主机的httpd端口没改过来

 

   ·在剧本文件里加上handlers后,在执行剧本文件

    ·· ansible-playbook apache.yaml    此时由于触发了handlers  ,使yaml文件执行了重启httpd服务的指令,目标主机的端口也改过来了

posted @ 2024-06-17 10:32  little小新  阅读(12)  评论(0编辑  收藏  举报