欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

自動(dòng)化運(yùn)維工具ansible詳解

 ll  本文導(dǎo)航 

創(chuàng)新互聯(lián)主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)視覺(jué)設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、營(yíng)銷推廣、網(wǎng)站程序開(kāi)發(fā)、HTML5響應(yīng)式成都網(wǎng)站建設(shè)成都手機(jī)網(wǎng)站制作、微商城、網(wǎng)站托管及成都網(wǎng)站維護(hù)、WEB系統(tǒng)開(kāi)發(fā)、域名注冊(cè)、國(guó)內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測(cè)試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為主動(dòng)防護(hù)網(wǎng)行業(yè)客戶提供了網(wǎng)站建設(shè)服務(wù)。

  · ansible的基礎(chǔ)介紹

  · ansible的安裝與配置

  · ansible的簡(jiǎn)單應(yīng)用

  · YAML介紹及語(yǔ)法

  · ansible-playbooks(劇本)

 ll  要求 

掌握ansible基本應(yīng)用與playbooks。

  ansible的基礎(chǔ)介紹 

1、ansible介紹

ansible是一款基于python開(kāi)發(fā)的自動(dòng)化運(yùn)維工具,它結(jié)合了puppet、cfengine、func、chef、fabric等工具的優(yōu)點(diǎn),實(shí)現(xiàn)了批量系統(tǒng)配置、批量部署應(yīng)用程序及批量執(zhí)行命令。ansible本身沒(méi)有批量部署、執(zhí)行的能力,真正提供批量部署能力的是ansible所調(diào)用的特定模塊,ansible本身也可以看成是一個(gè)組件,或者說(shuō)它是一個(gè)框架。

2、ansible的邏輯架構(gòu)

Ansible:ansible自身組件。

Host Invertory:主機(jī)庫(kù),定義被操作主機(jī)的列表。是一個(gè)配置文件,默認(rèn)位置:/etc/ansible/hosts

Core Modules:ansible的核心模塊、命令模塊。

Custom Modules:自定義模塊。

Connection Plugins:連接插接,默認(rèn)基于ssh密鑰連接。

Playbooks:劇本,按照順序執(zhí)行編排的任務(wù)。

自動(dòng)化運(yùn)維工具ansible詳解

3、ansible的特性

1)學(xué)習(xí)曲線不陡峭。

2)no agents:無(wú)需在被管控主機(jī)上安裝客戶端程序。

3)no server:無(wú)服務(wù)器端,直接使用ansible相關(guān)命令即可。

4)modules any languages:基于模塊工作,可使用任意語(yǔ)言開(kāi)發(fā)模塊。

5)YAML not code:可基于YAML語(yǔ)言自定義劇本(playbooks)按設(shè)置順序執(zhí)行任務(wù)。

6)ssh by default:默認(rèn)基于ssh連接。

7)strong multi-tier solution:可實(shí)現(xiàn)多層級(jí)指揮。

4、ansible的優(yōu)點(diǎn)

1)輕量級(jí),無(wú)需在客戶端安裝程序,更新時(shí),只需要在安裝有ansible的操作主機(jī)上更新即可。

2)批量主機(jī)執(zhí)行任務(wù)可寫成腳本,且不需要分發(fā)到遠(yuǎn)程主機(jī)上執(zhí)行,直接在操作主機(jī)上執(zhí)行即可。

3)python語(yǔ)言開(kāi)發(fā),易于維護(hù),ruby語(yǔ)法過(guò)于復(fù)雜。

3)支持sudo。

5、ansible任務(wù)執(zhí)行流程

自動(dòng)化運(yùn)維工具ansible詳解

  ansible的安裝與配置 

1、編譯安裝

解決依賴關(guān)系并編譯安裝ansible-1.5.4

# yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto
# tar xf ansible-1.5.4.tar.gz
# cd ansible-1.5.4
# python setup.py build
# python setup.py install
# mkdir /etc/ansible
# cp -r examples/* /etc/ansible

2、rpm包安裝

yum源安裝,要配置epel。

# yum -y install ansible


3、配置文件

ansible的主配置文件:/etc/ansible/ansible.cfg

ansible的主機(jī)配置清單文件:/etc/ansible/hosts

自動(dòng)化運(yùn)維工具ansible詳解 

組定義:直接在[ ]的下面添加主機(jī)名或IP地址

單獨(dú)定義主機(jī)直接將主機(jī)名或IP地址在[ ]上方    

4、配置ssh免密鑰認(rèn)證

