架構師的成長之路初片 自動化篇之Ansible

2022-06-20 16:21:12 字數 4162 閱讀 8313

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:    test

tasks:

-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....