Ansible 設定檔
新增資料夾 roles/bpi
新增資料夾 roles/bpi/tasks (資料夾)
新增檔案 roles/bpi/tasks/main.yml
bpi這個資料夾主要是為了Banana Pi M64的2018-01-05-ubuntu-16.04-mate-desktop-v1.0-bpi-m64-sd-emmc.img.zip系統所客製化的,main.yml會將此系統的一些服務修改並且關閉、移除桌面環境等,執行完,重開機後,會自動把磁碟空間延伸到最大。
---
- name: stop NetworkManager
systemd:
name: NetworkManager
state: stopped
- name: disable NetworkManager
systemd:
name: NetworkManager
enabled: no
masked: yes
- name: configure /etc/network/interfaces
blockinfile:
path: '/etc/network/interfaces'
block: |
auto eth0
iface eth0 inet dhcp
- name: disable accounts-daemon.service
systemd:
name: accounts-daemon
enabled: no
masked: no
- name: disable ModemManager.service
systemd:
name: ModemManager
enabled: no
masked: no
- name: disable pppd-dns.service
systemd:
name: pppd-dns
enabled: no
masked: no
- name: update /var/lib/bananapi/bpi-init.d/S10-bpi-hw-wifi.sh
template:
src: 'S10-bpi-hw-wifi.sh.j2'
dest: '/var/lib/bananapi/bpi-init.d/S10-bpi-hw-wifi.sh'
- name: uninstall unneeded packages
apt:
pkg: '{{ item }}'
state: 'absent'
purge: 'yes'
with_flattened:
- '{{ moodlebox_uninstall_packages }}'
when: 'moodlebox_uninstall_packages is defined'
- name: fdisk /dev/mmcblk0 partition
shell: echo -e "p\nd\n2\nn\np\n2\n729088\n\nw" | sudo fdisk /dev/mmcblk0
args:
executable: /bin/bash
ignore_errors: yes
- name: reboot machine
shell: 'sleep 2 && shutdown -r now'
async: 1
poll: 0
ignore_errors: true
- name: wait for machine to come back
become: false
local_action: wait_for
args:
host: '{{ ansible_host | default(inventory_hostname) }}'
port: 22
state: 'started'
delay: 10
timeout: 90
- name: "resize filesystem"
command: resize2fs /dev/mmcblk0p2
sudo: true新增資料夾 roles/bpi/templates
新增檔案 roles/bpi/templates/S10-bpi-hw-wifi.sh.js
S10-bpi-hw-wifi.sh.js是要取代系統中的/var/lib/bananapi/bpi-init.d/S10-bpi-hw-wifi.sh,主要加入了op_mode=2參數,讓無線網卡可以當作無線AP使用。
新增資料夾 roles/bpi/vars
新增檔案 roles/bpi/vars/main.yml
此參數檔放要刪除的桌面環境套件
修改檔案 buildmoodlebox.yml
此檔案是是主要建立moodlebox的架構檔,在roles下,加入了「- bpi」這個bpi就是roles下的bpi資料夾,此資料夾下的內容是BPI要安裝moodlebox前先執行的內容,如網路設定、要關閉的服務及移除桌面環境及不需要的套件
buildmoodlebox.yml 修改內容
修改檔案 default.config.yml
此檔案是主要的參數設定檔,以下會列出有修改過的內容,moodlebox_tld,此修改後透過moodlebox的無線ap連線後,網址會由原本的「moodlebox.home」變更為「moodlebox.bpi」,其他分別為wifi、語系、時間、及帳號密碼。
default.config.yml 原始內容
default.config.yml 修改後內容
修改檔案 roles/bootstrap/tasks/apt.yml
apt.yml原本的內容為執行update cache、upgrade、autoclean 、autoremove動作,因為在執行此檔案前,加入了bpi資料夾,裡面有執行uninstall unneeded packages,主要是移除桌面環境,所以在邊都執行完後加入重新開機,並且重新連線,這邊設定等待90秒,目前測試90秒是足夠的。
apt.yml 原始內容
apt.yml 修改後內容
修改檔案 roles/bootstrap/tasks/firmware.yml
firmware.yml檔主要是執行Raspbian系統中才有的指令,主要安裝rpi-update套件、更新韌體、重新開機及重新連線,這邊只有修改最後一行的timeout:60,修改成90秒。
firmware.yml 原始內容
不過這個設定檔基本在bpi版本中不會執行,因為主要控制是否要執行此檔案的設定在「default.config.yml」中的「moodlebox_update_firmware: false」此參數設定為false,並且在roles/bootstrap/tasks/main.yml中有設定去檢查moodlebox_update_firmware參數,再決定是否要執行firmware.yml檔案的指令
roles/bootstrap/tasks/main.yml中控制 firmware.yml 的指令
修改檔案 roles/bootstrap/tasks/misc.yml
misc.yml中會刪除前面三個設定,分別是降低顯示記憶體為16Mb,硬體開關機銨鈕,設定畫面為滿版不會留控白邊,其中硬體開關機銨鈕是2.2版新加的在BPI中原本硬體就有開機關及重新開機的銨鈕,所以這也不需要設定,其他下方的主要是在系統加入Moodlebox的一些資訊及ssh進入後的logo畫面。
misc.yml 原始內容
misc.yml 修改後內容
修改檔案 roles/bootstrap/files/tasks/wifi.yml
在wifi.yml設定主要是修改wpasupplicant.conf中的「country」,設定值來自於default.config.yml檔中的moodleboxwifi_country,預設為「CH」,要修改成「TW」,但在BPI中燒錄完初始的系統是沒有/etc/wpasupplicant/wpasupplicant.conf檔,所以修改處理方式,原本是找到系統中的wpasupplicant.conf檔,然後修改country中的值,在bpi中修改成用範本檔去新增wpasupplicant.conf,範本檔建立於下方的「新增檔案 roles/bootstrap/templates/etc/wpa_supplicant.j2」。
wifi.yml 原始檔案
wifi.yml 修改後內容
新增檔案 roles/bootstrap/templates/etc/wpa_supplicant.j2
修改檔案 roles/bootstrap/files/templates/etc/hosts.j2
hosts.j2範本檔,所修改內容依燒錄系統中/etc/hosts的原始內容
hosts.j2原始檔案
hosts.j2 修改後內容
修改檔案 roles/bootstrap/vars/main.yml
因為moodlebox中會把使用者帳號名稱pi改成moodlebox,所以此檔案中所列出要修改的相關檔案,但在BPI中因為沒有「/etc/systemd/system/autologin@.service」所以就把最後一行拿掉。
main.yml原始檔案
main.yml 修改後內容
修改檔案 roles/cleanup/tasks/main.yml
此檔案是在安裝過程的最後一步,清除系統中不需要的檔案,清除完後會重開機,再重新連ssh,修改重新開機後要等待的時間由原本的60秒設定為90秒
修改檔案 roles/install/tasks/db.yml
這邊所安裝資料庫都是mariadb-server,但在restart時,RPI可以使用mariadb指令重新啟動,但在BPI這邊要改成mysql指令重新啟動資料庫,所以在最後重新啟動的指令修改成「mysql」
db.yml 原始檔案
db.yml 修改後內容
修改檔案 roles/install/tasks/packages.yml
執行packages.yml後,會依roles/install/tasks/vars/main.yml中的套件名稱做安裝或移除,下方中會另外單獨執行安裝phpmyadmin,在BPI中會有問題,所以目前移除此設定,將phpmyadmin加入到roles/install/tasks/vars/main.yml的moodlebox_install_packages清單中
packages.yml原始檔案
packages.yml 修改後內容
修改檔案 roles/install/vars/main.yml
此檔案列出要安裝的套件,另外加入了php7.0-zip、php7.0-bz2、phpmyadmin、dhcpcd5四個套件
main.yml 原始檔案
main.yml 修改後內容
修改檔案 roles/network/tasks/main.yml
此設定檔主要設定網路相關設定,因為BPI初始系統是使用/etc/network/interfaces,而moodlebox改用dnsmasq及dhcpcd設定,所以原本的interfaces檔把原有的設定都拿掉,內容請參考下方的「新增檔案 roles/network/templates/etc/network/interfaces.j2」
main.yml 修改內容
新增資料夾 roles/network/templates/etc/network
新增檔案 roles/network/templates/etc/network/interfaces.j2
Last updated
Was this helpful?