#生成公鑰文件
# ssh-keygen -t rsa -P ''
#將公鑰文件copy至各被控主機(jī)上
# scp ~/.ssh/id_rsa.pub root@node1
# scp ~/.ssh/id_rsa.pub root@node2

注意:配置完后,第一次運(yùn)行需要輸入密碼,后續(xù)就不要了。

  ansible的簡(jiǎn)單應(yīng)用 

1、ansible的命令參數(shù):

ansible的語(yǔ)法格式:

# ansible <host-pattern> [-m module_name] [-a args] [options]
-v,–verbose
    #詳細(xì)模式,如果命令執(zhí)行成功,輸出詳細(xì)的結(jié)果 (-vv –vvv -vvvv)
 
-i PATH,–inventory=PATH                      
    #指定 host 文件的路徑,默認(rèn)是在 /etc/ansible/hosts
 
-f NUM,–forks=NUM                            
    #NUM 是指定一個(gè)整數(shù),默認(rèn)是 5 ,指定 fork 開(kāi)啟同步進(jìn)程的個(gè)數(shù)。
 
-m NAME,–module-name=NAME                    
    #指定使用的 module 名稱,默認(rèn)是 command
 
-m DIRECTORY,–module-path=DIRECTORY          
    #指定 module 的目錄來(lái)加載 module ,默認(rèn)是/usr/share/ansible,
 
-a,MODULE_ARGS                                
    #指定 module 模塊的參數(shù)
 
-k,–ask-pass                                  
    #提示輸入 ssh 的密碼,而不是使用基于 ssh 的密鑰認(rèn)證
 
–sudo                                        
    #指定使用 sudo 獲得 root 權(quán)限
 
-K,–ask-sudo-pass                            
    #提示輸入 sudo 密碼,與 –sudo 一起使用
 
-u USERNAME,–user=USERNAME                   
    #指定移動(dòng)端的執(zhí)行用戶
 
-C,–check                                    
    #測(cè)試此命令執(zhí)行會(huì)改變什么內(nèi)容,不會(huì)真正的去執(zhí)行

2、ansible簡(jiǎn)單應(yīng)用示例

自動(dòng)化運(yùn)維工具ansible詳解

all:表示hosts列表中所有主機(jī)都執(zhí)行,包括組

-m command:指定使用modules的名稱為command,實(shí)際上默認(rèn)就是command模塊,所以這里不加command也可以。

-a 'uptime':指定模塊的參數(shù)為uptime。

以上即指:在hosts中的所有主機(jī)清單中運(yùn)行uptime命令。

注意:每個(gè)節(jié)點(diǎn)上任務(wù)執(zhí)行完后都會(huì)在控制主機(jī)上返回信息;任務(wù)成功執(zhí)行顯示為綠色或者×××,任務(wù)執(zhí)行失敗顯示為淺×××。

ansible-doc命令的使用:

#列出所有模塊清單
# ansible-doc -l
#列出指定模塊的參數(shù)
# ansible-doc -s 'modules'

自動(dòng)化運(yùn)維工具ansible詳解

自動(dòng)化運(yùn)維工具ansible詳解

3、常用模塊使用實(shí)例

1) setup

#查看遠(yuǎn)程主機(jī)上的基本信息
# ansible all -m setup

自動(dòng)化運(yùn)維工具ansible詳解

2) ping

#測(cè)試遠(yuǎn)程主機(jī)是否在線,如果在線,則會(huì)返回“pong”字符串,乒乓球呢
# ansible all -m ping

自動(dòng)化運(yùn)維工具ansible詳解

3) file

## 設(shè)置文件的屬性

相關(guān)選項(xiàng)如下:

force:需要在兩種情況下強(qiáng)制創(chuàng)建軟鏈接,一種是源文件不存在,但之后會(huì)建立的情況下;另一種是目標(biāo)軟鏈接已存在,需要先取消之前的軟鏈,然后創(chuàng)建新的軟鏈,有兩個(gè)選項(xiàng):yes|no

group:定義文件/目錄的屬組

mode:定義文件/目錄的權(quán)限

owner:定義文件/目錄的屬主

path:必選項(xiàng),定義文件/目錄的路徑

recurse:遞歸設(shè)置文件的屬性,只對(duì)目錄有效

src:被鏈接的源文件路徑,只應(yīng)用于state=link的情況

dest:被鏈接到的路徑,只應(yīng)用于state=link的情況

