Ansible自動(dòng)化運(yùn)維實(shí)踐課件_第1頁
Ansible自動(dòng)化運(yùn)維實(shí)踐課件_第2頁
Ansible自動(dòng)化運(yùn)維實(shí)踐課件_第3頁
Ansible自動(dòng)化運(yùn)維實(shí)踐課件_第4頁
Ansible自動(dòng)化運(yùn)維實(shí)踐課件_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、自動(dòng)化運(yùn)維實(shí)踐Ansible第1頁,共31頁。目錄CONTENTS1IT運(yùn)維管理2Ansible介紹3Ansible常用操作4Ansible實(shí)例(playbooks)第2頁,共31頁。第一部分IT運(yùn)維管理傳統(tǒng)運(yùn)維自動(dòng)運(yùn)維第3頁,共31頁。 運(yùn)維工作是比較繁瑣的,尤其是新系統(tǒng)上線的場(chǎng)景,一切都是從零開始。包括虛機(jī)的創(chuàng)建,主機(jī)名的修改,系統(tǒng)的初始化等等,在機(jī)器不多的情況下人工還能應(yīng)付的過來,如果有上百臺(tái)機(jī)器呢?最初也是用堆人的方法來做的。但這樣的方式出錯(cuò)率高,而且有時(shí)還會(huì)有遺漏。只能通過相互檢查的方式來驗(yàn)證,但這樣就會(huì)花費(fèi)更多的時(shí)間,相應(yīng)的時(shí)間/人工成本也會(huì)上升。 人工的方式因個(gè)人部署習(xí)慣千差萬別

2、,導(dǎo)致一些項(xiàng)目難以維護(hù)。傳統(tǒng)運(yùn)維帶來的坑傳統(tǒng)運(yùn)維MySQLRedisMongodb第4頁,共31頁。沒有專門的工具為我們做這些事情,使用腳本語言(Python)逐漸有了運(yùn)維自動(dòng)化的一些工具,比如Fabric 、Puppet、Chef、SaltStack、Ansible等自動(dòng)化運(yùn)維平臺(tái)運(yùn)維自動(dòng)化的演進(jìn)自動(dòng)運(yùn)維運(yùn)維自動(dòng)化的演進(jìn)1、某某組件壞了可以不用管繼續(xù)睡覺 2、出現(xiàn)異常時(shí)點(diǎn)擊一下就可立即恢復(fù) 3、與監(jiān)控配合,系統(tǒng)掛了可以自動(dòng)恢復(fù)運(yùn)維自動(dòng)化的目標(biāo)第5頁,共31頁。第二部分Ansible架構(gòu)圖Ansible介紹 Ansible簡(jiǎn)介Ansible任務(wù)執(zhí)行流程第6頁,共31頁。Ansible簡(jiǎn)介(1)

3、 no agents:不需要在被管控主機(jī)上安裝任何客戶端;(2) no server:無服務(wù)器端,使用時(shí)直接運(yùn)行命令即可;(3) modules in any languages:基于模塊工作,可使用任意語言開發(fā)模塊;(4) yaml,not code:使用yaml語言定制劇本playbook;(5) ssh by default:基于SSH工作;(6) strong multi-tier solution:可實(shí)現(xiàn)多級(jí)指揮。Ansible特性(1) 輕量級(jí),無需在客戶端安裝agent,更新時(shí),只需在操作機(jī)上進(jìn)行一次更新即可;(2) 批量任務(wù)執(zhí)行可以寫成腳本,而且不用分發(fā)到遠(yuǎn)程就可以執(zhí)行;(3)

4、 使用python編寫,維護(hù)更簡(jiǎn)單,ruby語法過于復(fù)雜;(4) 支持sudo。Ansible優(yōu)點(diǎn)第7頁,共31頁。Ansible架構(gòu)圖第8頁,共31頁。Ansible任務(wù)執(zhí)行流程第9頁,共31頁。第三部分Ansible安裝配置Ansible主機(jī)清單Ansible的常用操作Ansible常用模塊YAML介紹第10頁,共31頁。Ansible安裝配置 使用yum安裝(推薦)- 版本稍舊 yum install ansible 使用pip安裝(依賴pip,gcc等)- 版本新 pip install ansible兩種安裝方式:/etc/ansible/ansible.cfgAnsible配置第1

