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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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自動(dòng)化運(yùn)維實(shí)踐Ansible目錄CONTENTS1IT運(yùn)維管理2Ansible介紹3Ansible常用操作4Ansible實(shí)例(playbooks)目錄CONTENTS1IT運(yùn)維管理2Ansible介紹3An第一部分IT運(yùn)維管理傳統(tǒng)運(yùn)維自動(dòng)運(yùn)維第一部分IT運(yùn)維管理傳統(tǒng)運(yùn)維自動(dòng)運(yùn)維 運(yùn)維工作是比較繁瑣的,尤其是新系統(tǒng)上線的場(chǎng)景,一切都是從零開始。包括虛機(jī)的創(chuàng)建,主機(jī)名的修改,系統(tǒng)的初始化等等,在機(jī)器不多的情況下人工還能應(yīng)付的過(guò)來(lái),如果有上百臺(tái)機(jī)器呢?最初也是用堆人的方法來(lái)做的。但這樣的方式出錯(cuò)率高,而且有時(shí)還會(huì)有遺漏。只能通過(guò)相互檢查的方式來(lái)驗(yàn)證,但這樣就會(huì)花費(fèi)更多的

2、時(shí)間,相應(yīng)的時(shí)間/人工成本也會(huì)上升。 人工的方式因個(gè)人部署習(xí)慣千差萬(wàn)別,導(dǎo)致一些項(xiàng)目難以維護(hù)。傳統(tǒng)運(yùn)維帶來(lái)的坑傳統(tǒng)運(yùn)維MySQLRedisMongodb 運(yùn)維工作是比較繁瑣的,尤其是新系統(tǒng)上線的場(chǎng)景沒(méi)有專門的工具為我們做這些事情,使用腳本語(yǔ)言(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ù)睡覺(jué) 2、出現(xiàn)異常時(shí)點(diǎn)擊一下就可立即恢復(fù) 3、與監(jiān)控配合,系統(tǒng)掛了可以自動(dòng)恢復(fù)運(yùn)維自動(dòng)化的目標(biāo)沒(méi)有專門的工具為我們做這些事情,使用腳本語(yǔ)言(Pyth

3、on)第二部分Ansible架構(gòu)圖Ansible介紹 Ansible簡(jiǎn)介Ansible任務(wù)執(zhí)行流程第二部分Ansible架構(gòu)圖Ansible介紹 AnsiblAnsible簡(jiǎn)介 ansible是新出現(xiàn)的自動(dòng)化運(yùn)維工具,基于Python開發(fā),集合了眾多老牌運(yùn)維工具(puppet、cfengine、chef、func、fabric)的優(yōu)點(diǎn),實(shí)現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運(yùn)行命令等功能。 ansible是基于模塊工作的,本身沒(méi)有批量部署的能力。真正具有批量部署的是ansible所運(yùn)行的模塊,ansible只是提供一種框架。主要包括:(1) 連接插件connection plugins:負(fù)責(zé)和

4、被管控端實(shí)現(xiàn)通信;(2) host inventory:指定操作的主機(jī),是一個(gè)配置文件里面定義管控的主機(jī);(3) 各種模塊核心模塊、command模塊、自定義模塊;(4) 借助于插件完成記錄日志郵件等功能;(5) playbook:劇本執(zhí)行多個(gè)任務(wù)時(shí),可以讓被管控端一次性運(yùn)行多個(gè)任務(wù)。(1) no agents:不需要在被管控主機(jī)上安裝任何客戶端;(2) no server:無(wú)服務(wù)器端,使用時(shí)直接運(yùn)行命令即可;(3) modules in any languages:基于模塊工作,可使用任意語(yǔ)言開發(fā)模塊;(4) yaml,not code:使用yaml語(yǔ)言定制劇本playbook;(5) ss

5、h by default:基于SSH工作;(6) strong multi-tier solution:可實(shí)現(xiàn)多級(jí)指揮。Ansible特性(1) 輕量級(jí),無(wú)需在客戶端安裝agent,更新時(shí),只需在操作機(jī)上進(jìn)行一次更新即可;(2) 批量任務(wù)執(zhí)行可以寫成腳本,而且不用分發(fā)到遠(yuǎn)程就可以執(zhí)行;(3) 使用python編寫,維護(hù)更簡(jiǎn)單,ruby語(yǔ)法過(guò)于復(fù)雜;(4) 支持sudo。Ansible優(yōu)點(diǎn)Ansible簡(jiǎn)介 ansible是新出現(xiàn)的自動(dòng)化Ansible架構(gòu)圖Ansible架構(gòu)圖Ansible任務(wù)執(zhí)行流程Ansible任務(wù)執(zhí)行流程第三部分Ansible安裝配置Ansible主機(jī)清單Ansible的

