基于ANSIBLE中的YAML非标记语言Role角色扮演

YAML-YAML Ain’t Markup Language-非标记语言

  • 语法

    • 列表
      • fruits:
      • ​ - Apple
      • ​ - Orange
      • ​ - Strawberry
      • ​ - Mango
    • 字典
      • martin:
      • ​ name : Martin D’vloper
      • ​ job : Developer
      • ​ skill : Elite
  • 示例1

    • 需求

      • 通过YAML编写一个简单的剧本,完成web的部署,配置,启动的全过程。
    • ansible服务器

      • 准备工作

        • ansible all -m yum -a ‘name=httpd state=removed’ -o
          • 清理一下环境
          • all表示所有配置的主机
        • yum install -y httpd
          • 准备配置文件
        • mkdir apache
        • cd apache
        • pwd
          /root/apache
        • cp -rf /etc/httpd/conf/httpd.conf /root/apache
        • grep -n ‘^Listen’ httpd.conf
          • Listen 8080
            • 修改配置,从80 改为8080 用作推送
      • 编写剧本

        • vim apache.yaml

          /root/apache/apache.yaml

          - hosts: host2tasks:- name: install apache packagesyum: name=httpd state=present- name: copy apache confcopy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf- name: ensure apache is runningservice: name=httpd state=started enabled=yes

          注释:

          hosts: 要执行该脚本的目标主机
          tasks: 总任务
          name   任务名称
          yum    具体任务name=httpd state=present  模块属性 名称和状态
      • 测试:

        • ansible-playbook apache.yaml --syntax-check

          • 检验语法
        • ansible-playbook apache.yaml --list-tasks

          • 列出任务
        • ansible-playbook apache.yaml --list-hosts

          • 列出主机
        • ansible-playbook apache.yaml

          • 执行
        • http://192.168.145.142:8080/

  • handlers

  • 如果配置文件发生变化。

    • Listen 9000

      vim /root/apache/httpd.confListen 8090
      
  • ansible-playbook apache.yaml

    • 去host2查看配置文件
      • vim /etc/httpd/conf/httpd.conf
      • 再次执行,命令成功,但配置未生效,所以要增加处理程序。设置触发器
  • 访问查看

    • 会发现访问失败
    • host2中查看httpd端口号

      # netstat -naltp | grep httpd
      tcp6       0      0 :::8080                 :::*                    LISTEN      53570/httpd

      因为,修改配置后,需要重启服务才能生效

  • vim apache.yaml