5、1頁,共31頁。Ansible主機(jī)清單 - Inventory/etc/ansible/hostsInventory默認(rèn)文件第12頁,共31頁。Ansible主機(jī)清單 - 主機(jī)與組正則匹配1、表示所有的主機(jī)使用all 或 * 第13頁,共31頁。Ansible主機(jī)清單 - 主機(jī)與組正則匹配2、通配符(*)和邏輯或(:)第14頁,共31頁。Ansible主機(jī)清單 - 主機(jī)與組正則匹配3、邏輯非和邏輯與第15頁,共31頁。Ansible常用模塊Ad-hoc - ansible命令Playbook - YAMLAnsible運(yùn)行任務(wù)的方式ansible 主機(jī)或組 -m 模塊名 -a 模塊參數(shù) ans

6、ible參數(shù)主機(jī)和組: 是在/etc/ansible/hosts 里進(jìn)行指定的部分,動(dòng)態(tài)Inventory 使用的是腳本從外部應(yīng)用里獲取的主機(jī)模塊名: 可以通過ansible-doc -l 查看目前安裝的模塊,默認(rèn)不指定時(shí),使用的是command模塊,具體可以查看/etc/ansible/ansible.cfg 的“#module_name = command ” 部分,默認(rèn)模塊可以在該配置文件中進(jìn)行修改模塊參數(shù): 可以通過 “ansible-doc -s 模塊名” 查看具體的用法及后面的參數(shù)ansible參數(shù): 可以通過ansible命令的幫助信息里查看到,這里有很多參數(shù)可以供選擇,如是否需

7、要輸入密碼、是否sudo等。Ad-hoc第16頁,共31頁。Ansible常用模塊ansible all -m pingping模塊ansible all -m command -a uptimecommand模塊ansible all -m service -a name=nginx state=restartedservice模塊ansible all -m yum -a name=telnet state=presentyum模塊ansible all -m shell -a cat /dev/null /var/log/nginx/access.logshell模塊第17頁,共31頁。

8、Ansible常用模塊ansible all -m copy -a src=/root/nginx.conf desc=/etc/nginx/nginx.conf owner=nginx group=nginx mode=644copy模塊ansible java -m unarchive -a src=java7.tar.gz copy=yes dest=/usr/java owner=root group=rootunarchive模塊ansible all -m replace -a path=/etc/hosts regexp=10.10 replace=10.12replace模塊a

9、nsible mysql -m lineinfile -a dest=/etc/hosts line=81 db1lineinfile模塊ansible java -m file src=/usr/java/jdk1.7 dest=/usr/java/jdk state=link owner=root group=rootfile模塊第18頁,共31頁。YAML介紹 YAML 是“Yet Another Markup Language”(仍是一種置標(biāo)語言)的頭字母簡(jiǎn)寫,目前一般專門用來寫配置文件的語言,對(duì)于人類很友好。YAML第19頁,共31頁。YAML介紹大小寫敏感使用縮進(jìn)表示層級(jí)關(guān)系縮進(jìn)時(shí)

10、不允許使用Tab鍵,只允許使用空格??s進(jìn)的空格數(shù)目不重要,只要相同層級(jí)的元素左側(cè)對(duì)齊即可基本語法規(guī)則對(duì)象:鍵值對(duì)的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)純量(scalars):?jiǎn)蝹€(gè)的、不可再分的值支持的數(shù)據(jù)結(jié)構(gòu)第20頁,共31頁。YAML介紹 數(shù)據(jù)結(jié)構(gòu)一組鍵值對(duì),使用冒號(hào)結(jié)構(gòu)表示task: install對(duì)像depend: - gcc - openssl-devel列表(sequence)name: install jdk1.7 hosts: test_host