6、常用操作Ansible常用模塊YAML介紹第三部分Ansible安裝配置Ansible主機(jī)清單AnsiAnsible安裝配置 使用yum安裝(推薦)- 版本稍舊 yum install ansible 使用pip安裝(依賴pip,gcc等)- 版本新 pip install ansible兩種安裝方式:/etc/ansible/ansible.cfgAnsible配置Ansible安裝配置 使用yum安裝(推薦)- 版本稍舊兩Ansible主機(jī)清單 - Inventory/etc/ansible/hostsInventory默認(rèn)文件Ansible主機(jī)清單 - Inventory/etc/anA

7、nsible主機(jī)清單 - 主機(jī)與組正則匹配1、表示所有的主機(jī)使用all 或 * Ansible主機(jī)清單 - 主機(jī)與組正則匹配1、表示所有的主Ansible主機(jī)清單 - 主機(jī)與組正則匹配2、通配符(*)和邏輯或(:)Ansible主機(jī)清單 - 主機(jī)與組正則匹配2、通配符(*)Ansible主機(jī)清單 - 主機(jī)與組正則匹配3、邏輯非和邏輯與Ansible主機(jī)清單 - 主機(jī)與組正則匹配3、邏輯非和邏輯Ansible常用模塊Ad-hoc - ansible命令Playbook - YAMLAnsible運(yùn)行任務(wù)的方式ansible 主機(jī)或組 -m 模塊名 -a 模塊參數(shù) ansible參數(shù)主機(jī)和組: 是

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

9、。Ad-hocAnsible常用模塊Ad-hoc - ansAnsible常用模塊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模塊Ansible常用模

10、塊ansible all -m pingAnsible常用模塊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 rep

11、lace=10.12replace模塊ansible 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模塊Ansible常用模塊ansible all -m copyYAML介紹 YAML 是“Yet Another Markup Language”(仍是一種置標(biāo)語(yǔ)言)的頭字母簡(jiǎn)寫,目前一般專門用來(lái)寫配置文件的語(yǔ)言,對(duì)于人類很友

12、好。YAMLYAML介紹 YAML 是“Yet AnotheYAML介紹大小寫敏感使用縮進(jìn)表示層級(jí)關(guān)系縮進(jìn)時(shí)不允許使用Tab鍵,只允許使用空格。縮進(jìn)的空格數(shù)目不重要,只要相同層級(jí)的元素左側(cè)對(duì)齊即可基本語(yǔ)法規(guī)則對(duì)象:鍵值對(duì)的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)純量(scalars):?jiǎn)蝹€(gè)的、不可再分的值支持的數(shù)據(jù)結(jié)構(gòu)YAML介紹大小寫敏感基本語(yǔ)法規(guī)則對(duì)象:鍵值對(duì)的集合,又稱為YAML介紹 數(shù)據(jù)結(jié)構(gòu)一組鍵值對(duì),使用冒號(hào)結(jié)構(gòu)表示task: install對(duì)像depen

13、d: - gcc - openssl-devel列表(sequence)name: install jdk1.7 hosts: test_host 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)量)YAM

14、L介紹 數(shù)據(jù)結(jié)構(gòu)一組鍵值對(duì),使用冒號(hào)結(jié)構(gòu)表示對(duì)像d第四部分Ansibe實(shí)例(playbooks)playbooksjdk自動(dòng)部署tomcat自動(dòng)部署Ansible rolesMysql主從自動(dòng)部署第四部分Ansibe實(shí)例(playbooks)playbooPlaybooks(劇本) 劇本是Ansible的配置、部署語(yǔ)言,由它對(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í)行。Play

15、books(劇本)簡(jiǎn)介- hosts: all tasks: - name: test connection ping:Playbooks(ping.yaml)# ansible-playbook ping.yamlPlaybooks(劇本) 劇本是Ansible的配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 tas

16、ks: - name: mkdir /usr/java file: path=/usr/java state=directory owner=root group=root - name: push jdk package and unpack unarchive: 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 -

17、 name: setup java env blockinfile: dest: /etc/profile marker: # mark JAVA ENV block: | export JAVA_HOME=/usr/java/jdk export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/binPlaybooks(JDK部署)Playbooks(jdk部署)-Playbooks(JPlaybooks(tomcat部署)- name: install tomca

18、t7 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/apache-tomcat- tomcat_ver .tar.gz tomcat_dir: /opt tomcat_location: tomcat_dir /apache-tomcat- tomcat_ver tasks: - name: get tomcat7 package and unpack un

19、archive: src= tomcat_pack dest= tomcat_dir remote_src=yes - name: tomcat start script add utf8 lineinfile: dest: tomcat_location /bin/catalina.sh insertafter: #JAVA_OPTS.* line: item with_items: - JAVA_OPTS=$JAVA_OPTS -server -Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m - JAVA_OPTS=$JAV

20、A_OPTS -Dfile.encoding=UTF-8 -Dsun.jun.encoding=UTF-8 - name: tomcat config file add utf8 replace: dest: tomcat_location /conf/server.xml regexp: redirectPort=8443 replace: redirectPort=8443 URIEncoding=UTF-8 useBodyEncodingForURI=truePlaybooks(tomcat部署)Playbooks(tomcat部署)-PlaybookAnsible 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包

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論