Ansible服務(wù)

第一章 Ansible介紹

1.手工運維與自動化運維

1.手動運維時代

image

2.自動化運維

image

3.自動化運維帶來的好處

image

1.什么是Ansible

Ansible 是 python 中的一套模塊,系統(tǒng)中的一套自動化工具呜叫,只需要使用 ssh 協(xié)議連接及可用來系統(tǒng)管理空繁、自動化執(zhí)行命令等任務(wù)。

2.為什么需要Ansible朱庆?

批量管理功能:

1\. 可以實現(xiàn)批量系統(tǒng)操作配置
2\. 可以實現(xiàn)批量軟件服務(wù)部署
3\. 可以實現(xiàn)批量文件數(shù)據(jù)分發(fā)
4\. 可以實現(xiàn)批量系統(tǒng)信息收集

管理服務(wù)意義:

1\. 提高工作的效率(部署綜合架構(gòu))  
2\. 提高工作準確度
3\. 減少維護的成本
4\. 減少重復性工作 

安裝部署簡單:

1\. 沒有配置文件(不需要配置)
2\. 不需要啟動服務(wù)
3\. 客戶端沒有需要部署任務(wù)

3.如何學習Ansible?

1.官方文檔
2.幫助文檔
3.其他人寫好的文檔

第二章 Ansible安裝部署

Ansible的安裝部署十分簡單盛泡,只需要yum安裝就行

[root@m01 ~]# yum install ansible -y

第三章 Ansible主機清單

/etc/ansible/hosts 主機資產(chǎn)清單文件,用于定義被管理主機的認證信息娱颊, 例如 ssh 登錄用戶名傲诵、密碼以及 key相關(guān)信息。

1.主機支持主機名通配以及正則表達式箱硕,例如 web[1:3].oldboy.com 代表三臺主機
2.主機支持基于非標準的 ssh 端口拴竹,例如 web1.oldboy.com:6666
3.主機支持指定變量,可對個別主機的特殊配置颅痊,如登陸用戶殖熟,密碼
4.主機組支持指定變量[group_name:vars],同時支持嵌套組[game:children]

1.指定主機組相關(guān)配置

#主機組
[root@m01 ~]# cat /etc/ansible/hosts
[webserver]
172.16.1.31 
172.16.1.41
#主機+端口+密碼
[webserver]
172.16.1.31 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
172.16.1.41 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='123456'
#對整個主機組都生效的變量
[webserver:vars]
ansible_ssh_pass='123456'

#針對所有webserver組都生效的變量
[webserver:vars]       
ansible_ssh_pass='123456'

第四章 Ansible常用模塊

0.如何學習模塊

ansible官方網(wǎng)站:

https://docs.ansible.com/

模塊的應(yīng)用語法格式:
ansible 主機名稱/主機組名稱/主機地址信息/all -m(指定應(yīng)用的模塊信息) 模塊名稱 -a(指定動作信息) "執(zhí)行什么動作"

1.ping

應(yīng)用場景:
測試主機和ansible之間的連通性
舉例:
對webserver主機組測試是否連通

ansible webserver -m ping

2.command 簡單模塊

應(yīng)用場景:
類似shell,但是只能執(zhí)行簡單的命令斑响,復雜的命令和有些符號并不能識別菱属,用的比較少
01.查看主機名,可以執(zhí)行成功

[root@m01 ~]# ansible webserver -m ping       
172.16.1.41 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
172.16.1.31 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

02.使用awk拼接查看主機IP執(zhí)行失敗

[root@m01 ~]# ansible webserver -m command -a "ifconfig eth0|grep 10"     
172.16.1.31 | FAILED | rc=255 >>
SIOCSIFADDR: 沒有那個設(shè)備
eth0|grep: ERROR while getting interface flags: 沒有那個設(shè)備non-zero return code

172.16.1.41 | FAILED | rc=255 >>
SIOCSIFADDR: 沒有那個設(shè)備
eth0|grep: ERROR while getting interface flags: 沒有那個設(shè)備non-zero return code

3.shell 萬能模塊

萬能模塊舰罚,所有命令都可以執(zhí)行纽门,和本地執(zhí)行效果一樣
01.使用管道查詢IP地址

[root@m01 ~]# ansible webserver -m shell -a "ifconfig eth0|grep 10.0.1"
172.16.1.41 | CHANGED | rc=0 >>
        inet 10.0.1.41  netmask 255.255.255.0  broadcast 10.0.1.255

172.16.1.31 | CHANGED | rc=0 >>
        inet 10.0.1.31  netmask 255.255.255.0  broadcast 10.0.1.255

02.批量執(zhí)行腳本
在其他主機上創(chuàng)建一個腳本,內(nèi)容為打印主機名

cat > echo.sh << EOF 
#!/bin/bash
echo "$(hostname)"
EOF

然后使用ansible的shell模塊批量執(zhí)行

