2019-04-23ansible知識(shí)

1,ansible介紹

ssh密鑰認(rèn)證+腳本批量管理爱榕,特點(diǎn):簡(jiǎn)單弃舒,實(shí)用

但是看起來比較low,需要人工寫腳本鸽粉,類似于實(shí)時(shí)復(fù)制的inotify工具

2013年以前這種方式很普遍

MySQL高可用MHA集群斜脂,要求所有的機(jī)器互相密鑰認(rèn)證,大數(shù)據(jù)集群也需要


2触机,批量管理工具歷史

SSH+腳本 CFEngine ?? Puppte ?? saltstack ? ? ? ?? ansible

2013年 ? ? ? ? ? ? ? ? ? ? ? ? 10-13年 ? ? ?? 14-17年 ? ?? (python)


3帚戳,為什么使用ansible?

簡(jiǎn)單儡首,方便片任,容易學(xué)習(xí),功能同樣強(qiáng)大

ansible有配置文件蔬胯,可以多線程直接實(shí)現(xiàn)对供,不需要寫腳本,類似實(shí)時(shí)復(fù)制的sersync


4氛濒,什么是ansible

Ansible是一個(gè)用來遠(yuǎn)程管理服務(wù)器的工具軟件

Ansible是一個(gè)用來批量部署遠(yuǎn)程主機(jī)上服務(wù)的工具产场,這里遠(yuǎn)程主機(jī)(Remote? Host)鹅髓,是指任何可以通過SSH登錄的主機(jī),所以它既可以是遠(yuǎn)程虛擬機(jī)或物理機(jī)京景,也可以是本地主機(jī)

Ansible通過SSH協(xié)議實(shí)現(xiàn)管理節(jié)點(diǎn)與遠(yuǎn)程節(jié)點(diǎn)之間的通信迈勋。理論上來說,只要能通過SSH登錄到遠(yuǎn)程主機(jī)來完成的操作醋粟,都可以通過Ansible實(shí)現(xiàn)批量自動(dòng)化操作靡菇。涉及管理操作:復(fù)制文件、安裝服務(wù)米愿、服務(wù)啟動(dòng)停止管理厦凤、配置管理等等。


5育苟,為什么要用批量管理工具運(yùn)維

提高效率较鼓,服務(wù)器很多的情況下,例如阿里幾十萬臺(tái)服務(wù)器


6违柏,Ansible特點(diǎn)

Ansible基于Python語言實(shí)現(xiàn)博烂,由Paramiko和PyYAML兩個(gè)關(guān)鍵模塊構(gòu)建

Shell、Python是Linux運(yùn)維學(xué)員必會(huì)的兩門語言


1漱竖,安裝部署過程特別簡(jiǎn)單禽篱,學(xué)習(xí)曲線很平坦

2,不需要單獨(dú)安裝客戶端馍惹,只是利用現(xiàn)有的SSHD服務(wù)(協(xié)議)即可

3躺率,不需要服務(wù)端(no? server)

4,ansible playbook万矾,采用yaml配置悼吱,提前編排自動(dòng)化任務(wù)

5,ansible功能模塊較多良狈,對(duì)于自動(dòng)化的場(chǎng)景支持豐富


7后添,Ansible架構(gòu)介紹

1、連接插件connectior plugins用于連接主機(jī) 用來連接被管理端

2薪丁、核心模塊 core modules 連接主機(jī)實(shí)現(xiàn)操作遇西, 它依賴于具體的模塊來做具體的事情

3、自定義模塊 custom modules窥突,根據(jù)自己的需求編寫具體的模塊

4努溃、插件 plugins硫嘶,完成模塊功能的補(bǔ)充

5阻问、劇本 playbooks,ansible的配置文件,將多個(gè)任務(wù)定義在劇本中沦疾,由ansible自動(dòng)執(zhí)行

6称近、主機(jī)清單 inventor第队,定義ansible需要操作主機(jī)的范圍

最重要的一點(diǎn)是 ansible是模塊化的 它所有的操作都依賴于模塊

(懂Python可以二次開發(fā))


8,ansible實(shí)踐環(huán)境準(zhǔn)備

61(BOSS)======>>31(nfs)

61? (BOSS)? ======>>41(backup)


9刨秆,安裝ansible

BOSS管理機(jī)操作:

[root@BOSS ~]# yum install ansible -y ? ? ??

? ? ? ? ? ? ?? ===============>>此處省略

[root@BOSS ~]# rpm -qa |grep libselinux-python

libselinux-python-2.5-12.el7.x86_64 ? ? ?? =======>>正確

其他所有被管理的機(jī)器:

[root@NFS ~]# rpm -qa |grep libselinux-python

libselinux-python-2.5-14.1.el7.x86_64

[root@NFS ~]# yum install libselinux-python -y

