网站流量怎么做的,营销网络建设四个阶段,网页游戏网站官网,企业营销策略有哪些目录 一、Roles模块1.1roles的目录结构1.2roles 内各目录含义解释1.3在一个 playbook 中使用 roles 的步骤 二、使用Role编写LNMP剧本2.1 搭建Nginx角色2.2搭建Mysql角色2.3搭建php角色2.4lnmp剧本 一、Roles模块 roles用于层次性、结构化地组织playbook。roles能够根据层次型结… 目录 一、Roles模块1.1roles的目录结构1.2roles 内各目录含义解释1.3在一个 playbook 中使用 roles 的步骤 二、使用Role编写LNMP剧本2.1 搭建Nginx角色2.2搭建Mysql角色2.3搭建php角色2.4lnmp剧本 一、Roles模块 roles用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令引入即可。 简单来讲roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中并可以便捷的include它们的一种机制。roles一般用于基于主机构建服务的场景中但也可以是用于构建守护进程等场景中。主要使用场景代码复用度较高的情况下。 假如我们现在有3个被管理主机第一个要配置成httpd第二个要配置成haproxy服务器第三个要配置成MySQLmariadb服务器。我们如何来定义playbook 第一个play用到第一个主机上用来构建httpd第二个play用到第二个主机上用来构建haproxy。这些个play定义在playbook中比较麻烦将来也不利于模块化调用不利于多次调用。比如说后来又加进来一个主机这第3个主机既是httpd服务器又是haproxy服务器我们只能写第3个play上面写上安装httpd和haproxy。这样playbook中的代码就重复了。 为了避免代码重复可以定义一个角色叫httpd第二个角色叫haproxy并使用roles实现代码重复被调用。
1.1roles的目录结构
cd /etc/ansible/
tree roles/roles/ ├── web/ #相当于 playbook 中的 每一个 play 主题 │ ├── files/ │ ├── templates/ │ ├── tasks/ │ ├── handlers/ │ ├── vars/ │ ├── defaults/ │ └── meta/ └── db/ ├── files/ ├── templates/ ├── tasks/ ├── handlers/ ├── vars/ ├── defaults/ └── meta/
1.2roles 内各目录含义解释
●files
用来存放由 copy 模块或 script 模块调用的文件。●templates
用来存放 jinjia2 模板template 模块会自动在此目录中寻找 jinjia2 模板文件。●tasks
此目录应当包含一个 main.yml 文件用于定义此角色的任务列表此文件可以使用 include 包含其它的位于此目录的 task 文件。●handlers
此目录应当包含一个 main.yml 文件用于定义此角色中触发条件时执行的动作。●vars
此目录应当包含一个 main.yml 文件用于定义此角色用到的变量。●defaults
此目录应当包含一个 main.yml 文件用于为当前角色设定默认变量。 这些变量具有所有可用变量中最低的优先级并且可以很容易地被任何其他变量覆盖。所以生产中我们一般不在这里定义变量●meta
此目录应当包含一个 main.yml 文件用于定义此角色的元数据信息及其依赖关系。
1.3在一个 playbook 中使用 roles 的步骤
1创建以 roles 命名的目录
mkdir /etc/ansible/roles/ -p #yum装完默认就有2创建全局变量目录可选
mkdir /etc/ansible/group_vars/ -p
touch /etc/ansible/group_vars/all #文件名自己定义引用的时候注意3在 roles 目录中分别创建以各角色名称命名的目录如 httpd、mysql
mkdir /etc/ansible/roles/httpd
mkdir /etc/ansible/roles/mysql4在每个角色命名的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录用不到的目录可以创建为空目录也可以不创建
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta}
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta}5在每个角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件千万不能自定义文件名
touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml6修改 site.yml 文件针对不同主机去调用不同的角色
vim /etc/ansible/site.yml
---
- hosts: webserversremote_user: rootroles:- httpd
- hosts: dbserversremote_user: rootroles:- mysql7运行 ansible-playbook
cd /etc/ansible
ansible-playbook site.yml二、使用Role编写LNMP剧本
mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p
mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -ptouch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml
touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml 2.1 搭建Nginx角色
在files目录李准备文件 准备关闭防护墙脚本
vim /etc/ansible/roles/nginx/tasks/init.yml
- name: disable firewalldservice: namefirewalld statestopped enabledno- name: disable selinuxshell: /usr/sbin/setenforce 0ignore_errors: true准备剧本文件
/etc/ansible/roles/nginx/tasks/main.yml
- include: init.yml #引入另外一个剧本- name: copy nginx yum repocopy: srcnginx.repo dest/etc/yum.repos.d/- name: install nginxyum: namenginx- name: copy index.phpcopy: srcindex.php dest/usr/share/nginx/html- name: copy index.confcopy: srcdefault.conf dest/etc/nginx/conf.d/default.confnotify: restart nginx- name: start nginxservice: namenginx statestarted enabledyes 2.2搭建Mysql角色
在files目录下准备配置文件 在tasks目录下准备剧本
vim /etc/ansible/roles/nginx/tasks/main.yml- include: init.yml- name: install mysql.reposhell: wget https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpmignore_errors: true- name: mysql.repocopy: srcmysql-community.repo dest/etc/yum.repos.d/mysql-community.repo- name: install mysqlyum: namemysql-server- name: start msqlservice: namemysqld statestarted enabledyes- name: grep passwdscript: passwd.sh 2.3搭建php角色
在files目录下准备配置文件
在tasks目录下准备配置配置文件
vim /etc/ansible/roles/nginx/tasks/main.yml
- include: init.yml- name: install yum reposhell: rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm- name: install phpshell: yum -y install php72w php72w-cli php72w-common php72w-devel php72w-embedded php72w-gd php72w-mbstring php72w-pdo php72w-xml php72w-fpm php72w-mysqlnd php72w-opcacheignore_errors: true- name: start phpservice: namephp-fpm statestarted enabledyes- name: user phpuser: namephp create_homeno shell/sbin/nologin- name: php.inicopy: srcphp.ini dest/etc/php.ini- name: www.confcopy: srcwww.conf dest/etc/php-fpm.d/www.conf- name: create nginxfile: name/usr/share/nginx statedirectory- name: create nginxfile: name/usr/share/nginx/html statedirectory2.4lnmp剧本
vim /etc/ansible/lnmp.yml
- name: nginx playhosts: webserversremote_user: rootroles:- nginx- name: mysql playhosts: mysqlremote_user: rootroles:- mysqltags:- ddd- name: php playhosts: dbserversremote_user: rootroles:- phptags:- aaa