[root@m01 ~]# ansible webserver -m shell -a "/bin/bash /root/echo.sh"
172.16.1.41 | CHANGED | rc=0 >>
backup

172.16.1.31 | CHANGED | rc=0 >>
nfs01

4.copy 拷貝文件

01.拷貝m01的hostsname文件到其他主機的/opt目錄下

[root@m01 ~]# ansible 172.16.1.31 -m copy -a "src=/etc/hostname dest=/opt"
172.16.1.31 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "checksum": "f434396716e2c9aed47cfde87c491cce5a2c08fa", 
    "dest": "/opt/hostname", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "318d7defb693a2eb0d4f1a7a96575a57", 
    "mode": "0644", 
    "owner": "root", 
    "size": 4, 
    "src": "/root/.ansible/tmp/ansible-tmp-1563780990.63-144254987732501/source", 
    "state": "file", 
    "uid": 0
}

02.在傳輸文件時修改文件屬主和屬組信息

ansible 172.16.1.31 -m copy -a "src=/root/rsync.password dest=/etc/ owner=oldboy group=oldboy"

03.在傳輸文件時修改文件的權(quán)限信息

ansible 172.16.1.31 -m copy -a "src=/root/rsync.password dest=/etc/ mode=0600"

04.創(chuàng)建文件并直接寫入內(nèi)容

ansible 172.16.1.31 -m copy -a "content='oldboy' dest=/etc/rsync.password mode=0600"

05.復制目錄
src后面目錄沒有/: 將目錄本身以及目錄下面的內(nèi)容都進行遠程傳輸復制

ansible 172.16.1.31 -m copy -a "src=/data dest=/data"

src后面目錄有/: 只將目錄下面的內(nèi)容都進行遠程傳輸復制

ansible 172.16.1.31 -m copy -a "src=/data/ dest=/data"

參數(shù)說明:

src #推送數(shù)據(jù)的源文件信息
dest #推送數(shù)據(jù)的目標路徑
backup #對推送傳輸過去的文件营罢,進行備份
content #直接批量在被管理端文件中添加內(nèi)容
group #將本地文件推送到遠端赏陵,指定文件屬組信息
owner #將本地文件推送到遠端,指定文件屬主信息
mode #將本地文件推送到遠端饲漾,指定文件權(quán)限信息

5.file 設(shè)置文件屬性

01.創(chuàng)建文件夾

ansible oldboy -m file -a "path=/root/oldboy state=directory"

02.創(chuàng)建文件并更改屬性

ansible oldboy -m file -a "path=/root/test.txt state=touch mode=777 owner=root group=root"

03.創(chuàng)建軟鏈接

ansible oldboy -m file -a "src=/root/abc path=/root/abc_link state=link"

參數(shù)說明:

path #指定遠程主機目錄或文件信息
recurse #遞歸授權(quán)
state
directory #在遠端創(chuàng)建目錄
touch #在遠端創(chuàng)建文件
link #link 或 hard 表示創(chuàng)建鏈接文件
absent #表示刪除文件或目錄
mode #設(shè)置文件或目錄權(quán)限
owner #設(shè)置文件或目錄屬主信息
group #設(shè)置文件或目錄屬組信息

6.script模塊

# 編寫腳本
[root@m01 ~]# mkdir -p /server/scripts
[root@m01 ~]# cat /server/scripts/yum.sh
#!/usr/bin/bash
yum install -y iftop
#在本地運行模塊蝙搔,等同于在遠程執(zhí)行,不需要將腳本文件進行推送目標主機執(zhí)行
[root@m01 ~]# ansible oldboy -m script -a "/server/scripts/yum.sh"

7.cron

01.創(chuàng)建一條定時任務(wù)

ansible oldboy -m cron -a "minute=* hour=* day=* month=* weekday=* job='/bin/sh
/server/scripts/test.sh'"

02.添加定時任務(wù)注釋信息考传,防止重復

ansible oldboy -m cron -a "name='cron01' job='/bin/sh /server/scripts/test.sh'"

03.刪除相應(yīng)定時任務(wù)

ansible oldboy -m cron -a "name='ansible cron02' minute=0 hour=0 job='/bin/sh
/server/scripts/test.sh' state=absent"

04.注釋相應(yīng)定時任務(wù)吃型,使定時任務(wù)失效

ansible oldboy -m cron -a "name='ansible cron01' minute=0 hour=0 job='/bin/sh
/server/scripts/test.sh' disabled=no"

8.user

01.創(chuàng)建用戶指定uid,gid,不創(chuàng)建家目錄也不允許登陸

ansible oldboy -m user -a "name=oldgirl uid=888 group=888 shell=/sbin/nologin
create_home=no"

參數(shù)說明:

uid #指定用戶的 uid
group #指定用戶組名稱
groups #指定附加組名稱
password #給用戶添加密碼
shell #指定用戶登錄 shell
create_home #是否創(chuàng)建家目錄

9.group

01.創(chuàng)建用戶組

