Ansible之使用playbook搭建httpd服务

一、Playbook简介

Playbook 是由一个或多个play组成的列表,主要功能是将task定义好的角色归并为一组进行统一管理,也就是通过Ansible的模板将多个play组织在一个Playbook中运行。

二、Playbook格式

  • YMAL中的列表元素以"-“开头然后紧跟着一个空格,后面为元素内容。就像这样- host。即”-"后面要增加一个空格。
  • 同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。
  • playbook中hosts,variables,roles,tasks等对象的表示方法都是键值中间以”:”分隔,":“后面还要增加一个空格。即”:"后面要增加一个空格。
  • 文件以.yml后缀。

三、编写playbook

[devops@server4 ansible]$ vim playbook.yml
#写入:
- hosts: prod
  tasks:
    - name: install httpd  #安装httpd服务
      yum:
        name: install
        state: persent

    - name: start  httpd
      service:
        name: httpd
        state: started
[devops@server4 ansible]$ ansible-playbook 

playbook.yml --syntax-check
#检测语法,显示没有问题

在这里插入图片描述

[devops@server4 ansible]$ ansible-playbook playbook.yml --list-tasks

playbook: playbook.yml

  play #1 (prod): prod	TAGS: []
    tasks:
      install httpd	TAGS: []
      start  httpd	TAGS: []  #显示要执行的任务

在这里插入图片描述

[devops@server4 ansible]$ ansible-playbook playbook.yml #执行

在这里插入图片描述

(rpm -q --scripts httpd 查看软件安装时都做了什么)
在这里插入图片描述

[devops@server4 ansible]$ vim playbook.yml
#写入:
---
- hosts: test
  tasks:
    - name: install httpd
      yum:
        name: httpd
        state: present

    - name: configure http
      copy:
        src: httpd.conf
        dest: /etc/httpd/conf/httpd.conf
        owner: root
        group: root
        mode: 644
      notify: restart httpd

    - name: start httpd
      service:
        name: httpd
        state: started

  handlers:
    - name: restart httpd
      service:
        name: httpd
        state: restarted

在这里插入图片描述

[root@server5 ~]# scp /etc/httpd/conf/httpd.conf server4:/home/devops/ansible/
[devops@server4 ansible]$ ansible-playbook playbook.yml #执行

在这里插入图片描述

四、加防火墙的httpd

[devops@server4 ansible]$ vim playbook.yml 
#写入:
    - name: start httpd and firewalld #更改的内容
      service:
        name: "{{item}}"
        state: started
      loop:
        - httpd
        - firewalld

    - name: configure firewalld #新增的内容
      firewalld:
        service: http
        permanent: yes
        immediate: yes
        state: enabled

在这里插入图片描述

[devops@server4 ansible]$ ansible-playbook playbook.yml #执行

在这里插入图片描述

[devops@server4 ansible]$ vim playbook.yml 
#写入:
---
- hosts: webserver
  tasks:
    - name: install httpd
      yum:
        name: httpd
        state: present

    - name: copy index.html
      copy:
        src: files/index.html
        dest: /var/www/html/index.html

    - name: configure http
      copy:
        src: files/httpd.conf
        dest: /etc/httpd/conf/httpd.conf
        owner: root
        group: root
        mode: 644
      notify: restart httpd

    - name: start httpd and firewalld
      service:
        name: "{{item}}"
        state: started
      loop:
        - httpd
        - firewalld

    - name: configure firewalld
      firewalld:
        service: http
        permanent: yes
        immediate: yes
        state: enabled

  handlers:
    - name: restart httpd
      service:
        name: httpd
        state: restarted

- hosts: localhost
  become: no
  tasks:
    - name: test httpd
      uri:
        url: http://172.25.28.6
        status_code: 200

在这里插入图片描述

[devops@server4 ansible]$ mkdir files
[devops@server4 ansible]$ cd files/
[devops@server4 files]$ echo www.westos.org > index.html
[devops@server4 files]$ cd ..
[devops@server4 files]$ cp httpd.conf files/
[devops@server4 ansible]$ vim inventory
#写入:
localhost
[test]
172.25.28.5

[prod]
172.25.28.6

[webserver:children]
test
prod
[devops@server4 ansible]$ ansible-playbook playbook.yml #执行

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值