Score:0

อะไรคือตัวแปรทั่วไปที่จะกล่าวถึงในไฟล์ yaml ansible สินค้าคงคลัง?

ธง uz
  • ฉันพยายามสร้างไปป์ไลน์เพื่อติดตั้งผลิตภัณฑ์ของฉัน
  • ผลิตภัณฑ์ของฉันได้รับการติดตั้งในห้องปฏิบัติการที่มีเครื่องจักรอย่างน้อย 8 เครื่อง (ห้องปฏิบัติการภายในองค์กร)
  • ฉันมีห้องทดลองหลายแห่งในองค์กร หลายห้องทดลองบนระบบคลาวด์
  • แต่ละเครื่องมี บทบาทตัวอย่างเช่น: เครื่อง Center-DB, เครื่อง Center-Queue หรือเครื่อง Center-App, เครื่องตรงกลางและเครื่องไคลเอ็นต์ เป็นต้น... ดังนั้น แล็บบางแห่งจึงได้แก่: 1 Center - 1 Middle - 1 Client หรือ 3 ศูนย์กลาง (แอป, DB, คิว) - 2 มิดเดิล - 3 ไคลเอนต์
  • บางเครื่องก็มี บริการ เช่น DB และอีกหลายอย่างเช่น: DB, IIS และตัวจัดการข้อความ
  • แล็บอยู่ใน VLAN ที่ปลอดภัย ซึ่งหมายความว่าในการเรียกใช้สคริปต์จากระยะไกล ฉันต้องเชื่อมต่อกับเครื่องด้วย IP ไม่ใช่ด้วย FQDN และข้อมูลรับรองการจัดหา
  • ข้อมูลรับรอง เหมือนกันทุกเครื่อง
  • นอกจากนี้ยังมีตัวเลือกในไฟล์การติดตั้งเพื่อติดตั้งผลิตภัณฑ์ที่ปลอดภัย (พร้อมใบรับรองและพอร์ต 443) หรือไม่ปลอดภัย
  • ในระหว่างขั้นตอนการติดตั้ง ฉันต้องคัดลอกไปยังแต่ละเครื่องก่อน ไฟล์การติดตั้งเฉพาะจากนั้นติดตั้งด้วยอาร์กิวเมนต์เฉพาะ

ยกเว้นรายการของโฮสต์และที่อยู่ IP ในไฟล์ yaml ansible ของสินค้าคงคลัง เป็นไปได้หรือไม่ที่จะเพิ่มตัวแปรหรือคีย์ เช่น:

  • "ข้อมูลประจำตัว"
  • "มาตรการ",
  • "ไฟล์",
  • "แบบเครื่องจักร" ฯลฯ...?

หรือควรวางไว้ในไฟล์อื่นเช่นบทบาท (งาน) โปรดช่วยฉันตัดสินใจว่าข้อมูลใดไปที่ใด ตัวอย่างไฟล์ yaml ของฉันอยู่ด้านล่าง:

---
เครดิต:
    ผู้ใช้:
    ผ่าน: 1
ศูนย์กลาง:
    ฐานข้อมูล:
        - ฐานข้อมูล:
              fqdn: center-db.foo.com
              cn: ศูนย์กลาง-db
              ไฟล์:
                  - C:\โฟลเดอร์\เซิร์ฟเวอร์.msi
              ไอพี: 1.1.1.1
    คิว: 
        - คิว: 
              fqdn: center-queue.foo.com
              cn: คิวตรงกลาง
              ไฟล์:
                  - C:\โฟลเดอร์\เซิร์ฟเวอร์.msi
              ไอพี: 2.2.2.2
    ปพลิเคชัน:
        - แอป:
              fqdn: center-app.foo.com
              cn: แอปกลาง
              ไฟล์:
                  - C:\โฟลเดอร์\เซิร์ฟเวอร์.msi
                  - C:\folder\Center-Client.msi
                  - C:\โฟลเดอร์\ไฟล์
              ไอพี: 3.3.3.3
                  

               ลูกค้า:
                  - ลูกค้า:
                        ฐานข้อมูล:
                            cn: Client-DB
                        แอป:
                            fqdn: Client-APP.foo.com
                            cn: ไคลเอ็นต์-APP
                            ไฟล์:
                                - C:\โฟลเดอร์\เซิร์ฟเวอร์.msi
                                - C:\folder\Client-Client.msi
                            ไอพี: 4.4.4.4
Score:1
ธง cn

Ansible ช่วยให้การจัดโครงสร้างสินค้าคงคลัง vars และงานได้หลายวิธี พัฒนาความคิดเห็นของคุณเองว่าจะวางสิ่งต่าง ๆ ไว้ตรงไหนอย่างสมเหตุสมผล โดยพิจารณาจากปลั๊กอิน Ansible ต่าง ๆ ที่คาดหวัง

ห้องปฏิบัติการอยู่ใน VLAN ที่ปลอดภัย ซึ่งหมายถึงการเรียกใช้สคริปต์จาก ระยะไกล ฉันต้องเชื่อมต่อกับเครื่องด้วย IP ไม่ใช่ด้วย FQDN และข้อมูลรับรองการจัดหาของพวกเขา