11、remote_user: root sudo: false gather_facts: true字典(mapping)數(shù)值number: 12float:12.30字符str: 這是一行字符串布爾值表示true的值true, True, TRUE, yes, Yes, YES, on, On, ON, y, Y表示false的值false, False, FALSE, no, No, NO, off, Off, OFF, n, N純量(標(biāo)量)第21頁,共31頁。第四部分Ansibe實(shí)例(playbooks)playbooksjdk自動(dòng)部署tomcat自動(dòng)部署Ansible rolesMysql

12、主從自動(dòng)部署第22頁,共31頁。Playbooks(劇本) 劇本是Ansible的配置、部署語言,由它對(duì)描述你想要遠(yuǎn)程機(jī)器執(zhí)行的策略或步驟,使用YAML編寫。playbooks是由一個(gè)或多個(gè)“play”(task)組成的列表。從根本上講task就是調(diào)用ansible的一個(gè)module。將多個(gè)play組織在一個(gè)playbook中,運(yùn)行時(shí)就會(huì)根據(jù)自上而下的順序依次執(zhí)行。Playbooks(劇本)簡(jiǎn)介- hosts: all tasks: - name: test connection ping:Playbooks(ping.yaml)# ansible-playbook ping.yaml第23頁

13、,共31頁。Playbooks(jdk部署)- name: install jdk1.7 hosts: java remote_user: root sudo: false gather_facts: true vars: jdk_ver: jdk1.7.0_79 jdk_pack: jdk-7u79-linux-x64.tar.gz tasks: - name: mkdir /usr/java file: path=/usr/java state=directory owner=root group=root - name: push jdk package and unpack unarc

14、hive: src= jdk_pack copy=yes dest=/usr/java/ owner=root group=root - name: make soft link file: src=/usr/java/ jdk_ver dest=/usr/java/jdk state=link owner=root group=root - name: setup java env blockinfile: dest: /etc/profile marker: # mark JAVA ENV block: | export JAVA_HOME=/usr/java/jdk export CLA

15、SSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/binPlaybooks(JDK部署)第24頁,共31頁。Playbooks(tomcat部署)- name: install tomcat7 hosts: tomcat remote_user: root sudo: false gather_facts: true vars: tomcat_ver: 7.0.73 tomcat_pack: /apache/tomcat/tomcat-7/v tomcat_ver /bin/

16、apache-tomcat- tomcat_ver .tar.gz tomcat_dir: /opt tomcat_location: tomcat_dir /apache-tomcat- tomcat_ver tasks: - name: get tomcat7 package and unpack unarchive: src= tomcat_pack dest= tomcat_dir remote_src=yes - name: tomcat start script add utf8 lineinfile: dest: tomcat_location /bin/catalina.sh

17、insertafter: #JAVA_OPTS.* line: item with_items: - JAVA_OPTS=$JAVA_OPTS -server -Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m - JAVA_OPTS=$JAVA_OPTS -Dfile.encoding=UTF-8 -Dsun.jun.encoding=UTF-8 - name: tomcat config file add utf8 replace: dest: tomcat_location /conf/server.xml regexp:

18、redirectPort=8443 replace: redirectPort=8443 URIEncoding=UTF-8 useBodyEncodingForURI=truePlaybooks(tomcat部署)第25頁,共31頁。Ansible Roles Roles是ansible中playbooks的目錄組織結(jié)構(gòu)。如果把所有的東西都寫到playbooks里面的話,就會(huì)導(dǎo)致我們這個(gè)playbooks很臃腫,不宜讀。而模塊化之后,成為roles的組織結(jié)構(gòu),易讀,代碼可重用,層次清晰等等好處。Ansible Roles簡(jiǎn)介files:存放由copy或script等模塊調(diào)用的文件tempaltes:Jinja2模板文件tasks:至少應(yīng)該包含一個(gè)名為main.yml的文件,其定義了此角色的任務(wù)列表,些文件可以使用include包含其它的位于此目錄中的task文件handlers:至少包含一個(gè)main.yml文件,用于定義此角色用到的各handler,在handler中使用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論