亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

本文是馬哥教育特約金牌講師、Linux運(yùn)維專家魏巍的分享《Anisble常用模塊入門指南》的文字整理篇。

朋友們晚上好:

今天我為大家?guī)?lái)的分享是

Ansible系列課堂之基礎(chǔ)入門-基礎(chǔ)模塊的使用

難度指數(shù): 2星(滿星5星)

技術(shù)指數(shù): 5星(滿星5星)

理論指數(shù): 2星(滿星5星)

面向人群: 自動(dòng)化運(yùn)維&初中級(jí)運(yùn)維

簡(jiǎn)單做下自我介紹:

魏巍: 出生時(shí)經(jīng)醫(yī)生證實(shí)為90后超早期,狂熱的單車與開源愛(ài)好者,6年Linux一線運(yùn)維經(jīng)驗(yàn),《Ansible權(quán)威指南》一書聯(lián)合作者,做事情常出于“我不懂所以我想知道”的好奇心,在運(yùn)維界界頗負(fù)“魏巍是誰(shuí)啊沒(méi)聽說(shuō)過(guò)”的盛名。

簡(jiǎn)介

 

眾所周知,ansible是自動(dòng)化運(yùn)維神器

可以方便的實(shí)現(xiàn)大批量定制任務(wù)

首先,我們來(lái)了解一下ansible的整體架構(gòu)

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

接下來(lái),我們對(duì)上圖中ansible的核心組件進(jìn)行簡(jiǎn)單的解析

  • Ansible core :?即ansible軟件本身

  • Host ivnetory :?主機(jī)池,定義可以由ansible來(lái)管理的主機(jī)

  • Core modules :?核心模塊,即ansible處自帶的模塊,可完成大部分任務(wù)

  • Custom modules :?用戶自己編寫定制的模塊,實(shí)現(xiàn)特定功能

  • Playbook :?用于定義多個(gè)任務(wù)在一個(gè)文件中,可多次使用

  • Connection plugin :?用來(lái)連接第一個(gè)被管理主機(jī),實(shí)現(xiàn)一些輔助功能

第一條ansible命令

 

今天我們將借助一些ansible基礎(chǔ)命令來(lái)初步了解一下Host inventory,深入學(xué)習(xí)幾個(gè)常用的Core module

我們來(lái)看一條簡(jiǎn)單的ansible命令:

ansible datanodes -mcommand -a “uptime”

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

下面我們對(duì)其基本命令格式進(jìn)行解析

adnsible的基本使用格式,如下:

ansible <host-pattern> [-f forks] [-mmodule_name] [-a args]

  • -f forks:?啟動(dòng)的并發(fā)線程數(shù)

  • -m module_name:?要使用的模塊

  • -a args:?模塊所需的參數(shù)

主機(jī)池

 

# ansible datanodes -mcommand -a uptime?中,

datanodes即所謂的host-pattern

定義在/etc/ansible/hosts文件中,格式如下:

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

(主機(jī)列表可以為域名,也可為IP地址)

data[4:6]為data4,data5,data6的簡(jiǎn)寫形式

只有在/etc/ansible/hosts中定義過(guò)的主機(jī),才能被ansible管理

主機(jī)變量

 

可以在inventory中定義主機(jī)時(shí)為其添加主機(jī)變量以便于在playbook中使用。例如:

[webservers]

www1.magedu.com http_port=80maxRequestsPerChild=100

www2.magedu.com http_port=8080maxRequestsPerChild=200

需要注意的是這些變量只能在playbook中使用

組變量

 

組變量是指賦予給指定組內(nèi)所有主機(jī)上的在playboo中可用的變量。例如:

[webservers]

www1.magedu.com

www2.magedu.com

共享如下變量:

[webservers:vars]

ntp_server=ntp.magedu.com

nfs_server=nfs.magedu.com

如此,ntp_server和nfs_server兩個(gè)變量,便可被webservers組內(nèi)所有主機(jī)共享

主機(jī)池

 

Ansible默認(rèn)使用root用戶,通過(guò)ssh對(duì)各主機(jī)進(jìn)行管理

建議使用ssh密鑰免密碼認(rèn)證來(lái)連接各主機(jī)

但也可以全用指定用戶和密碼,可直接在ansible hosts文件中指定:

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

