2021-Ansible學(xué)習(xí)


一.關(guān)于什么是Ansible?

1.Ansible即:自動(dòng)化部署工具.

2.Ansible 介紹和架構(gòu);

公司計(jì)劃在年底做一次大型市場(chǎng)促銷活動(dòng),全面沖刺下交易額猾漫,為明年的上市做準(zhǔn)備纽甘。公司要求各業(yè)務(wù)組對(duì)年底大促做準(zhǔn)備傻寂,運(yùn)維部要求所有業(yè)務(wù)容量進(jìn)行三倍的擴(kuò)容帽揪,并搭建出多套環(huán)境可以共開發(fā)和測(cè)試人員做測(cè)試雾狈,運(yùn)維老大為了在年底有所表現(xiàn),要求運(yùn)維部門同學(xué)盡快實(shí)現(xiàn)母怜,當(dāng)你接到這個(gè)任務(wù)時(shí)余耽,有沒有更快的解決方案?

2.1 Ansible發(fā)展史

作者:Michael DeHaan( Cobbler 與 Func 作者)

ansible 的名稱來自科幻小說《安德的游戲》中跨越時(shí)空的即時(shí)通信工具苹熏,使用它可以在相距數(shù)光年的距離碟贾,遠(yuǎn)程實(shí)時(shí)控制前線的艦隊(duì)?wèi)?zhàn)斗。

2012-03-09轨域,發(fā)布0.0.1版袱耽,2015-10-17,Red Hat宣布1.5億美元收購(gòu)

官網(wǎng):https://www.ansible.com/

官方文檔:https://docs.ansible.com/

2.2 Ansible 特性

模塊化:調(diào)用特定的模塊完成特定任務(wù)干发,支持自定義模塊朱巨,可使用任何編程語(yǔ)言寫模塊

Paramiko(python對(duì)ssh的實(shí)現(xiàn)),PyYAML枉长,Jinja2(模板語(yǔ)言)三個(gè)關(guān)鍵模塊基于Python語(yǔ)言實(shí)現(xiàn)

部署簡(jiǎn)單冀续,基于python和SSH(默認(rèn)已安裝),agentless必峰,無需代理不依賴PKI(無需ssl)安全洪唐,基于OpenSSH

冪等性:一個(gè)任務(wù)執(zhí)行1遍和執(zhí)行n遍效果一樣,不因重復(fù)執(zhí)行帶來意外情況支持playbook編排任務(wù)吼蚁,YAML格式凭需,編排任務(wù)肝匆,支持豐富的數(shù)據(jù)結(jié)構(gòu)

較強(qiáng)大的多層解決方案 role.

2.3 Ansible 架構(gòu)

2.3.1 Ansible 組成

組合INVENTORY粒蜈、API、MODULES旗国、PLUGINS的綠框枯怖,為ansible命令工具,其為核心執(zhí)行工具


INVENTORY:Ansible管理主機(jī)的清單/etc/anaible/hosts

MODULES:Ansible執(zhí)行命令的功能模塊粗仓,多數(shù)為內(nèi)置核心模塊嫁怀,也可自定義

PLUGINS:模塊功能的補(bǔ)充,如連接類型插件借浊、循環(huán)插件、變量插件萝招、過濾插件等蚂斤,該功能不常用

API:供第三方程序調(diào)用的應(yīng)用程序編程接口

2.3.2 Ansible 命令執(zhí)行來源

USER 普通用戶,即SYSTEM ADMINISTRATOR

PLAYBOOKS:任務(wù)劇本(任務(wù)集)槐沼,編排定義Ansible任務(wù)集的配置文件曙蒸,由Ansible順序依次執(zhí)行捌治,通常是JSON格式的YML文件

CMDB(配置管理數(shù)據(jù)庫(kù)) API 調(diào)用

PUBLIC/PRIVATE CLOUD API調(diào)用

USER-> Ansible Playbook -> Ansibile

2.3.3 注意事項(xiàng)

執(zhí)行ansible的主機(jī)一般稱為主控端,中控纽窟,master或堡壘機(jī)

主控端Python版本需要2.6或以上

被控端Python版本小于2.4肖油,需要安裝python-simplejson

被控端如開啟SELinux需要安裝libselinux-python

windows 不能做為主控端

3 Ansible 安裝和入門

3.1 Ansible安裝

ansible的安裝方法有多種

3.1.1 EPEL源的rpm包安裝:

[root@ansible ~]#yum install ansible? ? ?##最簡(jiǎn)單的方法

3.1.2 編譯安裝

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

3.1.3 確認(rèn)安裝

[root@ansible ~]#ansible --version

ansible 2.9.5

config file = /etc/ansible/ansible.cfg

configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']

ansible python module location = /usr/lib/python3.6/site-packages/ansible

executable location = /usr/bin/ansible

python version = 3.6.8 (default, Nov 21 2019, 19:31:34) [GCC 8.3.1 20190507(Red Hat 8.3.1-4)]

