首页 > 系统相关 >2024.8.20(playbook剧本安装nginx、roles)

2024.8.20(playbook剧本安装nginx、roles)

时间:2024-08-20 17:58:32浏览次数:10  
标签:20 name roles 2024.8 nginx m0 mariadb root yml

一、playbook 剧本安装nginx

[root@m0 ~]# mkdir /etc/ansible/playbook
[root@m0 ~]# vim /etc/ansible/playbook/nginx.yml
---
-       hosts:          group02
        remote_user:    root
        tasks:
        -       name:   卸载httpd
                yum:    name=httpd      state=absent
        -       name:   安装epel
                yum:    name=epel-release       state=present
        -       name:   安装nginx
                yum:    name=nginx      state=present
        -       name:   修改资源文件
                shell:  echo 'i am nginx,port is 80' > /usr/share/nginx/html/index.html
        -       name:   修改端口
                command:        sed -i '/listen/s/80/8080/g' /etc/nginx/nginx.conf
                notify:
                -       restart nginx
        -       name:   启动服务
                service:        name=nginx   state=started  enabled=yes
        handlers:
                -       name:   restart nginx
                        service:        name=nginx    state=restarted
[root@m0 ~]# ansible-playbook /etc/ansible/playbook/nginx.yml  

二、roles(难点)

1、roles介绍

roles(角色):就是通过分别将variables,tasks及handlers等放置于单独的目录中,并可以便捷地调用它
们的一种机制。

假设我们要写一个playbook来安装管理lamp环境,那么这个playbook就会写很长。所以我们希望把
这个很大的文件分成多个功能拆分,分成apache管理,php管理,mysql管理,然后在需要使用的时候直
接调用就可以了,以免重复写。就类似编程里的模块化的概念,以达到代码复用的效果。

2、创建roles的目录结构

files:用来存放由copy模块或script模块调用的文件。
tasks:至少有一个main.yml文件,定义各tasks。
handlers:有一个main.yml文件,定义各handlers。
templates:用来存放jinjia2模板。
vars:有一个main.yml文件,定义变量。
meta:有一个main.yml文件,定义此角色的特殊设定及其依赖关系。

注意:在每个角色的目录中分别创建files,tasks,handlers,templates,vars和meta目录,用不到的目录
可以创建为空目录.

3、案例
[root@m0 ~]# cd /etc/ansible/roles/
[root@m0 roles]# ls
[root@m0 roles]# mkdir nginx
[root@m0 roles]# ls
nginx
[root@m0 roles]# cd nginx/
[root@m0 nginx]# mkdir files
[root@m0 nginx]# mkdir tasks
[root@m0 nginx]# mkdir handlers
[root@m0 nginx]# mkdir templates
[root@m0 nginx]# mkdir vars
[root@m0 nginx]# mkdir meta
[root@m0 nginx]# tree
.
├── files
├── handlers
├── meta
├── tasks
├── templates
└── vars
[root@m0 nginx]# touch handlers/main.yml
[root@m0 nginx]# touch tasks/main.yml
[root@m0 nginx]# touch vars/main.yml
[root@m0 nginx]# touch meta/main.yml
[root@m0 nginx]# tree
.
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
└── vars
    └── main.yml
[root@m0 ~]# vim /etc/ansible/playbook/test002.yml
---
-       hosts:          s
        remote_user:    root
        roles:
                -       nginx
[root@m0 ~]# ansible-playbook /etc/ansible/playbook/test002.yml
[root@m0 ~]# ansible s -m yum -a 'name=nginx state=absent'
[root@m0 ~]# vim /etc/ansible/roles/nginx/tasks/main.yml
---
-       name:   卸载httpd
        yum:    name=httpd      state=absent
-       name:   卸载nginx
        yum:    name=nginx      state=absent
-       name:   安装nginx
        yum:    name=nginx      state=present
-       name:   启动服务
        service:        name=nginx      state=started   enabled=yes
...
[root@m0 ~]# ansible-playbook /etc/ansible/playbook/test002.yml
[root@m0 ~]# vim /etc/ansible/playbook/test002.yml
---
-       hosts:          s
        remote_user:    root
        roles:
                -       nginx
                -       mysql  
[root@m0 ~]# cp /etc/ansible/roles/nginx/ /etc/ansible/roles/mysql -r
[root@m0 ~]# ansible-playbook /etc/ansible/playbook/test002.yml
4、练习:

请使用role来实现Inmp

mariadb中创建eleme数据库

创建表t_user

id        int        主键约束,自增        编号

username        varchar        非空约束        账号

password        varchar        非空约束        密码

remark        Ivarchar        没有约束        账号权限说明

[root@m0 ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@m0 ~]# yum -y remove *mariadb*
[root@m0 ~]# yum -y install mariadb
[root@m0 ~]# yum -y install mariadb-server.x86_64
[root@m0 ~]# systemctl start mariadb.service 
[root@m0 ~]# mysql

[root@m0 ~]# mysql << EOF

> create database if not exists eleme charset utf8mb4;
Query OK, 1 row affected (0.00 sec)

> use eleme;
MariaDB [eleme]> create table user(id int primary key auto_increment,username varchar(45) not null,password varchar(45) not null,remark varchar(45));

> exit
Bye

[root@m0 ~]# mysql
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| eleme              |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

MariaDB [(none)]> use eleme;

Database changed
MariaDB [eleme]> show tables;
+-----------------+
| Tables_in_eleme |
+-----------------+
| user            |
+-----------------+
1 row in set (0.00 sec)

MariaDB [eleme]> select * from user;
Empty set (0.00 sec)