ssh相關(guān)的參數(shù)如下:

ansible_ssh_host

指定域名對(duì)應(yīng)的IP地址

ansible_ssh_port

指定ssh連接端口號(hào)

ansible_ssh_user

指定ssh默認(rèn)使用哪個(gè)用戶進(jìn)行管理

ansible_ssh_pass

ssh連接所用的密碼 (這非常不安全,強(qiáng)烈建議全用ssh密鑰認(rèn)證或交互式輸入密碼 --ask-pass )

ansible_sudo_pass

?指定sudo的密碼 (這非常不安全,強(qiáng)烈建議全用ssh密鑰認(rèn)證或交互式輸入密碼 --ask-pass)

簡(jiǎn)單明了,不是嗎?

關(guān)于主機(jī)池的應(yīng)用,先說(shuō)這么多

下面我們深入介紹一下幾個(gè)常用的核心模塊

常用模塊

 

Ansible?默認(rèn)使用command模塊,所以

#ansible –m commanddatanodes -a uptime

可以簡(jiǎn)寫為: #ansible datanodes -a uptime

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

如圖所示:

執(zhí)行命令成功,返回結(jié)果為綠色

獲取幫助

 

Anbible的模塊那么多,我該如何獲取各模塊的信息和幫助呢?

Ansible為我們提供了ansible-doc命令

基本用法為:

ansible-doc [-Mmodule_path] [-l] [-s] [module...]

-M?文件路徑, --moudle-path=文件路徑

指定額外目錄來(lái)尋找模塊所需的庫(kù)文件

-s, --snipet=

產(chǎn)生一段可以應(yīng)用playbook中內(nèi)容,類似于一種任務(wù)模板

-l, --list=

顯示簡(jiǎn)潔的模塊列表和一些簡(jiǎn)單的注釋

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

如圖所示,ansible-doc會(huì)顯示兩列信息

左側(cè)為模塊名,右側(cè)為模塊簡(jiǎn)介

左右一一對(duì)應(yīng)

簡(jiǎn)單明了

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

以group模塊為例

 

# ansible-doc -s group

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

group部共四個(gè)參數(shù)

  • gid:?指定所建組的ID,可選

  • name:?指定組名

  • state:?設(shè)定組的狀態(tài),默認(rèn)為present,設(shè)置為absent時(shí),表示刪除該組

  • system:?值為yes時(shí),表示該組將會(huì)被創(chuàng)建為系統(tǒng)組

(注意:group模塊需要依賴系統(tǒng)命令:groupadd,groupdel,groupmod)

如此,我們?cè)诟鱠atanode結(jié)點(diǎn)上分別創(chuàng)建gid為501的組

#ansible datanodes -m group -a 'name=developer'

data2| success >> {

??? "changed": true,

??? "gid": 501,

??? "name": "developer",

??? "state": "present",

??? "system": false

}

data3| success >> {

??? "changed": true,

??? "gid": 501,

??? "name": "developer",

??? "state": "present",

??? "system": false

}

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

刪除developer組操作

?? # ansible datanodes -m group -a'name=developer state=absent'

data4 | success>> {

??? "changed": true,

??? "name": "developer",

??? "state": "absent"

}

data3 | success>> {

??? "changed": true,

??? "name": "developer",

??? "state": "absent"

}

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

user模塊

 

ansible-doc user

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

user模塊常用的參數(shù)有:??

  • name:?指定所建用戶的用戶名

  • group:?指定所建用戶的主組,可選

  • groups:?指定所建用戶的附加組,如果設(shè)置為空(’groups=’),則清空所有附加組信息

  • shell:?指定使用哪種shell

  • uid:?指定用戶的ID

  • state:?設(shè)定帳號(hào)狀態(tài),當(dāng)值為absent時(shí),將會(huì)刪除指定用戶

一個(gè)直觀的例子:

ansible all –m user –a‘name=dev uid=666 group=developer’

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

我們看到,uid和group均為我們?cè)O(shè)置的值

group顯示的是gid,gid501即為我們剛才新建的組ID

狀態(tài)值state為present

當(dāng)我們需要?jiǎng)h除用戶時(shí),使用state設(shè)為absent就可以了,如:

ansible all –m user –a‘name=dev uid=666 group=developer state=absent’

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

copy模塊

 

