写在前面


  • 分享一些 AWX 创建管理项目的笔记
  • 博文内容涉及:
    • 容器化 AWX 手工创建项目Demo
    • 通过 SCM 创建项目 Demo
    • 项目角色,更新策略介绍,SCM 凭据的创建
  • 食用方式: 需要了解 Ansible
  • 理解不足小伙伴帮忙指正

傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波


为 Ansible Playbook 创建项目

项目

在 AWX Web 界面中,每个 Ansible 项目都由⼀个项目资源来表示。

AWX 中 项目 代表多个剧本及其相关的资源集合,例如,剧本和角色。

常见的项目类型有两种:

  • Manual,从AWX服务器项目基础路径获取项目资料。该目录由/etc/tower/settings.py配置,默认情况下位于/var/lib/awx/projects。这不是推荐的做法。更新此类项目需要在 AWX 界面之外进行手动干预,而且项目管理员具有直接访问权,以在AWX上更改操作系统环境。降低了AWX服务器的安全性。如果是容器环境,比如 K8s 中,不是合适的创建方式,如果pod调度,那么是不可预测的。需要做成有状态应用。

  • SCM(source code management),该项目配置为从版本控制系统(也被 AWX 称为源代码控制管理或 SCM 系统)检索这些资料。 AWX 支持使用 Git、Subversion 或 Mercurial 从 SCM 下载和自动获取项目资料更新的功能。

当前的 AWX 为 k8s 集群中部署,我们来看下对应的处理方式。

┌──[root@vms81.liruilongs.github.io]-[~]
└─$kubectl get pods awx-demo-65d9bf775b-hc58x -o yaml | grep -A 4 '/etc/tower/settings.py'- mountPath: /etc/tower/settings.pyname: awx-demo-settingsreadOnly: truesubPath: settings.py- mountPath: /etc/nginx/nginx.conf
--- mountPath: /etc/tower/settings.pyname: awx-demo-settingsreadOnly: truesubPath: settings.py- mountPath: /var/run/redis
┌──[root@vms81.liruilongs.github.io]-[~]
└─$

这里可以看到,对应配置文件做了 CM 卷挂载上去的。我们找一些具体 的 CM

┌──[root@vms81.liruilongs.github.io]-[~]
└─$kubectl get pods awx-demo-65d9bf775b-hc58x -o yaml |grep -A 10 awx-demo-settings | grep -A 5  configMap  | grep namename: awx-demo-awx-configmap
┌──[root@vms81.liruilongs.github.io]-[~]
└─$

查看配置文件的详细信息,确认项目目录

┌──[root@vms81.liruilongs.github.io]-[~]
└─$kubectl get cm awx-demo-awx-configmap -o jsonpath='{.data.settings}'
import os
import socket
# Import all so that extra_settings works properly
from django_auth_ldap.config import *def get_secret():if os.path.exists("/etc/tower/SECRET_KEY"):return open('/etc/tower/SECRET_KEY', 'rb').read().strip()ADMINS = ()
STATIC_ROOT = '/var/lib/awx/public/static'
STATIC_URL = '/static/'
PROJECTS_ROOT = '/var/lib/awx/projects'
JOBOUTPUT_ROOT = '/var/lib/awx/job_status'
.................
┌──[root@vms81.liruilongs.github.io]-[~]
└─$

创建项目

手动创建

手动的方式,所以我们需要这 pod 容器内部创建,这里我们这了一个创建好的项目上穿上去。

查看当前项目目录

┌──[root@vms81.liruilongs.github.io]-[~]
└─$kubectl exec -it  awx-demo-65d9bf775b-hc58x -c awx-demo-task  -- bash
bash-5.1$ cd  /var/lib/awx/projects
bash-5.1$ ls
bash-5.1$ exit
exit

生成一个角色作为项目,然后 cp 到容器内部目录下

┌──[root@vms81.liruilongs.github.io]-[~/ansible]
└─$ansible-galaxy init liruilong_manual
- Role liruilong_manual was created successfully
┌──[root@vms81.liruilongs.github.io]-[~/ansible]
└─$kubectl cp liruilong_manual awx-demo-65d9bf775b-hc58x:/var/lib/awx/projects/ -c awx-demo-task
┌──[root@vms81.liruilongs.github.io]-[~/ansible]
└─$kubectl exec -it awx-demo-65d9bf775b-hc58x -c awx-demo-task  -- bash
bash-5.1$ cd /var/lib/awx/projects/
bash-5.1$ ls
liruilong_manual
bash-5.1$