state:

       directory:如果目錄不存在,就創(chuàng)建目錄

       file:即使文件不存在,也不會(huì)被創(chuàng)建

       link:創(chuàng)建軟鏈接

       hard:創(chuàng)建硬鏈接

       touch:如果文件不存在,則會(huì)創(chuàng)建一個(gè)新的文件,如果文件或目錄已存在,則更新其最后修改時(shí)間

       absent:刪除目錄、文件或者取消鏈接文件

#給遠(yuǎn)程主機(jī)上的指定文件創(chuàng)建符號(hào)鏈接
# ansible corosync -m file -a 'src=/etc/hosts dest=/tmp/hosts state=link'

自動(dòng)化運(yùn)維工具ansible詳解

#查看corosync組的符號(hào)鏈接信息
# ansible corosync -m command -a 'ls -l /tmp/hosts'

自動(dòng)化運(yùn)維工具ansible詳解

#接下來(lái)刪除corosync組上所有主機(jī)上的/tmp/hosts符號(hào)鏈接
# ansible corosync -m file -a 'path=/tmp/hosts state=absent'

自動(dòng)化運(yùn)維工具ansible詳解

#再次查看
# ansible corosync -m command -a 'ls -al /tmp/hosts'

自動(dòng)化運(yùn)維工具ansible詳解

4) copy

#復(fù)制文件到遠(yuǎn)程主機(jī)

相關(guān)選項(xiàng)如下:

backup:復(fù)制一個(gè)文件時(shí),先將源文件備份,其中備份文件包含源文件的時(shí)間,包含兩個(gè)值:yes|no

content:當(dāng)使用‘src’時(shí),將文件的內(nèi)容直接設(shè)置為指定的值;適用于簡(jiǎn)單的值;

dest:必選項(xiàng)。要將源文件復(fù)制到的遠(yuǎn)程主機(jī)的絕對(duì)路徑,如果源文件是一個(gè)目錄,那么該路徑也必須是個(gè)目錄

directory_mode:遞歸設(shè)定目錄的權(quán)限,默認(rèn)為系統(tǒng)默認(rèn)權(quán)限

force:如果目標(biāo)主機(jī)包含該文件,但內(nèi)容不同,如果設(shè)置為yes,則強(qiáng)制覆蓋,如果為no,則只有當(dāng)目標(biāo)主機(jī)的目標(biāo)位置不存在該文件時(shí),才復(fù)制。默認(rèn)為yes

others:所有的file模塊里的選項(xiàng)都可以在這里使用

src:被復(fù)制到遠(yuǎn)程主機(jī)的本地文件,可以是絕對(duì)路徑,也可以是相對(duì)路徑。如果路徑是一個(gè)目錄,它將遞歸復(fù)制。在這種情況下,如果路徑使用“/”來(lái)結(jié)尾,則只復(fù)制目錄里的內(nèi)容,如果沒(méi)有使用“/”來(lái)結(jié)尾,則包含目錄在內(nèi)的整個(gè)內(nèi)容全部復(fù)制,類似于rsync。

5) shell

#切換到某個(gè)shell執(zhí)行指定的指令,參數(shù)與command相同。

與command不同的是,此模塊可以支持命令管道,同時(shí)還有另一個(gè)模塊也具備此功能:raw


示例:

# 先在本地創(chuàng)建一個(gè)SHELL腳本

# vim /tmp/rocketzhang_test.sh
#!/bin/sh
date +%F_%H:%M:%S
#chmod +x /tmp/rocketzhang_test.sh


# 將創(chuàng)建的腳本文件分發(fā)到遠(yuǎn)程主機(jī)

# ansible corosync -m copy -a 'src=/tmp/rocketzhang_test.sh dest=/tmp/rocketzhang_test.sh owner=root group=root mode=0755'

# 在遠(yuǎn)程主機(jī)上執(zhí)行該腳本

# ansible corosync -m shell -a '/tmp/rocketzhang_test.sh'

6) 更多模塊

其他常用模塊,比如:service、cron、yum、synchronize就不一一例舉,可以結(jié)合自身的系統(tǒng)環(huán)境進(jìn)行測(cè)試。

service:系統(tǒng)服務(wù)管理

cron:計(jì)劃任務(wù)管理

yum:yum軟件包安裝管理

synchronize:使用rsync同步文件

user:系統(tǒng)用戶管理

group:系統(tǒng)用戶組管理

  YAML介紹及語(yǔ)法 

1、YAML介紹

YAML是一個(gè)可讀性高的用來(lái)表達(dá)資料序列的格式。YAML參考了其他多種語(yǔ)言,包括:XML、C語(yǔ)言、Python、Perl以及電子郵件格式RFC2822等。Clark Evans在2001年在首次發(fā)表了這種語(yǔ)言,另外Ingy dt Net與Oren Ben-Kiki也是這語(yǔ)言的共同設(shè)計(jì)者。

