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)場.在有些場景下,你也許想使用默認(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)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評(píng)論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,860評(píng)論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評(píng)論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評(píng)論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,025評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,421評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,642評(píng)論 0 289
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,177評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,970評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,157評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,410評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評(píng)論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,896評(píng)論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,157評(píng)論 2 375

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