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?