3.2 Ansible 相關(guān)文件

3.2.1 配置文件*****

/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性

/etc/ansible/hosts 主機(jī)清單

/etc/ansible/roles/ 存放角色的目錄

3.2.2 ansible主配置文件

Ansible 的配置文件 /etc/ansible/ansible.cfg ,其中大部分的配置內(nèi)容無需進(jìn)行修改

[defaults]

#inventory ? ? = /etc/ansible/hosts # 主機(jī)列表配置文件

#library = /usr/share/my_modules/ # 庫(kù)文件存放目錄

#remote_tmp = $HOME/.ansible/tmp #臨時(shí)py命令文件存放在遠(yuǎn)程主機(jī)目錄

#local_tmp ? ? = $HOME/.ansible/tmp # 本機(jī)的臨時(shí)命令執(zhí)行目錄

#forks ? ? ? ? = 5 ? # 默認(rèn)并發(fā)數(shù)

#sudo_user ? ? = root # 默認(rèn)sudo 用戶

#ask_sudo_pass = True #每次執(zhí)行ansible命令是否詢問ssh密碼

#ask_pass ? ? = True ?

#remote_port ? = 22

#host_key_checking = False # 檢查對(duì)應(yīng)服務(wù)器的host_key臂港,建議取消注釋

#log_path=/var/log/ansible.log #日志文件森枪,建議啟用

#module_name = command ? #默認(rèn)模塊,可以修改為shell模塊

3.2.3 inventory 主機(jī)清單

ansible的主要功用在于批量主機(jī)操作审孽,為了便捷地使用其中的部分主機(jī)县袱,可以在inventory file中將其分組命名

默認(rèn)的inventory file為 /etc/ansible/hosts

inventory file可以有多個(gè),且也可以通過Dynamic Inventory來動(dòng)態(tài)生成主機(jī)清單文件格式

inventory文件遵循INI文件風(fēng)格佑力,中括號(hào)中的字符為組名式散。可以將同一個(gè)主機(jī)同時(shí)歸并到多個(gè)不同的組中,此外打颤,當(dāng)如若目標(biāo)主機(jī)使用了非默認(rèn)的SSH端口暴拄,還可以在主機(jī)名稱之后使用冒號(hào)加端口號(hào)來標(biāo)明,如果主機(jī)名稱遵循相似的命名模式,還可以使用列表的方式標(biāo)識(shí)各主機(jī)

范例:

ntp.magedu.com

[webservers]

www1.magedu.com:2222

www2.magedu.com

[dbservers]

db1.magedu.com

db2.magedu.com

db3.magedu.com

[websrvs]

www[1:100].example.com

[dbsrvs]

db-[a:f].example.com

3.3 Ansible相關(guān)工具

/usr/bin/ansible? ? ? ? ? ? ? ? ? ? ?主程序编饺,臨時(shí)命令執(zhí)行工具

/usr/bin/ansible-doc? ? ? ? ? ? ? 查看配置文檔揍移,模塊功能查看工具,相當(dāng)于man

/usr/bin/ansible-playbook? ? ?定制自動(dòng)化任務(wù),編排劇本工具,相當(dāng)于腳本

/usr/bin/ansible-pull? ? ? ? ? ? ? 遠(yuǎn)程執(zhí)行命令的工具

/usr/bin/ansible-vault? ? ? ? ? ? 文件加密工具

/usr/bin/ansible-console? ? ? ?基于Console界面與用戶交互的執(zhí)行工具

/usr/bin/ansible-galaxy? ? ? ? ?下載/上傳優(yōu)秀代碼或Roles模塊的官網(wǎng)平臺(tái)

利用ansible實(shí)現(xiàn)管理的主要方式:

Ad-Hoc 即利用ansible命令反肋,主要用于臨時(shí)命令使用場(chǎng)景

Ansible-playbook 主要用于長(zhǎng)期規(guī)劃好的那伐,大型項(xiàng)目的場(chǎng)景,需要有前期的規(guī)劃過程

3.3.1 ansible-doc

此工具用來顯示模塊幫助

格式

ansible-doc [options] [module...]

-l, --list? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#列出可用模塊

-s, --snippets? ? ? ? ? ? ? ? ? ? ? #顯示指定模塊的playbook片段

范例:

#列出所有的模塊

ansible-doc -l

#查看指定模塊幫助用法

ansible-doc ping

#查看指定模塊幫助用法

ansible-doc -s ping?

實(shí)例:

[root@ansible ~]# ansible-doc -l | wc -l?

3387

3.3.2 ansible

此工具通過ssh協(xié)議石蔗,實(shí)現(xiàn)對(duì)遠(yuǎn)程主機(jī)的配置管理罕邀、應(yīng)用部署、任務(wù)執(zhí)行等功能

建議:使用此工具前养距,先配置ansible主控端能基于密鑰認(rèn)證的方式聯(lián)系各個(gè)被管理節(jié)點(diǎn)

