1)裝包:
ansible_soft.ta.gz 內的包
yum -y install ./* //當前目錄下的所有檔案
2)修改配置檔案
主配置檔案/etc/ansible/ansible.cfg
*ansible對配置檔案的查詢順序
首先檢測ansible_config變數定義的配置檔案
其次檢測當前目錄下的ansible.cfg檔案
再次檢查家目錄下的ansible.cfg檔案
最後檢查/etc/ansible.cfg檔案
普通模組:沒有智慧型判斷的能力
command shell ping
在執行多次以上的命令時,會執行命令而不能判斷該命令是否以及執行
專屬模組:copy file fetch linginfile yum.....
專屬模組可以判斷該命令是否執行,如已執行,則不會重複執行該命令。
在~目錄建立ansible
cd ansible
vim ansible.cfg
[defaults]
inventory=./inventory
vim inventory
[test]
n1n2
[test2]
n3n4
[cluster:children] //巢狀組(:children 為關鍵字)
test
專屬模組必記:
1) file
2) copy
3) fetch
4) lineinfile
5) replace
6) user 新增密碼:必記: password=}
7) yum
8) yum_repoistory
9) service
10) lvg
11) lvol
12) parted
13) firewalld
編寫playbook------劇本
格式:#代表注釋,一般第一行為三個橫槓(---)
鍵/值(key/value)對使用 」 . 「 表示,陣列使用 」 - 「表示,」 - 「後面有空格
檔名以 .yml 或 .yaml 結尾 ,區分大小寫
縮排由兩個或兩個以上空格組成
相同層級必須縮排對其,縮排代表層級關係
跨行資料需要使用 > 或者 | ( | 會保留換行符)
playbook 語法格式
每個play中可以包含
- hosts tasks vars 等元素組成
hosts由乙個或多個組或主機組成,逗號分隔
可以使用 -f 選項自定義併發量
/etc/ansible/ansible.cfg
forks=5 //ssh併發量
host_key_checking=false //是否檢驗金鑰
特殊模組:
setup模組
ansible tesst -am setup //可看到test中的所有變數
呼叫變數:
debug模組: //使用debug模組可以輸出常量資訊內容或變數資訊。 類似於 」echo「
msg: "}" //msg引數可以定義資訊內容,雙大括號在這裡時呼叫變數
2.inventory變數
修改主機簽單檔案,在node1主機後面追加變數
node1 myvar1="abc" //myvar1是變數名可以自定義,後面abc是變數(myvar)是變數可自定義
[webserver:vars] //給組webserver定義變數
3.playbook變數
hosts:test
myvar2:abc02
myvar3:abc03
tasks:
-debug:
msg: "}" //呼叫變數
4.變數檔案
在ansible目錄下建立乙個 variables.yml 的檔案
myvar5:abc05
myvar6:abc06
建立呼叫variables.yml 的檔案
- hosts:
var_files: /root/ansible/variables.yml
tasks:
-user:
name: "}"
password:"}"
變數的優先順序:
playbook>hostfasts>inventory>變數檔案
其他模組:
firewalld
template //功能與copy類似,但拷貝文字時可以識別變數
素材:abc.txt text }
tasks:
src: /ansible/abc.txt
dest /opt/abc.txt
ignore_errors //跳過或忽略錯誤的模組任務
-template:
src: /ansible/abc.txt
dest: /opt/abc.txt
ignore_errors: true //如果template模組內發生錯誤,則會跳過此模組。
template: 不能呼叫以 .yml 結尾的檔案作為原始檔。
-hosts:
ignore_errors:true //如與gosts對齊,則對主機執行的所有任務生效。
ansible的高階功能
1)定義handlers任務
在劇本中tasks用來定義任務(一定會執行),handlers也可以定義任務(不一定執行)handlers任務要想執行必須要被別人觸發才能執行。
-file: state=touch path=/opt/abc09
notify: handol //呼叫handlers中的任務名稱
handlers: //預定義,與tasks對齊
- name: handol //預備任務,不一定執行
#常用於重複的工作(磁碟格式化)
when 條件判斷,條件為真時才能執行某任務
多個條件可以使用and或or 分割。
# when表示式中呼叫變數不要使用 }
1)單一條件
tasks:
-debug
msg:ok
when: ansible_hostname != "node1"
2)多個條件
tasks:
-debug:
msg:ok
when: >
ansible_hostname ~= "node2"
and (and 或 or)
ansible_memfree_mb > 100
3)使用block、rescue、always 組合執行任務
使用rescue語句定義在block任務執行失敗時要執行的其他任務,還可以使用always語句定義,無論block任務是否成功,都要執行任務。
-hosts: testtasks:
-block:
-debug:
msg:"}
"rescue: //救援任務,僅block任務失敗時執行
-debug:
msg:"}
"always: //無論block是否成功,都會執行
-debug:
msg:
"always~~~
"
loop迴圈: //相同任務需要多次執行時避免重複寫模組語句
tasks:
-file: state=touch path=/opt/}
loop:
-: xyz01
-: xyz02
loop迴圈高階用法,定義子值
tasks:
-user
name: "}"
password: "}"
loop:
-
架構師的成長之路初片
centos6與centos7的對比 檔案系統 centos6 centos7 檔案系統 ext4的單個檔案系統容量達到1eb,單個檔案大小達到16tb xfs預設支援8eb減1位元組的單個檔案系統,最大可支援檔案大小9eb,最大檔案系統尺寸為18eb 防火牆iptables firewalld 核...
架構師的成長之路初片 NTP
ntp協議 思路 建立乙個以a機為標準時間的機器,讓它用來同步其他機器伺服器的標準時間。a機又以 國家授時中心的ip位址 進行時間同步,ip 210.72.145.39 也可以選擇其他的時間伺服器。大多數選擇阿里雲,華為雲.的時間伺服器進行同步 stratum 分層設計 總層數限制在15層以內 包括...
架構師的成長之路初片 NFS
nfs 共享資料服務 包名 nfs utils 系統服務 nfs server 此服務 nfs server 依賴rpcbind服務,在重啟此服務時,需要多重啟乙個服務 rpcbind 服務 b機器 可將共享的資料夾掛載到 mnt my nfs,可實現資料同步。開機自啟 etc fstab 192....