linux運(yùn)維學(xué)習(xí)筆記:python系列之02:Ansible安裝配置與應(yīng)用

linux運(yùn)維學(xué)習(xí)筆記:python系列之02:Ansible安裝配置與應(yīng)用

作者:周少言
201年 月 日 星期 ,于北京

本文與其他文章有所不同盏浙,本人覺得此篇教案寫的很好荔茬,不想做出任何刪改。同時(shí)也為尊重陳龍老師那份認(rèn)真的治學(xué)態(tài)度慕蔚。

Ansible安裝配置與應(yīng)用

一.Ansible安裝

安裝方式:1)pip 自動(dòng)安裝 2)yum 自動(dòng)安裝

1. pip 方式 (參考)

(1)安裝python-pip 和 python-devel 程序包
yum -y install python-pip python-devel

(2)安裝Ansible服務(wù)
yum -y install gcc glibc-devel zlib-devel rpm-build openssl-devel

pip install --upgrade pip

pip install ansible --upgrade

測(cè)試 ansible --version

2.yum 方式(網(wǎng)絡(luò))(重點(diǎn))

先安裝EPEL源后可找到并安裝Ansible
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
yum -y install ansible

安裝:
ansible.noarch 0:2.3.2.0-1.el6

作為依賴被安裝:
PyYAML.i686 0:3.10-3.1.el6 libyaml.i686 0:0.1.3-4.el6_6 python-babel.noarch 0:0.9.4-5.1.el6
python-crypto2.6.i686 0:2.6.1-2.el6 python-httplib2.noarch 0:0.7.7-1.el6 python-jinja2-26.noarch 0:2.6-3.el6
python-keyczar.noarch 0:0.71c-1.el6 python-markupsafe.i686 0:0.9.2-4.el6 python-pyasn1.noarch 0:0.0.12a-1.el6
python-simplejson.i686 0:2.0.9-3.1.el6 python-six.noarch 0:1.9.0-2.el6 python2-jmespath.noarch 0:0.9.0-2.el6
sshpass.i686 0:1.06-1.el6

測(cè)試 ansible --version

二孔飒、Ansible配置

1.配置文件目錄

/etc/ansible/

兩個(gè)核心文件:ansible.cfg和hosts文件,默認(rèn)都存放在/etc/ansible目錄下艰争。

ansible.cfg:主要設(shè)置ansible初始化信息甩卓,比如:日志存放路徑、模塊逾柿、插件等配置信息。
hosts:機(jī)器清單(被控主機(jī)文件)机错,進(jìn)行分組管理

2.命令文件

/usr/bin/ansiable*

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

[defaults] 通用默認(rèn)配置

inventory = /etc/ansible/hosts 這個(gè)是默認(rèn)庫文件位置,腳本,或者存放可通信主機(jī)的目錄

library = /usr/share/my_modules/ Ansible默認(rèn)搜尋模塊的位置

remote_tmp = $HOME/.ansible/tmp Ansible 通過遠(yuǎn)程傳輸模塊到遠(yuǎn)程主機(jī),然后遠(yuǎn)程執(zhí)行,執(zhí)行后在清理現(xiàn)場(chǎng).在有些場(chǎng)景下,你也許想使用默認(rèn)路徑希望像更換補(bǔ)丁一樣使用
pattern = * 如果沒有提供“hosts”節(jié)點(diǎn),這是playbook要通信的默認(rèn)主機(jī)組.默認(rèn)值是對(duì)所有主機(jī)通信
forks = 5 在與主機(jī)通信時(shí)的默認(rèn)并行進(jìn)程數(shù) 父腕,默認(rèn)是5
poll_interval = 15 當(dāng)具體的poll interval 沒有定義時(shí),多少時(shí)間回查一下這些任務(wù)的狀態(tài), 默認(rèn)值是5秒
sudo_user = root sudo使用的默認(rèn)用戶 ,默認(rèn)是root
ask_sudo_pass = True 用來控制Ansible playbook 在執(zhí)行sudo之前是否詢問sudo密碼.默認(rèn)為no
ask_pass = True 控制Ansible playbook 是否會(huì)自動(dòng)默認(rèn)彈出密碼
transport = smart 通信機(jī)制.默認(rèn) 值為’smart’萧诫。如果本地系統(tǒng)支持 ControlPersist技術(shù)的話,將會(huì)使用(基于OpenSSH)‘ssh’,如果不支持講使用‘paramiko’.其他傳輸選項(xiàng)包括‘local’, ‘chroot’,’jail’等等
remote_port = 22 遠(yuǎn)程SSH端口枝嘶。 默認(rèn)是22
module_lang = C 模塊和系統(tǒng)之間通信的計(jì)算機(jī)語言,默認(rèn)是C語言

3.被控主機(jī)信息配置文件躬络,進(jìn)行分組管理

hosts

實(shí)驗(yàn):安裝Ansible 并且配置應(yīng)用

恢復(fù)快照

1)準(zhǔn)備工作
一臺(tái)控制主機(jī):192.168.22.251
一臺(tái)管理主機(jī):192.168.22.252 192.168.22.116

