Ansible之 AWX 创建管理项目的一些笔记
寫在前面
- 分享一些 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 创建管理项目的一些笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京周末去哪儿 —— 北京植物园
- 下一篇: 对比Google翻译、百度翻译和有道翻译