ansible劇本編寫

需求:如何利用ansible模塊,進(jìn)行rsync服務(wù)部署

考察:需要對模塊靈活應(yīng)用

思路:

第一個(gè)里程: 確認(rèn)好管理主機(jī)信息

管理服務(wù)端主機(jī): 172.16.1.41
管理客戶端主機(jī): 172.16.1.31 172.16.1.7

第二個(gè)里程: 配置知己清單信息

vim /etc/amsible/hosts
[rsync_server]
172.16.1.41
[rsync_client]
172.16.1.31
172.16.1.41

第三個(gè)里程: 進(jìn)行rsync服務(wù)部署

服務(wù)端:
1.安裝軟件

ansible rsync_server -m yum -a "name=rsync state=installed"

2. 編寫配置文件

ansible rsync_server -m copy -a "src=/ansible_file/rsync/rsyncd.conf dest=/etc/"

3. 創(chuàng)建虛擬用戶

ansible rsync_server -m user -a "name=rsync create_home=no shell=/sbin/nologin"

4. 創(chuàng)建密碼文件并授權(quán)

ansible rsync_server -m copy -a "content='rsync_backup:oldboy123' dest=/etc/rsync.password mode=600"

5. 創(chuàng)建備份目錄并授權(quán)

ansible rsync_server -m file -a "path=/backup/ state=directory owner=rsync group=rsync"

6. 啟動(dòng)服務(wù)程序

ansible rsync_server -m service -a "name=rsyncd state=started enabled=yes"

客戶端:
1.創(chuàng)建密碼文件

ansible rsync_client -m copy -a "content='oldboy123' dest=/etc/rsync.password mode=600"

2. 進(jìn)行傳輸測試

ansible rsync_client -m shell -a "'rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password'"

掌握劇本編寫: 將多個(gè)模塊操作命令進(jìn)行整合

模塊 == 命令
劇本 == shell腳本

作用說明:

1. 可以實(shí)現(xiàn)服務(wù)自動(dòng)部署
2. 可以提高運(yùn)維工作效率
3. 可以減少運(yùn)維工作問題
4. 可以節(jié)省公司運(yùn)維成本

劇本編寫組成:

1. 劇本角色信息: hosts --主機(jī)信息
2. 劇本任務(wù)信息: tasks --任務(wù)信息

*劇本編寫規(guī)范: 遵循yaml語法規(guī)范 == python代碼語法規(guī)范

1. 縮進(jìn)規(guī)范: 兩個(gè)空格表示一個(gè)縮進(jìn)關(guān)系

標(biāo)題一(一級)
空空標(biāo)題二(二級)
空空空空標(biāo)題三(三級)
PS: 在縮進(jìn)時(shí)只能用空格表示縮進(jìn),不能用tab代替縮進(jìn)

2. 字典書寫規(guī)范:

oldboy: 123456(key: value)
PS: 冒號結(jié)尾時(shí)不需要有空格/冒號信息出現(xiàn)在注釋說明中不需要有空格

3. 列表規(guī)范: 橫線后面要有空格

name:
- rsunc
- nfs
- rpcbind

測試劇本編寫.png

劇本測試執(zhí)行方法

1. 進(jìn)行檢查測試:
ansible-playbook --syntax-check ./test01.yml

2. 劇本運(yùn)行方式:
模擬執(zhí)行:
ansible-playbook -C test01.yml

補(bǔ)充: 取消cowsay小牛圖案出現(xiàn)
vim /etc/ansible/ansible.cfg ---編寫修改ansible文件
217gg
# set to 1 if you don't want cowsay support or export ANSIBLE_NOCOWS=1
nocows = 1

真實(shí)執(zhí)行: ansible-playbook ./test01.yml

測驗(yàn): 編寫劇本完成nfs服務(wù)一鍵自動(dòng)部署

第一個(gè)歷程: 定義主機(jī)清單信息
[nfs_server]
172.16.1.31
[nfs_client]
172.16.1.41
172.16.1.7

第二個(gè)歷程: 編寫劇本信息
服務(wù)端:
1) 安裝軟件程序
2) 編寫配置文件
3) 創(chuàng)建存儲(chǔ)目錄
4) 啟動(dòng)服務(wù)程序

客戶端:
1) 安裝軟件程序
2) 進(jìn)行掛載操作

劇本信息:
方法一: 變量格式編寫劇本

   - hosts: nfs_server
     tasks:
       - name: 01:install software
         yum: name=nfs-utils state=installed
         yum: name=rpcbind   state=installed
       - name: 02:push conf_file to server
         copy: src=./nfs/exports dest=/etc/
       - name: 03:create data dir
         file: path=/data  state=directory owner=nfsnobody group=nfsnobody
       - name: 04:boot server
         service: name=rpcbind state=started enabled=yes
         service: name=nfs state=started enabled=yes
  
  - hosts: nfs_client
    tasks:
      - name: 01:install software
        yum: name=nfs-utils state=installed
      - name: 02:mount data dir
        shell: mount -t nfs 172.16.1.31:/data /mnt