安裝要求:
控制主機(jī):需要安裝 Python2.6/2.7
管理主機(jī):需要安裝 Python2.4 以上版本穷当,關(guān)閉selinux

2)配置主機(jī)清單
vim /etc/ansible/hosts
192.168.22.116
192.168.22.252

3)配置控制主機(jī)SSH密鑰
在控制主機(jī)中生成ssh密鑰對(duì)

ssh-keygen -t rsa

4)將公鑰拷貝到管理主機(jī)中.ssh/authorized_keys文件中淹禾,實(shí)現(xiàn)免密碼登錄遠(yuǎn)程管理主機(jī)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.22.252
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.22.116

(ssh-copy-id命令會(huì)自動(dòng)將id_rsa.pub文件的內(nèi)容追加到遠(yuǎn)程主機(jī)root用戶下.ssh/authorized_keys文件中)

5)ansible配置

vim /etc/ansible/ansible.cfg
1 禁用每次執(zhí)行ansbile命令檢查ssh key host
host_key_checking = False

2開啟日志記錄
log_path = /var/log/ansible.log

測(cè)試:

ansible all -m ping

三、Ansible應(yīng)用

1.常用模塊使用

1)setup
查看遠(yuǎn)程主機(jī)基本信息

ansible [HostGroup or IP] -m setup

2)ping
測(cè)試遠(yuǎn)程主機(jī)運(yùn)行狀態(tài)

ansible [HostGroup or IP] -m ping

3)file
設(shè)置文件屬性
相關(guān)選項(xiàng):
group:定義文件/目錄的屬組
mode:定義文件/目錄的權(quán)限
owner:定義文件/目錄的屬主
path:必選項(xiàng)汪疮,定義文件/目錄的路徑
recurse:遞歸設(shè)置文件的屬性毁习,只對(duì)目錄有效
src:被鏈接的源文件路徑,只應(yīng)用于state=link的情況
dest:被鏈接到的路徑纺且,只應(yīng)用于state=link的情況
force:需要在兩種情況下強(qiáng)制創(chuàng)建軟鏈接,一種是源文件不存在猜嘱,但之后會(huì)建立的情況下衅枫;另一種是目標(biāo)軟鏈接已存在朗伶,需要先取消之前的軟鏈,然后創(chuàng)建新的軟鏈益楼,有兩個(gè)選項(xiàng):yes|no
state:
directory:如果目錄不存在,就創(chuàng)建目錄
file:即使文件不存在偏形,也不會(huì)被創(chuàng)建
link:創(chuàng)建軟鏈接
hard:創(chuàng)建硬鏈接
touch:如果文件不存在觉鼻,則會(huì)創(chuàng)建一個(gè)新文件,如果文件或目錄已存在坠陈,則更新其最后修改時(shí)間
absent:刪除目錄、文件或者取消鏈接文件

實(shí)例:
遠(yuǎn)程文件鏈接創(chuàng)建

ansible [HostGroup or IP] -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"

遠(yuǎn)程文件鏈接刪除

ansible [HostGroup or IP] -m file -a "path=/tmp/resolv.conf state=absent"

4)copy
復(fù)制文件到遠(yuǎn)程主機(jī)
相關(guān)選項(xiàng):
backup:在覆蓋之前仇矾,將源文件備份,備份文件包含時(shí)間信息姐仅。有兩個(gè)選項(xiàng):yes|no
content:用于替代“src”,可以直接設(shè)定指定文件的值
dest:必選項(xiàng)掏膏。要將源文件復(fù)制到的遠(yuǎn)程主機(jī)的絕對(duì)路徑敦锌,如果源文件是一個(gè)目錄,那么該路徑也必須是個(gè)目錄
directory_mode:遞歸設(shè)定目錄的權(quán)限乙墙,默認(rèn)為系統(tǒng)默認(rèn)權(quán)限
force:如果目標(biāo)主機(jī)包含該文件,但內(nèi)容不同腥刹,如果設(shè)置為yes,則強(qiáng)制覆蓋肛走,如果為no,則只有當(dāng)目標(biāo)主機(jī)的目標(biāo)位置不存在該文件時(shí)邻吞,才復(fù)制。默認(rèn)為yes
others:所有的file模塊里的選項(xiàng)都可以在這里使用
src:被復(fù)制到遠(yuǎn)程主機(jī)的本地文件抱冷,可以是絕對(duì)路徑梢褐,也可以是相對(duì)路徑。如果路徑是一個(gè)目錄盈咳,它將遞歸復(fù)制。在這種情況下鸣剪,如果路徑使用“/”來結(jié)尾,則只復(fù)制目錄里的內(nèi)容筐骇,如果沒有使用“/”來結(jié)尾江滨,則包含目錄在內(nèi)的整個(gè)內(nèi)容全部復(fù)制,類似于rsync唬滑。

實(shí)例:
將本地文件“/etc/ansible/ansible.cfg”復(fù)制到遠(yuǎn)程服務(wù)器

ansible [HostGroup or IP] -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=root group=root mode=0644"