范例:利用sshpass批量實(shí)現(xiàn)基于key驗(yàn)證腳本1

[root@localhost ~]# vim /etc/ssh/ssh_config?

#修改下面的一行

StrictHostKeyChecking no

[root@localhost ~]#? cat hosts.list

10.0.0.18

10.0.0.28?

[root@localhost ~]#? vim? push_ssh_key.sh?

#bin/bash?

rpm -q sshpass &> /dev/null? || yum -y install sshpass?

[ -f? /root/.ssh/id_rsa ] || ssh-keygen -f /root/.ssh/id_rsa -p ''

export SSHPASS=123456

while read IP;do?

? ? sshpass -e ssh-copy-id? -o??StrictHostKeyChecking=no $IP?

done < hosts.list?

格式:

ansible <host-pattern> [-m module_name] [-a args]

選項(xiàng)說明:

--version #顯示版本

-m module ? #指定模塊诉探,默認(rèn)為command

-v #詳細(xì)過程 –vv -vvv更詳細(xì)

--list-hosts #顯示主機(jī)列表,可簡(jiǎn)寫 --list

-k, --ask-pass ? ? #提示輸入ssh連接密碼棍厌,默認(rèn)Key驗(yàn)證

-C, --check ? #檢查肾胯,并不執(zhí)行

T, --timeout=TIMEOUT #執(zhí)行命令的超時(shí)時(shí)間,默認(rèn)10s

-u, --user=REMOTE_USER #執(zhí)行遠(yuǎn)程執(zhí)行的用戶

-b, --become ? ?#代替舊版的sudo 切換

--become-user=USERNAME ?#指定sudo的runas用戶耘纱,默認(rèn)為root

-K, --ask-become-pass ?#提示輸入sudo時(shí)的口令

ansible的Host-pattern

用于匹配被控制的主機(jī)的列表

All :表示所有Inventory中的所有主機(jī)

范例

ansible all –m ping

*:通配符

ansible "*" -m ping

ansible 192.168.1.* -m ping

ansible "srvs" -m ping

ansible命令執(zhí)行過程

1. 加載自己的配置文件 默認(rèn)/etc/ansible/ansible.cfg

2. 加載自己對(duì)應(yīng)的模塊文件敬肚,如:command

3. 通過ansible將模塊或命令生成對(duì)應(yīng)的臨時(shí)py文件,并將該文件傳輸至遠(yuǎn)程服務(wù)器的對(duì)應(yīng)執(zhí)行用戶

$HOME/.ansible/tmp/ansible-tmp-數(shù)字/XXX.PY文件

4. 給文件+x執(zhí)行

5. 執(zhí)行并返回結(jié)果

6. 刪除臨時(shí)py文件束析,退出

ansible 的執(zhí)行狀態(tài):


綠色:執(zhí)行成功并且不需要做改變的操作

黃色:執(zhí)行成功并且對(duì)目標(biāo)主機(jī)做變更

紅色:執(zhí)行失敗

ansible使用范例:

#以liu用戶執(zhí)行ping存活檢測(cè)

ansible all -m ping -u liu? -k

#以liu sudo至root執(zhí)行ping存活檢測(cè)

ansible all -m ping -u liu -k -b

----------------------------------------------[馬哥門徒]----------------------------------------------

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末艳馒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌弄慰,老刑警劉巖第美,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異陆爽,居然都是意外死亡什往,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門慌闭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來别威,“玉大人,你說我怎么就攤上這事贡必⊥酶郏” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵仔拟,是天一觀的道長(zhǎng)衫樊。 經(jīng)常有香客問我,道長(zhǎng)利花,這世上最難降的妖魔是什么科侈? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮炒事,結(jié)果婚禮上臀栈,老公的妹妹穿的比我還像新娘。我一直安慰自己挠乳,他們只是感情好权薯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著睡扬,像睡著了一般盟蚣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上卖怜,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天屎开,我揣著相機(jī)與錄音,去河邊找鬼马靠。 笑死奄抽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的甩鳄。 我是一名探鬼主播逞度,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼娩贷!你這毒婦竟也來了第晰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤彬祖,失蹤者是張志新(化名)和其女友劉穎茁瘦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體储笑,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甜熔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了突倍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腔稀。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖羽历,靈堂內(nèi)的尸體忽然破棺而出焊虏,到底是詐尸還是另有隱情,我是刑警寧澤秕磷,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布诵闭,位于F島的核電站,受9級(jí)特大地震影響澎嚣,放射性物質(zhì)發(fā)生泄漏疏尿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一易桃、第九天 我趴在偏房一處隱蔽的房頂上張望褥琐。 院中可真熱鬧,春花似錦晤郑、人聲如沸敌呈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)磕洪。三九已至,卻和暖如春匹舞,著一層夾襖步出監(jiān)牢的瞬間褐鸥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工赐稽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叫榕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓姊舵,卻偏偏與公主長(zhǎng)得像晰绎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子括丁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容