iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
1
DevOps

DevOps with Proxmox系列 第 25

Day 25 - 範例動手做 - Ansible 部屬

  • 分享至 

  • xImage
  •  

接下來是看要如何利用 Ansible 部屬我們的程式

我們一樣會寫 Ansible Playbook,流程大概是

  • 更新系統
  • 安裝 Node.JS 和 NPM
  • 安裝我們的程式

先看我們的 Playbook 和 roles

# deploy.yml
---
- hosts: all
  roles:
    - apt_upgrade
    - install_nodejs
    - install_app
# roles/apt_upgrade/tasks/main.yml
---
- name: Perform 'apt update'
  apt:
    update_cache: yes
  tags:
    - apt

- name: Perform 'apt upgrade'
  apt:
    package: '*'
    state: latest
  tags:
    - apt
# roles/install_nodejs/tasks/main.yml
---

- name: Use apt to install nodejs & npm
  apt:
    pkg:
      - nodejs
      - npm
  tags:
    - nodejs
---
- name: Create dir /app
  file:
    path: /app
    owner: root
    group: root
    mode: '0755'
    state: directory
  tags:
    - app
- name: Copy our app into folder
  copy:
    src: ../../../../app/index.js
    dest: /app/index.js
    owner: root
    group: root
    mode: '0644'
  tags:
    - app
- name: Run npm install in the folder
  shell: npm i express
  args:
    chdir: /app
- name: Install systemd service file
  copy:
    src: nodeapp.service
    dest: /etc/systemd/system/nodeapp.service
    owner: root
    group: root
    mode: '0644'
  tags:
    - app
- name: Reload systemd daemon
  systemd:
    daemon_reload: yes
  tags:
    - app
- name: Enable nodeapp service
  systemd:
    name: nodeapp
    state: started
    enabled: yes
  tags:
    - app
# roles/install_app/files/nodeapp.service
[Unit]
Description=Node App
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node /app/index.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

我們接下來要在 lxc.tf 裡加入部署選項
我們要把我們的 SSH Key 放進去,同時也要放部署的指令
大概會像這樣

ssh_public_keys = "<YOUR_SSH_KEY>"
  provisioner "local-exec" {
    command = "sleep 30; ansible-playbook -u root -i '${var.lxc_ip},' deploy.yml;"
  }

最後,當我們執行 terraform apply 的時候,就能看到 Ansible 把我們的 app 部署進去了
執行結果大概像這樣

terraform_apply

這樣我們就有辦法利用工具來幫助我們部署、管理機器了
明天講監控的部分


上一篇
Day 24 - 範例動手做 - GitLab 與 Terraform Backend
下一篇
Day 26 - 範例動手做 - Ansible 安裝 Grafana
系列文
DevOps with Proxmox30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言