ansible

運維自動化發展歷程及技術應用python

早期一個公司須要花費大量的技術人員和資源來搭建本身須要的一切,好比networking,storage,servers,virtualization,OS,Middleware,Runtime,Date,Applicationlinux

下一個階段硬件基本架構經過購買,其餘的本身搭建,這樣就節省了不少資源的消耗,這就是IAASgit

以後是PAAS階段,操做軟件,開發環境也經過購買web

最後就是所有購買,直接使用,如今大部分軟件都是這樣的,這就是SAASvim

雲計算運維工程師核心職能安全

平臺架構組建:負責參與並審覈架構設計的合理性和可運維性,搭建運維平臺技術架構,經過開源解決方案,以確保在產品發佈以後能高效穩定的運行,保障並不斷提高服務的可用性,確保用戶數據安全,提高用戶體驗。架構

平常運營保障:負責用運維技術或者運維平臺確保產品能夠高效的發佈上線,負責保障產品7*24小時穩定運行,對出現的問題快速定位並解決,平常工做中不斷優化系統構架和部署的合理性,提高系統服務的穩定性。併發

性能效率優化:用自動化工具或平臺提高軟件在研發週期中的工做效率,不斷優化系統架構,提高部署效率,優化資源利用率支持產品的不斷迭代,須要不斷的進行架構優化調整,以確保整個產品可以在功能不斷豐富和複雜的條件下,同時保持高可用性。運維

linux運維工程師職能劃分ssh

開發,bug修復,更新數據(開發)

測試用例,性能評測,條件構造(測試)

review,提交代碼,打包(上線準備)

配置修改,預發部署,發佈驗收(預上線)

環境準備,上線部署,配置修改,添加監控(上線)

 

ansible

  ansible是ansible的核心程序

  Host Lnventory記錄了每個由ansible管理的主機信息,包括ssh端口,root密碼帳號,ip地址等等

  Playbooks是yaml的格式文件,多個任務定義在一個文件中,使用時能夠統一調度,playbooks就是用來定義哪些主機須要調用哪些模塊來完成

  Core Modules:ansible執行任何管理任務都不是有ansible本身完成,而是由核心模塊完成,ansible管理主機以前,先調用core modules中的模塊,而後指明管理Host Lnventory中的主機,來完成管理主機

  Custom Modules是自定義模塊,完成ansible核心模塊沒法完成的功能,此模塊支持任何語言編寫

  Connection Plugins是鏈接插件,ansible和host通訊使用

 

  Ansible的優勢:

  • Stupied Simple ,上手簡單,學習曲線平滑
  • SSH by default ,安全,無需安裝客戶端
  • 配置簡單、功能強大、擴展性強
  • 支持API及自定義模塊,可經過Python輕鬆擴展
  • 經過Playbooks來定製強大的配置、狀態管理
  • 提供一個功能強大、操做性強的Web管理界面和REST API接口——AWX平臺
  • 冪等性:一種操做重複屢次結果相同

ansible安裝:

  1. yum install epel-release
  2. yum install ansible

ansible配置客戶端

免密登陸:

  server: ssh-keygen

  scp id_rsa.pub root@192.168.254.25:/root/.ssh/authorized_keys

也能夠用參數的方式:

  vim /etc/ansible/hosts

  ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=root

 

ansible是一款開源的自動化運維軟件,底層是用python編寫,核心模塊paramiko,jinja2和yaml。

 

ansible經常使用命令

  • ansible-doc -l #查看支持的模塊
  • ansible-doc -s MODEL_NAME #查看模塊用法
  • ansible命令應用基礎
  1. ansible <host-pattern> [options]

      -f forks:啓動併發線程數
      -m model_name:要使用的模塊
      -a args:特有的參數

  • ansible all -m ping #查看client端是否正常ping通
  • ansible webserver -m setup #查看客戶端信息
  • ansible webserver -m copy -a 'src=/root/git_test/code.txt dest=/root/test' #copy文件到cient端
  • ansible webserver -m user -a "name=test state=present" #建立test用戶
  • ansible webserver -m user -a "name=test state=absent" #刪除test用戶
  • ansible webserver -m yum -a ‘name=epel-relese state=latest‘ #yum安裝
  • ansible webserver -m service -a ‘name=httpd state=stopped enabled=no‘ #中止httpd服務
  • ansible webserver -m script -a ‘/tmp/test.sh‘ #運行腳本
  • ansible webserver -m command 'date' #查看時間

 

playbooks

  • tasks
  • variables
  • templates
  • handlers
  • roles

yaml介紹

  yaml是一個可讀性高的用來表達資料序列的格式,yaml參考了其餘多種語言,包括:xml,c語言,python,perl以及電子郵件格式RFC2822等,ClarkEvans在2001年在首次發表了這種語言。

  • yaml的可讀性好
  • yaml和腳本語言的交互性好
  • yaml使用實現語言的數據類型
  • yaml有一個一致的信息模型
  • yaml易於實現
  • yaml能夠基於流程來處理
  • yaml表達能力強,擴展性好

 

ansible hoc模式:

ansible的默認併發輸是5臺,若是想修改併發數能夠使用-f

查看ansible是否能夠管理客戶端:ansible  test -m ping   (test)是配置文件中配置的組名

查看支持的模塊:ansible-doc -l

查看模塊的用法:ansible-doc -s MODEL_NAME

查看客戶端信息:ansible -m setup

copy文件到client端:ansible IP -m copy -a 「src=/root/git_test/code/txt  dext=/root/test」   (也能夠加入屬主owner,屬組group,權限mode等)

建立test用戶:ansible IP -m user -a "name= test state=present"

刪除test用戶:ansible IP -m user -a "name= test state=absent"

yum安裝:ansible IP -m yum -a "name=epel-release state=latest"

中止httpd服務:ansible IP -m service -a "name=httpd state=stopped enabled=no"

運行腳本:ansible IP -m script -a "/tmp/test.sh"

查看時間:ansible IP -m command -a "date"

 

ansible出了使用hoc命令行模式之外,還能夠使用playbooks和roles的模式調用,下面咱們來看一下怎麼使用

 

playbooks

簡單示例:

 

 變量的使用:三種方式

1.第一種:

第二種:

編輯/etc/ansible/hosts文件

[testhosts:vars]

file=httpd.conf

packages=tree

第三種:

執行playbook文件時給予變量--extra-vars

ansible-playbook test.yaml --extra-vars "touch_file=test.txt"

 

註冊變量的使用:把上一次的輸出結果做爲value賦予給變量的key

 

迭代的使用:

觸發器的使用:

模板的使用:

 

 roles

roles的做用是減小代碼的複寫

 

 經過這個樹狀圖能看出來,roles使用至關於將playbook的功能以文件的形式模塊化,當我想使用的時候,直接在site.yaml中調用,這是否是和咱們使用內置函數有點類似啊

讓咱們看一下具體的寫法:和以前的playbook寫法有一些區別

site.yaml:

tasks/main.yaml

files:存放文件

handlers:觸發器

template:模板拷貝

相關文章
相關標籤/搜索