環(huán)境介紹
當(dāng)前所有執(zhí)行權(quán)限我是在root下執(zhí)行的,如果提示權(quán)限之類的,可以在每句命令前? 加上 sudo???
ansible主服務(wù)器? 192.168.0.194????????
另外兩個(gè)客戶端分別為 192.168.0.193? ?192.168.0.192
軟件只需要在主服務(wù)器上安裝,客戶端不需要去安裝軟件,因?yàn)樗麄兿嗷ナ褂玫氖莝sh
只需要在主服務(wù)器上安裝好軟件,然后生成一個(gè)密鑰發(fā)送至客戶端,實(shí)現(xiàn),主服務(wù)器免密ssh連接客戶機(jī)即可
安裝ansible
在主服務(wù)器上進(jìn)行軟件安裝?
rm -rf /etc/yum.repos.d/*
刪除所有yum倉(cāng)庫(kù)(如果你原來(lái)有重要yum倉(cāng)庫(kù)記得備份)?
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安裝阿里云yum倉(cāng)庫(kù)鏡像
yum clean all && yum makecache
清除以前緩存 &&更 新緩存
yum -y install epel-release
yum -y install ansible
主服務(wù)器生成密鑰ssh免密登錄客戶機(jī)
在主服務(wù)器上
ssh-keygen -t rsa
?輸入完命令一直回車(chē)即可
ssh-copy-id 用戶@ip地址
傳輸密鑰,傳輸完以后可以進(jìn)行免密ssh連接
ssh-copy-id root@192.168.0.193
?輸入完命令以后,yes,輸入密碼就可以了
如果有另外的客戶端,也執(zhí)行同樣操作,全測(cè)試可以免密ssh登錄即可
ssh-copy-id root@192.168.0.192
?只要ssh登錄時(shí)候不用密碼就是成功了
主機(jī)列表? ?/etc/ansible/hosts
?主機(jī)列表可以寫(xiě)一個(gè)組,組名下面寫(xiě)ip或者主機(jī)名,就是這個(gè)組的成員,控制這個(gè)組,或控制單個(gè)都是可以的
vim /etc/ansible/hosts
進(jìn)去以后可以單起一行,前面沒(méi)有的#才行
格式為
[組名]
主機(jī)ip或主機(jī)名
……
?web就是組名
下面的就是ip,當(dāng)我們對(duì)web進(jìn)行操作,兩個(gè)主機(jī)就會(huì)回饋
此外還可以這樣寫(xiě)……
?[web] ? ## 主機(jī)組
192.168.10.2
192.168.10.3[test01]
www.bdqn.cn:222 ? ##通過(guò)端口222管理設(shè)備[mail]
ly01.mail.cn[ly]
ly[2:5].test.com ?##正則表達(dá)式:表示4臺(tái)主機(jī)ly2,ly3,ly4,ly5..
基礎(chǔ)操作?
ansible web -m command -a "firewall-cmd --state"
?查看web組的主機(jī)有沒(méi)有開(kāi)防火墻
? ? ? ??
ansible web -m command -a "systemctl stop firewalld" --limit "192.168.0.193"
對(duì)web組的192.168.0.193執(zhí)行關(guān)閉防火墻操作
可以指定ip去執(zhí)行
ansible 192.168.0.192 -m command -a "ip a"
通過(guò)通配符來(lái)指定多個(gè)主機(jī)遠(yuǎn)程操作(可以理解為一個(gè)網(wǎng)段)
ansible 192.168.0.* -m command -a "firewall-cmd --state"
Ansible注意事項(xiàng)->提示顏色信息說(shuō)明
黃色:對(duì)遠(yuǎn)程節(jié)點(diǎn)進(jìn)行相應(yīng)修改
綠色:對(duì)遠(yuǎn)程節(jié)點(diǎn)不進(jìn)行相應(yīng)修改,或者只是對(duì)遠(yuǎn)程節(jié)點(diǎn)信息進(jìn)行查看
紅色:操作執(zhí)行命令有異常
紫色:表示對(duì)命令執(zhí)行發(fā)出警告信息(可能存在的問(wèn)題,給你一下建議)
?
ansible命令
檢查清單中所有主機(jī)是否存活
-f ?并發(fā)線程數(shù)為5
-m ? 調(diào)用ping模塊(并不是ping命令)?
ansible all -f 5 -m ping
## success---表示成功; => {} 表示返回結(jié)果
## changed false 表示沒(méi)有對(duì)主機(jī)進(jìn)行更改
##pong ---ping模塊返回結(jié)果
all就是全部的意思,也可以指定某個(gè)組或者ip
列出web組主機(jī)列表?
ansible web --list
?
批量顯示web組磁盤(pán)使用情況?? ??
ansible web -m command -a "df -hT"
ansible-doc ?可用來(lái)查詢模塊文檔的說(shuō)明,類似于man
列出所有模塊信息
ansible-doc -l
查詢ping模塊的說(shuō)明信息
ansible-doc ping
ansible-console 交互式工具。類似于cmd或shell
ansible-console?
進(jìn)去之后可以使用cd + 組名進(jìn)去進(jìn)行直接操作
?
list可以列出當(dāng)前組的成員
ansible常用模塊?
Shell功能全面但是執(zhí)行率低
command不支持:邏輯運(yùn)算符、條件判斷符號(hào)、重定向命令或者是管道命令
command模塊---遠(yuǎn)程執(zhí)行命令?? ??
chdir---在遠(yuǎn)程主機(jī)運(yùn)行命令前,要提前進(jìn)入的目錄
creates---創(chuàng)建文件(如文件已存在,則不執(zhí)行)
removes--移除文件(如文件不存在,則不執(zhí)行)
executable--更改shell環(huán)境(并且執(zhí)行命令時(shí)要使用絕對(duì)路徑)
?在web組主機(jī)上運(yùn)行命令,運(yùn)行前切換到/root目錄
ansible web -m command -a "chdir=/root ls ./"
?web就是組名
shell模塊---相當(dāng)于調(diào)用遠(yuǎn)程主機(jī)的shell進(jìn)程,在該shell下打開(kāi)一個(gè)子shell運(yùn)行命令
?
ansible web -m shell -a 'echo "hello ly" >> /tmp/hello.txt'
?web就是組名
ssh ip地址 cat /tmp/hello.txt
copy模塊---在遠(yuǎn)程主機(jī)執(zhí)行復(fù)制操作文件。?
– src:要復(fù)制到遠(yuǎn)程主機(jī)的文件在本地的地址,可以是絕對(duì)路徑,也可以是相對(duì)路徑。如果路徑是一個(gè)目錄,它將遞歸復(fù)制。在這種情況下,如果路徑使用”/”來(lái)結(jié)尾,則只復(fù)制目錄里的內(nèi)容,如果沒(méi)有使用”/”來(lái)結(jié)尾,則包含目錄在內(nèi)的整個(gè)內(nèi)容全部復(fù)制,類似于rsync。?
– 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)都可以在這里使用mode--文件權(quán)限
owner--屬主
group--屬組
ansible web -m copy -a "src=/etc/hosts dest=/tmp/ mode=777 owner=nobody group=root"?
更改遠(yuǎn)程主機(jī)名為ly
ansible ip地址或組名 -m hostname -a "name=ly"?
yum模塊---調(diào)用遠(yuǎn)程主機(jī)的yum程序進(jìn)行管理
Ansible yum模塊主要用于軟件的安裝、升級(jí)、卸載,支持rpm軟件包的管理?
yum模塊使用詳解:conf_file:設(shè)置遠(yuǎn)程yum執(zhí)行時(shí)所依賴的yum配置文件
disable_gpg_check:安裝軟件包之前是否檢查gpg key
name:需要安裝的軟件名稱,支持軟件組安裝
update_cache:安裝軟件之前更新緩存
enablerepo:指定repo源名稱
skip_broken:跳過(guò)異常軟件節(jié)點(diǎn)
state:軟件包狀態(tài),包括installed、present、latest、absent、removed present, installed是指安裝套件,而latest指安裝最新的套件,也就是使用 yum mirror 上最新的版本。
absent, removed 沒(méi)有什么區(qū)別
調(diào)用yum模塊安裝httpd服務(wù)
?ansible ip地址 -m yum -a "name=httpd state=present"
service模塊---管理遠(yuǎn)程主機(jī)服務(wù)
name---服務(wù)名
state=started/stopped/restarted ?動(dòng)作為啟動(dòng)、停止、重啟
enabled=no/yes ?是否設(shè)置為開(kāi)機(jī)啟動(dòng)
runlevel :如果定義了開(kāi)機(jī)啟動(dòng),則設(shè)置運(yùn)行級(jí)別
?
確保要開(kāi)啟的服務(wù)軟件已經(jīng)安裝了
?
ansible 192.168.10.3 -m service -a "name=httpd state=started enabled=yes"
執(zhí)行完就這樣
?
?running就開(kāi)啟成功了
user模塊---管理遠(yuǎn)程主機(jī)用戶賬戶
Ansible user模塊主要用于操作系統(tǒng)用戶、組、權(quán)限、密碼等操作?
user模塊使用詳解:system:默認(rèn)創(chuàng)建為普通用戶,為yes則創(chuàng)建系統(tǒng)用戶
append:添加一個(gè)新的組
comment:添加描述信息
createhome:給用戶創(chuàng)建家目錄
force:強(qiáng)制刪除用戶
group:創(chuàng)建用戶主組
groups:將用戶加入組或者附屬組添加
home:指定用戶的家目錄
move_home=yes/no 如果設(shè)置的家目錄已存在,是否將已存在的家目錄進(jìn)行移動(dòng)
name:表示狀態(tài),是否create、remove、modify
password:指定用戶的密碼,為加密密碼
remove:刪除用戶
shell:設(shè)置用戶的shell登錄環(huán)境
uid:設(shè)置用戶ID
update_password:修改用戶密碼
state:用戶狀態(tài),默認(rèn)為present,表示新建用戶
?
ansible web -m user -a 'name=user1 system=yes uid=501 group=root groups=sshd shell=/sbin/nologin home=/user1 password=123 comment="test user"
在web組的所有主機(jī)上創(chuàng)建一個(gè)user1用戶,是系統(tǒng)用戶,uid是501 組是root? 附屬組是sshd ,shell環(huán)境是/sbin/nologin? ,家目錄是/user1,密碼是123,介紹是test user
?
ansible web -m user -a 'name=user1 password=123'
如果你就簡(jiǎn)單的設(shè)置一下那么他和useradd user1差不多,?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-669854.html
ansible web -m user -a "name=user1 remove=yes state=absent"
刪除剛剛添加的用戶文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-669854.html
到了這里,關(guān)于Linux:ansible自動(dòng)化運(yùn)維工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!