มาเขียน Vault Plugin กันเถอะ : ตอนที่ 3 ทำความเข้าใจ Code
จากตอนที่แล้วเราได้สร้าง Mock plugin และนำมันขึ้นไปบน server เรียบร้อยแล้ว ตอนนี้เรามาทำความเข้าใจ Code ดีกว่า เพราะเมื่อเข้าใจแล้วเราก็สามารถทำตัว Plugin ของเราขึ้นมาเองได้ หรือ ไปเอา Plugin คนอื่นมา Customize ให้ได้ตรงตามความต้องการของเรา
Default code ที่ต้องมี
1 | git clone https://github.com/hashicorp/vault-guides.git |
Code ส่วนที่ต้องมีคือ Code ในไฟล์ secrets/mock/cmd/mock/main.go ซึ่งในไฟล์นี้ไม่ทำอะไรมากมันเหมือนเป็น interface ของ plugin เวลาตัว vault มาเรียกใช้งานจะทำการมาเรียกที่ไฟล์นี้ ดังนั้นถ้าเราจะ Custom อะไรเราก็เพียงแค่ import ตัว soruce code ของเราที่มี Function Factory เหมือนกับ mock ในตัวอย่าง
1 | package main |
ตัว Code จริงๆที่ทำงาน
ตัว Code จริงๆที่ทำงานทั้งหมดจะอยู่ที่ secrets/mock/backend.go โดยจะขออธิบายเป็นส่วนๆนะครับ
ส่วน Factory
ส่วนของ Factory นั้นไม่มีอะไรมากเป็นการ Config ว่า Plugin โดยที่สำคัญสำหรับคือส่วนที่เป็น Path ครับ โดยจะประกาศใน Factory ก็ได้หรือจะทำเป็น Method เหมือน code ตัวอย่างก็ได้ครับ
1 | // Factory configures and returns Mock backends |
ส่วน Path
1 | func (b *backend) paths() []*framework.Path { |
ส่วน Operation
ขอพูดถึง handleWrite เลยละกันเพราะ code ส่วนนี้มีทั้งดึงค่าจาก body และ path
1 | func (b *backend) handleWrite(ctx context.Context, req *logical.Request, data *framework.FieldData) (*logical.Response, error) { |
จบละ
สำหรับตอนนี้เป็นการอธิบาย Code ของ Mock Plugin โดยจริงๆแล้วไม่มีอะไรมากเลย แต่ผมอยากเขียนเผื่อคนที่อยากทำ Custom plugin บ้างจะได้ไม่ต้องเสียเวลาทดลองเอง ซึ่งตอนนี้คงเป็นตอนสุดท้ายของ Vault Custom Plugin แล้ว ส่วนตอนหน้าจะเป็นอะไรรอดูกันต่อไปครับ