# Ansible自動化組態專案實作
### 主講人:黃夙賢
---
## Ansible專案實作內容
- 實作一專案"project01",想要在server1機器上,把系統更新至最新狀態(apt update與apt upgrade)
- 並且安裝Z shell環境
- 並且把Z shell設定成屬於自己風格(myzsh)
- 技術指導:joshhu
---
## 專案規劃
- 需把專案分成三個步驟完成
- apt更新部分
- zsh安裝部分
- omz設定部分
---
## 下載執行虛擬機器OVA檔
- [Client](https://drive.google.com/file/d/120w2FPrBRmdSuZQwhcuwgAwZJ8bL2tEN/view?usp=sharing)
- [Server](https://drive.google.com/file/d/198Br9rzDuWDwKN8ONJljuiXU9YGx8xdg/view?usp=sharing)
- 使用Virtualbox建立兩個伺服器
---
## 設定目錄與環境檔案
```
cd ~ (回到根目錄)
mkdir porject01 (建立專案目錄)
cd porject
wget https://github.com/shhuangmust/bigdata/raw/main/ansible.cfg
(ansible環境設定檔)
wget https://github.com/shhuangmust/bigdata/raw/main/inventory
(ansible伺服器設定檔)
```

---
## 設定專案三個步驟的roles
```
mkdir roles
cd roles
ansible-galaxy init apt (建立apt role)
ansible-galaxy init zsh (建立zsh role)
ansible-galaxy init omz (建立omz role)
```
---
## 設定第一個apt role
```
cd apt
cd tasks
nano main.yml (編寫apt的動作,包含apt update與apt upgrade)
(或者
rm main.yml
wget https://github.com/shhuangmust/bigdata/raw/main/project01/roles/apt/tasks/main.yml)
```


---
## 設定第二個zsh role
- 編寫task目錄下的main.yml
```
cd ~/project01/roles/zsh/tasks/ (前往第二個zsh role的tasks)
nano main.yml
(編寫zsh的動作,利用參數vars目錄下的檔案,設定好要安裝zsh所需要的所有
套件)
(或者rm main.yml
wget https://github.com/shhuangmust/bigdata/raw/main/project01/roles/zsh/tasks/main.yml)
```

---
- 編寫var目錄下的main.yml
```
nano ../vars/main.yml (設定zsh的相關套件,包含git、zsh、autojump)
或者
( cd ../vars
rm main.yml
wget https://github.com/shhuangmust/bigdata/raw/main/project01/roles/zsh/vars/main.yml)
```


---
## 設定第三個omz role
- 第三個omz role這邊不自己寫,嘗試下載網路寫好的role劇本
```
cd ~
ansible-galaxy install gantsign.oh-my-zsh
(安裝網路寫好的oh-my-zsh)
cd ~/project01/roles/omz/files
(on-my-zsh需要.zshrc設定檔與myclean.zsh-theme主題檔)
wget https://github.com/shhuangmust/bigdata/raw/main/.zshrc
wget https://github.com/shhuangmust/bigdata/raw/main/myclean.zsh-theme
```
---


---
```
cd ../tasks
nano main.yml (編寫yaml檔,此為套件作者提供之標準寫法)
(或者rm main.yml
wget https://github.com/shhuangmust/bigdata/raw/main/project01/roles/omz/tasks/main.yml
)
```


---
## 最後步驟
```
cd ~/project01/
nano main.yaml (編輯最後的project01 yaml檔案)
(或者
wget https://github.com/shhuangmust/bigdata/raw/main/project01/main.yaml
)
```


---
## 執行ansible playbook
```
ansible-playbook main.yaml (執行專案yaml檔)
```


---
## 執行結果
- ssh server
- 連線進入server,確認server1已經有zsh的介面,成功!

---
{"metaMigratedAt":"2023-06-17T18:27:47.773Z","metaMigratedFrom":"YAML","title":"Ansible自動化組態專案實作","breaks":true,"contributors":"[{\"id\":\"ef0225b9-6c2a-4012-82c9-fa1031d2c4db\",\"add\":3087,\"del\":0}]"}