公司生产环境AWX配置的操作与部署说明

一、模板

在这里插入图片描述

  • 模板名称,见名知义
  • 项目:ansible脚本所在的位置,可以是本地,也可以是远程分布式配置,比如gitlab。(详见下文)
  • PLAYBOOK:ansible运行的入口
  • 凭证
  • 作业标签:任务的细分,可能是start,可能是stop,也可能是restart

额外变量

定义ansible脚本运行的参数。

在这里插入图片描述

二、项目

在这里插入图片描述

创建新项目

在这里插入图片描述
在这里插入图片描述

手动类型

在这里插入图片描述

awx机器的本地目录:

对应/var/lib/awx/projects/docker_control
在这里插入图片描述

git类型

填写git仓库的地址、分支和凭证。

在这里插入图片描述

三、 凭证

凭证有很多种,包括gitlab等中间件的用户名密码、k8s api的令牌、机器的用户名密码等等。

1、源控制

输入gitlab的用户名和密码。

在这里插入图片描述

2、OpenShift 或 Kubernetes API 持有者令牌

填写k8s的api地址及令牌

在这里插入图片描述
在这里插入图片描述

3、机器

输入ssh远程机器的用户名和密码。

在这里插入图片描述

四、ansible脚本

目录结构:

  • k8s_control.yaml
  • ecs_control.yaml
  • globals.yaml
  • roles
    • k8s_control
      • tasks
          • main.yaml
          • scripts
            • xxx.yaml
            • xxx.yaml
    • ecs_control
      • tasks
          • main.yaml
          • scripts
            • xxx.yaml
            • xxx.yaml

1、入口地址k8s_control.yaml

在这里插入图片描述

作为入口程序,它比较简单,通过roles指定了运行脚本roles/k8s_control/main.yaml。

2、globals.yaml

在这里插入图片描述

3、main.yaml

基本格式:

- name: make service imageinclude: scripts/make_image.yamltags: ["make_image", "update"]
  • include:嵌套运行另外一个yaml脚本,文件在相对路径scripts/make_image.yaml
  • tags:标签数组,既然是多个,它们之间的关系是OR或。也就是说,无论是make_image还是update,都会触发该ansible脚本-- scripts/make_image.yaml。

3、常用的任务脚本

  • 复制文件
- name: Copy {{ APPNAME }} zip packagecopy: src={{ web_app_dir }}/{{ APPNAME }}/{{ APPNAME }}.zip dest={{ directory }}/{{ APPNAME }}/{{ APPNAME }}/packages/ owner=devuser group=devuser mode=755connection: local
  • 执行shell命令
- name: Tag and push {{ APPNAME }}:{{ VERSION }} imageshell: docker tag {{ image_id }} {{ aly_image_storage }}{{ APPNAME }}:{{ VERSION }} && docker push {{ aly_image_storage }}{{ APPNAME }}:{{ VERSION }}
  • 切换目录
- name: Make {{ APPNAME }} docker imageshell: chdir: "{{ directory }}/{{ APPNAME }}"cmd: "docker build -t {{ APPNAME }}:{{ VERSION }} ./"
  • 条件判断
- name: Verify the {{ APPNAME }} version is consistentfail:msg: "MD5 file is different"when: get_md5.stdout != cat_md5.stdoutconnection: local

变量get_md5和cat_md5是否相等,如果不同,则报错"MD5 file is different"。

那么这两个变量的值又是从何而来呢?就需要下文的语法register

  • 变量赋值register
- name: Get {{ APPNAME }} package md5shell: /usr/bin/md5sum  {{ web_app_dir }}/{{ APPNAME }}/{{ APPNAME }}.zip | awk -F ' ' '{print $1}'register: get_md5connection: local- name: Cat {{ APPNAME }} package md5shell: /usr/bin/cat {{ web_app_dir }}/{{ APPNAME }}/{{ APPNAME }}.zip.md5register: cat_md5connection: local

另外一种赋值的写法,见下:

  • set_fact

在docker images查询镜像的时候,过滤得到镜像ID,然后赋值给变量“image_id”。