YAML Ain't Markup Language,即YAML不是XML。不過(guò),在開(kāi)發(fā)的這種語(yǔ)言時(shí),YAML的意思其實(shí)是:"Yet Another Markup Language"(仍是一種標(biāo)記語(yǔ)言)。

更多的內(nèi)容及規(guī)范參見(jiàn)http://www.yaml.org。

2、YAML特性

YAML的可讀性好

YAML和腳本語(yǔ)言的交互性好

YAML使用實(shí)現(xiàn)語(yǔ)言的數(shù)據(jù)類型

YAML有一個(gè)一致的信息模型

YAML易于實(shí)現(xiàn)

YAML可以基于流來(lái)處理

YAML表達(dá)能力強(qiáng),擴(kuò)展性好

3、YAML語(yǔ)法

playbook是由一個(gè)或多個(gè)“play”組成的列表。play的主要功能在于將事先歸并為一組的主機(jī)裝扮成事先通過(guò)ansible中的task定義好的角色。從根本上來(lái)講,所謂task無(wú)非是調(diào)用ansible的一個(gè)module。將多個(gè)play組織在一個(gè)playbook中,即可以讓它們聯(lián)同起來(lái)按事先編排的機(jī)制同唱一臺(tái)大戲。下面是一個(gè)簡(jiǎn)單示例。

- hosts: webnodes

  vars:

    http_port: 80

    max_clients: 256

  remote_user: root

  tasks:

  - name: ensure apache is at the latest version

    yum: name=httpd state=latest

  - name: ensure apache is running

    service: name=httpd state=started

  handlers:

    - name: restart apache

      service: name=httpd state=restarted

YAML文件擴(kuò)展名通常為.yaml,如example.yaml。

注意,代碼的排版有嚴(yán)格要求,縮進(jìn)為2個(gè)字符!序列項(xiàng)的 - 后必須跟一個(gè)空格?。汉笠惨粋€(gè)空格!

  ansible-playbooks(劇本) 

playbook是由一個(gè)或多個(gè)“play”組成的列表。play的主要功能在于將事先歸并為一組的主機(jī)裝扮成事先通過(guò)ansible中的task定義好的角色。從根本上來(lái)講,所謂task無(wú)非是調(diào)用ansible的一個(gè)module。將多個(gè)play組織在一個(gè)playbook中,即可以讓它們聯(lián)同起來(lái)按事先編排的機(jī)制同唱一臺(tái)大戲。下面是一個(gè)簡(jiǎn)單示例。

- hosts: webnodes

  vars:

    http_port: 80

    max_clients: 256

  remote_user: root

  tasks:

  - name: ensure apache is at the latest version

    yum: name=httpd state=latest

  - name: ensure apache is running

    service: name=httpd state=started

  handlers:

    - name: restart apache

      service: name=httpd state=restarted

1、playbook基礎(chǔ)組件

1) Hosts和Users

playbook中的每一個(gè)play的目的都是為了讓某個(gè)或某些主機(jī)以某個(gè)指定的用戶身份執(zhí)行任務(wù)。hosts用于指定要執(zhí)行指定任務(wù)的主機(jī),其可以是一個(gè)或多個(gè)由冒號(hào)分隔主機(jī)組;remote_user則用于指定遠(yuǎn)程主機(jī)上的執(zhí)行任務(wù)的用戶。如上面示例中的

-hosts: webnodes

 remote_user: root

不過(guò),remote_user也可用于各task中。也可以通過(guò)指定其通過(guò)sudo的方式在遠(yuǎn)程主機(jī)上執(zhí)行任務(wù),其可用于play全局或某任務(wù);此外,甚至可以在sudo時(shí)使用sudo_user指定sudo時(shí)切換的用戶。

- hosts: webnodes

remote_user: mageedu

tasks:

- name: test connection

ping:

remote_user: mageedu

sudo: yes

2) 任務(wù)列表和action

play的主體部分是task list。task list中的各任務(wù)按次序逐個(gè)在hosts中指定的所有主機(jī)上執(zhí)行,即在所有主機(jī)上完成第一個(gè)任務(wù)后再開(kāi)始第二個(gè)。在運(yùn)行自下而下某playbook時(shí),如果中途發(fā)生錯(cuò)誤,所有已執(zhí)行任務(wù)都將回滾,因此,在更正playbook后重新執(zhí)行一次即可。