เท็จ. DNS เป็นไปได้สำหรับทุกสภาพแวดล้อม อาจมอบหมายโซน hiddai.lab.example.net ไปยังเซิร์ฟเวอร์ DNS ของห้องปฏิบัติการทดสอบ และโฮสต์ใช้ FQDN ในโซนนี้

ที่กล่าวว่า ansible_host สามารถระบุตัวแปรแทนที่ชื่อโฮสต์หรือที่อยู่ IP สำหรับปลั๊กอินการเชื่อมต่อที่จะใช้

อย่าใช้ที่อยู่ IP ที่จัดสรรสำหรับผู้ใช้รายอื่น 1.1.1.1 ไม่ใช่ของคุณ แต่เป็น Cloudflare DNS ใช้ที่อยู่ IP จริงของคุณหรือเครือข่ายทดสอบเอกสาร เช่น 192.0.2.0/24 198.51.100.0/24 203.0.113.0/24

นอกจากนี้ ฉันต้องตัดสินใจว่าผลิตภัณฑ์ของฉันจะติดตั้งอย่างปลอดภัยหรือ ไม่ได้อยู่ในห้องทดลองของฉัน (โปรโตคอลใด - HTTPS หรือ HTTP)

ปลอดภัยเสมอ ดังนั้น HTTPS การตั้งค่าแล็บสามารถผ่อนคลายมากขึ้นด้วย PKI, CA แบบธรรมดาส่วนบุคคล, ใบรับรองที่ลงนามด้วยตนเอง

ยกเว้นรายชื่อโฮสต์และที่อยู่ IP ในสินค้าคงคลัง ansible yaml ไฟล์ เป็นไปได้ไหมที่จะเพิ่มตัวแปรหรือคีย์ เช่น: "ข้อมูลประจำตัว", "โปรโตคอล", "ไฟล์", "ประเภทเครื่อง" ฯลฯ...

ไม่ รายชื่อโฮสต์แยกต่างหากจากข้อมูลการกำหนดค่าแอปพลิเคชันระดับบทบาท สิ่งนี้ทำให้มีสินค้าคงคลังหลายรายการ ข้อมูลซ้ำซ้อนน้อยที่สุดระหว่างห้องปฏิบัติการ การจัดเตรียม และสินค้าคงคลังการผลิต

จำกัดสินค้าคงคลังไว้เฉพาะสิ่งที่จำเป็นสำหรับการเชื่อมต่อกับโฮสต์: ชื่อโฮสต์ ผู้ใช้ อาจเป็นข้อมูลประจำตัว ปลั๊กอินการเชื่อมต่อ ใส่รายละเอียดการสมัครไว้ที่อื่น เช่น group_vars

    เครดิต:
        ผู้ใช้:
        ผ่าน: 1

เมื่อพูดถึงข้อมูลรับรอง ฉันถือว่ารหัสผ่านหนึ่งอักขระสั้นจนยอมรับไม่ได้ อย่ามีมันเป็นตัวอย่างปลอม แทนที่รหัสผ่านการรับรองความถูกต้องด้วยสิ่งที่ดีกว่า เช่น คีย์หรือการรับรองความถูกต้องตามใบรับรอง หรือข้อความรหัสผ่านแบบคำยาวเป็นอย่างน้อย เช่น เคราะห์ร้ายเสแสร้งครอบครองไตรมาส.

เส้นทางไฟล์ของคุณดูเหมือนจะเป็น Windows อ่าน เอกสาร winrm ของ Ansible และพิจารณาตัวเลือกของคุณสำหรับการรับรองความถูกต้อง

การจัดเก็บเครดิตในคลังหมายถึงใครก็ตามที่มีไฟล์คลังสามารถเรียกใช้คำสั่งได้ รักษาความปลอดภัยของไฟล์อย่างเหมาะสม พิจารณาการจัดเก็บเครดิตในไฟล์คีย์แยกต่างหาก หรือในระบบลับบางระบบที่คุณสามารถเข้าถึงได้ด้วยการค้นหาแบบ Ansible

ไฟล์ vars ของคุณคือ YAML แต่ไม่ได้อยู่ในโครงสร้าง ปลั๊กอินสินค้าคงคลัง YAML แบบคงที่ของ Ansible คาดหวัง บางทีอาจจะเป็นแบบนี้ก็ได้ สินค้าคงคลัง/lab.yml ฉันได้เปลี่ยนค่าบางอย่างเป็นตัวอย่างจริงต่ออินเทอร์เน็ต RFCs