- name: Get {{ APPNAME }}:{{ VERSION }} image idshell: docker images {{ APPNAME }}:{{ VERSION }} | awk '/{{ APPNAME }}/{print $3}'register: IMAGE_ID- set_fact:image_id: "{{ IMAGE_ID.stdout }}"connection: local

再举一个例子:

给变量OPTION赋值为update_from_yaml。

- set_fact:OPTION: "update_from_yaml"connection: local
  • 忽略错误 ignore_errors
- name: Comparison {{ APPNAME }} package versionshell: check_version.sh {{ VERSION }} {{ current_version }}register: version_statuswhen: (DEBUG  is undefined) and (scheduling_type == "deployment")ignore_errors: yes
  • 创建目录
- name: Create {{ APPNAME }} directoryfile: state=directory path={{ directory }}/{{ APPNAME }}/{{ APPNAME }}/{{ item }} owner=devuser group=devuser mode=755with_items:- "packages"connection: local
  • 创建文件
- name: Create {{ APPNAME }} dockerfiletemplate: src={{ item }} dest={{ directory }}/{{ APPNAME }}/ owner=devuser group=devuser mode=755with_items:- "Dockerfile"connection: local
  • 更新文件template
- name: Update {{ APPNAME }} k8s yaml_templatetemplate: src=config.yaml dest={{ directory }}/{{ APPNAME }}/yamls/ owner=duser group=devuser mode=755connection: local
  • 循环遍历

使用语法with_items和template,使得在一个任务中循环执行,而不用创建两个任务。

# 生成新的 deployment.yaml 和 service.yaml 文件
- name: Create {{ APPNAME }} k8s yamltemplate: src={{ directory }}/{{ APPNAME }}/yamls/{{ item }}_template.yaml dest={{ directory }}/{{ APPNAME }}/yamls/{{ item }}.yaml owner=devuser group=devuser mode=755with_items:- "deployment"- "service"connection: local

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024 RCTF WebMisc部分 WP

Misc gogogo 考点:内存取证 得到 gogogo.raw 内存取证的题用volatility和AXIOM结合分析 AXIOM 分析存在云服务 但是百度网盘要密码 https://pan.baidu.com/share/init?surlZllFd8IK-oHvTCYl61_7Kw 发现访问过sqlite数据库 可以尝试提取数据库文件出来 结合 volatility 第…

知识库管理系统:是什么、作用、如何搭建

你有没有遇到过这种情况:在工作中想要查找某个信息,查找了很多个文档还是没找到准确的信息;或者在团队中,总是在重复做着相同的资料搜集工作,浪费了大量时间和精力?如果你在烦恼这个问题,那么跟…

替换字符串

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 sub()方法用于实现字符串替换,语法格式如下: re.sub(pattern, repl, string, count, flags) 参数说明: l pat…

软件测试可发现所有bug吗?有什么样的原则和目的?

在今天的高度数字化时代,软件测试的重要性不可忽视。这是一种系统性的过程,通过对软件系统进行评估和验证,以确定其是否满足预期要求。在软件开发的各个阶段,软件测试都扮演着至关重要的角色。它涉及到软件功能、性能、安全性等多…

在CentOS系统上安装Oracle JDK(华为镜像)

在CentOS系统上安装Oracle JDK(华为镜像) 先爱上自己,再遇见爱情,不庸人自扰,不沉溺过去,不为自己的敏感而患得患失,不为别人的过失而任性,这才是终身浪漫的开始。 https://repo.huaweicloud.com/java/jdk …

C++学习第十一天——vector的模拟实现

✨ 生于火焰,落俗不可避免,但浪漫至死不渝 🌏 📃个人主页:island1314 🔥个人专栏:C学习 🚀 欢迎关注:👍点赞 &…

DevExpress开发WPF应用实现对话框总结

