当前位置: 首页 > news >正文

roles安装wordpress

debug模块

1.如何查看ansible-playbook执行过程中产生的具体信息

vim test3.yaml
---
- hosts: allremote_user: roottasks:- name: lsshell: ls /rootregister: var_stdout	# register:将var_stdout注册为变量- name: debugdebug:var: var_stdout		# 查看所有的输出信息#var: var_stdout["stdout"]	#只看想看的信息

wait_for模块

[root@control roles]# vim /opt/roles/db/tasks/main.yaml
# 判断数据库启动后才能建库
# 代码见/opt/roles/db/tasks/main.yaml

角色role

执行ansible的方式:

ad-hoc模式(点对点模式):使用单个模块,支持批量执行单条命令,相当于bash中的一句话shell

playbook模式(剧本):将多个任务集中在一个剧本中执行,类似于shell脚本

​ 以上两种方式的缺陷:无法实现复用性

role模式(角色):类似于多个脚本导入。roles就是通过分别将变量(vars)、文件(file)、任务(tasks)、模块(modules)及处理器(handlers)放置于单独的目录中,并可以便捷地include它们的一种机制。

1.创建角色

ansible-galaxy init 角色名字

[root@control ~]# mkdir /opt/roles
[root@control ~]# cd /opt/roles
[root@control roles]# ansible-galaxy init nginx			# 创建角色
- Role nginx was created successfully
[root@control roles]# ansible-galaxy init php			# 创建角色
- Role php was created successfully
[root@control roles]# ansible-galaxy init wordpress		 # 创建角色
- Role wordpress was created successfully
[root@control roles]# ansible-galaxy init db			 # 创建角色
- Role db was created successfully
[root@control roles]# tree nginx/
nginx/
├── README.md
├── defaults				# 默认
│   └── main.yml
├── files					# 存放需要使用的文件
├── handlers				# 处理器,触发器 需要触发的任务 # tasks里面定义的notify除法handlers里面的任务
│   └── main.yml
├── meta
│   └── main.yml
├── tasks					# 写一些任务
│   └── main.yml
├── templates				# 存放需要渲染传递的文件
├── tests
│   ├── inventory
│   └── test.yml
└── vars					# 变量└── main.yml8 directories, 8 files

role部署wordpress

1.角色的使用

1.1 写数据库

[root@control roles]# ls
db  nginx  php  wordpress
[root@control roles]# cd db
[root@control db]# ls
README.md  defaults  files  handlers  meta  tasks  templates  tests  vars
[root@control db]# cd tasks
[root@control tasks]# ls
main.yml
[root@control tasks]# vim main.yml
---
# tasks file for db
- name: Install MySQLyum:name:  mysql-serverstate: present- name: Start and enable MySQLservice:name: mysqldstate: startedenabled: yes- name: 等待数据库启动wait_for:hosts: localhost		# 本机访问port: 3306timeout: 10				# 等待超时10秒
- name: INIT MySQL passwdshell: mysqladmin -p"`awk '/temporary password /{print $NF}' /var/log/mysqld.log`" password "Qq111111."- name: Create MySQL databaseshell: mysql -p'Qq111111.' -e "CREATE DATABASE if not exists {{ MYSQL_DB_NAME }};create user '{{ MYSQL_USER }}'@'{{ MYSQL_HOST }}' identified by '{{ MYSQL_PASSWORD }}';grant all privileges on {{ MYSQL_DB_NAME }}.* to '{{ MYSQL_USER }}'@'{{ MYSQL_HOST }}';flush privileges;"[root@control tasks]# vim ../vars/main.yml
---
# vars file for db
MYSQL_DB_NAME: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: "Qwertyuiop@123"
MYSQL_HOST: "%"[root@control tasks]# cd /opt/roles/
[root@control roles]# ls
db  nginx  php  wordpress
[root@control roles]# vim roles.yaml
- hosts: databasesremote_user: rootgather_facts: noroles:- db[root@control roles]# ansible-playbook roles.yaml --syntax-checkplaybook: roles.yaml
[root@control roles]# ansible-playbook roles.yaml --list-tasksplaybook: roles.yamlplay #1 (databases): databases        TAGS: []tasks:db : Install MySQL        TAGS: []db : Start and enable MySQL       TAGS: []db : INIT MySQL passwd    TAGS: []db : Create MySQL database        TAGS: [create]
[root@control roles]# ansible-playbook roles.yamlPLAY [databases] **************************************************************************TASK [db : Install MySQL] *****************************************************************
changed: [node1]TASK [db : Start and enable MySQL] ********************************************************
changed: [node1]TASK [db : INIT MySQL passwd] *************************************************************
changed: [node1]TASK [db : Create MySQL database] *********************************************************
changed: [node1]PLAY RECAP ********************************************************************************
node1                      : ok=4    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

1.2 nginx