劇本信息: 方法二 字典格式編寫劇本

   - hosts: nfs_server
     tasks:
       - name: 01:install software
         yum:
           name:
             - nfs-utils 
             - rpcbind
           state: installed
       - name: 02:push conf_file to server
         copy:
           src: ./nfs/exports
           dest: /etc/
       - name: 03:create data dir
         file:
           path: /data
           state: directory
           owner: nfsnobody
           group: nfsnobody
       - name: 04:boot server rpc
         service:
           name: rpcbind
           state: started
           enabled: yes
       - name: 05:boot server nfs
         service:
           name: nfs
           state: started
           enabled: yes

   - hosts: nfs_client
     tasks:
       - name: 01:install software
         yum:
           name: nfs-utils
           state: installed
       - name: 02:mount data dir
         shell: mount -t nfs 172.16.1.31:/data /mnt 

劇本編寫擴(kuò)展功能

a 在劇本中設(shè)置變量信息
設(shè)置變量方法一: 在劇本中設(shè)置變量
data_dir: /oldboy
設(shè)置變量方法二: 在命令行設(shè)置
ansible-playbook -e data_dir=/boy test05.yml
設(shè)置變量方法三: 在主機(jī)清單設(shè)置
vim /etc/ansible/hosts 172.16.1.41 data_dir=/old

問題: 三種變量的優(yōu)先級是 命令行-劇本-主機(jī)清單

image.png

b 在劇本中設(shè)置注冊信息
debug: msg={{ oldboy.stdout_lines }}

image.png

c 在劇本中設(shè)置判斷信息
常見主機(jī)信息:

  ansible_all_ipv4_addresses:               僅顯示ipv4的信息淮捆。
  ansible_devices:                          僅顯示磁盤設(shè)備信息。
  ansible_distribution:                 顯示是什么系統(tǒng)他炊,例:centos,suse等争剿。
  ansible_distribution_major_version:       顯示是系統(tǒng)主版本。
  ansible_distribution_version:         僅顯示系統(tǒng)版本痊末。
  ansible_machine:                          顯示系統(tǒng)類型蚕苇,例:32位,還是64位凿叠。
  ansible_eth0:                         僅顯示eth0的信息涩笤。
  ansible_hostname:                     僅顯示主機(jī)名。
  ansible_kernel:                           僅顯示內(nèi)核版本盒件。
  ansible_lvm:                              顯示lvm相關(guān)信息蹬碧。
  ansible_memtotal_mb:                      顯示系統(tǒng)總內(nèi)存。
  ansible_memfree_mb:                       顯示可用系統(tǒng)內(nèi)存炒刁。
  ansible_memory_mb:                        詳細(xì)顯示內(nèi)存情況恩沽。
  ansible_swaptotal_mb:                 顯示總的swap內(nèi)存。
  ansible_swapfree_mb:                      顯示swap內(nèi)存的可用內(nèi)存翔始。
  ansible_mounts:                           顯示系統(tǒng)磁盤掛載情況宝当。
  ansible_processor:                        顯示cpu個(gè)數(shù)(具體顯示每個(gè)cpu的型號)退腥。
  ansible_processor_vcpus:                  顯示cpu個(gè)數(shù)(只顯示總的個(gè)數(shù))撵儿。   


 - hosts: all
         tasks:
           - name: install software
             yum: name=nfs-utils state=installed
           - name: create data dir
             file: path=/data/ state=directory
             when: (ansible_hostname == "nfs01")      

判斷語法結(jié)構(gòu)信息:
01. 匹配單個(gè)信息:
when: (ansible_hostname == "nfs01")

02. 匹配多個(gè)信息 ???
when: (ansible_hostname == "nfs01") or (ansible_hostname == "backup")
when: (ansible_hostname == "nfs01") and (ansible_eth0 == "10.0.0.31")

03. 對匹配信息進(jìn)行取反
when: (ansible_hostname != "nfs01")

d 在劇本中設(shè)置循環(huán)信息
e 在劇本中設(shè)置錯(cuò)誤信息
f 在劇本中設(shè)置標(biāo)簽信息
g 在劇本中設(shè)置觸發(fā)信息

{{oldboy.stdout_lines}} 標(biāo)準(zhǔn)輸出注冊功能

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甘晤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子脖镀,更是在濱河造成了極大的恐慌飒箭,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜒灰,死亡現(xiàn)場離奇詭異弦蹂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)强窖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門凸椿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人毕骡,你說我怎么就攤上這事。” “怎么了未巫?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵窿撬,是天一觀的道長。 經(jīng)常有香客問我叙凡,道長劈伴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任握爷,我火速辦了婚禮跛璧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘新啼。我一直安慰自己追城,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布燥撞。 她就那樣靜靜地躺著座柱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪物舒。 梳的紋絲不亂的頭發(fā)上色洞,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音冠胯,去河邊找鬼火诸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛荠察,可吹牛的內(nèi)容都是我干的置蜀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼割粮,長吁一口氣:“原來是場噩夢啊……” “哼盾碗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舀瓢,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤廷雅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后京髓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體航缀,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年堰怨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芥玉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡备图,死狀恐怖灿巧,靈堂內(nèi)的尸體忽然破棺而出赶袄,到底是詐尸還是另有隱情,我是刑警寧澤抠藕,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布饿肺,位于F島的核電站,受9級特大地震影響盾似,放射性物質(zhì)發(fā)生泄漏敬辣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一零院、第九天 我趴在偏房一處隱蔽的房頂上張望溉跃。 院中可真熱鬧,春花似錦告抄、人聲如沸撰茎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乾吻。三九已至,卻和暖如春拟蜻,著一層夾襖步出監(jiān)牢的瞬間绎签,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工酝锅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诡必,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓搔扁,卻偏偏與公主長得像爸舒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子稿蹲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

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