说明: 完整代码Github​(https://github.com/VinciYan/DXMessageBoxDemos.git)DevExpree v23.2.4(链接:https://pan.baidu.com/s/1eGWwCKAr8lJ_PBWZ_R6SkQ?pwd9jwc 提取码:9jwc)使用Visual St…

基于Spring前后端分离版本的论坛系统-自动化测试

目录 前言 一、测试环境 二、环境部署 三、测试用例 四、执行测试 4.1、公共类设计 创建浏览器驱动对象 测试套件 释放驱动类 4.2、功能测试 注册页面 登录页面 版块 帖子 用户个人中心页 站内信 4.3、界面测试 注册页面 登录页面 版块 帖子 用户个人中心页…

Redis实战篇3:优惠券秒杀

说明 该实战篇基于某马的Redis课程中的《某马点评项目》。非常适合有相关经验、缺少企业级解决方案,或者想要复习的人观看,全篇都会一步一步的推导其为什么要这么做,分析其优缺点,达到能够应用的地步。 本实战篇中心思想就是把项目…

Mariadb操作命令指南

MariaDB简介 ​ 以下内容仅是站长或网友个人学习笔记、总结和研究收藏。不保证正确性,因使用而带来的风险与本站无关! 数据库应用程序与主应用程序分开存在,并存储数据集合。 每个数据库都使用一个或多个API来创建,访问&#xf…

分立元件实现稳压

电路原理图 优点:电压精度高,可以调整输出电压 缺点:压差大时效率较低,发热严重。 参考连接 TL431-高效5V精密稳压器-电路知识干货 (qq.com)https://mp.weixin.qq.com/s?__bizMzkxNzIxNTc5OQ&mid2247484878&idx1&…

操作系统教材第6版——个人笔记1

第一章 计算机操作系统概述 操作系统是计算机系统中最重要的系统软件,它统一管理计算机系统的硬件资源与信息资源,控制与调度上层软件的执行并为其提供易于使用的接口。从资源管理、程序控制、操作控制、人机交互、程序接口、系统结构6个角度深入观察操…

Github 如何配置 PNPM 的 CI 环境

最近出于兴趣在写一个前端框架 echox,然后在 Github 上给它配置了最简单的 CI 环境,这里简单记录一下。 特殊目录 首先需要在项目根目录里面创建 Github 仓库中的一个特殊目录:.github/workflows,用于存放 Github Actions 的工作…

269 基于matlab的四连杆机构动力学参数计算

基于matlab的四连杆机构动力学参数计算。将抽油机简化为4连杆机构,仿真出悬点的位移、速度、加速度、扭矩因数、游梁转角等参数,并绘出图形。程序已调通,可直接运行。 269机构动力学参数计算 位移、速度、加速度 - 小红书 (xiaohongshu.com)

段码屏|液晶显示模块|超低功耗LCD驱动芯片

1 简介 PC164S32 是一款支持 128 点 (32 4)显示 的多功能 LCD 控制器芯片,内部存储器RAM数据直接映射到 LCD 显示。可软件配置特性使其适用于包括 LCD 模块和显示子系统在内的多种 LCD 应用。主控制器与 PC164S32接口仅需3 或 4 条线。内置的省电模式极大的降低了功…

我给线程池管理框架hippo4j找bug

1 虚拟机参数不生效 hippo4j的docker启动脚本位于 docker/docker-startup.sh 。从下图可以看到 JAVA_OPT放在了jar包名 hippo4j-server.jar之后,而只有项目参数才放在jar包名之后。 实际上这里JAVA_OPT中包含虚拟机参数,而虚拟机参数要放在jar包名之前…

使用 CNN 训练自己的数据集

CNN(练习数据集) 1.导包:2.导入数据集:3. 使用image_dataset_from_directory()将数据加载tf.data.Dataset中:4. 查看数据集中的一部分图像,以及它们对应的标签:5.迭代数据集 train_ds&#xff0…

【漏洞复现】DT-高清车牌识别摄像机 任意文件读取漏洞

0x01 产品简介 DT-高清 车牌识别摄像机是一款先进的安防设备,采用高清图像传感器和先进的识别算法,能够精准、快速地识别车牌信息。其高清晰该摄像机结合了智能识别技术,支持实时监宴图像质量确保在各种光照和天气条件下都能准确捕捉车牌信息…

【面试八股总结】MySQL事务:事务特性、事务并行、事务的隔离级别

参考资料:小林coding 一、事务的特性ACID 原子性(Atomicity) 一个事务是一个不可分割的工作单位,事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。原子性是通过 undo …

C#根据数据量自动排版标签的样例

这是一个C#根据数据量自动排版标签的样例 using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Drawing; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using HslCommuni…