编写Apache角色;使用源码安装

在files中下载扩展包和安装包

[root@localhost project]# ls roles/httpd/files/
apr-1.6.5.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.46.tar.gz pcre-8.40.tar.gz

在taskstasks目录中写入main.yml文件

[root@localhost project]# vim roles/httpd/tasks/main.yml
--
#安装环境
- name: Install environment
yum:
name: "{{ item }}"
state: present
loop:
- make
- gcc
- gcc-c++
- expat-devel
- wget #安装APR拓展包
- name: Install apr package
copy:
src: ../files/apr-1.6.5.tar.gz
dest: /root/
notify:
- compile apr #安装apr-util 拓展包
- name: Install apr-util package
copy:
src: ../files/apr-util-1.6.1.tar.gz
dest: /root/
notify:
- compile apr-util #安装PCRE拓展包
- name: Install pcre package
copy:
src: ../files/pcre-8.40.tar.gz
dest: /root/
notify:
- complie pcre #安装httpd软件包
- name: Install Apache package
copy:
src: ../files/httpd-2.4.46.tar.gz
dest: /root/
notify:
- Complie Apache
- Changed configuration files
- Start Apache
- set up link #解压apt、apt-util、pcre、apache压缩包
- name: unzip package
shell: "{{ item }}"
loop:
- tar -zxvf /root/apr-1.6.5.tar.gz
- tar -zxvf /root/apr-util-1.6.1.tar.gz
- tar -zxvf /root/pcre-8.40.tar.gz
- tar -zxvf /root/httpd-2.4.46.tar.gz #为Apache创建使用用户
- name: Create user for Apache
user:
name: "{{ user_name }}"
state: present
create_home: no
system: yes

在handlers目录中写入main.yml文件

[root@localhost project]# vim roles/httpd/handlers/main.yml
---
#预编译、编译、安装APR
- name: compile apr
shell: "{{ item }}"
loop:
- ./configure --prefix=/usr/local/apr
- make && make install
args:
chdir: "{{ package_apr }}" #预编译、编译、安装apr-util
- name: compile apr-util
shell: "{{ item }}"
loop:
- ./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr
- make && make install
args:
chdir: "{{ package_apr_util }}" #预编译、编译、安装pcre
- name: complie pcre
shell: "{{ item }}"
loop:
- ./configure --prefix=/usr/local/pcre
- make && make install
args:
chdir: "{{ package_pcre }}" #预编译、编译、安装Apache
- name: Complie Apache
shell: "{{ item }}"
loop:
- ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
- make && make install
args:
chdir: "{{ package_httpd }}" #修改配置文件
- name: Changed configuration files
shell: sed -i "s/#ServerName www.example.com:80/ServerName localhost:80/" httpd.conf
args:
chdir: /usr/local/httpd/conf #给Apache启动脚本创建软连接到普通用户的环境变量
- name: set up link
shell: 'ln -s /usr/local/httpd/bin/apachectl /usr/local/bin/apachectl' #脚本控制启动httpd
- name: Start Apache
shell: apachectl start

在vars目录中写变量文件

[root@localhost project]# vim roles/httpd/vars/main.yml
---
user_name: apache
package_apr: apr-1.6.5
package_apr_util: apr-util-1.6.1
package_pcre: pcre-8.40
package_httpd: httpd-2.4.46

写需要执行的playbook.ymlyml文件

[root@localhost project]# cat playbook.yml
---
- name: Install Httpd
hosts: all
roles:
- httpd

执行playbook.yml文件

[root@localhost project]# ansible-playbook playbook.yml 

PLAY [Install Httpd] ******************************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************
ok: [client.example.com] TASK [httpd : Install environment] ****************************************************************************************************************************************
changed: [client.example.com] => (item=make)
changed: [client.example.com] => (item=gcc)
changed: [client.example.com] => (item=gcc-c++)
changed: [client.example.com] => (item=expat-devel)
changed: [client.example.com] => (item=wget)
............

执行完后,在浏览器页面访问

Ansible playbook编写Apache角色的更多相关文章

  1. Ansible playbook实现apache批量部署,并对不同主机提供以各自IP地址为内容的index.html

    1.基于key验证免密授权 1.1 生成kekgen # ssh-keygen Generating public/private rsa key pair. Enter file in which ...

  2. 2.Ansible Playbook剧本

    1.playbook?playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色 task: 定义的是具体执行的任务 playbook: 由一 ...

  3. Ansible PlayBook语法

    PlayBook语法实例 playbook是由一个或多个play组成的列表,play的主要功能在于将事先归并为一组的主机装扮成事先通过Ansible中的tasks定义好的角色(play的内容被称为ta ...

  4. Ansible playbook基础组件介绍

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

  5. ansible入门四(Ansible playbook基础组件介绍)

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

  6. ansible playbook模式及语法

    一.什么是playbook及其组成 什么是playbook playbook 翻译过来就是"剧本" playbook的组成 play:定义的是主机的角色 task:定义的是具体执行 ...

  7. Ansible--02 ansible playbook的应用

    目录 Ansible playbook的应用 什么是playbook playbook的组成 playbook和Ad-Hoc对比 YAML语法 安装httpd练习 rsyncd实战 实战1: 实战2: ...

  8. Ansible Playbook概览

    Ansible playbook 执行需要三步路执行: 1.编写playbook 2.定义主机清单文件 3.设置运行环境,写入配置文件 1.编写playbook Playbook使用YAML语法格式进 ...

  9. ansible笔记(11):初识ansible playbook(二)

    ansible笔记():初识ansible playbook(二) 有前文作为基础,如下示例是非常容易理解的: --- - hosts: test211 remote_user: root tasks ...

随机推荐

  1. [面试仓库]HTML面试题汇总

      HTML这一块呢,说简单也简单,说难也不是那么容易.但我们在各个面试要求中,大部分都把HTML这一条摆在了第一位,重要性可想而知.这个位置算是有关HTML的一个汇总点了,亦会在这里及时补充. 1, ...

  2. 腾讯高级工程师带你玩转打包利器webpack

    随着前端领域飞速发展,webpack将前端不断出现的新模块.新资源.新需求,进行自动化整合.梳理.输出,极大提高了我们的工作效率,成为前端构建领域里最炙手可热的构建工具. 不少人webpack 的使用 ...

  3. c++排序相关的参数“cmp“的用法及理解

    对sort函数(需要algorithm头文件),它的cmp可以是"函数",也可以是"对象" bool myfunction (int i,int j) { re ...

  4. 自动化kolla-ansible部署ubuntu20.04+openstack-victoria之文件配置-08

    自动化kolla-ansible部署ubuntu20.04+openstack-victoria之文件配置-08 欢迎加QQ群:1026880196   进行交流学习 文件配置 #controller ...

  5. Fiddler使用 断点 模拟返回 AutoResponder Mock 模拟数据 相关学习记录

    断点 测试中有时需要改变发出去的请求信息,需要用到打断点的方法.断点包含两种方式: before response:在request请求的时候,未到达服务器之前,一般用来修改请求参数 after re ...

  6. React/Vue里的key到底有什么用?看完这篇你就知道了!(附demo代码)

    网上有很多博客讲到,React.Vue里的key,与 Virtual DOM 及 DOM diff 有关, 可以用来唯一标识DOM节点,提高diff效率,云云. 这大致是对的,但是,大多讲得语焉不详, ...

  7. 做个开源博客学习Vite2 + Vue3 (一)搭建项目

    前言 不会 webpack,遇到报错就一头雾水,完全不知道怎么办,而且体积还大速度还慢. 所以尤雨溪做了 vite 后就很向往,只是知道自己水平有限还是等大佬先趟趟坑,等差不多了在跳. 现在vite2 ...

  8. PowerBI 使用Bookmark

    使用PowerBI Desktop中的bookmark(书签),开发人员可以捕获报表中一个页面的当前配置,包括过滤器的设置,Visual的状态等信息,此后,开发人员可以通过激活已保存的bookmark ...

  9. Git 简介与仓库使用

    1. Git 简介 2. 远程仓库的使用 3. 本地仓库的使用 1. Git 简介 Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上. 其原理是首先找一台电脑充当服务器的角色 ...

  10. .Net之配置文件

    1. 说明 默认情况下读取配置Configuration的默认优先级:ConfigureAppConfiguration(自定义读取)>CommandLine(命令行参数)>Environ ...