ansible oldboy -m group -a "name=oldzhang gid=888 state=present"

參數(shù)說明:

name #指定創(chuàng)建的組名
gid #指定組的 gid
state
absent #移除遠端主機的組
present #創(chuàng)建遠端主機的組(默認)

10.yum

 ansible oldboy -m yum -a "name=httpd state=installed"

參數(shù)說明:

name       #指定要安裝的軟件包名稱
state      #指定使用 yum 的方法
installed僚楞, present #安裝軟件包
removed勤晚, absent #移除軟件包
latest     #安裝最新軟件包

11.service

ansible oldboy -m service -a "name=nfs state=stopped enabled=yes"

參數(shù)說明:

name # 定義要啟動服務(wù)的名稱
state # 指定服務(wù)狀態(tài)
started #啟動服務(wù)
stopped #停止服務(wù)
restarted #重啟服務(wù)
reloaded #重載服務(wù)
enabled #開機自啟

12.mount

ansible oldboy -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=present"
ansible web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=mounted"
 web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=unmounted"
web -m mount -a "src=172.16.1.31:/data path=/data fstype=nfs opts=defaults
state=absent"

狀態(tài)解釋

present # 開機掛載枉层,僅將掛載配置寫入/etc/fstab
mounted # 掛載設(shè)備,并將配置寫入/etc/fstab
unmounted # 卸載設(shè)備赐写,不會清除/etc/fstab 寫入的配置
absent # 卸載設(shè)備鸟蜡,會清理/etc/fstab 寫入的配置

13.unarchive

01.解壓遠程服務(wù)器的壓縮包到指定目錄
創(chuàng)建壓縮包:

cd /etc && tar zxvf /opt/sys.tar.gz etc/fstab etc/hosts  

執(zhí)行命令:

ansible 172.16.1.31 -m unarchive -a "src=/opt/sys.tar.gz dest=/opt/ remote_src=yes"

02.把本地文件解壓到目標機器指定目錄
創(chuàng)建命令

cd / && tar zcvf /opt/log.tar.gz var/log/messages
ansible 172.16.1.31 -m unarchive -a "src=/opt/log.tar.gz dest=/opt/" 

14.archive

01.壓縮單個文件

ansible 172.16.1.31 -m archive -a "path=/var/log/message dest=/tmp/log.tar.gz format=gz force_archive=true" 

15.setup 獲取主機信息

01.直接執(zhí)行獲取主機信息

ansible 172.16.1.31 -m setup

02.只將主機某個信息打印出來

[root@m01 /server/scripts/test]# ansible 172.16.1.41 -m setup -a "filter=ansible_all_ipv4_addresses"              
172.16.1.41 | SUCCESS => {
    "ansible_facts": {
        "ansible_all_ipv4_addresses": [
            "172.16.1.41", 
            "10.0.1.41"
        ], 
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false
}

16.查看幫助

ansible-doc -l
ansible-doc copy

第六章 Ansible輸出信息顏色解釋

01\. 綠色信息:  查看主機信息/對主機未做改動
02\. 黃色信息:  對主機數(shù)據(jù)信息做了修改
03\. 紅色信息:  命令執(zhí)行出錯了
04\. 粉色信息:  忠告信息
05\. 藍色信息:  顯示ansible命令執(zhí)行的過程
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挺邀,隨后出現(xiàn)的幾起案子揉忘,更是在濱河造成了極大的恐慌,老刑警劉巖悠夯,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件癌淮,死亡現(xiàn)場離奇詭異躺坟,居然都是意外死亡沦补,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門咪橙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夕膀,“玉大人,你說我怎么就攤上這事美侦〔瑁” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵菠剩,是天一觀的道長易猫。 經(jīng)常有香客問我,道長具壮,這世上最難降的妖魔是什么准颓? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮棺妓,結(jié)果婚禮上攘已,老公的妹妹穿的比我還像新娘。我一直安慰自己怜跑,他們只是感情好样勃,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著性芬,像睡著了一般峡眶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上植锉,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天辫樱,我揣著相機與錄音,去河邊找鬼汽煮。 笑死搏熄,一個胖子當著我的面吹牛棚唆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播心例,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼宵凌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了止后?” 一聲冷哼從身側(cè)響起瞎惫,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎译株,沒想到半個月后瓜喇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡歉糜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年乘寒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匪补。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡伞辛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出夯缺,到底是詐尸還是另有隱情蚤氏,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布踊兜,位于F島的核電站竿滨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捏境。R本人自食惡果不足惜于游,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望典蝌。 院中可真熱鬧曙砂,春花似錦、人聲如沸骏掀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽截驮。三九已至笑陈,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間葵袭,已是汗流浹背涵妥。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坡锡,地道東北人蓬网。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓窒所,卻偏偏與公主長得像,于是被迫代替她去往敵國和親帆锋。 傳聞我的和親對象是個殘疾皇子吵取,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

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