---
ทั้งหมด:
    เด็ก: 
        หน้าต่าง:
            # กลุ่มที่มีเฉพาะโฮสต์ Windows เท่านั้นที่อนุญาต 
            # ตัวแปรการรับรองความถูกต้องและการเชื่อมต่อเฉพาะ Windows
            วาร์:
                ansible_user: ก
                ansible_password: โชคไม่ดี-เสแสร้ง-ครอบครอง-ไตรมาส
                ansible_connection: winrm
                ansible_winrm_transport: เครดิต
            เด็ก:
                ฐานข้อมูล:
                    # FQDN เป็น inventory_hostname ควรแก้ไขหากอยู่ใน DNS
                    # Ansible แยกป้ายกำกับด้านบนออกให้คุณเป็นพิเศษ var inventory_hostname_short
                    เจ้าภาพ: 
                        center-db.hiddai.lab.example.net:
                            # ansible_host จะแทนที่สิ่งที่จะเชื่อมต่อด้วย
                            # เช่นเมื่อไม่มี DNS
                            ansible_host: 203.0.113.23
            เด็ก:
                คิว:
                    เจ้าภาพ:
                        center-queue.hiddai.lab.example.net:
                            ansible_host: 203.0.113.83

            เด็ก:
                แอป:
                    เจ้าภาพ:
                        center-app.hiddai.lab.example.net:
                            ansible_host: 203.0.113.62
                            
            เด็ก:
                ลูกค้า:
                    เจ้าภาพ:
                        client-app.hiddai.lab.example.net:
                            ansible_host: 203.0.113.28
                            db: ศูนย์-db

ฉันไม่ชัดเจนว่า "ศูนย์" ในตัวอย่างนี้คืออะไร ผลิตภัณฑ์ซอฟต์แวร์ ชื่อการปรับใช้ ชื่อไคลเอ็นต์ เนื่องจากสินค้าคงคลัง Ansible นั้นแบนภายในจริง ๆ ฉันจึงยุบมันออกไป เพิ่มกลับเป็นตัวแปรหรือกลุ่มหากต้องการ

เกี่ยวกับข้อมูลการกำหนดค่าแอ็พพลิเคชันเฉพาะโฮสต์ ให้พิจารณา group_vars สิ่งเหล่านี้อาจสัมพันธ์กับไฟล์สินค้าคงคลังของคุณ โดยชื่อไฟล์ตรงกับชื่อกลุ่ม

สินค้าคงคลัง/group_vars/windows.yml

---
base_dir: 'C:\โฟลเดอร์\'
files_common: 
  - Server.msi

สินค้าคงคลัง/group_vars/app.yml

---
files_additional:
  - ไฟล์
  - ศูนย์ Client.msi

สินค้าคงคลัง/group_vars/client.yml

---
files_additional:
  - Client-Client.msi

หมายเหตุ ฉันคิดค้นตัวแปรสองสามตัวสำหรับไฟล์ ด้วยชื่อที่แตกต่างกันคุณสามารถรวมเข้าด้วยกันเป็นรายการเดียวได้ในภายหลัง {{ files_common + files_additional }}

เขียนและใช้บทบาท Ansible ซึ่งมีตัวแปรและงานของตัวเอง พิจารณาค่าเริ่มต้นของบทบาทที่เหมาะกับกรณีการใช้งานส่วนใหญ่ ตัวอย่างเช่น งาน win_package เพื่อติดตั้งแพ็คเกจ msi เหล่านี้ และโดยค่าเริ่มต้นให้ดาวน์โหลดจากเซิร์ฟเวอร์ https แต่ทำให้ไฟล์แพ็กเกจต้นทางเป็นตัวแปรเพื่อให้สามารถแทนที่ได้

และบทละครเป็นสิ่งที่จับคู่รูปแบบโฮสต์เหล่านี้กับบทบาท ฉันไม่แน่ใจว่าจะเรียกแอปของคุณว่าอะไรเพราะใช้แต่ชื่อทั่วไป ดังนั้นฉันจึงขึ้นต้นหน้าด้วย "ของ" play.yml:

---

โฮสต์: ฐานข้อมูล
บทบาท:
- สิ่งดีบี

โฮสต์: คิว
บทบาท:
- สิ่งคิว

โฮสต์: แอป
บทบาท:
- สิ่งที่แอพ

โฮสต์: ลูกค้า
บทบาท:
- สิ่งไคลเอนต์

เรียกใช้ playbook ดังกล่าวด้วย ansible-playbook play.yml -i สินค้าคงคลัง/lab.yml

ไม่รวม: บทบาท ฉันไม่รู้ว่าคุณต้องการทำอะไร และคำตอบนี้ค่อนข้างจะยาวสักหน่อย

uz flag
คุณได้กล่าวถึงว่า: "เขียนและใช้บทบาท Ansible" หมายความว่าฉันสามารถหลีกเลี่ยงโฟลเดอร์ "group_var" และจัดระเบียบ vars ในโฟลเดอร์ Role\common\vars...หรือโฟลเดอร์เหล่านั้นมีเป้าหมายที่แตกต่างกันโดยสิ้นเชิง
John Mahowald avatar
cn flag
บทบาทเปิดใช้งานซ้ำ ทั้งหมดนี้เป็นทางเลือกขึ้นอยู่กับว่าคุณต้องการวางโครงสร้างอย่างไร ใช้ทั้งสองบทบาท (โดยมีค่าเริ่มต้นสำหรับตัวแปร) กับ group_vars (แทนที่บทบาท vars สำหรับบางกลุ่ม) หรือใช้ทั้งสองอย่าง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา