日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:52010
  • 待審:67
  • 小程序:12
  • 文章:1106242
  • 會員:784

歡迎來到“50 天 50 個 devops 工具”系列的第 31 天!在上一篇文章中,我們向您介紹了 ansible,涵蓋其基本架構、設置和一些簡單的手冊。今天,我們將更深入地了解 ansible 的世界,探索先進的技術和實際應用程序,將您的自動化技能提升到一個新的水平。這篇文章將重點介紹 ansible 角色、ansible vault、條件和循環等功能,為您提供實際示例來鞏固您的理解。

回顧:什么是 ansible?

在深入研究高級概念之前,讓我們快速回顧一下 ansible 是什么:

無代理自動化工具: ansible 使用 ssh 來管理節點,無需安裝任何代理。
基于 yaml 的 playbook: ansible 的任務是在人類可讀的 yaml 文件中定義的。
冪等性: 確保同一個劇本可以多次運行,而不會產生意想不到的副作用。

高級 ansible 概念

在本節中,我們將探索 ansible 的一些高級功能,這些功能可以實現更強大、更靈活的自動化。

1. ansible 角色

隨著您的 ansible 劇本變得越來越復雜,保持它們的組織性和可維護性變得很重要。 ansible 角色允許您將劇本構建為可重用的組件。

角色結構:

ansible 角色具有特定的目錄結構:

roles/
├── common/
│   ├── tasks/
│   │   └── main.yml
│   ├── handlers/
│   │   └── main.yml
│   ├── templates/
│   ├── files/
│   ├── vars/
│   │   └── main.yml
│   └── defaults/
│       └── main.yml

登錄后復制

每個目錄都有特定的用途:

tasks/: 包含要執行的主要任務。
handlers/: 定義應由某些任務觸發的操作(例如,重新啟動服務)。
templates/: 保存可以動態生成的 jinja2 模板。
files/: 存放需要復制到被管節點的靜態文件。
vars/: 包含特定于角色的變量。
defaults/: 存儲角色的默認變量。

創建和使用角色:

讓我們創建一個簡單的角色來設置 nginx web 服務器。

創建角色目錄:

mkdir -p roles/nginx/{tasks,handlers,templates,files,vars,defaults}

登錄后復制

定義任務:

在roles/nginx/tasks/main.yml中,添加以下內容:

---
- name: install nginx
  apt:
    name: nginx
    state: present

- name: start nginx
  service:
    name: nginx
    state: started
    enabled: true

登錄后復制

使用劇本中的角色:

創建使用此角色的劇本:

---
- name: apply nginx role
  hosts: webservers
  roles:
    - nginx

登錄后復制

運行劇本:

ansible-playbook -i hosts playbook.yml

登錄后復制

使用角色有助于將復雜的劇本分解為更小的、可重用的組件,使您的自動化腳本更易于管理和擴展。

2. ansible vault

管理基礎設施時,您經常需要處理密碼、api 密鑰或 ssh 私鑰等敏感信息。 ansible vault 允許您在劇本中加密這些秘密。

加密文件:

使用 ansible vault 加密文件:

ansible-vault encrypt secrets.yml

登錄后復制

系統會提示您輸入密碼。每當運行劇本或解密文件時都需要此密碼。

使用加密變量:

在您的劇本中,您可以引用存儲在加密文件中的變量:

---
- name: deploy application with secrets
  hosts: appservers
  vars_files:
    - secrets.yml
  tasks:
    - name: use secret api key
      shell: echo "{{ api_key }}"

登錄后復制

運行劇本:

運行使用加密文件的 playbook 時,請使用 –ask-vault-pass 選項:

ansible-playbook -i hosts playbook.yml --ask-vault-pass

登錄后復制

ansible vault 是一款功能強大的工具,可確保您的敏感數據在自動化基礎設施的同時保持安全。

3. 條件和循環

現實世界的劇本通常需要根據某些條件做出決策或迭代項目列表。 ansible 提供對條件和循環的支持來處理這些場景。

使用條件:

條件允許任務僅在滿足特定條件時執行:

---
- name: install apache on debian-based systems
  apt:
    name: apache2
    state: present
  when: ansible_os_family == "debian"

登錄后復制

循環項目:

當您需要對多個項目執行相同的任務時,循環非常有用:

---
- name: create multiple users
  user:
    name: "{{ item }}"
    state: present
  loop:
    - alice
    - bob
    - charlie

登錄后復制

您還可以使用更復雜的循環:

---
- name: install multiple packages
  apt:
    name: "{{ item.name }}"
    state: "{{ item.state }}"
  loop:
    - { name: 'nginx', state: 'present' }
    - { name: 'git', state: 'latest' }

登錄后復制

條件和循環使您的劇本能夠靈活地適應不同的環境和要求。

4. 動態庫存管理

在云環境中,您的基礎設施可能會頻繁更改,實例會定期啟動或關閉。管理靜態清單文件變得不切實際。動態庫存腳本允許 ansible 查詢您的云提供商并自動發現和管理您的基礎設施。