- hosts: host2tasks:- name: install apache packagesyum: name=httpd state=present- name: copy apache confcopy: src=./httpd.conf dest=/etc/httpd/conf/httpd.confnotify: restart apache service- name: ensure apache is runningservice: name=httpd state=started enabled=yeshandlers:- name: restart apache serviceservice: name=httpd state=restarted`
  • 如果配置文件再发生变化。

    • Listen 8091

    • vim /root/apache/httpd.confListen 8091
      
  • ansible-playbook apache.yaml

    • 再次执行,配置生效,触发成功

Role-角色扮演

  • 简介

    • roles则是在ansible中,playbooks的目录组织结构。 将代码或文件进行模块化,成为roles的文件目录组织结构, 易读,代码可重用,层次清晰。
  • 目标

    • 通过role远程部署nginx并配置
  • 1.目录结构
    请添加图片描述

- nginx 角色名files  普通文件 handlers  触发器程序 tasks  主任务 templates 金甲模板(有变量的文件) vars 自定义变量
  • 准备目录结构

  • 下面都在ansible服务器下操作:

    • mkdir roles/nginx/{files,handlers,tasks,templates,vars} -p
      
    • touch roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml
      
    • echo 1234 > roles/nginx/files/index.html
      
    • yum install -y nginx && cp /etc/nginx/nginx.conf  有空格roles/nginx/templates/nginx.conf.j2
      
  • 2.编写任务

    • vim roles/nginx/tasks/main.yaml

      • ---
        - name: install epel-release packgeyum: name=epel-release state=latest- name: install nginx packgeyum: name=nginx  state=latest- name: copy index.htmlcopy: src=index.html dest=/usr/share/nginx/html/index.html- name: copy nginx.conf templatetemplate: src=nginx.conf.j2 dest=/etc/nginx/nginx.confnotify: restart nginx- name: make sure nginx service runningservice: name=nginx state=started enabled=yes
        • 对迭代项的引用,固定变量名为"item”,使用with_item属性给定要迭代的元素;
  • 3.准备配置文件

    • vim roles/nginx/templates/nginx.conf.j2

      • worker_processes {{ ansible_processor_cores }};

        • 调用内部已知变量

          # ansible host1 -m setup -a 'filter=ansible_processor_cores'
          host1 | SUCCESS => {"ansible_facts": {"ansible_processor_cores": 1,"discovered_interpreter_python": "/usr/bin/python3"},"changed": false
          }
      • worker_connections {{ worker_connections }};

        • 自定义变量
  • 4.编写变量

    • vim roles/nginx/vars/main.yaml
      • worker_connections: 10240
  • 5.编写处理程序

    • vim roles/nginx/handlers/main.yaml

      ---
      - name: restart nginxservice: name=nginx state=restarted
      
  • 6.编写剧本

    • site.yaml 操作的对象

    • vim roles/site.yaml

      - hosts: host4roles:- nginx
      
  • 7.实施

    • cd roles

    • ansible-playbook site.yaml --syntax-check

      • 测试
    • ansible-playbook site.yaml

      • 实施剧本
    • 验证host4

    • host4查看nginx配置文件,变量已替换

vim /etc/nginx/nginx.conf

最后可能会形成:

[root@localhost ~]# tree /root/roles/
/root/roles/
├── docker
│   ├── files
│   │   └── index.html
│   ├── handlers
│   │   └── main.yaml
│   ├── tasks
│   │   └── main.yaml
│   ├── templates
│   │   └── nginx.conf.j2
│   └── vars
│       └── main.yaml
├── lvs
│   ├── files
│   │   └── index.html
│   ├── handlers
│   │   └── main.yaml
│   ├── tasks
│   │   └── main.yaml
│   ├── templates
│   │   └── nginx.conf.j2
│   └── vars
│       └── main.yaml
├── mysql
│   ├── files
│   │   └── index.html
│   ├── handlers
│   │   └── main.yaml
│   ├── tasks
│   │   └── main.yaml
│   ├── templates
│   │   └── nginx.conf.j2
│   └── vars
│       └── main.yaml
├── nginx
│   ├── files
│   │   └── index.html
│   ├── handlers
│   │   └── main.yaml
│   ├── tasks
│   │   └── main.yaml
│   ├── templates
│   │   └── nginx.conf.j2
│   └── vars
│       └── main.yaml
└── site.yaml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3248787.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【Mongodb-04】Mongodb聚合管道操作基本功能

Mongodb系列整体栏目 内容链接地址【一】Mongodb亿级数据性能测试和压测https://zhenghuisheng.blog.csdn.net/article/details/139505973【二】springboot整合Mongodb(详解)https://zhenghuisheng.blog.csdn.net/article/details/139704356【三】亿级数据从mysql迁移到mongodb…

【Springboot】新增profile环境配置应用启动失败

RT 最近接手了一个新的项目,为了不污染别人的环境,我新增了一个自己的环境配置。结果,在启动的时候总是失败,就算是反复mvn clean install也是无效。 问题现象 卡住无法进行下一步 解决思路 由于之前都是能启动的&#xff0c…

视频素材网站无水印的有哪些?热门视频素材网站分享

当我们走进视频创作的精彩世界时,一个难题常常摆在面前——那些高品质、无水印的视频素材究竟应该在哪里寻找?许多视频创作者感叹,寻找理想的视频素材难度甚至超过了寻找伴侣!但不用担心,今天我将为您介绍几个优质的视…

宝塔安装RabbitMq教程

需要放开15672端口,默认账号密码为guest/guest

浅说区间dp(下)

文章目录 环形区间dp例题[NOI1995] 石子合并题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路 [NOIP2006 提高组] 能量项链题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示思路 [NOIP2001 提高组] 数的划分题目描述输入格式输出格式样例 #1样例输…

车载音视频App框架设计

简介 统一播放器提供媒体播放一致性的交互和视觉体验,减少各个媒体应用和场景独自开发的重复工作量,实现媒体播放链路的一致性,减少碎片化的Bug。本文面向应用开发者介绍如何快速接入媒体播放器。 主要功能: 新设计的统一播放U…

进程空间的回收以及执行当前进程空间内的另一进程

1.进程的退出 1.exit 功能: 让进程退出,并刷新缓存区 参数: status:进程退出的状态 返回值: 缺省 exit -> 刷新缓存区 -> atexit注册的退出函数 -> _exit 2._exit 功能: 让进程退出,不刷…

代码随想录——分割等和子集(Leetcode LCR 101)

题目链接 0-1背包问题 class Solution {public boolean canPartition(int[] nums) {int[] dp new int[10000];int sum 0;// 首先求背包体积应该为nums数组总和的一半for(int i 0; i < nums.length; i){sum nums[i];}// 如果总和为奇数则不存在等和子集if(sum % 2 1)…

输出调节求解跟踪问题(二阶线性系统)

本文研究了一种基于增广系统的领导者-跟随者控制框架&#xff0c;旨在实现跟随者系统对领导者参考信号的精确跟踪。首先&#xff0c;建立了跟随者和领导者的独立状态空间方程&#xff0c;分别描述了它们的动态行为和输出关系。随后&#xff0c;通过将两者的状态空间方程结合成增…

在Linux系统安装MySQL有多简单

MySQL 是一种流行的开源关系数据库管理系统&#xff0c;广泛应用于各种类型的应用程序和服务。在安装TitanIDE​​​​​​​以后是没有MySQL服务的&#xff0c;我们需要单独安装安装MySQL。本文将介绍在 Linux 上安装 MySQL 的多种方式&#xff0c;包括离线安装、使用 Docker …

el-tree动态添加子节点的问题

如果我们需要动态往el-tree里面某一个节点添加子节点&#xff0c;追加或删除&#xff0c;我跟你讲&#xff0c;一定要显式地调用el-tree的方法&#xff0c;不然的话&#xff0c;后面调用setChecked这种方法看不到效果的。 比如el-tree绑定的data如下&#xff1a; [{id:"1…

DP(1500-1700)(刷题)

1.状态机模型&#xff1a;https://codeforces.com/contest/1984/problem/C2 记一下max与min状态转移即可&#xff0c;下面是AC代码&#xff1a; #include<bits/stdc.h> using namespace std; typedef long long ll; ll a[200010],t,n; ll dp[200010][2];//dp[i][0]表示…

掌握这些技巧,让你成为画册制作高手

在数字化的时代背景下&#xff0c;电子画册以其便捷的传播方式、丰富的视觉表现形式&#xff0c;赢得了大众的喜爱。它不仅能够在个人电脑上展现&#xff0c;还能通过智能手机、平板电脑等多种移动设备随时随地被访问和浏览。这种跨平台的支持&#xff0c;使得无论你身处何地&a…

volatile关键字解析

一、volatile介绍 volatile是Java提供的一种轻量级的同步机制&#xff0c;在并发编程中&#xff0c;它也扮演着比较重要的角色。同synchronized相比&#xff08;synchronized通常称为重量级锁&#xff09;&#xff0c;volatile更轻量级&#xff0c;相比使用synchronized所带来的…

leetcode热题100.分割等和子集(动态规划)

分割等和子集 Problem: 416. 分割等和子集 思路 我选择使用动态规划的方法来解题。我们需要判断是否可以将数组分割成两个子集&#xff0c;使得这两个子集的和相等。这个问题可以转化为在数组中找到一个子集&#xff0c;使得其和等于数组总和的一半。 解题过程 首先&#xf…

【Django】网上蛋糕商城后台-商品管理

1.商品管理功能 当管理员点击商品管理时&#xff0c;发送服务器请求 path(admin/goods_list/, viewsAdmin.goods_list), # 处理商品列表请求 def goods_list(request):try:type request.GET["type"]except:type 0try:ym request.GET["ym"]except:ym …

5大常用的回归测试工具介绍

回归测试工具介绍 以下是一些可用于创建和执行回归测试的工具。但是&#xff0c;在决定使用哪些产品之前&#xff0c;应彻底研究每种产品的要求。 Selenium Selenium 是一个开源 Web 自动化测试工具&#xff0c;用于测试网站和 Web 应用程序。它被认为是用于Web 应用程序测试的…

路径规划 | 基于DQN深度强化学习算法的路径规划(Matlab)

目录 效果一览基本介绍程序设计参考文献 效果一览 基本介绍 DQN路径规划算法 基于深度强化学习算法的路径规划 matlab2023b 栅格环境&#xff0c;走迷宫&#xff0c;可以通过窗口界面方便观察交互过程&#xff0c;代码注释详尽。 程序设计 完整源码和数据私信博主回复基于DQN深…

【Linux信号】信号的保存、信号在内核中的表示、信号集操作函数、sigprocmask、sigpending

目录 信号在内核中的表示信号阻塞的理解 sigset_t 信号集操作函数 sigprocmask sigpending sigprocmask和sigpending都是系统调用 我们先来了解一下关于信号的一些常见概念&#xff1a; 实际执行 信号的处理动作 称为信号递达。 信号从产生到递达的之间的状态称为信号未决…

场外个股期权交割日是每个月几号?怎么参与场外个股期权?

今天带你了解场外个股期权交割日是每个月几号&#xff1f;怎么参与场外个股期权&#xff1f;在进行期权交易之前&#xff0c;投资者需要选择一个可靠的期权交易平台。 个股场外期权交易是指在股票交易所以外的场所进行的期权交易。期权是一种约定&#xff0c;根据该约定&#…