Ansible 实战案例--Playbook 变量管理 之 安装 Apache

前言

通过在Playbook 中定义变量,使用变量去创建和完成任务,从而实现 http 服务的部署,达到 web 服务的正常运行,并对外提供服务


提示:本篇文章所使用的环境为centos-8.2基于ansible-2.8.0 搭建
具体环境搭建,请参考:ansible-2.8.0 搭建链接

案例步骤

一、案例要求

要求通过Playbook 定义变量的方式,安装Apache 软件 并添加防火墙规则,确保http 服务开机自启,正常对外提供服务的需求

二、准备工作

编辑Playbook 需要定义的变量

变量描述
web_pkg需要安装的 web 服务器的软件包
firewall_pkg需要安装的防火墙软件包
web_service需要管理的 web 服务
firewall_service需要管理的防火墙服务
python_pkguri 模块所需的软件包
rule需要打开的服务

三、编辑 Playbook

  • 定义变量,安装Aoache 服务,并启动http 服务、开机自启,添加防火墙
[root@ansible-server ansible]# vim Apache_service.yml
---
- name: deploy and start Apache HTTPD service
# define variables
  hosts: webservers
  vars:
    web_pkg: httpd
    firewalld_pkg: firewalld
    web_service: httpd
    firewalld_service: firewalld
    python_pkg: python3-PyMySQL
    rule: http

  tasks:
    # install software and confirm is latest
    - name: 1.install httpd firewalld python3-PyMySQL and confirm is latest
      yum:
        name:
          - '{{ web_pkg }}'
          - '{{ firewalld_pkg }}'
          - '{{ python_pkg }}'
        state: latest

  # make sure httpd firewalld service is started and enabled     
    - name: 2.the {{ firewalld_service }} service is started and enabled
      service:
        name: '{{ firewalld_service }}'
        enabled: true
        state: started

    - name: 3.the {{ web_service }} service is started and enabled
      service:
         name: '{{ web_service }}'
         enabled: true
         state: started

    # add http web_file
    - name: web_file
      copy:
        content: 'This is Apache web_servers...'
        dest: /var/www/html/index.html

    # confirm firewalld port is open     
    - name: 4.the firewalld port for {{ rule }} is open
      firewalld:
        service: '{{ rule }}'
        permanent: true
        immediate: true
        state: enabled


[root@ansible-server ansible]# vim Apache_service_test.yml
---
# test web-server is useable and states_code
- hosts: localhost
  name: make sure Apache web_server is enable
  become: false
  tasks:
    - name: test web_server is useable
      uri:
        url: http://node02
        status_code: 200

    - name: test web_server is useable
      uri:
        url: http://node02
        status_code: 200

四、检查 Playbook 语法

[root@ansible-server ansible]# ansible-playbook Apache_service.yml --syntax-check

playbook: Apache_service.yml


[root@ansible-server ansible]# ansible-playbook Apache_service_test.yml --syntax-check

playbook: Apache_service_test.yml

五、执行Playbook

[root@ansible-server ansible]# ansible-playbook Apache_service.yml 

PLAY [deploy and start Apache HTTPD service] ***********************************************************************

TASK [Gathering Facts] *********************************************************************************************
ok: [node02]
ok: [node03]

TASK [1.install httpd firewalld python3-PyMySQL and confirm is latest] *********************************************
ok: [node02]
ok: [node03]

TASK [2.the firewalld service is started and enabled] **************************************************************
ok: [node03]
ok: [node02]

TASK [3.the httpd service is started and enabled] ******************************************************************
ok: [node03]
ok: [node02]

TASK [web_file] ****************************************************************************************************
ok: [node03]
ok: [node02]

TASK [4.the firewalld port for http is open] ***********************************************************************
ok: [node03]
ok: [node02]

PLAY RECAP *********************************************************************************************************
node02                     : ok=6    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node03                     : ok=6    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  
[root@ansible-server ansible]# ansible-playbook Apache_service_test.yml 

PLAY [make sure Apache web_server is enable] ***********************************************************************

TASK [Gathering Facts] *********************************************************************************************
ok: [localhost]

TASK [test web_server is useable] **********************************************************************************
ok: [localhost]

TASK [test web_server is useable] **********************************************************************************
ok: [localhost]

PLAY RECAP *********************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

六、测试http服务

[root@ansible-server ansible]# ansible webservers -m shell -a 'curl http://node0{2,3}'
[WARNING]: Consider using the get_url or uri module rather than running 'curl'.  If you need to use command because
get_url or uri is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in
ansible.cfg to get rid of this message.
node03 | CHANGED | rc=0 >>
This is Apache web_servers...This is Apache web_servers...  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    29  100    29    0     0   5800      0 --:--:-- --:--:-- --:--:--  5800
100    29  100    29    0     0   5800      0 --:--:-- --:--:-- --:--:--  5800
node02 | CHANGED | rc=0 >>
This is Apache web_servers...This is Apache web_servers...  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    29  100    29    0     0   4833      0 --:--:-- --:--:-- --:--:--  5800
100    29  100    29    0     0   4833      0 --:--:-- --:--:-- --:--:--  4833
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值