day32(8/20)——playbook剧本安装nginx、roles

embedded/2024/9/23 2:27:29/

目录

nginx-toc" style="margin-left:120px;">一、playbook 剧本安装nginx

二、roles(难点)

1、roles介绍

2、创建roles的目录结构

3、案例

4、练习:


一、playbook 剧本安装nginx
[root@m0 ~]# mkdir /etc/ansible/playbook
[root@m0 ~]# vim /etc/ansible/playbook/nginx.yml
---
-       hosts:          group02remote_user:    roottasks:-       name:   卸载httpdyum:    name=httpd      state=absent-       name:   安装epelyum:    name=epel-release       state=present-       name:   安装nginxyum:    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.confnotify:-       restart nginx-       name:   启动服务service:        name=nginx   state=started  enabled=yeshandlers:-       name:   restart nginxservice:        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、练习:

1.创建roles⽬录及⽂件,并确认⽬录结构

[root@m0 ~]# cd /etc/ansible/roles/
[root@m0 roles]# tree
.
└── httpd
    ├── files
    ├── handlers
    │    └── main.yml
    ├── meta
    │    └── main.yml
    ├── tasks
    │    └── main.yml
    ├── templates
    └── vars
        └── main.yml

2.准备httpd服务器的主⻚⽂件,php测试⻚和配置⽂件等
[root@m0 ~]# yum -y install httpd
[root@m0 roles]# echo "<?php\n\tphpinfo();\n?>" > /etc/ansible/roles/httpd/files/test.php
[root@m0 roles]# echo "test main page" > /etc/ansible/roles/httpd/files/index.html
[root@m0 roles]# cp /etc/httpd/conf/httpd.conf /etc/ansible/roles/httpd/files/

3.编写httpd⻆⾊的main.yml⽂件
[root@m0 roles]# vim /etc/ansible/roles/httpd/tasks/main.yml 
---
-       name:    安装httpd
        yum:     name=httpd,httpd-devel      state=present

-       name:    同步httpd配置文件
        copy:    src=/etc/ansible/roles/httpd/files/httpd.conf     dest=/etc/httpd/conf/httpd.conf

        notify:  restart httpd

-       name:    同步主页文件
        copy:   src=/etc/ansible/roles/httpd/files/index.html     dest=/var/www/html/index.html

-       name:    同步php测试页
        copy:    src=/etc/ansible/roles/httpd/files/test.php       dest=/var/www/html/test.php

-       name:    启动httpd并开机自启动
        service: name=httpd     state=started       enabled=yes

4.编写httpd⻆⾊⾥的handler
[root@m0 ansible]# vim /etc/ansible/roles/httpd/handlers/main.yml 
---
-      name:          restart httpd
       service:       name=httpd      state=restarted 

5.将两台主机添加到组
[root@m0 ~]# vim /etc/ansible/hosts 
s1 ansible_ssh_host=192.168.1.68 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=q
s2 ansible_ssh_host=192.168.1.69 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=q

[s]
s1
s2

6.编写httpd的playbook⽂件调⽤前⾯定义好的⻆⾊
[root@m0 roles]# vim /etc/ansible/playbook/httpd.yaml
---
-   hosts:    s
    remote_user:   root
    roles:
      -  httpd

7.执行playbook文件
[root@m0 roles]# ansible-playbook /etc/ansible/playbook/httpd.yaml         //执行


http://www.ppmy.cn/embedded/100280.html

相关文章

企业选择raksmart大带宽服务器的原因

企业在选择服务器托管服务时&#xff0c;会考虑多种因素来满足自身业务需求。Raksmart是一家知名的服务器提供商&#xff0c;其大带宽服务器因其高性能和灵活性而受到许多企业的青睐。以下是一些企业选择Raksmart大带宽服务器的主要原因&#xff1a; 1. 高速传输能力 大带宽服务…

Linuxctags——R的使用

linux实用技巧&#xff1a;你该使用ctags查找源码了-腾讯云开发者社区-腾讯云 (tencent.com) Linux 命令 ctags使用详解_ctags在linux中的使用-CSDN博客 一、ctags -R的含义 ctags-R索引 ctags 是一个用于生成代码索引文件的工具&#xff0c;它可以帮助你快速地在源代码文件…

如何在Mac上安装Python

在Mac上安装Python可以通过多种方式完成&#xff0c;以下是几种常用的方法&#xff1a; 方法一&#xff1a;从Python官网下载安装包 打开浏览器&#xff1a;使用Mac自带的Safari或其他浏览器&#xff0c;访问Python的官方网站https://www.python.org/。下载Python安装包&…

代码随想录算法训练营第三十九天|198.打家劫舍、

题目链接&#xff1a;198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;因为隔一家才能取&#xff0c;所以当前最大的价值要么是dp[i-2] nums[i] 或者是 dp[i-1] class Solution(object):def rob(self, nums):""":type nums: List[int…

redis安装,redis的数据类型和使用场景,Redis事务,Redis持久化,Redis淘汰策略

Redis简介 https://redis.io/docs/data-types/ Redis&#xff08;Remote Dictionary Server )远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存也可持久化的日志型、Key-Value(NoSQL)数据库。 Redis的特点 性能极高&#xff0c;基于内存&…

【图文并茂】ant design pro 如何对接后端个人信息接口

上一节我们有讲到如何对接登录接口的 【图文并茂】ant design pro 如何对接登录接口 仅仅能登录是最基本的&#xff0c;但是我们要进入后台还是需要另一个接口。 这个接口有两个作用&#xff1a; 来获取当前登录账号的信息&#xff0c;比如头像&#xff0c;用户名&#xff0…

【数据结构篇】~栈和队列(附源码)

【数据结构篇】~栈和队列 前言一、栈的实现1.头文件2.源文件3.一个算法题——[有效的括号](https://leetcode.cn/problems/valid-parentheses/description/%E2%80%8B) 二、队列1.头文件2.源文件 前言 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入…

【Linux】Linux项目自动化构建工具-make/Makefile

背景 1.会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力。 2.一个工程中的源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile 定义了一系列的规则来指定&#xff0c;哪些文件需要先编译&#xff0c;哪…