task的目的是使用指定的參數(shù)執(zhí)行模塊,而在模塊參數(shù)中可以使用變量。模塊執(zhí)行是冪等的,這意味著多次執(zhí)行是安全的,因?yàn)槠浣Y(jié)果均一致。

每個(gè)task都應(yīng)該有其name,用于playbook的執(zhí)行結(jié)果輸出,建議其內(nèi)容盡可能清晰地描述任務(wù)執(zhí)行步驟。如果未提供name,則action的結(jié)果將用于輸出。

定義task的可以使用“action: module options”或“module: options”的格式,推薦使用后者以實(shí)現(xiàn)向后兼容。如果action一行的內(nèi)容過(guò)多,也中使用在行首使用幾個(gè)空白字符進(jìn)行換行。

tasks:

   - name: make sure apache is running

     service: name=httpd state=running

在眾多模塊中,只有command和shell模塊僅需要給定一個(gè)列表而無(wú)需使用“key=value”格式,例如:

tasks:

   - name: disable selinux

     command: /sbin/setenforce 0

如果命令或腳本的退出碼不為零,可以使用如下方式替代:

tasks:

  - name: run this command and ignore the result

    shell: /usr/bin/somecommand || /bin/true

或者使用ignore_errors來(lái)忽略錯(cuò)誤信息:

tasks:

  - name: run this command and ignore the result

    shell: /usr/bin/somecommand

    ignore_errors: True

3) handlers

用于當(dāng)關(guān)注的資源發(fā)生變化時(shí)采取一定的操作。

“notify”這個(gè)action可用于在每個(gè)play的最后被觸發(fā),這樣可以避免多次有改變發(fā)生時(shí)每次都執(zhí)行指定的操作,取而代之,僅在所有的變化發(fā)生完成后一次性地執(zhí)行指定操作。在notify中列出的操作稱為handler,也即notify中調(diào)用handler中定義的操作。

- name: template configuration file

  template: src=template.j2 dest=/etc/foo.conf

  notify:

  - restart memcached

  - restart apache

handler是task列表,這些task與前述的task并沒(méi)有本質(zhì)上的不同。

handlers:

    - name: restart memcached

      service:  name=memcached state=restarted

    - name: restart apache

      service: name=apache state=restarted

案例:

heartbeat.yaml

- hosts: hbhosts

 remote_user: root

 tasks:

   - name: ensure heartbeat latest version

     yum: name=heartbeat state=present

   - name: authkeys configure file

     copy: src=/root/hb_conf/authkeys dest=/etc/ha.d/authkeys

   - name: authkeys mode 600

     file: path=/etc/ha.d/authkeys mode=600

     notify:

       - restart heartbeat

   - name: ha.cf configure file

     copy: src=/root/hb_conf/ha.cf dest=/etc/ha.d/ha.cf

     notify: 

      - restart heartbeat

 handlers:

 - name: restart heartbeat

   service: name=heartbeat state=restarted

新聞標(biāo)題:自動(dòng)化運(yùn)維工具ansible詳解
文章分享:http://aaarwkj.com/article38/gdshpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、、軟件開(kāi)發(fā)、建站公司、虛擬主機(jī)、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
亚洲成人av网址大全| 日韩欧美中文字幕区| 伊人久久综在合线亚洲| 中文字幕不卡一区在线| 国产欧美成人综合色就色| 蜜桃视频中文字幕二区三区| 91九色中文视频在线观看| 亚洲中文字幕精品视频乱码| 日韩在线观看精品亚洲| 日韩精品精美视频在线观看| 亚洲欧美日韩一区中文字幕| 亚洲国产视频不卡一区| 国产一区二区三区av在线播放| 九九热视频这里是精品| 九九九热精品视频在线观看| 黄色国产欧美国产亚洲| 白浆熟女精品国产91| 在线中文字幕日韩有码| 99热这里有精品久久| 原创国产av剧情精品| 久久国产精品一二三区| 日本高清一区二区网站| 欧美艳星一区二区三区四区| 五月婷婷丁香花综合网| 肉肉开房天天操夜夜操| 日韩中文字幕在线首页| 91国语对白在线观看| 四虎精品在线免费视频| 岛国av有码高清在线观看| 欧美日韩一区二区三区久久精品 | 青青草原在线影视一区| 日韩av亚洲在线观看| 日本少妇熟女一区二区| 国产亚洲精品女人久久久| 亚洲国产日韩精品av| 日本一区二区久久人妻高清| 日本丝袜福利在线观看| 99精品欧美日韩在线播放| 麻豆精品人妻中文在线| 亚洲人成网站在线免费看| 黑人巨大亚洲一区二区久|