一、運維自動化發展歷程以及應用場景
1. 運維自動化發展歷程:本地部署(On-Premises)—>基礎設施即服務(IaaS)—>平臺即服務 ? ? ? ? ? ? ? ? ? ? ? ? ? ?(PaaS)—>軟件即服務(SaaS)
2. 應用場景:
(1)Dev 開發環境
使用者:程序員
功能 ? ?:程序員開發軟件測試BUG的環境
管理者:程序員(做運維少參與)
(2)測試環境
使用者:qa測試工程師
功能 ? ?:測試經過Dev環境測試通過的軟件的功能
管理者:運維(測試環境往往有多套,測試環境滿足測試功能即可)
測試人員希望測試環境有多套,多個版本同步測試
通常測試環境有多少套和產品數量保持一樣
(3)發布環境:代碼發布機,或者堡壘機
使用者:運維
功能 ? ?:發布代碼至生產環境
管理者:運維
發布機:往往需要有2臺(主備)
(4)生產環境:
使用者:運維,少數核心開發人員
功能 ? ? :對用戶提供公司產品的服務
管理者:只能是運維(生產環境服務器數量較多,需使用自動化工具)
(5)灰度環境:(生產環境的一部分)
使用者:運維
功能:在全量發布代碼前將代碼的功能面向少數人發布
案例:100臺生產服務器,先發布其中10臺,這10臺服務器就是灰度服? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? 務器
管理者:運維
二、自動化運維工具——ansible
1.運維工具:
Ansible:中小型應用環境,不需要代理
Saltstack:需要代理,執行效率更高
Puppet:功能強大,配置復雜,適合大型環境
2.Ansible的基礎:
(1)是一款由Python開發的,適合中小型環境
(2)特性:
模塊化:調用特定的模塊,完成特定任務
有Paramiko,PyYAML,Jinja2(模塊語言)三個關鍵模板
支持自定義模塊
基于Python語言實現
部署簡單,基于Python和SSH,不需要代理
安全,基于OpenSSH
支持playbook編排任務
冪等性:一個任務執行1遍和執行n遍效果一樣,不因重復執行帶來意外情況
無需要代理不依賴PKI(無需ssl)
可使用任何編程語言寫模塊
YAML格式,編排任務,支持豐富的數據結構
較強大的多層解決方案
(3)Ansible主要組成部分
1 ?ANSIBLE PLAYBOOKS:任務劇本,編排定義,Ansible任務集的配置文件,由 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Ansible順序依次執行,通常是JSON格式的YML文件
2 ? INVENTORY: ?Ansible管理主機的清單/etc/ansible/hosts
3 ? MODULES :Ansible執行命令的功能模塊,多數為內置的核心模塊,也可自定 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?義,ansible-doc -l 可查看模塊
4 ? PLUGINS :模塊功能的補充如鏈接類型插件、循環插件、變量插件、過濾插件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?等,該功能不常用
5 ?API : 供第三方程序調用的應用程序編程接口
6 ANSIBLE : 組合INVENTORY、API、MODULES、PLUGINS的綠框,可以理解 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 為是ansible命令工具,其為核心執行工具
7 ? Ansible命令執行來源:
USER,普通用戶,即SYSTEM ADMINISTRATOR
CMDB (資源管理系統) API調用
PUBLIC/PRIVATE CLOUD API 調用
USER —> Ansible Playbook —> Ansible
利用ansible實現管理的方式:
Ad-Hoc 即 ansible 命令,主要用于臨時命令使用場景
Ansible-playbook 主要用于長期規劃好的,大型項目的場景,需要 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 有提前的規劃
8 ?Ansible-playbook(劇本)執行過程:
將已有編排的任務集寫入Ansible-Playbook
通過ansible-playbook命令分拆任何集至逐條ansible命令,按預定規則? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? ? ? ?? ? 逐條執行
9 Ansible 主要操作對象:
HOSTS 主機
NETWORKING 網絡設備
10 注意事項
執行ansible的主機一般稱為主控端,中端,master或堡壘機
主控端Python版本需要2.6或以上
被控端Python版本小于2.4需要安裝python-simplejson
被控端如開啟SELinux需要安裝libselinux-python
Windows不能做為主控端
11 安裝的方式:
rpm包安裝:EPEL源
yum install ansibe
yum info ansible
yum install ansible
編譯安裝
Git方式:
git clone git://github.com/ansible/ansible.git –recursive
cd ./ansible
source ./hacking/env-setup
pip安裝:pip是安裝Python包的管理器,類似yum
12 ansible的配置文件:
/etc/ansible/ansible.cfg 主配置文件,配置ansible的工作特性
/etc/ansible/hosts 主機清單的配置文件
ansible的主要功能在于批量主機操作,為了便捷的使用其中的部分主 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 機,可以在inventory file中將其分組命名;而默認的inventory file ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 為/etc/ansible/host
inventory文件遵循INI文件風格,中括號中的字符為組名。
類如:
/etc/ansible/roles/ 存放角色的目錄
13 程序
/usr/bin/ansible 主程序,臨時命令執行工具
/usr/bin/ansible-doc 查看配置文檔,模塊功能查看工具
/usr/bin/ansible-galaxy 下載/上傳優秀代碼或Roles模塊的官網平臺
/usr/bin/ansible-playbook 定制自動化任務,編排劇本工具
/usr/bin/ansible-pull 遠程執行命令的工具
/usr/bin/ansible-vault 文本加密工具
/usr/bin/ansible-console 基于Console界面與用戶交互的工具
14 ansible 配置文件
ansible 配置文件在/etc/ansible/ansible.cfg中
[defaults]
#inventory ? ? ? ? ? ? ? ? ? ? ? ? =/etc/ansible/hosts ? ?#主機列表配置文件
#library = /usr/share/my_modules/ ? ? ? ? ? ? ? ? ?#庫文件存放目錄
#remote_tmp =$HOME/.amsible/tmp ? #臨時的py文件存放在遠程主 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?機目錄
#local_tmp ? ?=$HOME/.ansible/tmp #本機的臨時命令執行目錄
#fork ? ? ? ? ? ?=5 ? ?#默認并發數
#sudo_user ? =root #默認sudo用戶
#ask_sudo_pass =True #每次執行ansible命令是否詢問ssh密碼
15 ansible系列命令
16.ansible-doc:顯示模塊幫助
格式:ansible-doc [options] [module…]
-a ? ? ? ? ? 顯示所有模塊的文檔
-l,–list 列出可用模塊
-s,–snippet 顯示指定模塊的playbook片段
類子:
ansible-doc -l 列出所有模塊
ansible-doc ping 查看指定的ping模塊? ? ? ? ? ? ? ? ? ??
ansible-doc -s ping簡單查看幫助
3.ansible的用法:
(1)格式:ensible <host-pattern> [-m module_name] [-a args] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ?? ? ? ? ?? ?(2)選項:
–version 顯示版本
-m module 指定模塊,默認的模塊為command
-v 詳細過程 -vv -vvv更詳細的過程
–list-hosts 顯示主機列表,可簡寫為-list
-k ,–ask-pass ?提示連接密碼,默認key驗證
-C,–check 檢查,并不執行
-u,–user=REMOTE_USER執行遠程執行的用戶
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91094