# 准备配置文件
[root@control tasks]# cp /root/nginx.conf /opt/roles/nginx/templates/
[root@control tasks]# vim /opt/roles/nginx/tasks/main.yml
---
# tasks file for nginx
#- name: Install PHP packages and epel-release
#  yum: name={{ item }} state=present disable_gpg_check=yes##with_items:##- epel-release##- http://rpms.remirepo.net/enterprise/remi-release-9.rpm##when: name == "web"
- name: Install nginxyum:name: nginxstate: present- name: Config Nginxtemplate:src: nginx.confdest: /etc/nginx/nginx.conf- name: Start nginxservice:name: nginxstate: started[root@control ~]# vim /opt/roles/nginx/templates/nginx.conf
user {{ NGINX_USER | default("nginx") }};
#{{ NGINX_USER | default(nginx) }}; 是错的,应该加""
worker_processes {{ NGINX_FORKS | default("auto") }};
。。。。。server {listen       {{ NGINX_PORT | default(80) }};listen       [::]:{{ NGINX_PORT | default(80) }};server_name  _;root    {{ BASE_DIR }}/wordpress;   # /usr/share/nginx/html;# {{ BASE_DIR | default(/usr/share/nginx) }}有问题# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;
# 添加内容location / {root   {{ BASE_DIR }}/wordpress;index index.php;}location ~ \.php$ {root     {{ BASE_DIR }}/wordpress;     #/usr/share/nginx/html;  #指定网站目录fastcgi_pass  unix:///var/opt/remi/php80/run/php-fpm/www.sock;  #指定访问地址(>旧版为:127.0.0.1:9000)fastcgi_index  index.php;       #指定默认文件fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; #站点根目录
,取决于root配置项include        fastcgi_params;  #包含nginx常量定义}error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}# 变量
[root@control ~]# vim /opt/roles/nginx/vars/main.yml
---
# vars file for nginx
NGINX_USER: nginx
NGINX_FORKS: auto
NGINX_PORT: 80

1.3 php

[root@control ~]# vim /opt/roles/php/tasks/main.yml
---
# tasks file for php
#- name: Install PHP repository
#  yum:
#   name: http://rpms.remirepo.net/enterprise/remi-release-9.rpm
#   state: present
#   disable_gpg_check: yes- name: Install PHPyum:name: "{{ package }}"state: present- name: Start phpservice:name: php80-php-fpmstate: started# listen默认监听sock文件
- name: modefile:path: /var/opt/remi/php80/run/php-fpm/www.sockmode: "777"[root@control ~]# vim /opt/roles/php/vars/main.yml
---
# vars file for php
package: php80-php-xsl,php80-php,php80-php-cli,php80-php-devel,php80-php-gd,php80-php-pdo,php80-php-mysql,php80-php-fpm

1.4 上传包

[root@control ~]# cp /opt/latest-zh_CN.zip /opt/roles/wordpress/files/[root@control ~]# vim /opt/roles/wordpress/tasks/main.yml
---
# tasks file for wordpress
- name: Cp Wordpress to webunarchive:src: latest-zh_CN.zipdest: "{{ BASE_DIR }}" # 解压之后直接在BASE_DIR下产生wordpress目录mode: "777"[root@control ~]# vim /etc/ansible/hosts
[databases]
node1  name="db"
[webserver]
node2  name="web"  BASE_DIR=/usr/share/nginx	# BASE_DIR定义

1.5 运行

[root@control ~]# vim /opt/roles/roles.yaml
- hosts: "{{ host }}"remote_user: rootgather_facts: noroles:- "{{ role }}"
[root@control ~]# ansible-playbook -e host=databases -e role=db roles.yaml
[root@control ~]# ansible-playbook -e host=webserver -e role=php roles.yaml
[root@control ~]# ansible-playbook -e host=webserver -e role=nginx roles.yaml
[root@control ~]# ansible-playbook -e host=webserver -e role=wordpress roles.yaml
http://www.lryc.cn/news/374266.html

相关文章:

  • 【Python高级编程】饼状图中autopct和startangle用来做什么的
  • 【ARM Coresight Debug 系列 -- ARMv8/v9 Watchpoint 软件实现地址监控详细介绍】
  • jvm工具-jps、jstat、jmap、jstack
  • LVS负载均衡群集+NAT部署
  • 使用 Oracle SQL Developer 导入数据
  • 品质主管的面试题目
  • 算法专题总结链接地址
  • Oracle--存储结构
  • 【计算机毕业设计】259基于微信小程序的医院综合服务平台
  • HP惠普暗影精灵10 OMEN Gaming Laptop 16-wf1xxx原厂Win11系统镜像下载
  • [Day 9] 區塊鏈與人工智能的聯動應用:理論、技術與實踐
  • van-list 遇到的问题
  • DockerCompose+Jenkins+Pipeline流水线打包Vue项目(解压安装配置Node)入门
  • 【新课程】PICO VR 交互开发指南
  • 天童美语:为了得体退出的那一天,你一定要好好爱孩子
  • 什么是JWT?为什么用JWT?JWT的实战案例
  • SpringBoot+Vue小区物业管理系统 附带详细运行指导视频
  • 在不使用js在情况下只用css实现瀑布流效果
  • AMS(ActivityManagerService)源码解析2,Android应用是如何被启动的
  • 数据库事务隔离级别
  • Pytest 记录日志输出到控制台和写入文件
  • LINUX网络FTP服务
  • 10 C++11
  • java的封装
  • 为什么选择海外服务器?
  • k8s+springcloud+nacos部署配置
  • 梯度提升决策树(GBDT)
  • 数据结构之B树的原理与业务场景
  • 【Android面试八股文】你能说一说线程池管理线程的原理吗?
  • springer 在线投稿编译踩坑