我目前使用Ansible 2.2在AWS中編寫腳本並部署系統日誌服務器。我們擁有的一個先決條件是擁有一個持久的EBS卷,它將持續一個月的日誌,直到我們將它們運送到S3。因此,如果我們需要拆卸syslog並通過Ansible重新部署它,我們只需將它重新連接到新部署的服務器,並且它仍然具有先前的日誌。這一部分很好,我已經處理了。如果上一個任務失敗,則只運行兩個任務
我的問題是,我試圖使整個任務完全自動化,如果EBS卷不存在X,Y或Z的原因,我們創建一個新的EBS卷(獲得它),附加, (得到它),創建分區(得到它),格式(得到它),並安裝它(得到它)。希望下面的代碼將有助於理解:
- name: Create log partition
shell: /bin/echo -e "n\np\n1\n\n\nw" | sudo fdisk /dev/xvdb
- name: Format log partition
filesystem:
fstype: ext4
dev: "/dev/xvdb1"
- name: Mount log drive
mount:
name: /log
src: "/dev/xvdb1"
fstype: ext4
state: mounted
這代碼工作完美,但我意識到,在運行這一點,並重新連接現有的EBS卷,我仍然會重新分區和格式化的卷,刪除我的歷史數據和從頭開始,這是非常不好的。
我希望能做的是在分區和格式化之前進行某種檢查,以確保我們不會清除數據。我認爲最好的方法是嘗試安裝驅動器,如果成功,則跳過分區和格式化。但是,如果驅動器無法安裝,請執行分區,格式化和安裝。
我對Ansible相當陌生,所以我願意接受任何想法和任何幫助,將不勝感激。謝謝!
有了這個,如果EXT4文件系統的設備上已經存在,它重新創建和擦拭數據?或者它實質上是說「哦,它已經是ext4了,讓我們跳過這個」?後者是 – Chiggins
。如果ext4在那裏,Ansible將什麼都不做,只要說'好'。 –