西安網(wǎng)站建設(shè)有那些公司好建立網(wǎng)站的基本流程
一、ansible是基于python開發(fā)的配置管理和應(yīng)用部署工具;也是自動化運維的重要工具;可以批量配置、部署、管理上千臺主機;只需要在一臺主機配置ansible就可以完成其它主機的操作。
1.操作模式:
模塊化操作,命令行執(zhí)行
playbook、劇本、也是把命令行腳本化,腳本的模式就是yaml格式
2.ansible的特性:冪等性(指的是多次操作或者是多次執(zhí)行,對系統(tǒng)的影響不會發(fā)生變化,無論執(zhí)行多少次結(jié)果都是一樣的,但restart不同,因為是重啟,每一次都要關(guān)閉和開機);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?不可以進行遠(yuǎn)程主機的動態(tài)操作
3.ansible的四大組件:
1>inventory:主機清單(管理機器必須要聲明管理主機的地址和其它配置,不聲明的話就無法操作目標(biāo)主機)
2>modules:模塊,ansible的功能都是由模塊來實現(xiàn)的
3>插件
4>playbooks:劇本----腳本,作用就是復(fù)用
二、模塊和語法的學(xué)習(xí):
1.安裝ansible
關(guān)閉防火墻及安全機制
安裝epel源
安裝ansible
進入ansible目錄內(nèi)
?聲明管理主機的IP
設(shè)置密鑰對
密鑰免密登錄?
ansible-doc -l :列出ansible已安裝的模塊?
2.command #基礎(chǔ)模塊,也是ansible默認(rèn)模塊,不支持管道符和重定向操作 執(zhí)行一般的linux命令
? ?ansible <組名或者ip地址> -m指定模塊,不加-m默認(rèn)使用command? ?-a 《 參數(shù)或者命令》
? ?ansible 192.168.127.22 -m command -a "date"
ansible? all?
不加-m默認(rèn)就是command模塊?
出錯處理方式:重新進行遠(yuǎn)程主機密鑰免密登錄
解壓:一定要指定路徑
command常用的三個參數(shù)
chdir 在目標(biāo)主機提前進入目錄然后執(zhí)行指令
creates #判斷文件是否存在,如果存在就不執(zhí)行后面的命令,不存在則執(zhí)行后面的命令
removes 判斷文件是否存在,如果存在則執(zhí)行指令,不存在不執(zhí)行
3.# shell模塊 支持管道符和重定向,也可以用邏輯或表達(dá)式? &&表示且 ;表示或
管道符?
重定向?
邏輯且? &&
邏輯或? ?;
習(xí)題:?#目標(biāo)主機創(chuàng)建一個腳本,在腳本中寫/bin/bash ifconfig然后運行腳本,在一條命令執(zhí)行
? ? ? ? ? ? ##\n表示換行執(zhí)行
4.cron模塊:定時任務(wù)模塊 minute/hour/day/month/weekday 分/時/日/月/周
job:任務(wù)計劃需要執(zhí)行的命令或者腳本
name:任務(wù)計劃的名稱,可以不加
創(chuàng)建定時任務(wù):任務(wù)名為xy1? 每11月11號11點11分,執(zhí)行一次ls /opt 任務(wù)
創(chuàng)建定時任務(wù):每五分鐘執(zhí)行一次
查看定時任務(wù):
刪除定時任務(wù)
5.USER模塊:用戶管理模塊
常用的參數(shù):
home 指定家目錄
name 指定用戶名,必須要有
state present:創(chuàng)建用戶,可以不加,默認(rèn)
absent :刪除一定要加absent
system=yes|no。標(biāo)記用戶使用是一個程序用戶|普通用戶(yes為程序用戶、no為普通用戶)
uid:用戶的唯一標(biāo)識
group:指定用戶的所在組
create_home=yes|no:替換用戶的家目錄,不替換可以不寫,可省略
password:給用戶創(chuàng)建密碼
comment:添加用戶的注釋信息,可有可無
remove=yes|no,當(dāng)刪除用戶時,加上remove=yes,刪除用戶的家目錄,相當(dāng)于userdel -r。如果不需要刪除用戶家目錄,可省略這一項
如果創(chuàng)建程序用戶,一定要聲明system=yes,聲明shell的類型 shell=/sbin/nologin
創(chuàng)建一個程序用戶 名字為chendong? ?指定shell為sbin/nologin
創(chuàng)建用戶liudong,選擇uid800(uid800為普通用戶),創(chuàng)建密碼123456,指定家目錄 /opt/test1:
遠(yuǎn)程主機cat /etc/passwd查看
更改用戶家目錄:
刪除用戶及其家目錄
6.ping模塊:
ping所有遠(yuǎn)程主機
7.hostname模塊:更改遠(yuǎn)程的主機名
8.copy模塊:用于復(fù)制指定的主機文件到遠(yuǎn)程主機的模塊
常用的參數(shù):
dest:指出要復(fù)制的文件在哪,必須使用絕對路徑。如果源目標(biāo)是目錄,指目標(biāo)也得是目錄。如果目標(biāo)的文件存在,會覆蓋原有的內(nèi)容
src:復(fù)制遠(yuǎn)程主機的源文件,最好使用絕對路徑,源目標(biāo)是目錄,指目標(biāo)也得是目錄
owner:指定文件的所有者
group:指定文件的所在組
content:從主機復(fù)制指定的內(nèi)容到目標(biāo)主機,用content就不能使用src
mode:指定復(fù)制之后的文件的權(quán)限
將本機的opt目錄下123文件復(fù)制到遠(yuǎn)程主機的opt目錄下的123.txt里,并把所有者及所在者指定為test? 權(quán)限777
iptables模塊?
filewalld模塊:指定端口和服務(wù)類型是一樣的
刪除
配置網(wǎng)卡
修改IP
?
script模塊:運行本地腳本,把腳本運行的結(jié)果輸出到遠(yuǎn)程主機
?
setup模塊:查看遠(yuǎn)程主機的信息IP、cpu、內(nèi)核、系統(tǒng)信息
查看cpu
查看內(nèi)核版本一定要會看
查看內(nèi)存
查看系統(tǒng)信息
三、主機清單? vim /etc/ansible/hosts
寫在后面只對指定40遠(yuǎn)程主機有效?
?寫在下面對整個組都有效
定義多個主機[1:9][0:9]:批量匹配IP地址
以組進行嵌套訪問
Ansible
Ansible是一個基于Python開發(fā)的配置管理和應(yīng)用部署工具,現(xiàn)在也在自動化管理領(lǐng)域大放異彩。 它融合了眾多老牌運維工具的優(yōu)點,Pubbet和Saltstack能實現(xiàn)的功能,Ansible基本上都可以實現(xiàn)。
Ansible能批量配置、部署、管理上千臺主機。比如以前需要切換到每個主機上執(zhí)行的一或多個操作, 使用Ansible只需在固定的一臺Ansible控制節(jié)點上去完成所有主機的操作。
Ansible是基于模塊工作的,它只是提供了一種運行框架,它本身沒有完成任務(wù)的能力, 真正執(zhí)行操作的是Ansible的模塊, 比如copy模塊用于拷貝文件到遠(yuǎn)程主機上, service模塊用于管理服務(wù)的啟動、停止、重啟等。
Ansible其中一個比較鮮明的特性是Agentless,即無Agent的存在,它就像普通命令一樣,并非C/S軟件, 也只需在某個作為控制節(jié)點的主機上安裝一次Ansible即可,通常它基于ssh連接來控制遠(yuǎn)程主機, 遠(yuǎn)程主機上不需要安裝Ansible或其它額外的服務(wù)。
使用者在使用時,在服務(wù)器終端輸入命令或者playbooks,會通過預(yù)定好的規(guī)則將playbook拆解為play, 再組織成ansible可以識別的任務(wù),調(diào)用模塊和插件, 根據(jù)主機清單通過SSH將臨時文件發(fā)給遠(yuǎn)程的客戶端執(zhí)行并返回結(jié)果, 執(zhí)行結(jié)束后自動刪除
Ansible的另一個比較鮮明的特性是它的絕大多數(shù)模塊都具備冪等性(idempotence)。 所謂冪等性,指的是多次操作或多次執(zhí)行對系統(tǒng)資源的影響是一致的。 比如執(zhí)行 systemctl stop xxx 命令來停止服務(wù),當(dāng)發(fā)現(xiàn)要停止的目標(biāo)服務(wù)已經(jīng)處于停止?fàn)顟B(tài), 它什么也不會做,所以多次停止的結(jié)果仍然是停止,不會改變結(jié)果, 它是冪等的,而 systemctl restart xxx 是非冪等的。
冪等性是計算機科學(xué)中的一個概念,用于描述一個操作或請求的性質(zhì)。 在冪等操作中,無論執(zhí)行多少次,結(jié)果都是一樣的。 簡而言之,多次執(zhí)行相同的操作,不會產(chǎn)生不同的效果。
對于 HTTP 請求來說,冪等性通常用于描述對同一資源的多次請求是否會導(dǎo)致狀態(tài)的變化。 一個冪等的 HTTP 方法是指,如果你對同一資源進行多次相同的請求, 產(chǎn)生的結(jié)果與執(zhí)行一次請求的效果是相同的。
例如,HTTP 的 GET 方法就是冪等的,因為多次請求同一資源的 GET 操作不會改變資源的狀態(tài)。 而 POST 方法通常不是冪等的,因為多次執(zhí)行相同的 POST 請求可能會創(chuàng)建多個相同的資源,導(dǎo)致狀態(tài)的變化。
Ansible的很多模塊在執(zhí)行時都會先判斷目標(biāo)節(jié)點是否要執(zhí)行任務(wù),所以, 可以放心大膽地讓Ansible去執(zhí)行任務(wù),重復(fù)執(zhí)行某個任務(wù)絕大多數(shù)時候不會產(chǎn)生任何副作用。
Ansible的四大組件: Inventory 主機清單(主機組) Modules 模塊 Plugins 插件 Playbooks 劇本(相當(dāng)于腳本)
Ansible的優(yōu)缺點
優(yōu)點 部署較為簡單, 只需要在控制主機上部署ansible環(huán)境,被控制端上只要求安裝ssh和python 2.5以上版本, 對于運維人員使用門檻低。
被管控節(jié)點無需安裝Agent。 無服務(wù)端,使用是直接調(diào)用控制端命令或者腳本。
基于模塊工作, 可以使用任意語言開發(fā)模塊。
基于yaml語法編寫playbook。
定義的任務(wù)已存在則不會做任何事情,意味著在同一臺服務(wù)器上多次執(zhí)行同一個playbook是安全的。
缺點 學(xué)習(xí)成本:需要學(xué)習(xí)Ansible自定義的腳本語法規(guī)則。
安裝成本:控制主機需是一臺非Windows遠(yuǎn)程主機,也就是說至少要有1臺遠(yuǎn)程Server。
易用性:因為必須有遠(yuǎn)程主控機,若本地有文件需同步,則需先將文件傳輸?shù)綄?yīng)的主控機, 才能夠做分發(fā)同步。
---------- ansible 環(huán)境安裝部署 ---------- 管理端:192.168.233.10 ansible 被管理端:192.168.233.20 被管理端:192.168.233.30
//管理端安裝 ansible yum install -y epel-release //先安裝 epel 源 yum install -y ansible
//ansible 目錄結(jié)構(gòu) /etc/ansible/ ├── ansible.cfg #ansible的配置文件,一般無需修改 ├── hosts #ansible的主機清單,用于存儲需要管理的遠(yuǎn)程主機的相關(guān)信息 └── roles/ #公共角色目錄
//配置主機清單 cd /etc/ansible vim hosts [webservers] #配置組名 192.168.233.20 #組里包含的被管理的主機IP地址或主機名(主機名需要先修改/etc/hosts文件)
[dbservers] 192.168.233.30
#這里的配置組,只是分組,在實際使用中,你可以根據(jù)你的環(huán)境、應(yīng)用程序組件的角色等來創(chuàng)建不同的組。 例如,webservers 可能包含所有 web 服務(wù)器,而 dbservers 可能包含所有數(shù)據(jù)庫服務(wù)器。
//配置密鑰對驗證 ssh-keygen -t rsa #一路回車,使用免密登錄 sshpass -p '123' ssh-copy-id root@192.168.233.20 sshpass -p '123' ssh-copy-id root@192.168.233.30
--------- ansible 命令行模塊 --------- 命令格式:ansible <組名/ip> -m <模塊> -a <參數(shù)列表>
ansible-doc -l #列出所有已安裝的模塊,按q退出
1.command 模塊 //在遠(yuǎn)程主機執(zhí)行命令,不支持管道,重定向等shell的特性。 ansible-doc -s command #-s 列出指定模塊的描述信息和操作動作
ansible 192.168.233.30 -m command -a 'date' #指定 ip 執(zhí)行 date ansible webservers -m command -a 'date' #指定組執(zhí)行 date ansible dbservers -m command -a 'date' ansible all -m command -a 'date' #all 代表所有 hosts 主機 ansible all -a 'ls /' #如省略 -m 模塊,則默認(rèn)運行 command 模塊
ansible 192.168.233.20 -a 'chdir=/opt tar -xf nginx-1.22.0.tar.gz'
ansible 192.168.233.20 -a 'tar -xf /opt/nginx-1.22.0.tar.gz -C /opt'
//常用的參數(shù): chdir:在遠(yuǎn)程主機上運行命令前提前進入目錄 creates:判斷指定文件是否存在,如果存在,不執(zhí)行后面的操作 removes:判斷指定文件是否存在,如果存在,執(zhí)行后面的操作
ansible all -m command -a "chdir=/home ls ./"
ansible all -m command -a "creates=/opt/123 ls /opt"
ansible all -m command -a "removes=/opt/test.txt ls /opt"
2.shell 模塊 //在遠(yuǎn)程主機執(zhí)行命令,相當(dāng)于調(diào)用遠(yuǎn)程主機的shell進程, 然后在該shell下打開一個子shell運行命令(支持管道符號等功能) ansible-doc -s shell ansible webservers -m shell -a 'useradd test' ansible webservers -m shell -a 'echo 123456 | passwd --stdin test' ansible webservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print $2}") | cut -d " " -f2' ansible webservers -m shell -a 'echo $(ifconfig ens33 | awk "NR==2 {print $2}")'
ansible 192.168.233.20 -m shell -a 'touch /opt/123 && echo 123 > /opt/123 && cat /opt/123' #多個shell命令可以用&&聯(lián)合在一塊,表示邏輯且
ansible 192.168.233.30 -m shell -a 'touch /opt/123 ; echo 123 > /opt/123 ; cat /opt/123' #也可以用;號聯(lián)合,表示邏輯或
#遠(yuǎn)程創(chuàng)建一個腳本 [root@test1 opt]# ansible 192.168.233.30 -m shell -a 'echo -e "#!/bin/bash\nifconfig" > /opt/test1.sh' 192.168.233.30 | CHANGED | rc=0 >>
#遠(yuǎn)程運行腳本 [root@test1 opt]# ansible 192.168.233.30 -m shell -a 'echo -e "#!/bin/bash\nifconfig" > /opt/test1.sh && sh /opt/test1.sh'
3.cron 模塊 //在遠(yuǎn)程主機定義任務(wù)計劃。其中有兩種狀態(tài)(state):present表示添加(可以省略),absent表示移除。 ansible-doc -s cron #按 q 退出
//常用的參數(shù): minute/hour/day/month/weekday:分/時/日/月/周 job:任務(wù)計劃要執(zhí)行的命令 name:任務(wù)計劃的名稱
ansible webservers -m cron -a 'minute="*/1" job="/bin/echo helloworld" name="test1"'
ansible webservers -m cron -a 'minute=30 hour=8 day=1 month=9 job="ls /opt" name="test2"'
ansible webservers -m cron -a 'minute=30 hour=8 weekday=3 job="ls /etc"'
ansible webservers -a 'crontab -l'
ansible webservers -m cron -a 'minute=30 hour=8 weekday=3 job="ls /etc"' #創(chuàng)建計劃任務(wù)時可以不起名字
ansible webservers -m cron -a 'name="test1" state=absent' #移除計劃任務(wù),假如該計劃任務(wù)沒有取名字,name=None即可
4.user 模塊 //用戶管理的模塊 ansible-doc -s user
//常用的參數(shù): name:用戶名,必選參數(shù) state=present|absent:創(chuàng)建賬號或者刪除賬號,present表示創(chuàng)建,absent表示刪除 system=yes|no:是否為系統(tǒng)賬號 uid:用戶uid group:用戶基本組 shell:默認(rèn)使用的shell create_home=yes|no:替換用戶的家目錄 password:用戶的密碼,建議使用加密后的字符串 comment:用戶的注釋信息 remove=yes|no:當(dāng)state=absent時,是否刪除用戶的家目錄
ansible dbservers -m user -a 'name=test system=no' #創(chuàng)建用戶test01 #將test01用戶添加到mysql組中,system=yes表示這是一個系統(tǒng)用戶, system=yes 僅僅標(biāo)志這是一個系統(tǒng)用戶, 但沒有明確指定 shell 的情況下,會使用系統(tǒng)默認(rèn)的 shell
ansible 192.168.233.30 -m user -a 'name=test1 uid=1001 shell=/sbin/nologin password=123456'
ansible 192.168.233.30 -m user -a 'name=test1 home=/opt/test1 create_home=yes' #更改用戶的家目錄
ansible dbservers -m command -a 'tail /etc/passwd'
ansible 192.168.233.30 -m user -a 'name=test1 remove=yes state=absent' #刪除用戶和用戶的家目錄
ansible dbservers -m user -a 'name="test01" state=absent' #刪除用戶test01
5.group 模塊 //用戶組管理的模塊 ansible-doc -s group
ansible dbservers -m group -a 'name=mysql gid=306 system=yes' #創(chuàng)建mysql組
ansible dbservers -a 'tail /etc/group' #注意一點,Ansible 會連接到遠(yuǎn)程主機、執(zhí)行該命令,然后立即退出。 因此,對于 tail -f 這樣的交互式命令不會有任何結(jié)果
ansible dbservers -m user -a 'name=test01 uid=306 system=yes group=mysql'
ansible dbservers -m user -a 'name=test02 uid=306 system=yes group=mysql shell=/sbin/nologin'
ansible dbservers -a 'tail /etc/passwd'
ansible dbservers -a 'id test01'
6.copy 模塊 //用于復(fù)制指定主機文件到遠(yuǎn)程主機的 ansible-doc -s copy
//常用的參數(shù): dest:指出復(fù)制文件的目標(biāo)及位置,使用絕對路徑,如果源是目錄,指目標(biāo)也要是目錄, 如果目標(biāo)文件已經(jīng)存在會覆蓋原有的內(nèi)容
src:指出源文件的路徑,可以使用相對路徑或絕對路徑, 支持直接指定目錄,如果源是目錄則目標(biāo)也要是目錄
mode:指出復(fù)制時,目標(biāo)文件的權(quán)限
owner:指出復(fù)制時,目標(biāo)文件的屬主
group:指出復(fù)制時,目標(biāo)文件的屬組
content:指出復(fù)制到目標(biāo)主機上的內(nèi)容,不能與src一起使用
ansible dbservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=root mode=640' ansible dbservers -a 'ls -l /opt' ansible dbservers -a 'cat /opt/fstab.bak'
ansible dbservers -m copy -a 'content="helloworld" dest=/opt/hello.txt' #將helloworld寫入/opt/hello.txt文件中 ansible dbservers -a 'cat /opt/hello.txt'
#沒有專門的mv模塊 ansible dbservers -a 'mv /opt/123 /opt/123.txt'
7.file 模塊 //設(shè)置文件屬性 ansible-doc -s file
ansible dbservers -m file -a 'owner=test01 group=mysql mode=644 path=/opt/fstab.bak' #修改文件的屬主屬組權(quán)限等 ansible dbservers -m file -a 'path=/opt/fstab.link src=/opt/fstab.bak state=link' #設(shè)置/opt/fstab.link為/opt/fstab.bak的鏈接文件 ansible dbservers -m file -a "path=/opt/abc.txt state=touch" #創(chuàng)建一個文件 ansible dbservers -m file -a "path=/opt/abc.txt state=absent" #刪除一個文件
8.hostname 模塊 //用于管理遠(yuǎn)程主機上的主機名 ansible dbservers -m hostname -a "name=mysql01"
9.ping 模塊 //檢測遠(yuǎn)程主機的連通性 ansible all -m ping
10.yum 模塊 //在遠(yuǎn)程主機上安裝與卸載軟件包 ansible-doc -s yum
ansible webservers -m yum -a 'name=httpd' #安裝服務(wù) ansible webservers -m yum -a 'name=httpd state=absent' #卸載服務(wù)
11.service/systemd 模塊 //用于管理遠(yuǎn)程主機上的管理服務(wù)的運行狀態(tài) ansible-doc -s service
//常用的參數(shù): name:被管理的服務(wù)名稱 state=started|stopped|restarted:動作包含啟動關(guān)閉或者重啟 enabled=true:表示是否設(shè)置該服務(wù)開機自啟 runlevel:如果設(shè)定了enabled開機自啟去,則要定義在哪些運行目標(biāo)下自啟動
ansible webservers -a 'systemctl status httpd' #查看web服務(wù)器httpd運行狀態(tài)
ansible 192.168.233.20 -m shell -a 'echo "this is test" > /var/www/html/index.html' #改變頁面內(nèi)容 ansible webservers -m service -a 'enabled=true name=httpd state=started'
ansible webservers -m service -a 'enabled=true name=httpd state=started runlevel=40' #啟動httpd服務(wù)
ansible webservers -m yum -a 'name=nginx'
ansible webservers -a 'systemctl status nginx'
ansible webservers -m service -a 'enabled=true name=nginx state=started'
ansible 192.168.233.20 -m shell -a 'curl 192.168.233.20'
12、防火墻和網(wǎng)絡(luò)模塊: 1、ipatbles 禁止ping ansible 192.168.233.10 -m iptables -a "chain=INPUT protocol=ICMP source=192.168.233.20 jump=REJECT" -b
#禁用80端口 ansible 192.168.233.13 -m iptables -a "chain=INPUT protocol=tcp destination_port=80 jump=REJECT" -b
#刪除策略 ansible 192.168.233.13 -m iptables -a "chain=INPUT protocol=tcp destination_port=80 jump=REJECT state=absent" -b
2、firewalld ansible 192.168.233.13 -m firewalld -a "service=nginx zone=public permanent=true state=enabled immediate=true" -b #報錯,因為firewalld支持的服務(wù)當(dāng)中沒有nginx firewall-cmd --get-services | grep nginx #沒有支持nginx的類型
ansible 192.168.233.13 -m firewalld -a "port=80/tcp zone=public permanent=true state=enabled immediate=true" -b #換成端口
#刪除策略 ansible 192.168.233.13 -m firewalld -a "port=80/tcp zone=public permanent=true state=disabled immediate=true" -b
3、配置網(wǎng)卡: ansible 192.168.233.13 -m ansible.builtin.lineinfile -a "path=/etc/sysconfig/network-scripts/ifcfg-ens33 regexp='^IPADDR=' line='IPADDR=192.168.233.19'" -b ansible 192.168.233.19 -m ansible.builtin.systemd -a "name=network state=restarted" -b
13.script 模塊 //運行本地腳本,執(zhí)行的是目標(biāo)主機的命令 然后把結(jié)果輸出到目標(biāo)主機 ansible-doc -s script
vim test.sh #!/bin/bash echo "hello ansible from script" > /opt/script.txt
chmod +x test.sh ansible webservers -m script -a 'test.sh' ansible webservers -a 'cat /opt/script.txt'
14.setup 模塊 //facts 組件是用來收集被管理節(jié)點信息的,使用 setup 模塊可以獲取這些信息 ansible-doc -s setup
ansible webservers -m setup #獲取mysql組主機的facts信息
ansible dbservers -m setup -a 'filter=*ipv4' #使用filter可以篩選指定的facts信息
ansible webservers -m setup -a 'filter=ansible_processor' #查看cpu
ansible webservers -m setup -a 'filter=ansible_mem*' #查看內(nèi)存
ansible webservers -m setup -a 'filter=ansible_os_family' #查看系統(tǒng)
ansible webservers -m setup -a 'filter=ansible_proc_cmdline' #查看內(nèi)核
ansible webservers -m setup -a 'filter=ansible_system' #查看系統(tǒng)信息
--------- inventory 主機清單 --------- //Inventory支持對主機進行分組,每個組內(nèi)可以定義多個主機, 每個主機都可以定義在任何一個或多個主機組內(nèi)。
71 host_key_checking = False #取消注釋,取消密鑰隊驗證
//如果是名稱類似的主機,可以使用列表的方式標(biāo)識各個主機。 vim /etc/ansible/hosts [webservers] 192.168.80.11:2222 #冒號后定義遠(yuǎn)程連接端口,默認(rèn)是 ssh 的 22 端口 192.168.233.6[1:3] #表示ip地址范圍,1-3
[dbservers] db-[a:f].example.org #支持匹配 a~f
//inventory 中的變量 Inventory變量名 含義 ansible_host ansible連接節(jié)點時的IP地址
ansible_port 連接對方的端口號,ssh連接時默認(rèn)為22
ansible_user 連接對方主機時使用的用戶名。不指定時, 將使用執(zhí)行ansible或ansible-playbook命令的用戶 ansible_password 連接時的用戶的ssh密碼,僅在未使用密鑰對驗證的情況下有效
ansible_ssh_private_key_file 指定密鑰認(rèn)證ssh連接時的私鑰文件
ansible_ssh_common_args 提供給ssh、sftp、scp命令的額外參數(shù)
ansible_become 允許進行權(quán)限提升
ansible_become_method 指定提升權(quán)限的方式,例如可使用sudo/su/runas等方式
ansible_become_user 提升為哪個用戶的權(quán)限,默認(rèn)提升為root
ansible_become_password 提升為指定用戶權(quán)限時的密碼
(1)主機變量 [webservers] 192.168.233.40 ansible_port=22 ansible_user=root ansible_password=123
(2)組變量 [webservers:vars] #表示為 webservers 組內(nèi)所有主機定義變量 ansible_user=root ansible_password=123
[all:vars] #表示為所有組內(nèi)的所有主機定義變量 ansible_port=22
(3)組嵌套 [nginx] 192.168.80.20 192.168.80.21 192.168.80.22
[apache] 192.168.80.3[0:3]
[webs:children] #表示為 webs 主機組中包含了 nginx 組和 apache 組內(nèi)的所有主機 nginx apache
?