示例:使用 aws ec2 動態清單

ansible 為 aws ec2 提供動態清單腳本,您可以使用它自動發現您的 ec2 實例。

安裝所需的python包:

pip install boto boto3

登錄后復制

下載 ec2 動態清單腳本:

ansible 提供了一個 ec2 inventory 腳本,您可以下載并放置在您的項目中:

curl -o ec2.py https://raw.githubusercontent.com/ansible/ansible/stable-2.9/contrib/inventory/ec2.py
chmod +x ec2.py

登錄后復制

配置腳本:

您可能需要配置腳本來指定您的 aws 區域和憑證。配置文件(ec2.ini)可以根據需要自定義。

使用動態清單運行 playbook:

ansible-playbook -i ec2.py playbook.yml

登錄后復制

這種方法可確保 ansible 始終擁有您的基礎設施的最新視圖,使其成為管理動態云環境的理想選擇。

5. 使用 ansible playbook 塊處理復雜的依賴關系

在某些情況下,您可能需要確保一系列任務要么全部成功,要么全部失敗。 ansible playbook 塊允許您對任務進行分組并在它們之間應用通用屬性或錯誤處理。

示例:用塊對任務進行分組
假設您正在設置一項復雜的服務,其中每項任務都取決于前一項任務的成功:

---
- hosts: appservers
  tasks:
    - block:
        - name: install required packages
          apt:
            name: "{{ item }}"
            state: present
          loop:
            - nginx
            - postgresql
            - redis

        - name: start services
          service:
            name: "{{ item }}"
            state: started
          loop:
            - nginx
            - postgresql
            - redis

      rescue:
        - name: rollback in case of failure
          shell: |
            systemctl stop nginx
            systemctl stop postgresql
            systemctl stop redis

登錄后復制

在此示例中,如果塊內的任何任務失敗,則將執行救援部分中的任務,允許您實現自定義錯誤處理和回滾機制。

6. 使用 ansible playbook 編排復雜的工作流程

在處理多步驟流程時,例如部署微服務架構或設置持續集成/持續部署(ci/cd)管道,您需要編排多個 playbook 以按特定順序運行。

示例:編排微服務部署

假設您有三個需要按特定順序部署的微服務:

準備環境:安裝docker和kubernetes。
部署數據庫服務: 該服務需要先于其他服務啟動。
部署后端服務: 依賴于數據庫服務。
部署前端服務: 取決于后端服務。

劇本結構:

---
- import_playbook: prepare_environment.yml

- import_playbook: deploy_database.yml

- import_playbook: deploy_backend.yml

- import_playbook: deploy_frontend.yml

登錄后復制

運行精心策劃的劇本:

ansible-playbook site.yml

登錄后復制

此編排可確保每個服務都按正確的順序部署,并正確管理依賴項。

現實場景:部署多層應用程序

讓我們考慮一個場景,您需要部署一個由前端服務器、后端服務器和數據庫服務器組成的多層 web 應用程序。您要確保數據庫設置在后端服務器之前,后端服務器設置在前端之前。

第 1 步:定義庫存

創建清單文件hosts:

[frontend]
192.168.1.10

[backend]
192.168.1.11

[database]
192.168.1.12

登錄后復制

第 2 步:編寫劇本

這是部署應用程序的簡化劇本:

---
- name: deploy database
  hosts: database
  tasks:
    - name: install mysql
      apt:
        name: mysql-server
        state: present

- name: deploy backend
  hosts: backend
  tasks:
    - name: install python dependencies
      pip:
        name:
          - flask
          - sqlalchemy
        state: present
  when: ansible_os_family == "debian"

- name: deploy frontend
  hosts: frontend
  tasks:
    - name: install nginx
      apt:
        name: nginx
        state: present

登錄后復制

第 3 步:執行 playbook

運行 playbook 來部署應用程序:

ansible-playbook -i hosts deploy.yml

登錄后復制

此劇本確保數據庫在后端之前設置,后端在前端之前設置。您可以根據需要添加更多任務和角色以完全配置應用程序。

結論

在今天的帖子中,我們深入研究了 ansible 的高級功能,展示了如何使用角色構建劇本、使用 ansible vault 保護敏感信息以及使用動態清單管理動態基礎設施。我們還探索了如何使用 playbook 塊處理復雜的工作流程,利用 ansible galaxy 的社區角色,以及集成 ansible 進行容器編排。

ansible 的多功能性使其成為 devops 工程師的關鍵工具,使您能夠自動執行復雜的任務、確保跨環境的一致性并加快部署流程。

明天,我們將深入研究新的 devops 工具。敬請期待!

? 請務必在 linkedin 上關注我以獲取最新更新:shiivam agnihotri

分享到:
標簽:apache Docker git MySQL nginx py Python redis 庫存管理 技能提升 敏感數據
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 52010

    網站

  • 12

    小程序

  • 1106242

    文章

  • 784

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定