MariaDB [eleme]> exit
Bye
[root@m0 ~]# cd /etc/ansible/roles/
[root@m0 ~]# cd /etc/ansible/roles/
[root@m0 roles]# mkdir mariadb
[root@m0 roles]# cd mariadb/
[root@m0 mariadb]# mkdir tasks
[root@m0 mariadb]# touch tasks/main.yml
[root@m0 ~]# vim /etc/ansible/roles/mariadb/tasks/main.yml
---
-       name:       卸载mariadb
        yum:        name=mariadb,mariadb-server,mariadb-devel    state=absent

-       name:       安装mariadb
        yum:        name=mariadb,mariadb-server,mariadb-devel    state=present

-       name:       启动mariadb服务
        service:    name=mariadb    state=started    enabled=yes

-       name:       执行脚本,创建数据库和数据表
        script:     /etc/ansible/script/dbtable.sh
...
[root@m0 mariadb]# cd /etc/ansible/
[root@m0 mariadb]# mkdir script
[root@m0 mariadb]# cd script/
[root@m0 script]# vim dbtable.sh
#!/bin/bash
mysql << EOF

create database if not exists eleme charset utf8mb4;
use eleme;
create table user(id int primary key auto_increment,username varchar(45) not null,password varchar(45) not null,remark varchar(45));
quit
EOF
[root@m0 script]# vim /etc/ansible/playbook/test003.yml
---
-    hosts:    s
     remote_user:    root
     roles:    
        -    mariadb
[root@m0 script]# ansible-playbook /etc/ansible/playbook/test003.yml 

标签:20,name,roles,2024.8,nginx,m0,mariadb,root,yml
From: https://blog.csdn.net/weixin_70751278/article/details/141346006

相关文章

  • 题解:P10696 [SNCPC2024] 写都写了,交一发吧
    前置知识位运算按位与的运算规则:二进制下,相同位的两个数字都为\(1\),则为\(1\);若有一个不为\(1\),则为\(0\)。分析由按位与的运算规则可以得到:\(A\&A=A\),而题目中的两次提交可以是相同的,所以两次都只需要取\(n\)个数中最大的数即可。ACcode#include<bits/stdc++.h>us......
  • 题解:P10722 [GESP202406 六级] 二叉树
    思路朴素做法当输入\(a_i\)后,直接将它及它的子树进行变换。而这样时间会超时。预计得分\(40\)pts。正解统计每次变换的节点编号,第\(i\)个节点作为根节点进行子树变换的次数为\(rec_i\)。最后从这棵树的根节点\(1\)开始向下dfs,则每个节点变换的次数为\[rec_i+k_j\]......
  • day6 哈希表part01: 242.有效的字母异位词|349. 两个数组的交集|202. 快乐数|1. 两数
    242.有效的字母异位词 classSolution{publicbooleanisAnagram(Strings,Stringt){int[]record=newint[26];//a=97.soa-a=0,b-a=1.直接使用减法,不用记acii码值。//遍历第一个string++,遍历第二个string--.数组里的数字......
  • 信息学奥赛初赛天天练-70-NOIP2016普及组-基础题1-二进制、二进制状态表示、二进制加
    NOIP2016普及组基础题11以下不是微软公司出品的软件是()APowerpointBWordCExcelDAcrobatReader2如果256种颜色用二进制编码来表示,至少需要()位A6B7C8D93以下不属于无线通信技术的是()A蓝牙BWifiCGPRSD以太网7......
  • 题解:P8690 [蓝桥杯 2019 国 B] 填空问题
    试题\(\mathrm{A}\):平方序列枚举\(x\),通过\(x^2-2019^2\)求出它们的公差\(c\),再计算\(x^2+c\)是否为完全平方数即可。code#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;signedmain(){ for(inti=2020;1==1;i++){ intc=i*i-2019*2019; i......
  • Nuxt3【过渡】2024最新版 (含页面过渡、布局过渡、全局过渡、局部过渡、动态过渡、禁用
    全局布局过渡layoutTransitionnuxt.config.ts中exportdefaultdefineNuxtConfig({app:{layoutTransition:{name:'layout',mode:'out-in'}},})app.vue中需添加样式.layout-enter-active,.layout-leave-active{transition:all0.4s;......
  • 2024 Summer_Camp 做题总结 下
    CloseVertices思路很明显,这是一道点分治题目,但有两个限制条件,考虑将两个条件排序起来,双指针找第一个条件,树状数组维护第二个条件,但是同一个子树内不能重复统计,所以将答案减去每个子树内的答案。代码#include<iostream>#include<algorithm>#defineintlonglongusingnam......
  • 2024年华为OD目录,D卷&C卷,E卷即将更新!
    序言  本专栏收录的华为OD题目都会持续优化并且持续更新最新题目,一次购买,终生享受。2024年,华为OD机试已经启用了D卷,目前D卷和C卷的题目是一样的。我身边有很多同学通过本专栏已经成功上岸华为的OD员工,有同学成功转正为华为正式员工。根据内部消息,华为OD今年可能会使用E......
  • YSP_refs_cn_2007
    rhTNFR-Fc中文文献-2007 类风湿关节炎脊柱关节炎银屑病关节炎银屑病幼年特发性关节炎探索适应症外基础研究 类风湿关节炎 随机对照临床试验[1–3] [1]艾脉兴,马丽,赵孟君,等.依那西普治疗活动性类风湿关节炎的安全性和有效性[J/OL].中国新药杂志,2007......
  • 【开源分享】2024好用的PHP在线客服系统源码 带搭建教程
    安装教程1.上传源码压缩包到网站目录并解压2.设置网站运行目录public3.设置伪静态,选择thinkphp4.创建数据库,导入数据库:public/service.sql5.修改.env里的数据库配置信息6.启动命令(根目录终端) phpthinkworker:gateway-d更详细的搭建文档需下载压缩包,安装教程.docx......