=================>>此處省略

[root@BACKUP ~]# rpm -qa |grep libselinux-python

libselinux-python-2.5-14.1.el7.x86_64

[root@BACKUP ~]# yum install libselinux-python -y

? ? ?? =======================>>此處省略


10凳谦,主機(jī)列表配置

ssh列表實(shí)現(xiàn)方法:

for n in 7 8

do

echo 172.16.1.$n

done

/etc/ansible/hosts主機(jī)資產(chǎn)清單文件,用于定義被管理主機(jī)的認(rèn)證信息

例如ssh登錄用戶名衡未、密碼以及key相關(guān)信息尸执。如何配置Inventory文件

1.主機(jī)支持主機(jī)名通配以及正則表達(dá)式,例如web[1:3].oldboy.com代表三臺(tái)主機(jī)

2.主機(jī)支持基于非標(biāo)準(zhǔn)的ssh端口缓醋,例如web1.oldboyedu.com:6666

3.主機(jī)支持指定變量如失,可對(duì)個(gè)別主機(jī)的特殊配置,如登陸用戶\密碼

4.主機(jī)組支持指定變量[group_name:vars]送粱,同時(shí)支持嵌套組[game:children]

實(shí)踐:

[root@BOSS ~]# cp /etc/ansible/hosts{,.ori}

cp: overwrite '/etc/ansible/hosts.ori'? y

[root@BOSS ~]# cat >/etc/ansible/hosts<<EOF

> [oldboy]

> 172.16.1.31

> 172.16.1.41

>

> [oldgirl]

> 172.16.1.31

> 172.16.1.41

> 172.16.1.51

> EOF

檢查:

[root@BOSS ~]# cat /etc/ansible/hosts

[oldboy]

172.16.1.31

172.16.1.41

[oldgirl]

172.16.1.31

172.16.1.41

172.16.1.51

====================>>正確

/etc/ansible/ansible.cfg ###########ansible的配置文件


11褪贵,小試牛刀

[root@BOSS ~]# ansible oldboy -m command -a "free -m"? =============>>報(bào)錯(cuò)

ansible oldboy -m command -a "free -m" ? ######要想成功,先解決yes/no的問題

1抗俄,ssh連接一遍

2脆丁,ssh -o 參數(shù)

上述命令就是sshpass的封裝

================================================================

修改Host增加用戶和密碼:

[root@BOSS ~]# vim /etc/ansible/hosts

? 1 [oldboy]

? 2 172.16.1.31

? 3 172.16.1.41

? 4

? 5 [oldgirl]

? 6 172.16.1.31

? 7 172.16.1.41

? 8 172.16.1.51

? 9? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

10 [oldboy_pass]

11 172.16.1.31 ansible_ssh_user=root ansible_ssh_pass=123456

12 172.16.1.41 ansible_ssh_user=root ansible_ssh_pass=123456

==========================================================

測(cè)試:

[root@BOSS ~]# ansible oldboy_pass -m command -a "free -m"

172.16.1.31 | CHANGED | rc=0 >>

? ? ? ? ? ? ? total? ? ? ? used? ? ? ? free? ? ? shared? buff/cache? available

Mem:? ? ? ? ? ? 974? ? ? ? ? 77? ? ? ? 672? ? ? ? ? 7? ? ? ? 225? ? ? ? 734

Swap:? ? ? ? ? 1999? ? ? ? ? 0? ? ? ? 1999

172.16.1.41 | CHANGED | rc=0 >>

? ? ? ? ? ? ? total? ? ? ? used? ? ? ? free? ? ? shared? buff/cache? available

Mem:? ? ? ? ? ? 974? ? ? ? ? 72? ? ? ? 678? ? ? ? ? 7? ? ? ? 223? ? ? ? 740

Swap:? ? ? ? ? 1999? ? ? ? ? 0? ? ? ? 1999

================================================>>>成功

結(jié)論:使用SSH連接

密碼認(rèn)證? host里主機(jī)后面加密碼 ? ?? Paramiko模塊 ? 重點(diǎn):

密鑰認(rèn)證:提前發(fā)公鑰,才能使用ansible动雹,SSHPSAA工具

http://docs.ansible.com/ansible/latest/intro_inventory.html#list-of-behavioral-inventory-parameters

====================================================================

特殊端口:

[oldboy]

172.16.1.7? ansible_port=52113? ansible_user=root ansible_ssh_pass=123456

172.16.1.8? ansible_port=52113? ansible_user=root ansible_ssh_pass=123456

==================================================================


12槽卫,基于SSH秘鑰認(rèn)證的實(shí)踐

秘鑰分發(fā)腳本:

[root@BOSS ~]# vim yy.sh

?#!/bin/bash

#QQ: 2221269920

?#Private web site: www.xiakexing.vip

