# ๐ŸŽฌ Nomad ้›†็พค็ฎก็†ไบคๆŽฅไปชๅผ ## ๐Ÿ“‹ ไบคๆŽฅๆฆ‚่ฟฐ **ไบคๆŽฅๆ—ถ้—ด**: 2025-10-09 12:15 UTC **ไบคๆŽฅๅŽŸๅ› **: ๅฝ“ๅ‰ AI ๅŠฉๆ‰‹ๅœจ Nomad ้›†็พค็ฎก็†ไธŠ้‡ๅˆฐๅ›ฐ้šพ๏ผŒ้œ€่ฆๆ–ฐ็š„ AI ๅŠฉๆ‰‹ๆŽฅๆ‰‹ **ไบคๆŽฅ็›ฎๆ ‡**: ๆขๅค Nomad ้›†็พค็จณๅฎš่ฟ่กŒ๏ผŒๅฎž็Žฐ็œŸๆญฃ็š„ GitOps ่‡ชๅŠจๅŒ–ๆต็จ‹ --- ## ๐Ÿ—๏ธ ๅฝ“ๅ‰็ณป็ปŸๆžถๆž„ ### **ๆ ธๅฟƒ็ป„ไปถ** ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Gitea Repo โ”‚โ”€โ”€โ”€โ–ถโ”‚ Gitea Actions โ”‚โ”€โ”€โ”€โ–ถโ”‚ Ansible Deploy โ”‚ โ”‚ (mgmt.git) โ”‚ โ”‚ (Workflows) โ”‚ โ”‚ (Playbooks) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚ โ”‚ โ–ผ โ–ผ โ–ผ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ Nomad Configs โ”‚ โ”‚ Webhook API โ”‚ โ”‚ Nomad Cluster โ”‚ โ”‚ (nomad-configs/) โ”‚ โ”‚ (Trigger) โ”‚ โ”‚ (7+ nodes) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ### **่Š‚็‚นๅˆ†ๅธƒ** - **ๆœๅŠกๅ™จ่Š‚็‚น**: ash3c, ch4, warden (Consul ๆœๅŠกๅ™จ) - **ๅฎขๆˆท็ซฏ่Š‚็‚น**: ash2e, hcp1, influxdb, ash3c, ch4, warden, browser - **็ฝ‘็ปœ**: Tailscale ็งๆœ‰็ฝ‘็ปœ (tailnet-68f9.ts.net) ### **ๅ…ณ้”ฎ็›ฎๅฝ•็ป“ๆž„** ``` /root/mgmt/ โ”œโ”€โ”€ .gitea/workflows/ # Gitea Actions ๅทฅไฝœๆต (โŒ ๆœชๅฏ็”จ) โ”‚ โ”œโ”€โ”€ deploy-nomad.yml # Nomad ้ƒจ็ฝฒๅทฅไฝœๆต โ”‚ โ””โ”€โ”€ ansible-deploy.yml # Ansible ้ƒจ็ฝฒๅทฅไฝœๆต โ”œโ”€โ”€ ansible/ # Ansible ้…็ฝฎๅ’Œๅ‰งๆœฌ โ”‚ โ”œโ”€โ”€ inventory/hosts.yml # ๅฝ“ๅ‰ๅชๆœ‰ warden ่Š‚็‚น โ”‚ โ”œโ”€โ”€ ansible.cfg # Ansible ๅ…จๅฑ€้…็ฝฎ โ”‚ โ””โ”€โ”€ fix-warden-zsh.yml # ไฟฎๅค warden zsh ้…็ฝฎ็š„ๅ‰งๆœฌ โ”œโ”€โ”€ nomad-configs/ # Nomad ้…็ฝฎๆ–‡ไปถ โ”‚ โ”œโ”€โ”€ nodes/ # ๅ„่Š‚็‚น้…็ฝฎๆ–‡ไปถ โ”‚ โ”‚ โ”œโ”€โ”€ warden.hcl # โœ… ๆˆๅŠŸๆจกๆฟ (ๅŸบๅ‡†้…็ฝฎ) โ”‚ โ”‚ โ”œโ”€โ”€ hcp1.hcl # โŒ ้œ€่ฆไฟฎๅค โ”‚ โ”‚ โ”œโ”€โ”€ onecloud1.hcl # โŒ ่Š‚็‚นๅทฒ็ฆปๅผ€ โ”‚ โ”‚ โ”œโ”€โ”€ influxdb1.hcl # ็Šถๆ€ๅพ…็กฎ่ฎค โ”‚ โ”‚ โ”œโ”€โ”€ ash3c.hcl # ็Šถๆ€ๅพ…็กฎ่ฎค โ”‚ โ”‚ โ”œโ”€โ”€ ch4.hcl # ็Šถๆ€ๅพ…็กฎ่ฎค โ”‚ โ”‚ โ””โ”€โ”€ browser.hcl # ็Šถๆ€ๅพ…็กฎ่ฎค โ”‚ โ”œโ”€โ”€ servers/ # ๆœๅŠกๅ™จ่Š‚็‚น้…็ฝฎ โ”‚ โ”œโ”€โ”€ templates/ # ้…็ฝฎๆจกๆฟ โ”‚ โ”‚ โ””โ”€โ”€ nomad-client.hcl.j2 โ”‚ โ””โ”€โ”€ scripts/deploy.sh # ้ƒจ็ฝฒ่„šๆœฌ โ”œโ”€โ”€ nomad-jobs/ # Nomad ไฝœไธšๅฎšไน‰ โ”‚ โ”œโ”€โ”€ consul-cluster-nomad # โŒ pending ็Šถๆ€ โ”‚ โ”œโ”€โ”€ vault-cluster-ha.nomad # โŒ pending ็Šถๆ€ โ”‚ โ””โ”€โ”€ traefik-cloudflare-v3 # โŒ pending ็Šถๆ€ โ”œโ”€โ”€ infrastructure/ # ๅŸบ็ก€่ฎพๆ–ฝไปฃ็  โ”œโ”€โ”€ components/ # ็ป„ไปถ้…็ฝฎ โ”œโ”€โ”€ deployment/ # ้ƒจ็ฝฒ็›ธๅ…ณ โ”œโ”€โ”€ security/ # ๅฎ‰ๅ…จ้…็ฝฎ โ””โ”€โ”€ scripts/ # ๅ„็ง่„šๆœฌ โ”œโ”€โ”€ fix-nomad-nodes.sh # ไฟฎๅค Nomad ่Š‚็‚น่„šๆœฌ โ””โ”€โ”€ webhook-deploy.sh # Webhook ้ƒจ็ฝฒ่„šๆœฌ ``` --- ## ๐ŸŽฏ ็ณป็ปŸ็›ฎๆ ‡ ### **ไธป่ฆ็›ฎๆ ‡** 1. **้ซ˜ๅฏ็”จ Nomad ้›†็พค**: 7+ ่Š‚็‚น็จณๅฎš่ฟ่กŒ 2. **GitOps ่‡ชๅŠจๅŒ–**: ไปฃ็ ๆŽจ้€ โ†’ ่‡ชๅŠจ้ƒจ็ฝฒ 3. **ๆœๅŠก็ผ–ๆŽ’**: Consul + Vault + Traefik ๅฎŒๆ•ดๆ ˆ 4. **้…็ฝฎไธ€่‡ดๆ€ง**: ๆ‰€ๆœ‰่Š‚็‚น้…็ฝฎ็ปŸไธ€็ฎก็† ### **ๆœๅŠกๆ ˆ็›ฎๆ ‡** ``` Consul Cluster (ๆœๅŠกๅ‘็Žฐ) โ†“ Nomad Cluster (ไฝœไธš็ผ–ๆŽ’) โ†“ Vault Cluster (ๅฏ†้’ฅ็ฎก็†) โ†“ Traefik (่ดŸ่ฝฝๅ‡่กก) โ†“ ๅบ”็”จๆœๅŠก (้€š่ฟ‡ Nomad ้ƒจ็ฝฒ) ``` --- ## ๐Ÿšจ ๅฝ“ๅ‰้—ฎ้ข˜ๅˆ†ๆž ### **ๆ ธๅฟƒ้—ฎ้ข˜** 1. **โŒ Gitea Actions ๆœชๅฏ็”จ**: `has_actions: false` - ๅฏผ่‡ด GitOps ๆต็จ‹ๅคฑๆ•ˆ - ๅทฅไฝœๆตๆ–‡ไปถๅญ˜ๅœจไฝ†ไธๆ‰ง่กŒ - ้œ€่ฆๆ‰‹ๅŠจ่งฆๅ‘้ƒจ็ฝฒ 2. **โŒ Nomad ่Š‚็‚นไธ็จณๅฎš**: ้ƒจๅˆ†่Š‚็‚น้ข‘็น down - ash1d: ไธ€็›ด down - onecloud1: left ้›†็พค - ่Š‚็‚น้—ด่ฟžๆŽฅ้—ฎ้ข˜ 3. **โŒ ๆœๅŠก้ƒจ็ฝฒๅคฑ่ดฅ**: ๆ‰€ๆœ‰ๆœๅŠก้ƒฝ pending - consul-cluster-nomad: pending - vault-cluster-ha: pending - traefik-cloudflare-v3: pending ### **ๅ…ทไฝ“้”™่ฏฏ** ```bash # Nomad ่Š‚็‚น็Šถๆ€ ID Node Pool DC Name Status 8ec41212 default dc1 ash2e ready 217d02f1 default dc1 ash1d down # โŒ ้—ฎ้ข˜่Š‚็‚น f99725f8 default dc1 hcp1 ready 7610e8cb default dc1 influxdb ready 6d1e03b2 default dc1 ash3c ready 304efba0 default dc1 ch4 ready 22da3f32 default dc1 warden ready c9c32568 default dc1 browser ready # Consul ๆˆๅ‘˜็Šถๆ€ Node Address Status ash3c 100.116.80.94:8301 alive ch4 100.117.106.136:8301 alive warden 100.122.197.112:8301 alive onecloud1 100.98.209.50:8301 left # โŒ ๅทฒ็ฆปๅผ€ ash1d 100.81.26.3:8301 left # โŒ ๅทฒ็ฆปๅผ€ ``` --- ## ๐Ÿ”ง ่งฃๅ†ณๆ–นๆกˆๅปบ่ฎฎ ### **ไผ˜ๅ…ˆ็บง 1: ๅฏ็”จ Gitea Actions** ```bash # ๆฃ€ๆŸฅ Gitea ๅ…จๅฑ€ Actions ่ฎพ็ฝฎ curl -s "http://gitea.tailnet-68f9.ts.net/api/v1/admin/config" | jq '.actions' # ๅฏ็”จไป“ๅบ“ Actions curl -X PATCH "http://gitea.tailnet-68f9.ts.net/api/v1/repos/ben/mgmt" \ -H "Content-Type: application/json" \ -d '{"has_actions": true}' ``` ### **ไผ˜ๅ…ˆ็บง 2: ๆ‰ฉๅฑ• Ansible Inventory** ```bash # ๅฝ“ๅ‰ inventory ๅชๆœ‰ warden ่Š‚็‚น๏ผŒ้œ€่ฆๆทปๅŠ ๆ‰€ๆœ‰่Š‚็‚น # ็ผ–่พ‘ ansible/inventory/hosts.yml ๆทปๅŠ ๆ‰€ๆœ‰่Š‚็‚นไฟกๆฏ # ๅ‚่€ƒๅฝ“ๅ‰้…็ฝฎๆ ผๅผ๏ผš # warden: # ansible_host: 100.122.197.112 # ansible_user: ben # ansible_password: "3131" # ansible_become_password: "3131" # ้œ€่ฆๆทปๅŠ ็š„่Š‚็‚น๏ผš # - ash2e, ash3c, ch4 (ๆœๅŠกๅ™จ่Š‚็‚น) # - hcp1, influxdb, browser (ๅฎขๆˆท็ซฏ่Š‚็‚น) # - ไฟฎๅคๆˆ–็งป้™ค ash1d, onecloud1 (้—ฎ้ข˜่Š‚็‚น) ``` ### **ไผ˜ๅ…ˆ็บง 3: ไฝฟ็”จ็Žฐๆœ‰่„šๆœฌไฟฎๅค่Š‚็‚น** ```bash # ไฝฟ็”จ nomad-configs ็›ฎๅฝ•ไธ‹็š„้ƒจ็ฝฒ่„šๆœฌ cd /root/mgmt/nomad-configs # ๅŸบไบŽ warden ๆˆๅŠŸ้…็ฝฎไฟฎๅคๅ…ถไป–่Š‚็‚น ./scripts/deploy.sh hcp1 ./scripts/deploy.sh influxdb1 ./scripts/deploy.sh ash3c ./scripts/deploy.sh ch4 ./scripts/deploy.sh browser # ๆˆ–่€…ๆ‰น้‡้ƒจ็ฝฒ for node in hcp1 influxdb1 ash3c ch4 browser; do ./scripts/deploy.sh $node done ``` ### **ไผ˜ๅ…ˆ็บง 4: ้ชŒ่ฏ GitOps ๆต็จ‹** ```bash # ๆŽจ้€ๆต‹่ฏ•ๅ˜ๆ›ด git add . git commit -m "TEST: Trigger GitOps workflow" git push origin main # ๆฃ€ๆŸฅๅทฅไฝœๆตๆ‰ง่กŒ curl -s "http://gitea.tailnet-68f9.ts.net/api/v1/repos/ben/mgmt/actions/runs" ``` --- ## โš ๏ธ ้‡่ฆๆณจๆ„ไบ‹้กน ### **ไธ่ฆๅš็š„ไบ‹ๆƒ…** 1. **โŒ ไธ่ฆๆ‰‹ๅŠจไฟฎๆ”น่Š‚็‚น้…็ฝฎ**: ไผšๅฏผ่‡ด้…็ฝฎๆผ‚็งป 2. **โŒ ไธ่ฆ็›ดๆŽฅ SSH ๅˆฐ่Š‚็‚น**: ไฝฟ็”จ Ansible inventory 3. **โŒ ไธ่ฆ็ป•่ฟ‡ GitOps ๆต็จ‹**: ๆ‰€ๆœ‰ๅ˜ๆ›ด้ƒฝๅบ”่ฏฅ้€š่ฟ‡ Git ### **ๅฟ…้กป้ตๅพช็š„ๅŽŸๅˆ™** 1. **โœ… ไธปๅฎข่ง‚็›ธ็ปŸไธ€**: ไปฃ็ ๅณ้…็ฝฎ๏ผŒไธ€ๅˆ‡้€š่ฟ‡ไป“ๅบ“็ฎก็† 2. **โœ… ่‡ชๅŠจๅŒ–ไผ˜ๅ…ˆ**: ้ฟๅ…ๆ‰‹ๅทฅๆ“ไฝœ 3. **โœ… ไธ€่‡ดๆ€งไฟ่ฏ**: ๆ‰€ๆœ‰่Š‚็‚น้…็ฝฎ็ปŸไธ€ ### **ๅ…ณ้”ฎๆ–‡ไปถ** - **Ansible Inventory**: `ansible/inventory/hosts.yml` (ๅฝ“ๅ‰ๅชๆœ‰ warden) - **ๆˆๅŠŸ้…็ฝฎๆจกๆฟ**: `nomad-configs/nodes/warden.hcl` (โœ… ๅŸบๅ‡†้…็ฝฎ) - **้ƒจ็ฝฒ่„šๆœฌ**: `nomad-configs/scripts/deploy.sh` - **ไฟฎๅค่„šๆœฌ**: `scripts/fix-nomad-nodes.sh` - **ๅทฅไฝœๆต**: `.gitea/workflows/deploy-nomad.yml` (โŒ ๆœชๅฏ็”จ) - **Ansible ้…็ฝฎ**: `ansible/ansible.cfg` - **zsh ไฟฎๅคๅ‰งๆœฌ**: `ansible/fix-warden-zsh.yml` --- ## ๐ŸŽฏ ๆˆๅŠŸๆ ‡ๅ‡† ### **็ŸญๆœŸ็›ฎๆ ‡ (1-2ๅฐๆ—ถ)** - [ ] ๅฏ็”จ Gitea Actions - [ ] ไฟฎๅค ash1d ่Š‚็‚น - [ ] ้ชŒ่ฏ GitOps ๆต็จ‹ๅทฅไฝœ ### **ไธญๆœŸ็›ฎๆ ‡ (ไปŠๅคฉๅ†…)** - [ ] ๆ‰€ๆœ‰ Nomad ่Š‚็‚น ready - [ ] Consul ้›†็พค็จณๅฎš - [ ] Vault ้›†็พค้ƒจ็ฝฒๆˆๅŠŸ ### **้•ฟๆœŸ็›ฎๆ ‡ (ๆœฌๅ‘จๅ†…)** - [ ] ๅฎŒๆ•ด็š„ๆœๅŠกๆ ˆ่ฟ่กŒ - [ ] ่‡ชๅŠจๅŒ–้ƒจ็ฝฒๆต็จ‹็จณๅฎš - [ ] ็›‘ๆŽงๅ’Œๅ‘Š่ญฆๅฐฑไฝ --- ## ๐Ÿ› ๏ธ ๅฏ็”จๅทฅๅ…ทๅ’Œ่„šๆœฌ ### **Ansible ๅ‰งๆœฌ** ```bash # ไฟฎๅค warden ่Š‚็‚น็š„ zsh ้…็ฝฎ้—ฎ้ข˜ ansible-playbook -i ansible/inventory/hosts.yml ansible/fix-warden-zsh.yml # ๆ‰ฉๅฑ•ๅˆฐๅ…ถไป–่Š‚็‚น (้œ€่ฆๅ…ˆๆ›ดๆ–ฐ inventory) ansible-playbook -i ansible/inventory/hosts.yml ansible/fix-warden-zsh.yml --limit all ``` ### **Nomad ้…็ฝฎ้ƒจ็ฝฒ** ```bash # ไฝฟ็”จ็Žฐๆœ‰็š„้ƒจ็ฝฒ่„šๆœฌ (ๅŸบไบŽ warden ๆˆๅŠŸๆจกๆฟ) cd nomad-configs ./scripts/deploy.sh <่Š‚็‚นๅ> # ๅฏ็”จ่Š‚็‚น: warden, hcp1, influxdb1, ash3c, ch4, browser # ้—ฎ้ข˜่Š‚็‚น: onecloud1 (ๅทฒ็ฆปๅผ€), ash1d (้œ€่ฆไฟฎๅค) ``` ### **็ณป็ปŸไฟฎๅค่„šๆœฌ** ```bash # ไฟฎๅค Nomad ่Š‚็‚น็š„้€š็”จ่„šๆœฌ ./scripts/fix-nomad-nodes.sh # Webhook ้ƒจ็ฝฒ่„šๆœฌ ./scripts/webhook-deploy.sh ``` ### **ๅฝ“ๅ‰ Ansible Inventory ็Šถๆ€** ```yaml # ansible/inventory/hosts.yml - ๅฝ“ๅ‰ๅช้…็ฝฎไบ† warden all: children: warden: hosts: warden: ansible_host: 100.122.197.112 ansible_user: ben ansible_password: "3131" ansible_become_password: "3131" # โš ๏ธ ้œ€่ฆๆทปๅŠ ๅ…ถไป–่Š‚็‚น็š„้…็ฝฎไฟกๆฏ ``` ### **ๆŽจ่็š„ไฟฎๅค้กบๅบ** 1. **ๅฏ็”จ Gitea Actions** - ๆขๅค GitOps ่‡ชๅŠจๅŒ– 2. **ๆ‰ฉๅฑ• Ansible Inventory** - ๆทปๅŠ ๆ‰€ๆœ‰่Š‚็‚น้…็ฝฎ 3. **ไฝฟ็”จ warden ๆจกๆฟไฟฎๅค่Š‚็‚น** - ๅŸบไบŽๆˆๅŠŸ้…็ฝฎ 4. **้ชŒ่ฏ Nomad ้›†็พค็Šถๆ€** - ็กฎไฟๆ‰€ๆœ‰่Š‚็‚น ready 5. **้ƒจ็ฝฒๆœๅŠกๆ ˆ** - Consul + Vault + Traefik --- ## ๐Ÿ†˜ ็ดงๆ€ฅ่”็ณปไฟกๆฏ **ๅฝ“ๅ‰ AI ๅŠฉๆ‰‹**: ้‡ๅˆฐๅ›ฐ้šพ๏ผŒ้œ€่ฆไบคๆŽฅ **็ณป็ปŸ็Šถๆ€**: ้ƒจๅˆ†ๅŠŸ่ƒฝๅคฑๆ•ˆ๏ผŒ้œ€่ฆไฟฎๅค **็ดงๆ€ฅ็จ‹ๅบฆ**: ไธญ็ญ‰ (ๆœๅŠกๅฏ็”จไฝ†ไธ็จณๅฎš) **ๅฟซ้€Ÿ่ฏŠๆ–ญๆฃ€ๆŸฅๆธ…ๅ•**: ```bash # 1. ๆฃ€ๆŸฅ Gitea Actions ็Šถๆ€ (ๆœ€้‡่ฆ!) curl -s "http://gitea.tailnet-68f9.ts.net/api/v1/repos/ben/mgmt" | jq '.has_actions' # ๆœŸๆœ›: true (ๅฝ“ๅ‰: false โŒ) # 2. ๆฃ€ๆŸฅ Nomad ้›†็พค็Šถๆ€ nomad node status # ๆœŸๆœ›: ๆ‰€ๆœ‰่Š‚็‚น ready (ๅฝ“ๅ‰: ash1d down โŒ) # 3. ๆฃ€ๆŸฅ Consul ้›†็พค็Šถๆ€ consul members # ๆœŸๆœ›: 3ไธชๆœๅŠกๅ™จ่Š‚็‚น alive (ๅฝ“ๅ‰: ash3c, ch4, warden โœ…) # 4. ๆฃ€ๆŸฅๆœๅŠก้ƒจ็ฝฒ็Šถๆ€ nomad job status # ๆœŸๆœ›: ๆœๅŠก running (ๅฝ“ๅ‰: ๅ…จ้ƒจ pending โŒ) # 5. ๆฃ€ๆŸฅ Ansible ่ฟžๆŽฅ ansible all -i ansible/inventory/hosts.yml -m ping # ๆœŸๆœ›: ๆ‰€ๆœ‰่Š‚็‚น SUCCESS (ๅฝ“ๅ‰: ๅชๆœ‰ warden โš ๏ธ) # 6. ๆฃ€ๆŸฅ็ฝ‘็ปœ่ฟž้€šๆ€ง tailscale status # ๆœŸๆœ›: ๆ‰€ๆœ‰่Š‚็‚นๅœจ็บฟ # 7. ๆฃ€ๆŸฅ้…็ฝฎๆ–‡ไปถๅฎŒๆ•ดๆ€ง ls -la nomad-configs/nodes/ # ๆœŸๆœ›: ๆ‰€ๆœ‰่Š‚็‚น้ƒฝๆœ‰้…็ฝฎๆ–‡ไปถ (ๅฝ“ๅ‰: โœ…) ``` --- ## ๐Ÿ“ ไบคๆŽฅๆ€ป็ป“ **ๅฝ“ๅ‰็Šถๆ€**: ็ณป็ปŸ้ƒจๅˆ†ๅŠŸ่ƒฝๅคฑๆ•ˆ๏ผŒ้œ€่ฆๆ–ฐ็š„ AI ๅŠฉๆ‰‹ๆŽฅๆ‰‹ **ไธป่ฆ้—ฎ้ข˜**: Gitea Actions ๆœชๅฏ็”จ๏ผŒๅฏผ่‡ด GitOps ๆต็จ‹ๅคฑๆ•ˆ **่งฃๅ†ณๆ–นๆกˆ**: ๅฏ็”จ Actions๏ผŒไฟฎๅค่Š‚็‚น๏ผŒ้ชŒ่ฏ่‡ชๅŠจๅŒ–ๆต็จ‹ **ๆˆๅŠŸๆ ‡ๅ‡†**: ๆ‰€ๆœ‰่Š‚็‚น ready๏ผŒๆœๅŠกๆญฃๅธธ้ƒจ็ฝฒ๏ผŒGitOps ๆต็จ‹็จณๅฎš **็ฅๆ–ฐ็š„ AI ๅŠฉๆ‰‹ๅฅฝ่ฟ๏ผ** ๐Ÿ€ --- *ไบคๆŽฅไปชๅผๅฎŒๆˆ - 2025-10-09 12:15 UTC*