做网站花都区,手机app下载软件安装,凡客旗下商城,企业查询系统目录
一.roles概述
1.roles角色
2.roles的目录层次
2.1.roles 内各目录含义解释
二.实操
1.部署nginx
2.部署MySQL
3.部署php
4.编写测试文件
三.总结 一.roles概述
1.roles角色
可以把playbook剧本里的每个play看作为一个角色#xff0c;将每个角色要用到的文件、…目录
一.roles概述
1.roles角色
2.roles的目录层次
2.1.roles 内各目录含义解释
二.实操
1.部署nginx
2.部署MySQL
3.部署php
4.编写测试文件
三.总结 一.roles概述
1.roles角色
可以把playbook剧本里的每个play看作为一个角色将每个角色要用到的文件、变量、任务列表定
义到对应角色的目录中需要时可以直接在playbook中调用角色
作用
实现在playbook中代码复用
2.roles的目录层次
cd /etc/ansible/
tree roles/
roles/
├── web/ #相当于 playbook 中的 每一个 play 主题
│ ├── files/ #用来存放由 copy 模块或 script 模块调用的文件。
│ ├── templates/ #用来存放 jinjia2 模板template 模块会自动在此目录中寻找 jinjia2 模板文件。
│ ├── tasks/ #此目录应当包含一个 main.yml 文件用于定义此角色的任务列表此文件可以使用 include 包含其它的位于此目录的 task 文件。
│ ├── handlers/ #此目录应当包含一个 main.yml 文件用于定义此角色中触发条件时执行的动作。
│ ├── vars/ #此目录应当包含一个 main.yml 文件用于定义此角色用到的变量。
│ ├── defaults/ #此目录应当包含一个 main.yml 文件用于为当前角色设定默认变量。 这些变量具有所有可用变量中最低的优先级并且可以很容易地被任何其他变量覆盖。所以生产中我们一般不在这里定义变量
│ └── meta/ #此目录应当包含一个 main.yml 文件用于定义此角色的元数据信息及其依赖关系。
└── db/├── files/├── templates/├── tasks/├── handlers/├── vars/├── defaults/└── meta/
2.1.roles 内各目录含义解释
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.部署nginx
cd /opt
mkdir nginx
cd nginx/
上传nginx.repo、nginx.conf并且修改nginx.conf为nginx.conf.j2
vim nginx.conf.j2
37、38行
listen {{nginx_addr}}:{{nginx_port}};server_name {{nginx_hostname}};
45行
root {{root_dir}};
68行
fastcgi_pass {{php_addr}}:{{php_port}};
70行
fastcgi_param SCRIPT_FILENAME {{root_dir}}$fastcgi_script_name; vim lnmp-playbook.yaml
- name: nginx playhosts: webserversremote_user: rootgather_facts: falsevars:- nginx_addr: 192.168.80.101- nginx_port: 80- nginx_hostname: www.xy101.com- root_dir: /var/www/html- php_addr: 192.168.80.102- php_port: 9000tasks:- name: disable firewalldservice: namefirewalld statestopped enabledno- name: disable selinuxcommand: setenfoce 0ignore_errors: true- name: copy nginx repocopy: src/opt/nginx/nginx.repo dest/etc/yum.repos.d/- name: install nginxyum: namenginx statelatest- name: create root dirfile: path{{root_dir}} statedirectory- name: copy nginx config template filetemplate: src/opt/nginx/nginx.conf.j2 dest/etc/nginx/nginx.confnotify: reload nginx- name: create nfs configcopy: content{{root_dir}} 192.168.80.0/24(rw,sync,no_root_squash) dest/etc/exports- name: restart rpcbind,nfs,nginxservice: name{{item}} staterestarted enabledyeswith_items:- rpcbind- nfs- nginxhandlers:- name: reload nginxservice: namenginx statereloadedansible-playbook lnmp-playbook.yaml 2.部署MySQL
- name: mysql playhosts: dbserversremote_user: rootgather_facts: falsetasks:- name: disable mysql_server firewalldservice: namefirewalld statestopped enabledno- name: disable mysql_server selinuxcommand: setenforce 0ignore_errors: true- name: remove mariadbyum: namemariadb* stateabsent- name: copy mysql repocopy: src/opt/mysql/mysql-community.repo dest/etc/yum.repos.d/- name: modify mysql reporeplace: path/etc/yum.repos.d/mysql-community.repo regexpgpgcheck1 replacegpgcheck0- name: install mysqlyum: namemysql-server statepresent- name: start mysqlservice: namemysqld statestarted enabledyes- name: init mysqlscript: /opt/mysql/mysql-init.sh 3.部署php
- name: php playhosts: phpserversremote_user: rootgather_facts: falsevars:- php_username: nginx- php_addr: 192.168.80.102:9000- nginx_addr: 192.168.80.101- root_dir: /var/www/htmltasks:- name: disable php_server firewalldservice: namefirewalld statestopped enabledno- name: disable php_server selinuxcommand: setenforce 0- name: unarchive php tar pkgunarchive: copyyes src/opt/php/php.tar.gz dest/mnt/- name: copy local repocopy: src/opt/php/local.repo dest/etc/yum.repos.d/- name: create reposhell: createrepo /mnt yum clean all yum makecache- name: install phpyum: namephp72w,php72w-cli,php72w-common,php72w-devel,php72w-embedded,php72w-gd,php72w-mbstring,php72w-pdo,php72w-xml,php72w-fpm,php72w-mysqlnd,php72w-opcache,php72w-ldap,php72w-bcmath statepresent- name: create php useruser: name{{php_username}} shell/sbin/nologin create_homeno- name: modify php.inireplace: path/etc/php.ini regexp;date.timezone replacedate.timezone Asia/Shanghai- name: modify user and group in www.confreplace: path/etc/php-fpm.d/www.conf regexpapache replace{{php_username}}notify: reload php-fpm- name: modify listen in www.confreplace: path/etc/php-fpm.d/www.conf regexp127.0.0.1:9000 replace{{php_addr}}notify: reload php-fpm- name: modify listen.allowed_clients in www.confreplace: path/etc/php-fpm.d/www.conf regexp127.0.0.1 replace{{nginx_addr}}notify: reload php-fpm- name: start php-fpmservice: namephp-fpm statestarted enabledyes- name: create www root dirfile: path{{root_dir}} statedirectory- name: mount nfsmount: src{{nginx_addr}}:{{root_dir}} path{{root_dir}} fstypenfs statemounted optsdefaults,_netdevhandlers:- name: reload php-fpmservice: namephp-fpm statereloaded 4.编写测试文件
cd /var/www/html
vim index.php?php
phpinfo();
?
浏览器访问测试 三.总结
roles目录格式
roles/ #角色总目录其每个子目录就是一个角色目录nginx/ #角色目录一个角色相当于playbook中的一个play主题目录名就是角色名files/ #存放copy、script、unarchive等模块默认调用的文件templates/ #存放template模块默认调用的模板文件tasks/mian.yml #定义此角色的tasks任务列表handlers/mian.yml #定义此角色通过nofity触发执行的handlers任务列表vars/mian.yml #定义此角色使用的自定义变量defaults/mian.yml #定义此角色使用的默认变量(一般不用)meta/mian.yml #定义此角色的元数据信息和依赖关系mysql/....php/....vim XXX.yaml
- name:hosts:remote_user:roles:- 角色名1- 角色名2....ansible-playbook XXX.yaml