版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
從Github獲取Ansible
如果你有一種github賬戶,可以跟進(jìn)Ansible在Github項(xiàng)目:Githubproject咱們
在這里保持對(duì)bugs和featureideas跟蹤.
需要安裝些什么
Ansible默認(rèn)通過SSH合同管理機(jī)器.
安裝Ansible之后,不需要啟動(dòng)或運(yùn)營一種后臺(tái)進(jìn)程,或是添加一種數(shù)據(jù)庫.只要在
一臺(tái)電腦(可以是一臺(tái)筆記本)上安裝好,就可以通過這臺(tái)電腦管理一組遠(yuǎn)程機(jī)器.
在遠(yuǎn)程被管理機(jī)器上,不需耍安裝運(yùn)營任何軟件,因而升級(jí)Ansible版本不會(huì)有太
多問題.
選取哪一種版本?
由于Ansible可以很簡樸從源碼運(yùn)營,且不必在遠(yuǎn)程被管理機(jī)器上安裝任何軟件,
諸多Ansible顧客會(huì)跟進(jìn)使用開發(fā)版本.
Ansible普通每兩個(gè)月出一種發(fā)行版本.小bugs普通在下一種發(fā)行版本中修復(fù),
并在穩(wěn)定分支中做backports.大bugs會(huì)在必要時(shí)出一種維護(hù)版本,雖然這不是很
頻繁.
若你但愿使用Ansible最新版本,并且你使用操作系統(tǒng)是RedHatEnterprise
Linux(TM),CentOS,Fedora,Debian,Ubuntu,咱們建議使用系統(tǒng)軟件包管
理器.
另有一種選取是通過“pip”工具安裝,"pip”是一種安裝和管理Python包工具.
若你但愿跟進(jìn)開發(fā)版本,想使用和測試最新功能特性,咱們會(huì)分享如何從源碼運(yùn)營
Ansible辦法.從源碼運(yùn)營程序不需要進(jìn)行軟件安裝.
對(duì)管理主機(jī)規(guī)定
當(dāng)前,只要機(jī)器上安裝了Python2.6(windows系統(tǒng)不可以做控制主機(jī)),都可以
運(yùn)營Ansible.
主機(jī)系統(tǒng)可以是RedHat,Debian,CentOS,OSX,BSD各種版本,等等.
對(duì)托管節(jié)點(diǎn)規(guī)定
Onthemanagednodes,youonlyneedPython2.4orlater,butifyouare
runninglessthanPython2.5ontheremotes,youwillalsoneed:
托管節(jié)點(diǎn)上需要安裝Python2.4及以上版本.但如果版本低于Python2.5廁
需要額外安裝一種模塊:
python-simplejson
Note
沒安裝python?simplejson,也可以使用Ansible”raw”模塊和script模塊,因而從技
術(shù)卜.講,你可以通過Ansible"raw”模塊安裝python-simplejson,之后就可以使用
Ansible所有功能了.
Note
如果托管節(jié)點(diǎn)上啟動(dòng)了SEIinux,你需要安裝libselinux-python,這樣才可使用
Ansible中與copy/file/template有關(guān)函數(shù).你可以通過Ansibleyum模塊在需要托
管節(jié)點(diǎn)上安裝libselinLx-python.
Note
Python3與Python2是稍有不同語言,而大多數(shù)Python程序還不能在Python
3中對(duì)的運(yùn)營.而某些Linux發(fā)行版(Gentoo,Arch)沒有默認(rèn)安裝Python2.X解
釋器.在這些系統(tǒng)上,你需要安裝一種Python2.X解釋器,并在inventory(詳
見Inventory文獻(xiàn))中設(shè)立,ansible_python_interpreter,變量指向你2.X
Python.你可以使用‘raw'模塊在托管節(jié)點(diǎn)上遠(yuǎn)程安裝Python2.X.
RedHatEnterpriseLinux,CentOS,Fedora,andUbuntu等發(fā)行版都默認(rèn)安
裝了2.X解釋器,涉及幾乎所有Unix系統(tǒng)也是如此.
安裝管理主機(jī)
從源碼運(yùn)營
從項(xiàng)目checkout中可以很容易運(yùn)營Ansible,Ansible運(yùn)營不規(guī)定root權(quán)限,也不
依賴于其她軟件,不規(guī)定運(yùn)營后臺(tái)進(jìn)程,也不需要設(shè)立數(shù)據(jù)庫.因而咱們社區(qū)許多
顧客始終使用Ansible開發(fā)版本,這樣可以運(yùn)用最新功能特性,也以便對(duì)項(xiàng)目做貢
獻(xiàn).由于不需要安裝任何東西,跟進(jìn)Ansible開發(fā)版相對(duì)于其她開源項(xiàng)目要容易諸
多.
從源碼安裝環(huán)節(jié)
$gitclonegit:///ansible/ansible.git--recursive
$cd./ansible
$source./hacking/env-setup
如果沒有安裝pip,請(qǐng)先安裝相應(yīng)于你Python版本pip:
$sudoeasy_installpip
如下Python模塊也需要安裝:
isudopipinstallparaniikoPyYAML3inja2httplib2
注意,當(dāng)更新ansible版本時(shí),不只要更新git源碼樹,也要更新git中指向Ansible
自身模塊"submodules"(不是同一種模塊)
$gitpull--rebase
$gitsubmoduleupdate--init--recursive
一旦運(yùn)營env-setup腳本,就意味著Ansible從源碼中運(yùn)營起來了.默認(rèn)inventory
文獻(xiàn)是/etc/ansible/hosts.inventory文獻(xiàn)也可以另行指定(詳見/aueafory文應(yīng)0
..code-block::bash
$echo"">*/ansible_hosts$export
ANSIBLE_HOST8=-/ansible_hosts
你可以在手冊后續(xù)章節(jié)閱讀更多關(guān)于inventory文獻(xiàn)使用,當(dāng)前讓咱們測試一條
ping命令:
$ansibleall-mping--ask-pass
你也可以使用命令usudomakeinstall"
通過Yum安裝最新發(fā)布版本
通過Yum安裝RPMs合用于EREL6,7,以及仍在支持中Fedora發(fā)行版.
托管節(jié)點(diǎn)操作系統(tǒng)版本可以是更早版本(如EL5),但必要安裝Python2.4或更
高版本Python.
Fedora顧客可直接安裝Ansible,但RHEL或CentOS顧客,需要配備EPEL
#instaLLtheepeL-reLeaseRPMifneededonCentOS,RHEL,orScientificLinux
$sudoyuminstallansible
你也可以自己創(chuàng)立RPM軟件包.在Ansible項(xiàng)目checkout根目錄下,或是在一種
tarball中,使用makerprr命令創(chuàng)立RPM軟件包.然后可分發(fā)這個(gè)軟件包或是使用
它來安裝Ansible.在創(chuàng)立之前,先擬定你已安裝了rpm-build,make,
andpython2-devel.
$gitclonegit://github.com/ansible/ansible.git
$cd./ansible
$makerpm
$sudorpm-Uvh-/rpmbuild/ansible-?.noarch.rpm
通過Apt(Ubuntu)安裝最新發(fā)布版本
Ubuntu編譯版可在PPA中獲得:'v~ansible/+archive/ansible>'.
配備PPA及安裝ansib電執(zhí)行如下命令:
$sudoapt-getinstallsoftware-properties-common
$sudoapt-add-repositoryppa:ansible/ansible
$sudoapt-getupdate
$sudoapt-getinstallansible
Note
在初期Ubuntu發(fā)行版中,“software-properties-common”名為
Hpython-software-propertiesM.
也可從源碼checkout中創(chuàng)立Debian/Ubuntu軟件包,執(zhí)行:
$makedeb
你或許也想從源碼中運(yùn)營最新發(fā)行版本,可看前面闡明.
通過Portage(Gentoo)安裝最新發(fā)布版本
$emerge-avapp-admin/ansible
要安裝最新版本,你或許需要...
$echo'app-admin/ansible'>>/etc/portage/package.accept_keywords
Note
若在Gentoo托管節(jié)點(diǎn)中,Python3默認(rèn)作為Pythonslot(這也是默認(rèn)設(shè)立),則你
必要在你group或inventory變量中設(shè)
立ansible_python_interpreter=/usr/bin/python2
通過pkg(FreeBSD)安裝最新發(fā)布版本
$sudopkginstallansible
你或許想從ports中安裝:
$sudomake-C/usr/ports/sysutils/ansibleinstall
通過Homebrew(MacOSX)安裝最新發(fā)布」
在Mac中安裝,擬定你已安裝Homebrew:
$brewupdate
$brewinstallansible
通過Pip安裝最新發(fā)布版本
Ansible可通過“pip”安裝(安裝和管理Python包工具),若你還沒有安裝pip,可
執(zhí)行如下命令安裝:
$sudoeasy_installpip
然后安裝Ansible:
$sudopipinstallansible
如果你是在OSXMavericks上安裝,編譯器也許或告警或報(bào)錯(cuò),可通過如下設(shè)
立避免這種狀況:
$sudoCFLAGS="Qunused-argumentsCPPFLAGS=-Qunused-argumentspipinstallansible
使用virtualenv讀者可通過virtualenv安裝Ansible,然而咱們建議不用這樣
做,直接在全局安裝Ansible.不要使用easyjnstall直接安裝ansible.
發(fā)行版Tarball
不想通過gitcheckout創(chuàng)立Ansible軟件包?在這里可獲取TarballAnsible
downloads
各種版本Ansible在這里做了版本標(biāo)注gitrepository
前言
當(dāng)前你已經(jīng)閱讀了Installation安裝指南并安裝了Ansible.是時(shí)候通過某些命令
開始進(jìn)一步理解Ansible了.
咱們最先展示并非那強(qiáng)大集配備,布置,自動(dòng)化于一身playbook.Playbooks有關(guān)
內(nèi)容將在另一章節(jié)中講述.
本章節(jié)講述如何進(jìn)行初始化.一旦你有了這些概念,請(qǐng)去閱讀IntroductionTo
Ad-HocCommands以獲取更多細(xì)節(jié),然后你就能去進(jìn)一步playbook并摸索它最
有趣某些.
遠(yuǎn)程連接概述
在咱們開始前要先理解Ansible是如何通過SSH與遠(yuǎn)程服務(wù)器連接是很重要.
Ansible1.3及之后版本默認(rèn)會(huì)在本地OpenSSH可用時(shí)會(huì)嘗試用其進(jìn)行遠(yuǎn)程通
訊.這會(huì)啟用ControlPersist(——種性能特性),Kerberos,和在~/.ssh/corrfig中配備
選項(xiàng)如JumpHostsetup.然而,當(dāng)你使用Linux公司版6作為主控機(jī)(紅帽公司版
及其衍生版如CentOS),其OpenSSH版本也許過于老舊無法支持ControlPersist.
在這些操作系統(tǒng)中,Ansible將會(huì)退回并采用paramiko(由Python實(shí)現(xiàn)高質(zhì)量
OpenSSH庫).如果你但愿可以使用像是KerberizedSSH之類特性,煩請(qǐng)考慮使
用Fedora,OSX,或Ubuntu作為你主控機(jī)直到有關(guān)平臺(tái)上有更新版本
OpenSSH可供使用,或者啟用Ansible'acceleratedmode”.參見Accelerated
Mode.
在Ansible1.2及之前版本,默認(rèn)將會(huì)使用paramiko.本地OpenSSH必要通過
-cssh或者在配備文獻(xiàn)中設(shè)定.
你偶爾會(huì)遇到不支持SFTP設(shè)備.雖然這很少見,但你會(huì)有概率中獎(jiǎng).你可以通過
在配備文獻(xiàn)(47S沏e就各文朗中切換至SCP模式來與之鏈接.
說起遠(yuǎn)程設(shè)備,Ansible會(huì)默認(rèn)假定你使用SSHKey(咱們推薦這種)但是密碼也
同樣可以.通過在需要地方添加-ask-pass選項(xiàng)來啟用密碼驗(yàn)證.如果使用了
sudo特性,當(dāng)sudo需要密碼時(shí),也同樣恰當(dāng)提供了-ask-sudo-pass選項(xiàng).
也許這是常識(shí),但也值得分享:任何管理系統(tǒng)受益于被管理機(jī)器在主控機(jī)附近運(yùn)營.
如果在云中運(yùn)營,可以考慮在使用云中一臺(tái)機(jī)器來運(yùn)營Ansible.
作為一種進(jìn)階話題,Ansible不止支持SSH來遠(yuǎn)程連接.連接方式是插件化并且尚
有許多本地化管理選項(xiàng)諸如管理chroot,Ixc,和jailcontainers.一種叫做
'ansible-pull'模式可以反轉(zhuǎn)主控關(guān)系并使遠(yuǎn)程系統(tǒng)通過定期從中央git目錄檢出
并拉取配備指令來實(shí)現(xiàn)背景連接通信.
你第一條命令
當(dāng)前你已經(jīng)安裝了Ansib電是時(shí)候從某些基本知識(shí)開始了.編輯(或創(chuàng)
立)/etc/ansible/hosts并在其中加入一種或各種遠(yuǎn)程系統(tǒng).你publicSSHkey必
要在這些系統(tǒng)、、authorized_keys''中:
0
□
這里有個(gè)節(jié)點(diǎn)設(shè)立文獻(xiàn)(inventoryfile)將會(huì)在Inventory文濾f中得到進(jìn)一步闡明.
咱們假定你使用SSHKey來授權(quán).為了避免在建立SSH連接時(shí),重復(fù)輸入密碼你
可以這樣做:
$ssh-agentbash
$ssh-add-/.ssh/id_rsa
(依照你建立方式,你也許但愿使用Ansible--private-key選項(xiàng),通過指定pem文獻(xiàn)
來代替SSHKey來授權(quán))當(dāng)前ping你所有節(jié)點(diǎn):
$ansibleall-mping
Ansible會(huì)像SSH那樣試圖用你當(dāng)前顧客名來連接你遠(yuǎn)程機(jī)器.要覆寫遠(yuǎn)程顧客
名,只需使用參數(shù).如果你想訪問sudo模式,這里也有標(biāo)記(flags)來實(shí)現(xiàn):
#asbruce
$ansibleall-mping-ubruce
#asbruce,sudoingtoroot
$ansibleall-mping-ubruce--sudo
#asbruce,sudoingtobatman
$ansibleall-mping-ubruce--sudo--sudo-userbatman
(如果你碰巧想要使用其她sudo實(shí)現(xiàn)方式,你可以通過修改Ansible配備文獻(xiàn)來實(shí)
現(xiàn).也可以通過傳遞標(biāo)記給sud。(如-H)來設(shè)立.)當(dāng)前對(duì)你所有節(jié)點(diǎn)運(yùn)營一種命
令:
$ansibleall-a"/bin/echohello"
恭喜你!你剛剛通過Ansible連接了你所有節(jié)點(diǎn).不久你就會(huì)閱讀更多關(guān)于現(xiàn)實(shí)案
例IntroductionToAd-HocCommands并摸索可以通過不同模塊做什么以及研
究Ansibleplaybook語言
Playbooks.Ansible不只是能運(yùn)營命令,它同樣也擁有強(qiáng)大配備管理和布置特性.
雖然尚有更多內(nèi)容等待你摸索,但你基本設(shè)施已經(jīng)能完全工作了!
公鑰認(rèn)證
Ansible1.2.1及其之后版本都會(huì)默認(rèn)啟用公鑰認(rèn)證.
如果有個(gè)主機(jī)重新安裝并在“known_hosts”中有了不同key,這會(huì)提示一種錯(cuò)誤信
息直到被糾正為止.在使用Ansible時(shí),你也許不想遇到這樣狀況:如果有個(gè)主機(jī)沒
有在“known_hosts”中被初始化將會(huì)導(dǎo)致在交互使用Ansible或定期執(zhí)行Ansible
時(shí)對(duì)key信息確認(rèn)提示.
如果你想禁用此項(xiàng)行為并明白其含義,你可以通過編輯/etc/ansible/ansible.cfg
or-/.ansible.cfg來實(shí)現(xiàn):
[defaults]
host_key_checking=False
或者你也可以通過設(shè)立環(huán)境變量來實(shí)現(xiàn):
$exportANSIBLE_HOST_KEY_CHECKING=False
同樣注旨在paramiko模式中公鑰認(rèn)證相稱慢.因而,當(dāng)使用這項(xiàng)特性時(shí),切換
至'SSH'是推薦做法.
Ansible將會(huì)對(duì)遠(yuǎn)程系統(tǒng)模塊參數(shù)記錄在遠(yuǎn)程syslog中,除非一種任務(wù)或者play
被標(biāo)記了“no」og:True”屬性,稍后解釋.在主控機(jī)上啟用基本日記功能參
見Ansible配備文獻(xiàn)文培并在配備文獻(xiàn)中設(shè)立'log_path'.公司顧客也許也
對(duì)AnsibleTower感興趣.
Inventory文獻(xiàn)
Topics
Inventory文獻(xiàn)
O主機(jī)與組
O主機(jī)變量
O組變量
O把一種組作為另一種組子成員
o分文獻(xiàn)定義Host和Group變量
oInventory參數(shù)闡明
Ansible可同步操作屬于一種組多臺(tái)主機(jī),組和主機(jī)之間關(guān)系通過inventory文
獻(xiàn)配備.默認(rèn)文獻(xiàn)途徑為/etc/ansible/hosts
除默認(rèn)文獻(xiàn)外,你還可以同步使用各種inventory文獻(xiàn)(背面會(huì)講到),也可以從動(dòng)
態(tài)源,或云上拉取inventory配備信息.詳見動(dòng)態(tài)Inventory.
主機(jī)與組
/etc/ansible/hosts文獻(xiàn)格式與windowsini配備文獻(xiàn)類似:
[webservers]
[dbservers]
方括號(hào)口中是組名,用于對(duì)系統(tǒng)進(jìn)行分類,便于對(duì)不同系統(tǒng)進(jìn)行個(gè)別管理.
一種系統(tǒng)可以屬于不同組,例如一臺(tái)服務(wù)器可以同步屬于webserver組和
dbserver組.這時(shí)屬于兩個(gè)組變量都可覺得這臺(tái)主機(jī)所用,至于變量優(yōu)先級(jí)關(guān)系將
于后來章節(jié)中討論.
如果有主機(jī)SSH端口不是原則22端口,可在主機(jī)名之后加上端標(biāo)語,用冒號(hào)分
隔.SSH配備文獻(xiàn)中列出端標(biāo)語不會(huì)在paramiko連接中使用,會(huì)在openssh
連接中使用.
端標(biāo)語不是默認(rèn)設(shè)立時(shí),可明確表達(dá)為:
:5309
假設(shè)你有某些靜態(tài)IP地址,但愿設(shè)立某些別名,但不是在系統(tǒng)host文獻(xiàn)中設(shè)立,
又或者你是通過隧道在連接,那么可以設(shè)立如下:
jumperansible_ssh_port=5555ansible_ssh_host=192,168.1.50
在這個(gè)例子中,通過“jumped別名,會(huì)連接0:5555.記住,這是通過
inventory文獻(xiàn)特性功能設(shè)立變量.普通而言,這不是設(shè)立變量(描述你系統(tǒng)方略
變量)最佳方式.背面會(huì)說到這個(gè)問題.
一組相似hostname,可簡寫如下:
[webservers]
www[01:50].
數(shù)字簡寫模式中,01:50也可寫為1:50,意義相似.你還可以定義字母范疇簡寫模
式:
[databases]
db-[a:-F].example.com
對(duì)于每一種host,你還可以選取連接類型和連接顧客名:
localhostansible_connection=local
ansible_connection=sshansible_ssh_user=mpdehaan
ansible_connection=sshansible_ssh_user=mdehaan
所有以上討論對(duì)于inventory文獻(xiàn)設(shè)立是一種速記法,背面咱們會(huì)討論如何將這
些設(shè)立保存為‘host_vars'目錄中獨(dú)立文獻(xiàn).
主機(jī)變量
前面已經(jīng)提到過,分派變量給主機(jī)很容易做到,這些變量定義后可在playbooks
中使用:
[atlanta]
hostlhttp_port=80maxRequestsPerChild=808
host2http_port=303maxRequestsPerChild=909
組變量
也可以定義屬于整個(gè)組變量:
[atlAnta]
hostl
host2
[atlanta:vans]
ntp_server=
proxy=
把一種組作為另一種組子成員
可以把一種組作為另一種組子成員,以及分派變量給整個(gè)組使用.這些變量可以
給/usr/bin/ansible-playbook使用,但不能給/usr/bin/ansible使用:
[atlanta]
hostl
host2
[raleigh]
host2
host3
[southeast:children]
atlanta
ralpigh
[southeast:vars]
some_server=
halon_system_timeout=30
self_destruct_countdown=60
escape_pods=2
[usa:children]
southeast
northeast
southwest
northwest
如果你需要存儲(chǔ)一種列表或hash值,或者更喜歡把host和group變量分開配
備,請(qǐng)看下一節(jié)闡明.
分文獻(xiàn)定義Host和Group變量
在inventory主文獻(xiàn)中保存所有變量并不是最佳方式.還可以保存在獨(dú)立文獻(xiàn)中,
這些獨(dú)立文獻(xiàn)與inventory文獻(xiàn)保持關(guān)聯(lián).不同于inventory文獻(xiàn)(INI格式),
這些獨(dú)立文獻(xiàn)格式為YAML.詳見YAML語法.
假設(shè)inventory文獻(xiàn)途徑為:
/etc/ansible/hosts
假設(shè)有一種主機(jī)名為loosbair,主機(jī)同步屬于兩個(gè)組,一種是‘raleigh',另一種
是‘webservers'.那么如下配備文獻(xiàn)(YAML格式)中變量可覺得‘foosball'主
機(jī)所用.依次為,raleigh'組變量,'webservers'組變量,'foosball'主機(jī)變量:
/etc/ansible/group_vars/raleigh
/etc/ansible/group_vars/webservers
/etc/ansible/host_vars/-foosball
舉例來說,假設(shè)你有某些主機(jī),屬于不同數(shù)據(jù)中心,并依次進(jìn)行劃分.每一種數(shù)據(jù)中
心使用某些不同服務(wù)器.例如ntp服務(wù)器,database服務(wù)器等等.那么,raleigh,
這個(gè)組組變量定義在文獻(xiàn)’/etc/ansible/group_vars/raleigh'之中,也許類似這
樣:
ntp_server:acme.exam
database_server:
這些定義變量文獻(xiàn)不是一定要存在,由于這是可選特性.
尚有更進(jìn)一步運(yùn)用,你可覺得一種主機(jī),或一種組,創(chuàng)立一種目錄,目錄名就是主機(jī)
名或組名.目錄中可以創(chuàng)立各種文獻(xiàn),文獻(xiàn)中變量都會(huì)被讀取為主機(jī)或組變量.如
下Yaleigh1組相應(yīng)于/etc/ansible/group_vars/raleigh/目錄,其下有兩個(gè)文獻(xiàn)
db_settings和cluster_settings,其中分別設(shè)立不同變量:
/etc/ansible/group_vars/raleigh/db_settings
/etc/ansible/group_vars/raleigh/cluster_settings
'raleigh'組下所有主機(jī),都可以使用‘raleigh'組變量.當(dāng)變量變得太多時(shí),分文獻(xiàn)
定義變量更以便咱們進(jìn)行管理和組織.尚有一種方式也可參照,詳見Ansible
Wu〃關(guān)于組變量某些.注意,分文獻(xiàn)定義變量方式只合用于Ansible1.4及以上
版本.
Tip:Ansible1.2及以上版本中,group_vars/和host_vars/目錄可放在
inventory目錄下,或是playbook目錄下.如果兩個(gè)目錄下都存在,那么
playbook目錄下配備會(huì)覆蓋inventory目錄配備.
Tip:把你inventory文獻(xiàn)和變量放入gitrepo中,以便跟蹤她們更新,這是一
種非常推薦方式.
Inventory參數(shù)闡明
猶如前面提到,通過設(shè)立下面參數(shù),可以控制ansible與遠(yuǎn)程主機(jī)交互方式,其中
某些咱們己經(jīng)講到過:
ansiblesshhost
將要連接遠(yuǎn)程主機(jī)名.與你想要設(shè)定主機(jī)別名不同話,可通過此變量設(shè)立.
ansible_ssh_port
ssh端標(biāo)語.如果不是默認(rèn)端標(biāo)語,通過此變量設(shè)立.
ansible_ssh_user
默認(rèn)ssh顧客名
ansible_ssh_pass
ssh密碼(這種方式并不安全,咱們強(qiáng)烈建議使用--ask-pass或SSH密鑰)
ansible_sudo_pass
sudo密碼(這種方式并不安全,咱們強(qiáng)烈建議使用--ask-sudo-pass)
ansible_sudo_exe(newinversion1.8)
sudo命令途徑(合用于1.8及以上版本)
ansible_connection
。主機(jī)連接類型.例如:local,ssh或者paramiko.Ansible1.2此前默認(rèn)使用paramiko.1.2
后來默認(rèn)使用,smart','smart,方式會(huì)依照與否支持ControlPersist,來判斷,ssh'方式與否可行.
ansible_ssh_private_key_file
ssh使用私鑰文獻(xiàn).合用于有各種密鑰,而你不想使用SSH代理狀況.
ansible_shell_type
目的系統(tǒng)shell類型.默認(rèn)狀況下,命令執(zhí)行使用‘sh,語法,可設(shè)立為‘csh,或,fish'.
ansible_python_interpreter
目的主機(jī)python途徑.合用于狀況:系統(tǒng)中有各種Python,或者命令途徑不是
”/usr/bin/python",例如\*BSD,或者/usr/bin/python
不是2.X版本Python.咱們不使用“/usr/bin/env"機(jī)制,由于這規(guī)定遠(yuǎn)程顧客途徑設(shè)立對(duì)的,
且規(guī)定"python"可執(zhí)行程序名不可為python以外名字(實(shí)際可也許名為python26).
與ansible_python_interpreter工作方式,相似,可設(shè)定如ruby或perl途徑
一種主機(jī)文獻(xiàn)例子:
some_hostansible_ssh_port=2222ansible_ssh_user=manager
aws_hostansible_ssh_private_key_file=/home/example/.ssh/aws.pem
freebsd_hostansible_python_interpreter=/usr/local/bin/python
ruby_module_hostansible_ruby_interpreter=/usr/bin/ruby.1.9.3
動(dòng)態(tài)Inventory
Topics
?動(dòng)態(tài)Inventory
oCobbler外部Inventory腳本
oAWSEC2外部inventory腳本
o其他inventory腳本
o使用各種inventory源
o動(dòng)態(tài)組作為靜態(tài)組子組
使用配備管理系統(tǒng)經(jīng)常有一種需求,也許要在其她軟件系統(tǒng)中保存自己
inventory配備信息.
Ansible自身通過基于文本方式來記錄inventory配備信息,這在前面已簡介過
(詳見Inventory文獻(xiàn)).
除此之外,Ansible也支持用其她方式保存配備信息.
在其她軟件系統(tǒng)保存配備信息例子有:
1,從云端拉取inventory
2.LDAP(LightweightDirectoryAccessProtocol,輕景緲目錄訪問合同)
3,'Cobbler<>'_
4,或者走一份顯貴公司版CNDB(配備管理數(shù)據(jù)庫)軟件.
對(duì)于這些需求,Ansible可通過一種外部inventory系統(tǒng)來支持.在ansible
“/plugins”插件目錄下已經(jīng)具有某些選項(xiàng)一涉及EC2/Eucalyptus,Rackspace
Cloud,andOpenStack,咱們稍后會(huì)詳細(xì)簡介它們.
AnsibleTower提供了一種數(shù)據(jù)庫來存儲(chǔ)inventory配備信息,這個(gè)數(shù)
據(jù)庫可以通過web訪問,或通過REST訪問.Tower與所有你使用Ansible
動(dòng)態(tài)inventory源保持同步,并提供了一種圖形化inventory編輯器.有了這個(gè)
數(shù)據(jù)庫,便可以很容易關(guān)聯(lián)過去事件歷史,可以看到在上一次playbook運(yùn)營時(shí),
哪里浮現(xiàn)了運(yùn)營失敗狀況.
關(guān)于如何編寫你自己動(dòng)態(tài)inventory源、蒲參見開發(fā)動(dòng)態(tài)Inventory數(shù)據(jù)源.
Cobbler外部Inventory腳本
當(dāng)管理物理機(jī)器到達(dá)了一定數(shù)量時(shí),諸多使用Ansible顧客也許同步也會(huì)使用
到Cobbler.(注:Cobbler最初由MichaelDeHaan編寫,當(dāng)前項(xiàng)目主導(dǎo)人是
JamesCammarata,她當(dāng)前在Ansible公司工作).
Cobbler重要用于操作系統(tǒng)kickoff安裝,以及管理DHCP和DNS,除此之外,
它有一種通用層,可為各種配備管理系統(tǒng)(甚至是同步)提供數(shù)據(jù).因此Cobbler
也被某些管理員稱為是輕量級(jí)CMDB.
如何將Ansibleinventory與Cobbler聯(lián)系起來呢?辦法是:將腳本script拷
貝到/etc/ansible,通過chmod+x賦予可執(zhí)行權(quán)限.
在使用Ansible之前,先啟動(dòng)cobblerd進(jìn)程.
當(dāng)前使用Ansible要加上-i選項(xiàng)(例
如:-i/etc/ansibie/cobbier.py).cobbler.py這個(gè)腳本使用CobblerXMLRPC
API與Cobbler通信.
執(zhí)行腳本/etc/ansible/cobbler.py,應(yīng)當(dāng)能看到某些JSON格式數(shù)據(jù)輸出(也許
還沒有詳細(xì)內(nèi)容).
在cobbler中,假設(shè)有一種如下場景:
cobblerprofileadd--name=webserver--distro=CentOS6-x86_64
cobblerprofileedit--name=webserver--mgmt-classes="webserver"--ksmeta="a=2b=3"
cobblersystemedit--name=foo--dns-name=""--mgmt-classes="atlanta"
--ksmeta="c=4"
cobblersystemedit--name=bar--dns-name=""--mgmt-classes="atlanta',
--ksmeta="c=5"
''是一種域名,Ansible可以通過這個(gè)域名尋址找到相應(yīng)主機(jī)
foo,對(duì)其進(jìn)行操作.也可以通過組名‘webserver'或者'atlanta'尋址找到這個(gè)主
機(jī),只要這個(gè)主機(jī)是屬于這兩個(gè)組.直接使用too是不行.例如執(zhí)行命令"ansible
f。。”,無法找到該主機(jī),但使用"ansible(foo*,M卻可以,由于域名
700.1以too開頭.
這個(gè)腳本不但提供主機(jī)和組信息.如果運(yùn)營了‘setup'模塊(只要使用
playbooks,'setup,模塊會(huì)自動(dòng)運(yùn)營),變量a,b.c可按照如下模板自動(dòng)填充:
#file:/srv/motd.j2
Welcome.Iamtemplatedwithavalueofa={{a}},b={(b}},andc={{c}}
模板使用如下:
ansiblewebserver-msetup
ansiblewebserver-mteraplate-a"src=/tmp/motd.j2dest=/etc/motd"
Note
組名'webserver'是cobbler中定義.你依然可以在Ansible配備文獻(xiàn)中定義
變量.但要注意,變量名相似時(shí),外部inventory腳本中定義變量會(huì)覆蓋Ansible
中變量.
執(zhí)行上面命令后,主機(jī)foo/etc/motd文獻(xiàn)被寫入如下內(nèi)容:
Welcome.Iamtemplatedwithavalueofa=2,b=3.andc=4
主機(jī)'bar*()/etc/motd中寫入如下內(nèi)容:
Welcome,Iamtemplatedwithavalueofa=2,b=3,andc=5
你也可以通過下面這個(gè)命令測試變量替代:
ansiblewebserver-mshell-a"echo{{a}}“
也就是說,你可以在參數(shù)或命令操作中使用變量替代.
AWSEC2外部inventory腳本
使用AWCEC2時(shí)濰護(hù)一份inventory文獻(xiàn)有時(shí)不是最佳辦法.由于主機(jī)數(shù)量
有也許發(fā)生變動(dòng),或者主機(jī)是由外部應(yīng)用管理,或者使用了AWSautoscaling.這
時(shí),使用EC2externalinventory腳本是更好選取.
腳本使用方式有兩種,最簡樸是直接使用Ansible命令行選項(xiàng),指定腳本途徑
(腳本要有可執(zhí)行權(quán)限):
ansible-iec2.py-uubuntuus-east-ld-mping
第二種方式,把腳本拷貝為/efc/acs沏e//70sts,并賦予可執(zhí)行權(quán)限.還需
把ec2.ini文獻(xiàn)拷貝到/etc/ansib/e/ec2.ini,然后運(yùn)營ansible.
要成功調(diào)用API訪問AWS,需要配備Boto(Boto是AWSPython接口).
可用辦法有各種,請(qǐng)參見:methods.
最簡樸辦法是定義兩個(gè)環(huán)境變量:
exportAWS_ACCESS_KEY_ID='AK123'
exportAWS_SECRET_ACCESS_KEY='abcl23'
如何懂得配備與否對(duì)的,執(zhí)行腳本來測試:
cdplugins/inventory
./ec2.py--list
你可以看到以JSON格式表達(dá)覆蓋所有regionsinventory信息.
由于每一種region需要自己API調(diào)用,如果你僅使用了所有regions中一種
子集,可以編轉(zhuǎn)ec2.ini,使之僅顯示你所感興趣那些regions.在配備文
獻(xiàn)ec2.ini中,包括了其她配備選項(xiàng),涉及緩存控制和目地址變量.
inventory文獻(xiàn)核心某些,是某些名字到目地址映射.默認(rèn)ec2.ini設(shè)立合用于在
EC2之外運(yùn)營Ansible(例如一臺(tái)筆記本電腦),但這不是最有效方式.
在EC2內(nèi)部運(yùn)營Ansible時(shí),內(nèi)部DNS名和IP地址比公共DNS名更容
易理解.你可以在ec2.ini文獻(xiàn)中修改destination_variable變量,改為一1種實(shí)例私
有DNS名.對(duì)于在私有子網(wǎng)VPC上運(yùn)營Ansible,這種設(shè)立很重要,使得咱們
可以使用內(nèi)部IP地址之外方式訪問到一種VPC.在ec2.ini文獻(xiàn)
中,vpjdes力力可以命名為任意一種boto.ec2.instance變量.
EC2外部inventory提供了一種從各種組到實(shí)例映射:
全局實(shí)例都屬于ec2這個(gè)組.
實(shí)例ID
例如:i-00112233i-alblcldl
Region
屬于一種AWSregion所有實(shí)例構(gòu)成一種組.例如:us-east-1us-west-2
可用性區(qū)域
所有屬于availabilityzone實(shí)例構(gòu)成一種組.例如:us-east-iaus-east-ib
安全組
實(shí)例可屬于一種或各種安全組.每一種組前綴都是security_group_,符號(hào)(-)
已被轉(zhuǎn)換為(_).withallcharactersexceptalphanumerics(這句沒明A)
例
如:security_group_defaultsecurity_group_webserverssecurity_group_Pete_s_F
ancy_Group
標(biāo)簽
每一種實(shí)例可有各種不同key/value鍵值對(duì),這些鍵值對(duì)被稱為標(biāo)簽.標(biāo)簽名可以隨
意定義,最常用標(biāo)簽是‘Name'.每一種鍵值對(duì)是這個(gè)實(shí)例自己組.特殊字符已轉(zhuǎn)換為
下劃線,格式為tag_KEY_VALUE例
如:tag_Name_Webtag_Name_redis-master-001tag_aws_cloudformation_logical-id_W
ebServerGroup
使用Ansible與指定服務(wù)器進(jìn)行交互時(shí),EC2inventory腳本被再次調(diào)用(調(diào)用
時(shí)加上了命令行選項(xiàng)-hostHOST),這個(gè)調(diào)用會(huì)在索引緩存中進(jìn)行查找,獲取實(shí)例
ID,然后調(diào)用API訪問AWS,獲取指定實(shí)例所有信息.這些信息被轉(zhuǎn)換為
playbooks中變量,可以進(jìn)行訪問.每一種變量前綴為ec2_,下面是某些變量示例:
?ec2architecture
?ec2_description
?ec2dns_name
?ec2_id
?ec2jmagejd
?ec2_instance_typ?
?ec2Jp_address
?ec2_kernel
?ec2_key_name
?ec2Jaunch_time
?ec2_monitored
?ec2_ownerld
?ec2_placement
?ec2_platform
?ec2_previous_state
?ec2_private_dns_name
?ec2_private_ip_address
?ec2_public_dns_name
?ec2_ramdisk
?ec2_region
?ec2_rooLdevice_name
?ec2_root_device_type
?ec2_security_grojp_ids
?ec2_security_grojp_names
?ec2_spot_instance_request_id
?ec2_state
?ec2_state_code
?ec2_state_reason
?ec2_status
?ec2_subnet_id
?ec2_tag_Name
?ec2_tenancy
?ec2_virtualization_type
?ec2_vpc_id
其中ec2_security_group_ids和ec2securitygroupnames變量值為所有安全組列表,
使用逗號(hào)分隔.每一種EC2標(biāo)簽是一種格式為eC2_tag_KEY變量.
要查看一種實(shí)例完整可用變量列表,執(zhí)行腳本:
cdplugins/inventory
./ec2.py--host
注意,AWSinventory腳本會(huì)將成果進(jìn)行緩存,以避免重復(fù)API調(diào)用,這個(gè)緩存設(shè)
立可在ec2.ini文獻(xiàn)中配備.要顯式地清空緩存,你可以加上--refresh-cache選項(xiàng),
執(zhí)行腳本如下:
#./ec2.py--refresh-cache
其他inventory腳本
除「Cobbler和EC2之外,尚有如下系統(tǒng)可以使用inventory腳本:
BSDJails
DigitalOcean
GoogleComputeEngine
Linode
OpenShift
OpenStackNova
RedHat'sSpaceWalk
Vagrant(nottobeconfusedwiththeprovisionerinvagrant,whichispreferred;
Zabbix
關(guān)于這些系統(tǒng)還沒有專門章節(jié)講述如何操作,但環(huán)節(jié)與上面所講述AWS同樣,
詳細(xì)可看看Ansiblecheckout“plugins/”目錄.
如果你開發(fā)了一種通用inventory腳本,請(qǐng)?zhí)峤灰环Npullrequest,咱們也許會(huì)把
它放入項(xiàng)目中.
使用各種inventory源
如果-i選項(xiàng)后給出地址是一種目錄(orassoconfiguredin
ansible.cfg),Ansible可以同一時(shí)間使用各種inventory源.這樣在同一種
ansible運(yùn)營操作中,可混合使用動(dòng)態(tài)和靜態(tài)inventory源.
動(dòng)態(tài)組作為靜態(tài)組子組
在靜態(tài)inventory文獻(xiàn)中,如果定義一種由某些組作為子成員組,這些子組也需
要定義(譯者注:即包括詳細(xì)host),否則執(zhí)行時(shí)ansible會(huì)返回一種錯(cuò)誤.如果
定義某些動(dòng)態(tài)組作為一種靜態(tài)組子組,也需在靜態(tài)inventory文獻(xiàn)中定義動(dòng)態(tài)組,
但是動(dòng)態(tài)組定義為一種空組即可:
[tag_Name_staging_foo]
[tag_Name_staging_bar]
[staging:children]
tag_Name_staging_foo
tag_Name_staging_bar
Patterns
Topics
?Patterns
在Ansible中,Patterns是指咱們?nèi)绾螖M定由哪一臺(tái)主機(jī)來管理.意思就是與哪
臺(tái)主機(jī)進(jìn)行交互.但是在:doc:p/aybooks中它指是相應(yīng)主機(jī)應(yīng)用特定配備或執(zhí)
行特定進(jìn)程.
咱們再來復(fù)習(xí)下:doc:/加ro_ad/7oc章節(jié)中簡介命令用法,命令格式如下:
ansible<pattern_goes_here>-m<module_name>-a<arguments>
示例如下:
ansiblewebservers-mservice-a"name=httpdstate=restarted"
一種pattern普通關(guān)聯(lián)到一系列組(主機(jī)集合)-如上示例中,所有主機(jī)均在
"webservers"組中.
不論怎么樣,在使用Ansible前,咱們需事先告訴Ansible哪臺(tái)機(jī)器將被執(zhí)行.能這
樣做前提是需要預(yù)先定義唯一hostnames或者主機(jī)組.
如下patterns等同于目的為倉庫(inventory)中所有機(jī)器:
all
*
也可以寫IP地址或系列主機(jī)名:
:
0
192.168.1.*
如下patterns分別表達(dá)一種或各種groups.多組之間以冒號(hào)分隔表達(dá)或關(guān)系.這意
味著一種主機(jī)可以同步存在各種組:
webservers
webservers:dbservers
你也可以排隊(duì)一種特定組,如下實(shí)例中,所有執(zhí)行命令機(jī)器必要從屬webservers
組但同步不在phoenix組:
webservers:!phoenix
你也可以指定兩個(gè)組交集,如下實(shí)例表達(dá),執(zhí)行命令有機(jī)器需要同步從屬于
webservers和staging組.
webservers:&staging
你也可以組合更復(fù)雜條件:
webservers:dbservers:&staging:!phoenix
上面這個(gè)例子表達(dá)“'webservers'和'dbservers'兩個(gè)組中從屬于‘staging'組
并且不屬于‘phoenix,組機(jī)器才執(zhí)行命令”…喲!嗜!好燒腦說!
你也可以使用變量如果你但愿通過傳參指定group,ansible-playbook通過“-e”
參數(shù)可以實(shí)現(xiàn),但這種用法不慣用:
webservers:!{{excluded}}:&{{required)}
你也可以不必嚴(yán)格定義groups,單個(gè)hostnames,IPs,groups都支持通配符:
*.
?.com
Ansible同步也支持通配和groups混合使用:
one*.com:dbservers
在高檔語法中,你也可以在group中選取相應(yīng)編號(hào)server:
webservers[0]
或者一種group中一某些servers:
webservers[0-25]
大某些人都在patterns應(yīng)用正則表達(dá)式,但你可以.只需要以開頭即可:
^(webldb).*\.example\.com
同步讓咱們提前理解某些技能,除了如上,你也可以通過--limit標(biāo)記來添加排除
條件,/usr/bin/ansiblecr/usr/bin/ansible-playbook都支持:
ansible-playbooksite.yiil--limitdatacenter2
如果你想從文獻(xiàn)讀取hosts,文獻(xiàn)名以@為前綴即可.從Ansible1.2開始支持該功
能:
ansible-playbooksite.yiil--limit@retry_hosts.txt
Playbooks簡介
Playbooks簡介
Playbooks與adhoc相比,是一種完全不同運(yùn)用ansible方式,是非常之強(qiáng)大.
簡樸來說,playbooks是一種簡樸配備管理系統(tǒng)與多機(jī)器布置系統(tǒng)基本.與既有其
她系統(tǒng)有不同之處,且非常適合于復(fù)雜應(yīng)用布置.
Playbooks可用于聲明配備,更強(qiáng)大地方在于,在playbooks中可以編排有序執(zhí)
行過程,甚至于做到在多組機(jī)器間,來回有序執(zhí)行特別指定環(huán)節(jié).并且可以同步或
異步發(fā)起任務(wù).
咱們使用adhoc時(shí),重要是使用/usr/bin/ansible程序執(zhí)行任務(wù).而使用
playbooks時(shí),更多是將之放入源碼控制之中,用之推送你配備或是用于確認(rèn)你遠(yuǎn)
程系統(tǒng)配備與否符合配備規(guī)范.
在如右連接中:ansible-examplesrepository,有某些整套playbooks,它們闡明了
上述這些技巧.咱們建議你在另一種標(biāo)簽頁中打開它看看,配合本章節(jié)一起看.
即便學(xué)完playbooks這個(gè)章節(jié),仍有許多知識(shí)點(diǎn)只是入門級(jí)別,完畢本章學(xué)習(xí)后,
可回到文檔索引繼續(xù)學(xué)習(xí).
Playbook語言示例
Playbooks格式是YAML(詳見:摩根語法),語法做到最小化,旨在避免
playbooks成為一種編程語言或是腳本,但它也并不是一種配備模型或過程模型.
playbook由一種或各種'plays'構(gòu)成.它內(nèi)容是一種以'plays'為元素列表.
在play之中,一組機(jī)器被映射為定義好角色.在ansible中,play內(nèi)容,被稱為
tasks,即任務(wù).在基本層次應(yīng)用中,一種任務(wù)是一種對(duì)ansible模塊調(diào)用,這在前
面章節(jié)學(xué)習(xí)過.
'plays'好似音符,playbook好似由‘plays'構(gòu)成曲譜,通過playbook,可以編排
環(huán)節(jié)進(jìn)行多機(jī)器布置,例如在webservers組所有機(jī)器上運(yùn)營一定環(huán)節(jié),然后在
databaseserver組運(yùn)營某些環(huán)節(jié),最后回到webservers組,再運(yùn)營某些環(huán)節(jié),諸
如此類.
“plays”算是一種體育方面類比,你可以通過各種plays告訴你系統(tǒng)做不同事情,
不但是定義一種特定狀態(tài)或模型.你可以在不同步間運(yùn)營不同plays.
對(duì)初學(xué)者,這里有一種playbook,其中僅包括一種play:
-hosts:webservers
vans:
http_port:80
max_clients:200
remote_user:root
tasks:
-name:ensureapacheisatthelatestversion
yum:pkg=httpdstate=latest
-name:writetheapacheconfigfile
template:src=/srv/httpd.j2dest=/etc/httpd.conf
notify:
-restartapache
-name:ensureapacheisrunning
service:name=httpdstate=started
handlers:
-name:restartapacne
service:name=httpdstate=restarted
在下面,咱們將分別解說playbook語言各種特性.
playbook基本
主機(jī)與顧客
你可覺得playbook中每一種play,個(gè)別地選取操作目的機(jī)器是哪些,以哪個(gè)顧
客身份去完畢要執(zhí)行環(huán)節(jié)(calledtasks).
hosts行內(nèi)容是一種或各種組或主機(jī)patterns,以逗號(hào)為分隔符,詳見Paffems章節(jié).
remote_user就是賬戶名:
-hosts:webservers
remoteuser:root
Note
參數(shù)remotjuser此前寫做user^A.Ansible1.4后來才改為remote_user.重
要為了不跟user模塊混淆(user模塊用于在遠(yuǎn)程系統(tǒng)上創(chuàng)立顧客).
再者,在每一種task中,可以定義自己遠(yuǎn)程顧客:
-hosts:webservers
remote_user:root
tasks:
-name:testconnection
remote_user:yourname
Note
task中?nofe_user參數(shù)在1.4版本后來添加.
也支持從sudo執(zhí)行命令:
hosts:webservers
remote_user:yourname
sudo:yes
同樣,你可以僅在一種task中,使用sudo執(zhí)行命令,而不是在整個(gè)play中使
用sudo:
hosts:webservers
remote_user:yourname
tasks:
-service:name=nginxstate=started
sudo:yes
你也可以登陸后,sud。到不同顧客身份,而不是使用root:
hosts:webservers
remote_user:yourname
sudo:yes
sudo_user:postgres
如果你需要在使用sudo時(shí)指定密碼用在運(yùn)營acs/b/e-p/aybook命令時(shí)加上選
項(xiàng)--ask-sudo-pass(-K).如果使用sudo時(shí),playbook疑似被掛起,也許是在
sudoprompt處被卡住,這時(shí)可執(zhí)行Coc"o/-C殺死卡住任務(wù),再重新運(yùn)營一次.
Important
當(dāng)使用sudjuser切換到非root顧客時(shí),模塊參數(shù)會(huì)暫時(shí)寫入/tmp目錄下一
種隨機(jī)暫時(shí)文獻(xiàn).當(dāng)命令執(zhí)行結(jié)束后,暫時(shí)文獻(xiàn)及時(shí)刪除.這種狀況發(fā)生在普通顧
客切換時(shí),例如從‘bob'切換到‘timmy',切換到root賬戶時(shí),不會(huì)發(fā)生,如從
'bob'切換到Toot',直接以普通顧客或root身份登錄也不會(huì)發(fā)生.如果你不但愿
這些數(shù)據(jù)在短暫時(shí)間內(nèi)可以被讀取(不可寫),請(qǐng)避免在sudjuser中傳遞未加
密密碼.其她狀況下,7tmp'目錄不被使用,這種狀況不會(huì)發(fā)生.Ansible也故意識(shí)
在日記中不記錄密碼參數(shù).
Tasks列表
每一種play包括了一種task列表(任務(wù)列表).一種task在其所相應(yīng)所有主
機(jī)上(通過hostpattern匹配所有主機(jī))執(zhí)行完畢之后,下一種task才會(huì)執(zhí)行.
有一點(diǎn)需要明白是(很重要),在一種play之中,所有hosts會(huì)獲取相似任務(wù)指
令,這是play一種目所在,也就是將一組選出hosts映射到task.(注:此處翻譯
未必精確,暫時(shí)保存原文)
在運(yùn)營playbook時(shí)(從上到下執(zhí)行),如果一種host執(zhí)行task失敗,這個(gè)
host將會(huì)從整個(gè)playbookrotation中移除.如果發(fā)生執(zhí)行失敗狀況,請(qǐng)修正
playbook中錯(cuò)誤,然后重新執(zhí)行即可.
每個(gè)task目的在于執(zhí)行一種moudle,普通是帶有特定參數(shù)來執(zhí)行.在參數(shù)中可
以使用變量(variables).
modules具備"轅等”性,意思是如果你再一次地執(zhí)行moudle(譯者注:例如遇到
遠(yuǎn)端系統(tǒng)被意外改動(dòng),需要恢復(fù)原狀),moudle只會(huì)執(zhí)行必要改動(dòng),只會(huì)變化需要
變化地方.因此重復(fù)多次執(zhí)行playbook也很安全.
對(duì)于commandmodule和she//module,重復(fù)執(zhí)行playbook,事實(shí)上是重復(fù)運(yùn)
營同樣命令.如果執(zhí)行命令類似于‘chmod'或者'setsebool'這種命令,這沒有
任何問題.也可以使用一種叫做‘creates'flag使得這兩個(gè)module變得具備”
暴等”特性(不是必要).
每一種task必要有一種名稱came,這樣在運(yùn)營playbook時(shí),從其輸出任務(wù)執(zhí)
行信息中可以較好辨別出是屬于哪一種task.如果沒有定義came,'action'值
將會(huì)用作輸出信息中標(biāo)記特定task.
如果要聲明一種task,此前有一種格式:“action:moduleoptions"(也許在某
些老playbooks中還能見到).當(dāng)前推薦使用更常用格式:"module:options",
本文檔使用就是這種格式.
下面是一種基本task定義,servic
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)健康培訓(xùn)管理制度
- 2026年度酒店員工培訓(xùn)計(jì)劃方案
- 2026年現(xiàn)代心理學(xué)理論與應(yīng)用研究題庫
- 新版煤礦安全規(guī)程考試試題及答案
- 教練式輔導(dǎo)的八步流程試題及答案解析試題
- 國際租賃面試題庫及答案
- ddi領(lǐng)導(dǎo)力授權(quán)測試題及答案
- 民航知識(shí)考試試題及答案
- 教師遴選考試試題及答案
- 鉗工裝配考試試題及答案
- 2025年山東省濟(jì)南市中考英語真題卷含答案解析
- 侍酒師崗前實(shí)操操作考核試卷含答案
- 2025-2026學(xué)年六年級(jí)英語上冊期末試題卷(含聽力音頻)
- 【一年級(jí)】【數(shù)學(xué)】【秋季上】期末家長會(huì):花開有“數(shù)”一年級(jí)路【課件】
- 2025四川成都高新區(qū)婦女兒童醫(yī)院招聘技師、醫(yī)生助理招聘5人參考題庫附答案解析
- 2026年高考語文復(fù)習(xí)散文閱讀(四)
- 眼部艾灸課件
- 學(xué)堂在線 雨課堂 學(xué)堂云 實(shí)繩結(jié)技術(shù) 期末考試答案
- 低空經(jīng)濟(jì)應(yīng)用場景:創(chuàng)新與挑戰(zhàn)
- 乘務(wù)長崗位面試技巧與實(shí)戰(zhàn)經(jīng)驗(yàn)分享
- 氣道濕化方法與指南
評(píng)論
0/150
提交評(píng)論