Ansible系列-基礎(chǔ)篇-Ansible Inventory的合理化配置

歡迎關(guān)注個人公眾號 DailyJobOps

原文地址:Ansible系列-基礎(chǔ)篇-Ansible Inventory的合理化配置


Ansible 是對主機進行管理诞仓,可以對主機進行分組等配置揩魂,默認(rèn)配置存放在 /etc/ansible/hosts 文件

Ansible Inventory內(nèi)置參數(shù)

在進行配置之前择份,我們先了解下 Inventory都有哪些內(nèi)置的參數(shù)

參數(shù) 參數(shù)說明
ansible_ssh_host ssh 連接的主機IP
ansible_ssh_user ssh 連接的主機user
ansible_ssh_port ssh 連接的主機端口,默認(rèn)是22
ansible_ssh_pass ssh 連接的主機用戶密碼;建議采用--ask-pass 或者SSH秘鑰登錄
ansible_ssh_sudo sudo 用戶
ansible_sudo_pass sudo 用戶對應(yīng)的密碼屁柏; 建議采用 --ask-sudo-pass
ansible_sudo_exe sudo 路徑 (version 1.8 以上支持)
ansible_connection 與主機連接的方式;Anisble1.2以上采用paramiko;1.2之后采用smart
ansible_ssh_private_key_file ssh連接使用的私鑰文件地址格嗅,可以有多個
ansible_shell_type 目標(biāo)系統(tǒng)的shell類型番挺,默認(rèn)是'sh',也可以配置'csh' 后者 'fish' 等
ansible_python_interpreter 目標(biāo)主機的 python 路徑屯掖,如果目標(biāo)主機有多個Python玄柏,則非常有用

Inventory 常規(guī)配置

ansible_ssh_host=192.168.1.2 ansible_ssh_user=devops ansible_ssh_port=9555

[dbgroup]
db-master ansible_ssh_host=192.168.1.3 ansible_ssh_user=devops ansible_ssh_port=9555
db-slave ansible_ssh_host=192.168.1.4 ansible_ssh_user=devops ansible_ssh_port=9555 

[web_group]
ansible_ssh_host=192.168.1.[5:7] ansible_ssh_user=devops ansible_ssh_port=9555 http_port=9090

[website:children]
dbgroup
web_group

[web_group:vars]
domain=www.colinspace.com

結(jié)合Inventory內(nèi)置參數(shù)和上面的配置Demo,來逐步說明解析

  • 可以單獨配置一些主機贴铜,比如第一行記錄粪摘,同時執(zhí)行了端口和用戶,IP地址
  • 可以把某些具有共性的主機放到一個分組中绍坝,比如上面的兩個數(shù)據(jù)庫和三個web主機徘意;主機名放到[]中,另外建議主機名采用下劃線分割轩褐,不然會有warnning
  • 可以給配置的主機 配置別名 比如上面的 db-master 和 db-slave 映砖,其實這個別名可以配置成對應(yīng)的主機名,這里可以思考下灾挨,配置成主機名有什么優(yōu)勢邑退?
  • 在配置一些主機的時候,如果主機出現(xiàn)的有規(guī)律劳澄,可以類似第8行配置進行簡寫
  • 分組可以嵌套地技,比如 website 分組包含了dbgroup 和 web_group
  • 另外可以定義分組的變量,如 14 和 15行配置
  • 第8行最后的 http_port 是定義的主機變量

這里不管是主機變量還是分組變量都是為了在后續(xù)的 playbook 中使用秒拔,當(dāng)然這種把變量配置到 Inventory配置文件中的做法不是最優(yōu)解莫矗,官方給出的建議是單獨配置

擴展:分文件定義 Host 和 Group 變量

注意:inventory文件格式是 ini ;但是這里分文件之后的Host或者Group變量存放文件的格式是 yaml

  • /etc/ansible/host_vars/xxx 存放主機變量砂缩,該文件夾下每個文件都是一個主機名稱作谚,內(nèi)容存放需要的主機變量
  • /etc/ansible/group_vars/yyy 存放分組變量,該文件夾下每個文件都是一個分組名稱庵芭,內(nèi)容存放需要的分組變量

在實際使用中我們可以如下操作

# 直接 使用對應(yīng)的主機IP來訪問
ansible 192.168.1.2 -m ping
# 也可以使用別名
ansible db-master -m shell -a 'ps -ef|grep mysql'
# 可以針對分組操作
ansible dbgroup -m shell -a 'ps -ef|grep mysql'
# 上面分組操作等同于
ansible db-master:db-slave -m ping
# 或者使用 * 通配符
ansible db-* -m ping 

上述命令行操作是ansible ad-hoc 方式妹懒,-m 后面接模塊名稱 -a 后面接模塊需要的參數(shù)

Inventory 優(yōu)化配置

比如,常規(guī)ansible操作是通過普通賬號操作双吆,有時候需要sudo權(quán)限眨唬,上面 Inventory中沒有配置sudo相關(guān),是因為我們在 主配置文件/etc/ansible/ansible.cfg 中進行了相關(guān)配置

[privilege_escalation]
become=True
become_method=sudo
become_user=root

另外剛才提到 Inventory 中可以給每個主機配置一個別名好乐,建議是配置成對應(yīng)的主機名匾竿,好處就是:在運維操作中,一般會把 主機名和其對應(yīng)的IP地址解析添加到 /etc/hosts 文件中去蔚万,這樣的話我們只在inventory中配置主機名即可