顧名思義,copy模塊是用來(lái)遠(yuǎn)程傳輸文件的

常用參數(shù)如下:

  • src:?指定本地源文件路徑,絕對(duì)路徑或相對(duì)路徑都可以,如果路徑指向一個(gè)目錄,則會(huì)把目錄下所有文件全部復(fù)制

  • dest:遠(yuǎn)程主機(jī)的上文件存放路徑,必做使用絕對(duì)路徑

  • content:?直接在命令中指定文件內(nèi)容,使用該內(nèi)容在遠(yuǎn)程主機(jī)上生成文件

  • backup:?是否備份目標(biāo)文件,默認(rèn)為no

  • owner:?指定文件屬主

  • group:?指定文件屬組

  • mode:?指定文件權(quán)限,如640

一個(gè)簡(jiǎn)單的例子

我們要把本地文件/etc/issue復(fù)制到遠(yuǎn)程主機(jī)/tmp/目錄下

屬主為:zabbix用戶

同時(shí),還要求只有屬主對(duì)該文件有讀寫權(quán)限

ansible datanodes -m copy -a 'src=/etc/issuedest=/tmp/issue.ansible mode=600 owner=zabbix'

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

content?參數(shù)的用法

比如,我們傳送一段內(nèi)容

“hello world

how are you ?”?到遠(yuǎn)程主機(jī)上的文件/tmp/content.ansible,操作如下:

# ansible datanodes -m copy -a'content="hello world!\n how are you? \n"dest="/tmp/content.ansible"'

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

# ssh data3 "cat /tmp/content.ansible"

hello world!

?how areyou?

content可以對(duì)\n進(jìn)行轉(zhuǎn)義

是不是很棒?!~

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

定時(shí)任務(wù)管理模塊:cron??

批量管理定時(shí)任務(wù)

cron模塊下的參數(shù):day,hour,minute,month,weekday與系統(tǒng)crontab中的值一一對(duì)應(yīng)

默認(rèn)值都是*

  • jod:指定要定期執(zhí)行的任務(wù)

  • name:?給任務(wù)一個(gè)簡(jiǎn)單的名字或注釋,必選

  • state:?設(shè)定任務(wù)狀態(tài),absent表示刪除該定時(shí)任務(wù)

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

為了演示效果

要求第分鐘ping 一個(gè)www.baidu.com

# ansible data1 -m cron -a 'name="pingtest" minute="*/1" job="ping www.baidu.com" '

data1 | success >> {

???"changed": true,

???"jobs": [

???????"ping test"

??? ]

}

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

注意:

?? name變量是必須指定的

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

刪除某個(gè)job時(shí),使用state參數(shù):

state=absent

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

shell模塊:在遠(yuǎn)程主機(jī)上執(zhí)行命令

類似command模塊

但是稍有不同,功能更為強(qiáng)大

比如,使用command中要使用管道符“|”

報(bào)出一系列的錯(cuò)誤

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

使后shell模塊后

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

順利執(zhí)行

所以,當(dāng)命令中需要用到管道符時(shí),一定要使用shell模塊替代command模塊

最后,給初學(xué)都一個(gè)最容易上手的模塊
ping模塊

Ping?模塊用于檢測(cè)主機(jī)的網(wǎng)絡(luò)連通性

正常通信的主機(jī),會(huì)返回一個(gè)pong信號(hào)

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

————廣告時(shí)間————

《馬哥Linux云計(jì)算及架構(gòu)師》課程,由知名Linux布道師馬哥創(chuàng)立,經(jīng)歷了8年的發(fā)展,聯(lián)合阿里巴巴、唯品會(huì)、大眾點(diǎn)評(píng)、騰訊、陸金所等大型互聯(lián)網(wǎng)一線公司的馬哥課程團(tuán)隊(duì)的工程師進(jìn)行深度定制開發(fā),課程采用 Centos7.2系統(tǒng)教學(xué),加入了大量實(shí)戰(zhàn)案例,授課案例均來(lái)自于一線的技術(shù)案例。

開課時(shí)間:11月06號(hào)

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門掃描二維碼和更多小伙伴組團(tuán)學(xué)習(xí)【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

【大咖講堂-173期】 十五分鐘實(shí)現(xiàn)Ansible常用模塊入門

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!