5)command
在遠(yuǎn)程主機(jī)上執(zhí)行命令
相關(guān)選項(xiàng)如下:
creates:一個(gè)文件名,當(dāng)該文件存在悔详,則該命令不執(zhí)行
free_form:要執(zhí)行的linux指令
chdir:在執(zhí)行指令之前惹挟,先切換到該目錄
removes:一個(gè)文件名连锯,當(dāng)該文件不存在,則該選項(xiàng)不執(zhí)行
executable:切換shell來執(zhí)行指令运怖,該執(zhí)行路徑必須是一個(gè)絕對(duì)路徑

實(shí)例:

ansible [HostGroup or IP] -m command -a "uptime"

遠(yuǎn)程文件信息查看

ansible [HostGroup or IP] -m command -a "ls –al /tmp/resolv.conf"

6)shell
切換到shell執(zhí)行指定的指令夏伊,參數(shù)與command相同。
與command不同的是溺忧,此模塊可以支持命令管道盯孙,同時(shí)還有另一個(gè)模塊也具備此功能:raw

實(shí)例:
先在本地創(chuàng)建一個(gè)SHELL腳本

vim /tmp/test.sh

!/bin/sh

date +%F_%H:%M:%S

chmod +x /tmp/test.sh

將創(chuàng)建的腳本文件分發(fā)到遠(yuǎn)程

ansible [HostGroup or IP] -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh owner=root group=root mode=0755"

遠(yuǎn)程執(zhí)行

ansible [HostGroup or IP] -m shell -a "/tmp/test.sh"

?7)cron
創(chuàng)建和刪除計(jì)劃任務(wù)

ansible [HostGroup or IP] -m cron -a "name='....' job='.....' $time"

-m 跟模塊祟滴,使用的是 cron 模塊
name= 指定計(jì)劃任務(wù)的名字,方便日后管理
job= 指定具體的任務(wù)
$time 指定具體的執(zhí)行時(shí)間骑晶,minute分鐘草慧,hour小時(shí)桶蛔,day 天仔雷,month 月份抖剿。weekday 0 或者 7 代表周末。
state= 選項(xiàng)用來指定 name 并刪除

增加計(jì)劃任務(wù)

ansible [HostGroup or IP] -m cron -a "name='test cron' job='/bin/bash /tmp/test.sh' weekday=6"

ansible [HostGroup or IP] -m cron -a "name='test n' job='/bin/bash /tmp/test.sh' weekday=6 minute=30 hour='*/8'"

ansible [HostGroup or IP] -m cron -a "name='test cron' job='/bin/bash /tmp/test.sh' minute=30 hour='*/8' day='1,10,20' weekday=6"

刪除計(jì)劃任務(wù)

ansible [HostGroup or IP] -m cron -a "name='test n' state=absent"

ansible [HostGroup or IP] -m cron -a "name='test cron' state=absent"

8)安裝 rpm 包
-m 使用 yum 模塊
state= installed removed 脑融,不加state選項(xiàng)默認(rèn)是 installed

ansible [HostGroup or IP] -m yum -a "name=tree"

ansible [HostGroup or IP] -m yum -a "name=wget"

ansible [HostGroup or IP] -m yum -a "name=wget state=removed"

9)管理服務(wù)
-m service 模塊
name= 系統(tǒng)服務(wù),可以用 chkconfig --list 查看
enabled= 是否開機(jī)啟動(dòng)肘迎,yes| no锻煌。

ansible [HostGroup or IP] -m service -a "name=httpd state=started enabled=no"

ansible [HostGroup or IP] -m service -a "name=httpd state=stopped enabled=yes"

10)Ansible 文檔使用
列出所有模塊

ansible-doc -l

查看具體的模塊使用方法

ansible-doc service

ansible-doc cron

ansible-doc shell

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宋梧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捂龄,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唇撬,死亡現(xiàn)場(chǎng)離奇詭異展融,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)扑浸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來创夜,“玉大人仙逻,你說我怎么就攤上這事驰吓。” “怎么了系奉?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵檬贰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我缺亮,道長(zhǎng)翁涤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任萌踱,我火速辦了婚禮葵礼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘并鸵。我一直安慰自己鸳粉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布届谈。 她就那樣靜靜地躺著艰山,像睡著了一般咏闪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纵装,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音哗脖,去河邊找鬼。 笑死橱夭,一個(gè)胖子當(dāng)著我的面吹牛桑逝,可吹牛的內(nèi)容都是我干的楞遏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼糙俗,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼巧骚!你這毒婦竟也來了劈彪?” 一聲冷哼從身側(cè)響起顶猜,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤驶兜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后屠凶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肆资,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唉韭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年属愤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酸役。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丧诺,死狀恐怖奄薇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情呵晚,我是刑警寧澤远搪,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布癞季,位于F島的核電站,受9級(jí)特大地震影響绷柒,放射性物質(zhì)發(fā)生泄漏废睦。R本人自食惡果不足惜养泡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一澜掩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧刚陡,春花似錦株汉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春揣非,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忌傻。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工水孩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俘种,地道東北人绝淡。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓牢酵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親布近。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撑瞧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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