如果這個時候默認(rèn)端口是22岭妖,同時操作的用戶就是ansible管理節(jié)點當(dāng)前登錄的用戶,那么 inventory的配置文件就可以簡化為

devops-demo-vpc 

[dbgroup]
db-master-vpc
db-slave-vpc

[web_group]
web-01-vpc
web-02-vpc
web-03-vpc

[website:children]
dbgroup
web_group

[web_group:vars]
domain=www.colinspace.com

在每個主機的 /etc/hosts 文件中同步如下配置即可

192.168.1.2 devops-demo-vpc
192.168.1.3 db-master-vpc
192.168.1.4 db-slave-vpc
192.168.1.5 web-01-vpc
192.168.1.6 web-02-vpc
192.168.1.7 web-03-vpc

/etc/hosts 的管理可以通過后續(xù)介紹的playbook管理同步,結(jié)合cmdb就可以實現(xiàn)內(nèi)部域名(可以是內(nèi)部定義的有意義的域名或者主機名)解析

這個有個前提就是ansible管理是通過公私鑰對來進行ssh免密登錄連接昵慌,這里引申出幾個運維規(guī)范:

1苔巨、Linux主機禁止root登錄

2、Linux主機禁止密碼登錄

3废离、Linux用戶通過公私鑰對登錄

4侄泽、Linux主機最小化SA賬號開通sudo權(quán)限

多Inventory配置

一般都會存在多個環(huán)境,為了有效管理蜻韭,就可以為不同的環(huán)境配置不同的inventory配置悼尾。

配置說明

# 主配置文件中通過 inventory 參數(shù)指定一個默認(rèn)
inventory = /etc/ansible/inventory/prod.hosts

# 在 inventory目錄下分別存放各環(huán)境的 inventory文件

| - /etc/ansible/inventory/
| - - /etc/ansible/inventory/prod.hosts
| - - /etc/ansible/inventory/gamma.hosts
| - - /etc/ansible/inventory/test.hosts
| - - /etc/ansible/inventory/dev.hosts

默認(rèn)是管理生產(chǎn)環(huán)境主機,如果需要管理其他環(huán)境主機肖方,只需要通過 -i 參數(shù)指定不同的 inventory 文件即可

ansible -i /etc/ansible/inventory/dev.hosts xxx-host -m shell -a 'df -h'

還有一種做法就是 inventory 參數(shù)配置成目錄闺魏,比如

inventory = /etc/ansible/inventory/

這樣就不存在通過 -i 參數(shù)指定不同的inventory的問題,ansible 會從該目錄下所有文件中去查詢需要操作的主機或者分組俯画。如果文件太多遍歷存在一定的性能消耗析桥,而且一定要清楚操作的目標(biāo)節(jié)點。這就需要清晰的環(huán)境主機名規(guī)劃才可以艰垂,

兩種方式各有優(yōu)缺點泡仗,大家自行選擇即可

動態(tài) Inventory

目的是為了解決超大量主機管理時,維護 inventory 文件成本的問題猜憎。ansible通過支持動態(tài)Inventory娩怎,其文件里的主機列表和變量信息都可以從外部拉取

所以需要一個腳本,配置如下

inventory = /etc/ansible/inventory.py

不過 ansible 對這個腳本是有要求的

  • --list 或者 -L 顯示所有主機和主機組的信息胰柑,JSON格式截亦。
  • --host 或者 -H 返回某臺主機的信息,JSON格式柬讨。

一般靜態(tài)配置文件方式即可滿足大家1K以內(nèi)主機管理崩瓤,如果更多就結(jié)合運維的CMDB來實現(xiàn)動態(tài),這里先不擴展介紹踩官,在最后的擴展章節(jié)却桶,結(jié)合運維平臺CMDB實現(xiàn)動態(tài)inventory 真實案例

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市卖鲤,隨后出現(xiàn)的幾起案子肾扰,更是在濱河造成了極大的恐慌畴嘶,老刑警劉巖蛋逾,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窗悯,居然都是意外死亡区匣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亏钩,“玉大人莲绰,你說我怎么就攤上這事」贸螅” “怎么了蛤签?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長栅哀。 經(jīng)常有香客問我震肮,道長,這世上最難降的妖魔是什么留拾? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任戳晌,我火速辦了婚禮,結(jié)果婚禮上痴柔,老公的妹妹穿的比我還像新娘沦偎。我一直安慰自己,他們只是感情好咳蔚,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布豪嚎。 她就那樣靜靜地躺著,像睡著了一般谈火。 火紅的嫁衣襯著肌膚如雪疙渣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天堆巧,我揣著相機與錄音妄荔,去河邊找鬼。 笑死谍肤,一個胖子當(dāng)著我的面吹牛啦租,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荒揣,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼篷角,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了系任?” 一聲冷哼從身側(cè)響起恳蹲,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎俩滥,沒想到半個月后嘉蕾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡霜旧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年错忱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡以清,死狀恐怖儿普,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掷倔,我是刑警寧澤眉孩,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站勒葱,受9級特大地震影響勺像,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜错森,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一吟宦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涩维,春花似錦殃姓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至睡蟋,卻和暖如春踏幻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背戳杀。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工该面, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人信卡。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓隔缀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親傍菇。 傳聞我的和親對象是個殘疾皇子猾瘸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354