?#Date?Z2019-04-23

?#Author: longjie

?ssh-keygen -f ~/.ssh/id_rsa? -P '' -q

?for ip in 7 8 41 31

?do

?sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 172.

? ? 16.1.$ip

?done ?

==============================================>>>腳本內(nèi)容


11,ansible命令參數(shù)

-m MODULE_NAME, 模塊名字胰蝠,默認(rèn)command

-a MODULE_ARGS, 模塊參數(shù)

-f FORKS ? ? 并發(fā)進(jìn)程數(shù)晒夹,默認(rèn)5個(gè)。

-i INVENTORY(default=/etc/ansible/hosts)指定主機(jī)列表文件

=============================================================

ansible

ansible-doc

ansible-playbook

ansible-galaxy

=======================================================


12姊氓,ansible模塊查看和幫助

查找模塊

ansible-doc -l ? ?? ######模塊就Linux命令了

查看某個(gè)模塊的具體參數(shù)幫助

ansible-doc -s command? #Linux命令參數(shù)

=====================================================

12.1 command模塊 *****

1)功能說明:

command? Executes a command on a remote node

功能說明:執(zhí)行一個(gè)命令在遠(yuǎn)程節(jié)點(diǎn)上

操作實(shí)踐:

ansible oldboy -m command -a "free -m"

ansible oldboy -m command -a "df -h"

ansible oldboy -m command -a "ls /root"

ansible oldboy -m command -a "cat redhat-release"

ansible oldboy -m command -a "cat /etc/redhat-release"

最通用的功能

===========================================================

腳本:

#!/bin/bash

#QQ: 2221269920

#Private web site: www.xiakexing.vip

#Date?Z2019-04-23

#Author: longjie

for n in 31 41

do? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? echo "=====172.16.1.$n======"

? ssh 172.16.1.$n "$1"

done

============================================

執(zhí)行:

[root@BOSS ~]# sh pp.sh "cat /etc/redhat-release"

=====172.16.1.31======

CentOS Linux release 7.5.1804 (Core)

=====172.16.1.41======

CentOS Linux release 7.5.1804 (Core)

===============================>>>成功


參數(shù)信息:

參數(shù):chdir=/tmp配置相當(dāng)于cd /tmp

[root@m01 ~]# ansible oldboy? -m command -a "pwd chdir=/etc"

ansible oldboy? -m shell -a "cd /etc/;pwd"

參數(shù):creates=/etc? 相當(dāng)于條件測(cè)試? [ -e /etc ]||pwd 和下面removes相反

[root@m01 ~]# ansible oldboy? -m command -a "pwd creates=/etc"

參數(shù):removes=/root 相當(dāng)于條件測(cè)試 [ -e /root ]&&ls /root

ansible oldboy? -m command -a "ls /root removes=/root"

ansible oldboy? -m shell -a "[ -d /etc ]||pwd"

[root@m01 ~]# ansible oldboy? -m command -a "cat /etc/hosts removes=/etc/hosts"

參數(shù):warn=False 忽略警告

[root@m01 ~]# ansible oldboy? -m command -a "chmod 000 /etc/hosts warn=False"























?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末丐怯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子翔横,更是在濱河造成了極大的恐慌读跷,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禾唁,死亡現(xiàn)場(chǎng)離奇詭異效览,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)荡短,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門丐枉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掘托,你說我怎么就攤上這事瘦锹。” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵弯院,是天一觀的道長辱士。 經(jīng)常有香客問我,道長听绳,這世上最難降的妖魔是什么颂碘? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮椅挣,結(jié)果婚禮上头岔,老公的妹妹穿的比我還像新娘。我一直安慰自己鼠证,他們只是感情好切油,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著名惩,像睡著了一般澎胡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上娩鹉,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天攻谁,我揣著相機(jī)與錄音,去河邊找鬼弯予。 笑死戚宦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锈嫩。 我是一名探鬼主播受楼,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼呼寸!你這毒婦竟也來了艳汽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤对雪,失蹤者是張志新(化名)和其女友劉穎河狐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑟捣,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡馋艺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迈套。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捐祠。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖桑李,靈堂內(nèi)的尸體忽然破棺而出踱蛀,到底是詐尸還是另有隱情窿给,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布星岗,位于F島的核電站填大,受9級(jí)特大地震影響戒洼,放射性物質(zhì)發(fā)生泄漏俏橘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一圈浇、第九天 我趴在偏房一處隱蔽的房頂上張望寥掐。 院中可真熱鬧,春花似錦磷蜀、人聲如沸召耘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽污它。三九已至,卻和暖如春庶弃,著一層夾襖步出監(jiān)牢的瞬間衫贬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工歇攻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留固惯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓缴守,卻偏偏與公主長得像葬毫,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屡穗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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