刷新 AWX ,会看到刚才创建的本地项目

选择创建

创建成功

SCM 的方式创建

SCM的方式,这里我们选择通过 github 获取一个之前写的角色 https://github.com/LIRUILONGS/ansible_role_keepalived

在源控制中输入项目路径

创建后查看状态

这里同步失败 ,因为还没有配置 github 的凭据,需要SCM 凭据,下面会介绍

在容器项目路径下,可以看到我们同步的项目

┌──[root@vms81.liruilongs.github.io]-[~/ansible]
└─$kubectl exec -it awx-demo-65d9bf775b-hc58x -c awx-demo-task  -- bash
bash-5.1$ cd /var/lib/awx/projects/
bash-5.1$ ls -l
total 0
drwxr-xr-x  2 awx root   6 Oct 21 19:20 _6__demo_project
-rwxr-xr-x  1 awx root   0 Oct 21 19:20 _6__demo_project.lock
drwxr-xr-x  4 awx root  86 Oct 21 18:25 _9__ansible_role_keepalived
-rwxr-xr-x  1 awx root   0 Oct 21 18:25 _9__ansible_role_keepalived.lock
drwxr-xr-x 10 awx root 154 Oct 21 13:45 liruilong_manual
-rwxr-xr-x  1 awx root   0 Oct 21 19:35 liruilong_manual.lock
bash-5.1$

项目角色

创建好项目之后需要分配角色

项目可用的角色列表:

  • Admin:授予用户对项目完全的访问权限。
  • Use:授予用户在模板资源中使用项目的权限。
  • Update:授予用户从其 SCM 来源手动更新或计划更新项目资料更新的权限。
  • Read:授予用户查看与项目关联的详细信息。

管理项目访问权限

首次创建项目时,用户必须拥有该项目的组织的Admin 或 Auitor角色才能访问它。用户的其它访问权限必须经过特别配置。创建项目时无法分配角色,必须通过编辑项目进行添加。

创建 SCM 凭据

源代码控制凭据存储身份验证信息,供 AWX 用来访问存储在像 Git 这样的版本控制系统中的项目中的资料。SCM 凭据存储对源代码控制存储库访问权限进行身份验证所需的用户名和密码或私钥。

创建 SCM 凭据

添加凭据,这里我们使用帐密凭据

同步项目

SCM 凭据角色

与计算机凭据一样,专用 SCM 凭据仅供其创建者以及 System Administrator 和 System Auditor 用户使用。分
配给某一组织的 SCM 凭据可以与其它用户共享,方法是为用户或团队分配该凭据的角色。

可用的角色列表:

  • Admin:授予用户对 SCM 凭据完全的访问权限。
  • Use:授予用户将 SCM 凭据与项目资源关联的权限。
  • Read:授予用户查看 SCM 凭据详细信息的权限。

管理 SCM 凭据访问权限

SCM 凭据 添加角色

首次创建组织凭据时,只能由特定用户进行访问,其它用户的其它权限必须经过特别配置。

更新项目策略

可以通过以下方式在 AWX 中更新 SCM 项目资源的策略:

  • 在进行更新前删除任何本地修改。

  • 在进行更新前删除整个本地存储库。根据存储库的大小,这可能会显著增加完成更新所需的时间

  • 子模块将跟踪其 master 分支(或在 .gitmodules 中指定的其他分支)的最新提交。如果没有,子模块将会保留在主项目指定的修订版本中。这等同于在 git submodule update 命令中指定 --remote 标志。

  • 每次使用此项目运行作业时,请在启动该作业前更新项目的修订。

  • 允许在使用此项目的作业模板中更改 Source Control 分支或修订版本。

也可以手动更新到最新版本:

对 Ansible 角色的支持

项目可以指定外部 Ansible 角色,它们作为依赖项存储在 Ansible Galaxy 或其他源代码管理存储库中。在项目更新结束时,如果项⽬的存储库包括⼀个包含有效 requirements.yml 文件的 roles目录,则红帽 AWX 将自动运行 ansible-galaxy 以安装角色,这个用到了在研究

博文参考


《DO447 Advanced Automation Ansible Best Practices》

