ansible 在受管節點上管理檔案

2021-10-05 04:31:21 字數 2923 閱讀 8886

常用檔案模組

模組作用

blockinfile

將文字塊新增到現有檔案

copy

將檔案複製到受管主機

fetch

從受管主機拷貝檔案到控制節點

file

設定檔案屬性

lineinfile

確保特定行位於某個檔案

stat

檢索檔案狀態資訊

synchronize

rsync 命令的乙個打包程式

file

示例:①:在受管主機建立檔案

---

- name: test

hosts: rhel8_no1.test.com

tasks:

- name: touch a file

file:

path: /mnt/file ##路徑

owner: student

group: student

mode: 0640 #許可權

state: touch

- name: set selinux

file:

path: /mnt/file

setype: samba_share_t #安全上下文

- name: always set selinux

sefcontext:

target : /mnt/file ##永久修改檔案的安全上下文

②:刪除檔案

- name: delete file

file:

dest: /mnt/file

state: absent ##刪除

③:檢測檔案的 md5 校驗和

- name: verify the status 

stat:

path: /mnt/file

checksum_algorithm: md5

register: result

- debug:

msg: "the checksum is }"

④:同步控制節點和受管主機之間的檔案

- name: synchronize file 

synchronize:

src: file

dest: /mnt/file

作用:使用 jinja2 模板動態構建檔案,可以更方便的管理檔案

寫法:

構建 jinja2 模板:

jinja2 模板由多個元素組成:資料、變數、表示式

模板中使用的變數可以在 playbook 的 vars 中指定 ,模板中所有的值都使用變數方式,將來會被受管主機對應的值替代

部署 jinja2 模板:

tasks: 

- name: template

template:

src: /root/j2-template.j2

dest: /root/dest-config-file.txt

jinjia2 的控制結構jinja2 的迴圈和條件只能在模板中使用,不能在 playbook 中使用

使用迴圈:

#寫法一:

} #user 變數將遍歷 users

#寫法二:

#列出 myhosts 組中所有主機

}

使用條件句 :

#只有此條件為真,才會將 result 變數的值放入檔案 

}

變數過濾器:

}     #以 json 格式輸出

} #以yml格式輸出

} #對 json 格式字串進行解析

} #對 yml 格式字串進行解析

①:vim motd.j2構建jinjia2模板

this is the system } 

this is a } version } system.

system owner is }.

②:vim motd.yml編寫playbook, 部署jinjia2模板

---

- name: configure soe

hosts: rhel8_no1.test.com

remote_user: student

become: true

vars:

- system_owner: [email protected]

tasks:

- name: configure /etc/motd

template:

src: motd.j2 ##模板檔案

dest: /etc/motd ##受管主機上的目標檔案

owner: root

group: root

mode: 0644

③:執行playbook,並驗證受管主機上的檔案是否得到修改

在windows 上執行ansible

cygwin是乙個在windows平台上執行的類unix模擬環境。利用cygwin 可以在window上執行ansible。安裝cygwin 可參考 安裝執行ansible 需要的包如圖 修改 ansible.cfg 的兩處配置 host key checking 和 ssh args host k...

管理伺服器和受管伺服器

1.首先根據主機的相同與不同,上面的ip位址一樣就可以啟動管理伺服器好之後啟動受管伺服器連線即使主機不同,但是ip相同會自動間隔10秒去連線。有個檔案代表設定10秒自動連線ip位址 2.如果不同主機不同ip,如果是在windows,先啟動管理伺服器再啟動受管伺服器 在windows上建立乙個base...

在GitHub上管理專案

本地目錄下,在命令列裡新建乙個 倉庫 repository 裡面只有乙個readme.md 命令如下 touch readme.md git init 初始化repository git add readme.md 將readme.md加入到快取區 可以用git add a將所有改動提交到快取 注意...