Ansible playbook编写Apache角色
编写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角色的更多相关文章
- Ansible playbook实现apache批量部署,并对不同主机提供以各自IP地址为内容的index.html
1.基于key验证免密授权 1.1 生成kekgen # ssh-keygen Generating public/private rsa key pair. Enter file in which ...
- 2.Ansible Playbook剧本
1.playbook?playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色 task: 定义的是具体执行的任务 playbook: 由一 ...
- Ansible PlayBook语法
PlayBook语法实例 playbook是由一个或多个play组成的列表,play的主要功能在于将事先归并为一组的主机装扮成事先通过Ansible中的tasks定义好的角色(play的内容被称为ta ...
- Ansible playbook基础组件介绍
本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...
- ansible入门四(Ansible playbook基础组件介绍)
本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...
- ansible playbook模式及语法
一.什么是playbook及其组成 什么是playbook playbook 翻译过来就是"剧本" playbook的组成 play:定义的是主机的角色 task:定义的是具体执行 ...
- Ansible--02 ansible playbook的应用
目录 Ansible playbook的应用 什么是playbook playbook的组成 playbook和Ad-Hoc对比 YAML语法 安装httpd练习 rsyncd实战 实战1: 实战2: ...
- Ansible Playbook概览
Ansible playbook 执行需要三步路执行: 1.编写playbook 2.定义主机清单文件 3.设置运行环境,写入配置文件 1.编写playbook Playbook使用YAML语法格式进 ...
- ansible笔记(11):初识ansible playbook(二)
ansible笔记():初识ansible playbook(二) 有前文作为基础,如下示例是非常容易理解的: --- - hosts: test211 remote_user: root tasks ...
随机推荐
- Hystrix熔断原理
Netflix的开源组件Hystrix的流程: 图中流程的说明: 将远程服务调用逻辑封装进一个HystrixCommand. 对于每次服务调用可以使用同步或异步机制,对应执行execute()或que ...
- Android创建自定义Application
开发目的 创建一个自定义的MainApplication继承Application. 读取AndroidManifest.xml文件中Application节点的META-DATA数据.此处以ApiK ...
- 曾侯乙编钟引发的遐想之Java设计模式:状态模式
目录 示例 简单例子 改进代码 状态模式 定义 意图 主要解决问题 何时使用 优缺点 曾侯乙编钟 状态模式-命令模式-策略模式 示例 一个类对外提供了多个行为,同时该类对象有多种状态,不同状态下对外的 ...
- Knight Moves UVA - 439
A friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the sh ...
- Win10双系统安装Gentoo-(附Networkmanagr/Gnome安装)
安装Gentoo 本文主要参考的是官方Wiki,还有一些网友的经验,在后面的具体安装步骤里会分享对应网友的一些解决办法和相关文章 官方Wiki:https://wiki.gentoo.org/wiki ...
- istio之envoy常见术语及状态码
基本术语 Downstream(下游):下游主机连接到 Envoy,发送请求并接收响应,即发送请求的主机. Upstream(上游):上游主机接收来自 Envoy 的连接和请求,并返回响应,即接受请求 ...
- 对DiscuzQ的一些使用见解
之前因为体验了DiscuzQ,在几番纠结后,把博客换成了DiscuzQ(以下简称DZQ). 在一个月的使用中,发现这个程序对于个人来说,十分不友好. 于是今天又换回了Wordpress. 在这里说一下 ...
- shellcode 开发
0x00 设置堆栈 栈顶指针按位与之后,将栈桢以16字节的大小对齐: push rbp ;store rbp original state mov rbp, rsp ;set stack base p ...
- CentOS7用yum安装软件提示 cannot find a valid baseurl for repobase7x86_64
解决办法[亲测有效] 1.打开 vi /etc/sysconfig/network-scripts/ifcfg-enp4s0(每个机子都可能不一样,但格式会是"ifcfg-e..." ...
- hdu2167 方格取数 状态压缩dp
题意: 方格取数,八个方向的限制. 思路: 八个方向的不能用最大流了,四个的可以,八个的不能抽象成二分图,所以目测只能用dp来跑,dp[i][j]表示的是第i行j状态的最优,具体看 ...