Ansible之 AWX 创建管理项目的一些笔记相关推荐

  1. idea创建管理项目

    创建分支时以master为准,这时master上的代码已合并完毕,idea右下角可以看到本地和远程的分支,在本地合并时,先切换到master上,选中要合并到master的分支,选择merge into ...

  2. 第九章、Ansible基于roles角色管理大项目

    第九章.Ansible基于roles角色管理大项目 文章目录 一.利用角色构造ansible playbook 1.在playbook中使用ansible角色 2.控制执行顺序 3.导入角色任务 二. ...

  3. apache geode项目结构_使用IntelliJ IDEA+Maven 创建、开发、管理项目

    前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考. 来源:http://1t.click/ag4d # 前言 本篇开发环境 1.操作系统:Windows 10 X642.Java SDK: ...

  4. mui教程1——mui介绍、创建mui项目与初步使用、MUI常用代码提示、webview基本操作、事件管理、mui的内置函数

    一.MUI资源索引及MUI介绍 1,资源索引 官网:http://dev.dcloud.net.cn/mui/ MUI官方文档:http://dev.dcloud.net.cn/mui/ui/ 调用手 ...

  5. Unity + SQL数据库创建管理玩家排行榜学习教程

    Unity + SQL Databases Player Management Leaderboards + More! Unity + SQL数据库玩家管理排行榜+更多! MP4 |视频:h264, ...

  6. 创建Django项目和模型(创建工程、子应用、设置pycharm环境、使用Django进行数据库开发的步骤)

    1.创建Django项目 文档:Writing your first Django app, part 1 | Django documentation | Django 步骤 创建Django项目 ...

  7. 创建vue项目+总结使用(跨域问题+vue 创建)

    创建vue项目: -安装node.js-vue脚手架-vue create 项目名字pycharm开发vue项目-需要安装vue.js插件-setting--->plugins--->左下 ...

  8. 创建cordova项目

    PhoneGap是一套能让你使用HTML5轻松调用本地API接口和发布应用到商店的应用开发平台.官方说有低成本,低开发周期,轻量化等优点,这些咱暂时也没法证明,略过不表.但是有一条跨平台,却是很明显的 ...

  9. 使用Trello看板管理项目

    在大约10年前,我们用面向对象的方式管理项目.五年前,我们又开始使用敏捷方法管理项目.一年前,精益软件开发方法开始流行起来,看板式项目管理方式成为项目管理的主流,那么到底看板式管理到底是如何管理项目的 ...

最新文章

  1. 【Codeforces】1080C Masha and two friends (棋盘染色)
  2. C# 不能从数据库更新实体
  3. org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
  4. 程序员输入法_解决Pycharm输入法不跟随光标
  5. react 引入轮播插件_如何在react中引入swiper滑动插件
  6. cbnertvirtual内部框架下载_关于matepad pro谷歌框架
  7. 【应届生租房】应届生如何租房以及注意事项
  8. SVN提交时文件上出现的问号图标是什么
  9. mac 远程连接 Windows 桌面
  10. 魏鹏机器人_智能刷脸、机器人、无人机...山东多地校园开学充满“科技感”
  11. Unity自带GL详解
  12. JAVA获取excel第一列数据
  13. php推送消息到邮箱,thinkphp3.2通过PHPMailer发送邮件推送消息
  14. 计算机网络常用知识点
  15. 鲍威尔法源程序码matlab,鲍威尔算法matlab程序f.doc
  16. 重写webFlux中的webFilter,随意跳转到指定的过滤器,其实很简单
  17. RAID和LVM磁盘阵列
  18. SolrCloud集群架构
  19. 说说聊天室里面的男男女女
  20. mysql身份证校验码_sql 语句 验证身份证号码

热门文章

  1. 知识产权恶意侵权是什么意思
  2. Android 蓝牙开关打开enable流程--framework层---全网最详细
  3. 方形图片 圆形图片 各种形状
  4. Java飞机小游戏制作简单实现详细小结
  5. itol.toolkit中文文档|复现Li 2022 JHM
  6. 用设计模式降低循环复杂性
  7. 基于优先数系选择分压电阻
  8. 四元数:从复数到四元数
  9. 2022年xx地 信息安全管理与评估赛题
  10. python数字推盘游戏怎么显示步数_python初学---猜数字游戏(游戏与AI,原创)