编写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. 使用Gensim库对文本进行词袋、TF-IDF和n-gram方法向量化处理

    Gensim库简介 机器学习算法需要使用向量化后的数据进行预测,对于文本数据来说,因为算法执行的是关于矩形的数学运算,这意味着我们必须将字符串转换为向量.从数学的角度看,向量是具有大小和方向的几何对象 ...

  2. 前端 JS 问题记录

    立即执行函数 !function(){}() function 前面增加符号 ! ~ + - 之类,都是告诉浏览器自动执行这个匿名函数,因为这些符号的运算级别都是高的 (function(){... ...

  3. ClickHouse源码笔记5:聚合函数的源码再梳理

    笔者在源码笔记1之中分析过ClickHouse的聚合函数的实现,但是对于各个接口函数的实际如何共同工作的源码,回头看并没有那么明晰,主要原因是没有结合Aggregator的类来一起分析聚合函数的是如果 ...

  4. Spring 学习笔记(一):Spring 入门

    1 Spring简介 Spring是一个轻量级Java开发框架,最早由Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题,是一个分层的Java SE/EE ful ...

  5. Day13_65_线程sleep()方法

    线程sleep()方法 * public static void sleep​(long millis) throws InterruptedException * Thread.sleep(),该方 ...

  6. OO_UNIT4_SUMMARY

    经过一个学期的学习,OO课程终于落下帷幕.本次博客会首先对第四单元作业的架构进行分析,再对OO课程进行总体回顾,最后是个人的建议与体会. 一.第四单元三次作业架构设计 1.第一次作业 第一次作业是对类 ...

  7. Weekly Contest 184

    1408. String Matching in an Array Given an array of string words. Return all strings in words which ...

  8. DVWA之Command injection(命令执行漏洞)

    目录 Low Medium Middle Impossible 命令执行漏洞的原理:在操作系统中, &  .&& .|  . ||   都可以作为命令连接符使用,用户通过浏览器 ...

  9. c/c++ 指针函数 和 函数指针

    指针函数:返回指针类型的函数,定义方法如下: 类型标识符 *函数名(参数列表) 函数指针:指向函数入口地址的指针,定义方法如下: 类型标识符 (*指针名称)(形参列表) 下面我们通过一段代码加深我们的 ...

  10. OGG-Oracle同步Sequence

    一.需求,使用OGG同步软件,将Oracle 11g Sequence实时同步到19c新库中 参考文档 Implementing replication of cyclic sequences in ...